aboutsummaryrefslogtreecommitdiff
path: root/src/ui/togglebutton.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/togglebutton.cpp')
-rw-r--r--src/ui/togglebutton.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/ui/togglebutton.cpp b/src/ui/togglebutton.cpp
index 26dd91195..e5860f958 100644
--- a/src/ui/togglebutton.cpp
+++ b/src/ui/togglebutton.cpp
@@ -23,7 +23,7 @@
#include "skin.h"
#include "togglebutton.h"
-
+#include <QMouseEvent>
ToggleButton::ToggleButton ( QWidget *parent,uint on_n,uint on_p,uint off_n,uint off_p )
: PixmapWidget ( parent )
@@ -70,6 +70,8 @@ void ToggleButton::setON ( bool on )
}
void ToggleButton::mousePressEvent ( QMouseEvent* )
{
+ m_cursorin = TRUE;
+ m_old_on = m_on;
if ( m_on )
setPixmap ( skin->getButton ( m_off_p ) );
else
@@ -78,7 +80,29 @@ void ToggleButton::mousePressEvent ( QMouseEvent* )
void ToggleButton::mouseReleaseEvent ( QMouseEvent* )
{
- m_on = !m_on;
- setON ( m_on );
- emit clicked( m_on );
+ if ( m_cursorin ) {
+ m_on = !m_old_on;
+ setON ( m_on );
+ emit clicked( m_on );
+ } else {
+ m_on = m_old_on;
+ setON ( m_on );
+ }
+}
+
+void ToggleButton::mouseMoveEvent (QMouseEvent *e)
+{
+ if ( !m_cursorin && rect().contains(e->pos()) ) {
+ m_cursorin = TRUE;
+ if ( m_old_on )
+ setPixmap ( skin->getButton ( m_off_p ) );
+ else
+ setPixmap ( skin->getButton ( m_on_p ) );
+ } else if ( m_cursorin && !rect().contains(e->pos()) ) {
+ m_cursorin = FALSE;
+ if ( m_old_on )
+ setPixmap ( skin->getButton ( m_on_n ) );
+ else
+ setPixmap ( skin->getButton ( m_off_n ) );
+ }
}