From bfaa79b55a8490b1a4b292674d6758c4c8b52504 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Thu, 5 Jan 2012 20:41:59 +0100 Subject: [PATCH] Folders Panel: Activate folders on single-click Even if double-click is used as default setting, the folders panel should open folders with a single-click. BUG: 289971 FIXED-IN: 4.8.0 --- src/kitemviews/kitemlistcontroller.cpp | 15 +++++++++++++-- src/kitemviews/kitemlistcontroller.h | 10 ++++++++++ src/panels/folders/folderspanel.cpp | 1 + 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index 026c245f5..220748be7 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -41,6 +41,7 @@ KItemListController::KItemListController(QObject* parent) : QObject(parent), + m_singleClickActivation(KGlobalSettings::singleClick()), m_selectionTogglePressed(false), m_selectionBehavior(NoSelection), m_model(0), @@ -142,6 +143,16 @@ int KItemListController::autoActivationDelay() const return m_autoActivationTimer->interval(); } +void KItemListController::setSingleClickActivation(bool singleClick) +{ + m_singleClickActivation = singleClick; +} + +bool KItemListController::singleClickActivation() const +{ + return m_singleClickActivation; +} + bool KItemListController::showEvent(QShowEvent* event) { Q_UNUSED(event); @@ -577,7 +588,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 (!KGlobalSettings::singleClick()) { + } else if (!m_singleClickActivation) { emitItemActivated = false; } if (emitItemActivated) { @@ -598,7 +609,7 @@ bool KItemListController::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event, const QPointF pos = transform.map(event->pos()); const int index = m_view->itemAt(pos); - bool emitItemActivated = !KGlobalSettings::singleClick() && + bool emitItemActivated = !m_singleClickActivation && (event->button() & Qt::LeftButton) && index >= 0 && index < m_model->count(); if (emitItemActivated) { diff --git a/src/kitemviews/kitemlistcontroller.h b/src/kitemviews/kitemlistcontroller.h index b8de195eb..b7efbde74 100644 --- a/src/kitemviews/kitemlistcontroller.h +++ b/src/kitemviews/kitemlistcontroller.h @@ -104,6 +104,15 @@ public: void setAutoActivationDelay(int delay); int autoActivationDelay() const; + /** + * If set to true, the signals itemActivated() and itemsActivated() are emitted + * after a single-click of the left mouse button. If set to false, a double-click + * is required. Per default the setting from KGlobalSettings::singleClick() is + * used. + */ + void setSingleClickActivation(bool singleClick); + bool singleClickActivation() const; + virtual bool showEvent(QShowEvent* event); virtual bool hideEvent(QHideEvent* event); virtual bool keyPressEvent(QKeyEvent* event); @@ -249,6 +258,7 @@ private: qreal keyboardAnchorPos(int index) const; private: + bool m_singleClickActivation; bool m_selectionTogglePressed; SelectionBehavior m_selectionBehavior; KItemModelBase* m_model; diff --git a/src/panels/folders/folderspanel.cpp b/src/panels/folders/folderspanel.cpp index bb2198d48..86a1c0ccd 100644 --- a/src/panels/folders/folderspanel.cpp +++ b/src/panels/folders/folderspanel.cpp @@ -174,6 +174,7 @@ void FoldersPanel::showEvent(QShowEvent* event) m_controller->setModel(model); m_controller->setSelectionBehavior(KItemListController::SingleSelection); m_controller->setAutoActivationDelay(750); + m_controller->setSingleClickActivation(true); connect(m_controller, SIGNAL(itemActivated(int)), this, SLOT(slotItemActivated(int))); connect(m_controller, SIGNAL(itemMiddleClicked(int)), this, SLOT(slotItemMiddleClicked(int))); -- 2.47.3