X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/ec861fd2690007ed996138f3d845f507c721f4af..ca5d3fde114dfdb280e46995e8a425d3ec558596:/src/views/selectiontoggle.cpp diff --git a/src/views/selectiontoggle.cpp b/src/views/selectiontoggle.cpp index cbd273b11..d602600c5 100644 --- a/src/views/selectiontoggle.cpp +++ b/src/views/selectiontoggle.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008 by Peter Penz * + * Copyright (C) 2008 by Peter Penz * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -19,11 +19,11 @@ #include "selectiontoggle.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include @@ -32,11 +32,12 @@ #include #include +#include + SelectionToggle::SelectionToggle(QWidget* parent) : QAbstractButton(parent), m_isHovered(false), m_leftMouseButtonPressed(false), - m_appliedArrowCursor(false), m_fadingValue(0), m_margin(0), m_icon(), @@ -106,25 +107,12 @@ void SelectionToggle::setVisible(bool visible) bool SelectionToggle::eventFilter(QObject* obj, QEvent* event) { - if (obj == parent()) { - switch (event->type()) { - case QEvent::Leave: - hide(); - break; - - case QEvent::MouseMove: - 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 - // above the viewport. - return true; - } - break; - - default: - break; - } + if ((obj == parent()) && (event->type() == QEvent::MouseMove) && 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 + // above the viewport. + return true; } return QAbstractButton::eventFilter(obj, event); @@ -134,23 +122,10 @@ void SelectionToggle::enterEvent(QEvent* event) { QAbstractButton::enterEvent(event); - if (!m_appliedArrowCursor) { - m_appliedArrowCursor = true; - // Apply the arrow asynchronously. This is required for - // the following usecase: - // 1. Cursor is above the viewport left beside an item - // 2. Cursor is moved above the item, so that the selection-toggle - // and the item are entered equally. - // In this situation it is not defined who gets the enter-event first. - // As the selection-toggle is above the item, it should overwrite possible - // cursor changes done by the item. - QTimer::singleShot(0, this, SLOT(applyArrowCursor())); - } - // if the mouse cursor is above the selection toggle, display // it immediately without fading timer m_isHovered = true; - if (m_fadingTimeLine != 0) { + if (m_fadingTimeLine) { m_fadingTimeLine->stop(); } m_fadingValue = 255; @@ -163,13 +138,6 @@ void SelectionToggle::leaveEvent(QEvent* event) { QAbstractButton::leaveEvent(event); - if (m_appliedArrowCursor) { - // Reset the cursor asynchronously. See SelectionToggle::enterEvent() - // for a more information. - m_appliedArrowCursor = false; - QTimer::singleShot(0, this, SLOT(restoreCursor())); - } - m_isHovered = false; update(); } @@ -224,7 +192,7 @@ void SelectionToggle::setFadingValue(int value) { m_fadingValue = value; if (m_fadingValue >= 255) { - Q_ASSERT(m_fadingTimeLine != 0); + Q_ASSERT(m_fadingTimeLine); m_fadingTimeLine->stop(); } update(); @@ -245,19 +213,9 @@ void SelectionToggle::refreshIcon() setIconOverlay(isChecked()); } -void SelectionToggle::applyArrowCursor() -{ - QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor)); -} - -void SelectionToggle::restoreCursor() -{ - QApplication::restoreOverrideCursor(); -} - void SelectionToggle::startFading() { - Q_ASSERT(m_fadingTimeLine == 0); + Q_ASSERT(!m_fadingTimeLine); const bool animate = KGlobalSettings::graphicEffectsLevel() & KGlobalSettings::SimpleAnimationEffects; const int duration = animate ? 600 : 1; @@ -272,7 +230,7 @@ void SelectionToggle::startFading() void SelectionToggle::stopFading() { - if (m_fadingTimeLine != 0) { + if (m_fadingTimeLine) { m_fadingTimeLine->stop(); delete m_fadingTimeLine; m_fadingTimeLine = 0;