X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/36a816d7a63c58ead01002db59c2cf8862c72c97..3991e9d24eb2aba2ea7228f925cfa0a60e55463f:/src/kitemviews/kitemlistcontroller.cpp diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index 697e04fef..4629b29f1 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -44,7 +44,7 @@ KItemListController::KItemListController(KItemModelBase* model, KItemListView* view, QObject* parent) : QObject(parent), - m_singleClickActivation(KGlobalSettings::singleClick()), + m_singleClickActivationEnforced(false), m_selectionTogglePressed(false), m_clearSelectionIfItemsAreNotDragged(false), m_selectionBehavior(NoSelection), @@ -190,14 +190,14 @@ int KItemListController::autoActivationDelay() const return m_autoActivationTimer->interval(); } -void KItemListController::setSingleClickActivation(bool singleClick) +void KItemListController::setSingleClickActivationEnforced(bool singleClick) { - m_singleClickActivation = singleClick; + m_singleClickActivationEnforced = singleClick; } -bool KItemListController::singleClickActivation() const +bool KItemListController::singleClickActivationEnforced() const { - return m_singleClickActivation; + return m_singleClickActivationEnforced; } bool KItemListController::showEvent(QShowEvent* event) @@ -756,7 +756,7 @@ bool KItemListController::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, con } else if (shiftOrControlPressed) { // The mouse click should only update the selection, not trigger the item emitItemActivated = false; - } else if (!m_singleClickActivation) { + } else if (!(KGlobalSettings::singleClick() || m_singleClickActivationEnforced)) { emitItemActivated = false; } if (emitItemActivated) { @@ -786,7 +786,7 @@ bool KItemListController::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event, } } - bool emitItemActivated = !m_singleClickActivation && + bool emitItemActivated = !(KGlobalSettings::singleClick() || m_singleClickActivationEnforced) && (event->button() & Qt::LeftButton) && index >= 0 && index < m_model->count(); if (emitItemActivated) { @@ -838,27 +838,39 @@ bool KItemListController::dragMoveEvent(QGraphicsSceneDragDropEvent* event, cons oldHoveredWidget->setHovered(false); emit itemUnhovered(oldHoveredWidget->index()); } + } - if (newHoveredWidget) { - bool droppingBetweenItems = false; - if (m_model->sortRole().isEmpty()) { - // The model supports inserting items between other items. - droppingBetweenItems = (m_view->showDropIndicator(pos) >= 0); - } + if (newHoveredWidget) { + bool droppingBetweenItems = false; + if (m_model->sortRole().isEmpty()) { + // The model supports inserting items between other items. + droppingBetweenItems = (m_view->showDropIndicator(pos) >= 0); + } - const int index = newHoveredWidget->index(); - if (!droppingBetweenItems && m_model->supportsDropping(index)) { + const int index = newHoveredWidget->index(); + if (!droppingBetweenItems) { + if (m_model->supportsDropping(index)) { // Something has been dragged on an item. m_view->hideDropIndicator(); - newHoveredWidget->setHovered(true); - emit itemHovered(index); + if (!newHoveredWidget->isHovered()) { + newHoveredWidget->setHovered(true); + emit itemHovered(index); + } - if (m_autoActivationTimer->interval() >= 0) { + if (!m_autoActivationTimer->isActive() && m_autoActivationTimer->interval() >= 0) { m_autoActivationTimer->setProperty("index", index); m_autoActivationTimer->start(); } } + } else { + m_autoActivationTimer->stop(); + if (newHoveredWidget && newHoveredWidget->isHovered()) { + newHoveredWidget->setHovered(false); + emit itemUnhovered(index); + } } + } else { + m_view->hideDropIndicator(); } return false;