Don't rely on the m_isHovered flag, explicitely check the left mouse button instead.

svn path=/trunk/KDE/kdebase/apps/; revision=927602
This commit is contained in:
Peter Penz 2009-02-17 21:54:25 +00:00
parent 684ab89c7d
commit 85dbeb2598
2 changed files with 17 additions and 1 deletions

View file

@ -34,6 +34,7 @@
SelectionToggle::SelectionToggle(QWidget* parent) :
QAbstractButton(parent),
m_isHovered(false),
m_leftMouseButtonPressed(false),
m_fadingValue(0),
m_icon(),
m_fadingTimeLine(0)
@ -96,7 +97,7 @@ bool SelectionToggle::eventFilter(QObject* obj, QEvent* event)
break;
case QEvent::MouseMove:
if (m_isHovered) {
if (m_leftMouseButtonPressed) {
// Don't forward mouse move events to the viewport,
// otherwise a rubberband selection will be shown when
// clicking on the selection toggle and moving the mouse
@ -136,6 +137,18 @@ void SelectionToggle::leaveEvent(QEvent* event)
update();
}
void SelectionToggle::mousePressEvent(QMouseEvent* event)
{
QAbstractButton::mousePressEvent(event);
m_leftMouseButtonPressed = (event->buttons() & Qt::LeftButton);
}
void SelectionToggle::mouseReleaseEvent(QMouseEvent* event)
{
QAbstractButton::mouseReleaseEvent(event);
m_leftMouseButtonPressed = (event->buttons() & Qt::LeftButton);
}
void SelectionToggle::paintEvent(QPaintEvent* event)
{
QPainter painter(this);

View file

@ -60,6 +60,8 @@ protected:
virtual bool eventFilter(QObject* obj, QEvent* event);
virtual void enterEvent(QEvent* event);
virtual void leaveEvent(QEvent* event);
virtual void mousePressEvent(QMouseEvent* event);
virtual void mouseReleaseEvent(QMouseEvent* event);
virtual void paintEvent(QPaintEvent* event);
private slots:
@ -78,6 +80,7 @@ private:
private:
bool m_isHovered;
bool m_leftMouseButtonPressed;
int m_fadingValue;
QPixmap m_icon;
QTimeLine* m_fadingTimeLine;