From fb35320cdcf34389e330eacf4d157d42e2aecdae Mon Sep 17 00:00:00 2001 From: "Martin T. H. Sandsmark" Date: Thu, 9 Jul 2020 13:00:15 +0200 Subject: [PATCH] add action to disable/enable mouse tracking --- desktop/partui.rc | 4 +++- desktop/sessionui.rc | 5 ++++- src/session/SessionController.cpp | 19 +++++++++++++++++++ src/session/SessionController.h | 1 + 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/desktop/partui.rc b/desktop/partui.rc index f796dbb5c..39146f866 100644 --- a/desktop/partui.rc +++ b/desktop/partui.rc @@ -1,7 +1,7 @@ - + @@ -21,6 +21,8 @@ + + diff --git a/desktop/sessionui.rc b/desktop/sessionui.rc index 982123b54..2c03d658d 100644 --- a/desktop/sessionui.rc +++ b/desktop/sessionui.rc @@ -1,7 +1,7 @@ - + @@ -32,6 +32,7 @@ + @@ -57,6 +58,8 @@ + + diff --git a/src/session/SessionController.cpp b/src/session/SessionController.cpp index dd4c01015..74e25310f 100644 --- a/src/session/SessionController.cpp +++ b/src/session/SessionController.cpp @@ -560,6 +560,19 @@ void SessionController::toggleReadOnly() } } +void SessionController::toggleAllowMouseTracking() +{ + QAction *action = qobject_cast(sender()); + + if (action == nullptr) { + // Crash if running in debug build (aka. someone developing) + Q_ASSERT(false && "Invalid function called toggleAllowMouseTracking"); + return; + } + + _view->setAllowMouseTracking(action->isChecked()); +} + void SessionController::removeSearchFilter() { if (_searchFilter == nullptr) { @@ -730,6 +743,12 @@ void SessionController::setupCommonActions() #endif &Konsole::SessionController::changeCodec); + // Mouse tracking enabled + action = collection->addAction(QStringLiteral("allow-mouse-tracking"), this, &SessionController::toggleAllowMouseTracking); + action->setText(i18nc("@item:inmenu Allows terminal applications to request mouse tracking", "Allow mouse tracking")); + action->setCheckable(true); + action->setChecked(true); // the default state + // Read-only action = collection->addAction(QStringLiteral("view-readonly"), this, &SessionController::toggleReadOnly); action->setText(i18nc("@item:inmenu A read only (locked) session", "Read-only")); diff --git a/src/session/SessionController.h b/src/session/SessionController.h index ecea02515..5c2d3fbcc 100644 --- a/src/session/SessionController.h +++ b/src/session/SessionController.h @@ -257,6 +257,7 @@ private Q_SLOTS: void sendForegroundColor(uint terminator); void sendBackgroundColor(uint terminator); void toggleReadOnly(); + void toggleAllowMouseTracking(); // other void setupSearchBar();