X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/c40ed6564e8cd0d58c19f099c1aee6b5f3bcbb69..6a0a4708c242642ef4e6b9d831792d336b9545a9:/src/selectiontoggle.cpp diff --git a/src/selectiontoggle.cpp b/src/selectiontoggle.cpp index 01cfed0f3..8a77da0d3 100644 --- a/src/selectiontoggle.cpp +++ b/src/selectiontoggle.cpp @@ -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,24 @@ 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::resizeEvent(QResizeEvent* event) +{ + QAbstractButton::resizeEvent(event); + setIconOverlay(isChecked()); +} + void SelectionToggle::paintEvent(QPaintEvent* event) { QPainter painter(this); @@ -193,7 +212,7 @@ void SelectionToggle::setIconOverlay(bool checked) const char* icon = checked ? "list-remove" : "list-add"; m_icon = KIconLoader::global()->loadIcon(icon, KIconLoader::NoGroup, - KIconLoader::SizeSmall); + qMin(width(), height())); update(); }