aboutsummaryrefslogtreecommitdiff
path: root/src/ui/togglebutton.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-09-15 19:09:22 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-09-15 19:09:22 +0000
commit1a24a61265d498ab3948c79c99efdc53f576dc61 (patch)
treeb639eb4c3faca784b281d256e8c0cc7828ca23f7 /src/ui/togglebutton.cpp
parentab254070bb91752d40dfc581e9c09f3816b7af0f (diff)
downloadqmmp-1a24a61265d498ab3948c79c99efdc53f576dc61.tar.gz
qmmp-1a24a61265d498ab3948c79c99efdc53f576dc61.tar.bz2
qmmp-1a24a61265d498ab3948c79c99efdc53f576dc61.zip
fixed button focus behavior (patch by erlk.ozlr AT gmail.com)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1224 90c681e8-e032-0410-971d-27865f9a5e38
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 ) );
+ }
}