From 2201018673467bf7a871082b1fd1e3f8c6f926e7 Mon Sep 17 00:00:00 2001 From: Akseli Lahtinen Date: Fri, 9 May 2025 13:34:30 +0300 Subject: [PATCH] DolphinView: Remove -1 interval, add setAutoActivationEnabled In future Qt versions, Qt Timers do not allow negative intervals. Instead, they will be changed to 1. Related Qt commit: https://github.com/qt/qtbase/commit/f1f610bc67bfd5c2ef31270a6945e7bae93b5e4a Instead of relying on the interval, use a boolean variable to check if the autoactivation is enabled or not. --- src/kitemviews/kitemlistcontroller.cpp | 12 ++++++------ src/kitemviews/kitemlistcontroller.h | 20 +++----------------- src/panels/folders/folderspanel.cpp | 1 - src/views/dolphinview.cpp | 6 ++---- 4 files changed, 11 insertions(+), 28 deletions(-) diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index 2f1bdc551..cd60c3a41 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -64,7 +64,7 @@ KItemListController::KItemListController(KItemModelBase *model, KItemListView *v m_autoActivationTimer = new QTimer(this); m_autoActivationTimer->setSingleShot(true); - m_autoActivationTimer->setInterval(-1); + m_autoActivationTimer->setInterval(750); connect(m_autoActivationTimer, &QTimer::timeout, this, &KItemListController::slotAutoActivationTimeout); setModel(model); @@ -200,14 +200,14 @@ int KItemListController::indexCloseToMousePressedPosition() const return -1; } -void KItemListController::setAutoActivationDelay(int delay) +void KItemListController::setAutoActivationEnabled(bool enabled) { - m_autoActivationTimer->setInterval(delay); + m_autoActivationEnabled = enabled; } -int KItemListController::autoActivationDelay() const +bool KItemListController::isAutoActivationEnabled() const { - return m_autoActivationTimer->interval(); + return m_autoActivationEnabled; } void KItemListController::setSingleClickActivationEnforced(bool singleClick) @@ -857,7 +857,7 @@ bool KItemListController::dragMoveEvent(QGraphicsSceneDragDropEvent *event, cons Q_EMIT itemHovered(index); } - if (!m_autoActivationTimer->isActive() && m_autoActivationTimer->interval() >= 0 && m_model->canEnterOnHover(index)) { + if (m_autoActivationEnabled && !m_autoActivationTimer->isActive() && m_model->canEnterOnHover(index)) { m_autoActivationTimer->setProperty("index", index); m_autoActivationTimer->start(); newHoveredWidget->startActivateSoonAnimation(m_autoActivationTimer->remainingTime()); diff --git a/src/kitemviews/kitemlistcontroller.h b/src/kitemviews/kitemlistcontroller.h index fcb971fb7..48da07206 100644 --- a/src/kitemviews/kitemlistcontroller.h +++ b/src/kitemviews/kitemlistcontroller.h @@ -88,23 +88,8 @@ public: int indexCloseToMousePressedPosition() const; - /** - * Sets the delay in milliseconds when dragging an object above an item - * until the item gets activated automatically. A value of -1 indicates - * that no automatic activation will be done at all (= default value). - * - * The hovered item must support dropping (see KItemModelBase::supportsDropping()), - * otherwise the automatic activation is not available. - * - * After activating the item the signal itemActivated() will be - * emitted. If the view supports the expanding of items - * (KItemListView::supportsItemExpanding() returns true) and the item - * itself is expandable (see KItemModelBase::isExpandable()) then instead - * of activating the item it gets expanded instead (see - * KItemModelBase::setExpanded()). - */ - void setAutoActivationDelay(int delay); - int autoActivationDelay() const; + void setAutoActivationEnabled(bool enabled); + bool isAutoActivationEnabled() const; /** * If set to true, the signals itemActivated() and itemsActivated() are emitted @@ -362,6 +347,7 @@ private: std::optional m_pressedIndex; QPointF m_pressedMouseGlobalPos; + bool m_autoActivationEnabled = false; QTimer *m_autoActivationTimer; Qt::GestureType m_swipeGesture; diff --git a/src/panels/folders/folderspanel.cpp b/src/panels/folders/folderspanel.cpp index 19b573080..e375f2ce5 100644 --- a/src/panels/folders/folderspanel.cpp +++ b/src/panels/folders/folderspanel.cpp @@ -151,7 +151,6 @@ void FoldersPanel::showEvent(QShowEvent *event) m_controller->setSelectionBehavior(KItemListController::SingleSelection); m_controller->setAutoActivationBehavior(KItemListController::ExpansionOnly); m_controller->setMouseDoubleClickAction(KItemListController::ActivateAndExpandItem); - m_controller->setAutoActivationDelay(750); m_controller->setSingleClickActivationEnforced(true); connect(m_controller, &KItemListController::itemActivated, this, &FoldersPanel::slotItemActivated); diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 933bfda07..bff6e7586 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -123,8 +123,7 @@ DolphinView::DolphinView(const QUrl &url, QWidget *parent) applyModeToView(); KItemListController *controller = new KItemListController(m_model, m_view, this); - const int delay = GeneralSettings::autoExpandFolders() ? 750 : -1; - controller->setAutoActivationDelay(delay); + controller->setAutoActivationEnabled(GeneralSettings::autoExpandFolders()); connect(controller, &KItemListController::doubleClickViewBackground, this, &DolphinView::doubleClickViewBackground); // The EnlargeSmallPreviews setting can only be changed after the model @@ -578,8 +577,7 @@ void DolphinView::readSettings() m_view->readSettings(); applyViewProperties(); - const int delay = GeneralSettings::autoExpandFolders() ? 750 : -1; - m_container->controller()->setAutoActivationDelay(delay); + m_container->controller()->setAutoActivationEnabled(GeneralSettings::autoExpandFolders()); const int newZoomLevel = m_view->zoomLevel(); if (newZoomLevel != oldZoomLevel) { -- 2.47.3