From dd5e3c08b6b7c59595c909922aafdd5821322401 Mon Sep 17 00:00:00 2001 From: Paolo Cancedda Date: Tue, 18 Jun 2024 00:31:40 +0200 Subject: [PATCH 1/5] ui: improve key capture The QLineEdit in assignhotkey.ui intercepts several key events, (e.g. backspace, delete, home, end, left and right arrows...). Replace the QLineEdit with a simple QLabel to improve key capture. Moreover, inhibit completely the CTRL+ combinations. --- ui/src/assignhotkey.cpp | 11 +++++------ ui/src/assignhotkey.ui | 23 +++++++++++++++++++---- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/ui/src/assignhotkey.cpp b/ui/src/assignhotkey.cpp index d9e56d971e..f88c669f1e 100644 --- a/ui/src/assignhotkey.cpp +++ b/ui/src/assignhotkey.cpp @@ -30,6 +30,7 @@ #define SETTINGS_GEOMETRY "assignhotkey/geometry" #define SETTINGS_AUTOCLOSE "assignhotkey/autoclose" + /***************************************************************************** * Initialization *****************************************************************************/ @@ -59,11 +60,8 @@ AssignHotKey::AssignHotKey(QWidget* parent, const QKeySequence& keySequence) m_infoText->setFocusPolicy(Qt::NoFocus); m_buttonBox->setFocusPolicy(Qt::NoFocus); - m_previewEdit->setReadOnly(true); - m_previewEdit->setAlignment(Qt::AlignCenter); - m_keySequence = QKeySequence(keySequence); - m_previewEdit->setText(m_keySequence.toString(QKeySequence::NativeText)); + m_previewLabel->setText(m_keySequence.toString(QKeySequence::NativeText)); QSettings settings; m_autoCloseCheckBox->setChecked(settings.value(SETTINGS_AUTOCLOSE).toBool()); @@ -89,13 +87,14 @@ void AssignHotKey::keyPressEvent(QKeyEvent* event) { int key = event->key(); if (event->key() == Qt::Key_Control || event->key() == Qt::Key_Alt || - event->key() == Qt::Key_Shift || event->key() == Qt::Key_Meta) + event->key() == Qt::Key_Shift || event->key() == Qt::Key_Meta || + event->modifiers() == Qt::ControlModifier) { key = 0; } m_keySequence = QKeySequence(key | (event->modifiers() & ~Qt::ControlModifier)); - m_previewEdit->setText(m_keySequence.toString(QKeySequence::NativeText)); + m_previewLabel->setText(m_keySequence.toString(QKeySequence::NativeText)); if (m_autoCloseCheckBox->isChecked() == true && key != 0) accept(); diff --git a/ui/src/assignhotkey.ui b/ui/src/assignhotkey.ui index a97f1030e4..0742b74dbd 100644 --- a/ui/src/assignhotkey.ui +++ b/ui/src/assignhotkey.ui @@ -37,7 +37,7 @@ - + Key combination @@ -47,12 +47,27 @@ - + + + + 0 + 0 + + + + Qt::StrongFocus + + + QFrame::Box + + + + Qt::AlignCenter - - true + + 3 From 5413a7efd14d99c5db29ced40f867491416a5d1c Mon Sep 17 00:00:00 2001 From: Paolo Cancedda Date: Tue, 18 Jun 2024 22:59:55 +0200 Subject: [PATCH 2/5] ui/test: replace m_previewEdit with m_previewLabel in AssignHotKey --- ui/test/assignhotkey/assignhotkey_test.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ui/test/assignhotkey/assignhotkey_test.cpp b/ui/test/assignhotkey/assignhotkey_test.cpp index 37bb4b9a52..97551cf4bc 100644 --- a/ui/test/assignhotkey/assignhotkey_test.cpp +++ b/ui/test/assignhotkey/assignhotkey_test.cpp @@ -32,8 +32,7 @@ void AssignHotKey_Test::initial() QKeySequence seq(Qt::Key_A | Qt::SHIFT); AssignHotKey ahk(NULL, seq); QCOMPARE(ahk.keySequence(), seq); - QCOMPARE(ahk.m_previewEdit->text(), seq.toString(QKeySequence::NativeText)); - QCOMPARE(ahk.m_previewEdit->isReadOnly(), true); + QCOMPARE(ahk.m_previewLabel->text(), seq.toString(QKeySequence::NativeText)); } void AssignHotKey_Test::keyPressEventAuto() From 1f1409be2617d69f5c5481793bca2a916781bb8c Mon Sep 17 00:00:00 2001 From: Paolo Cancedda Date: Wed, 19 Jun 2024 00:13:48 +0200 Subject: [PATCH 3/5] ui: introduce keyboard scroll flag in Virtual Console Introduce in Virtual Console Settings a flag to enable/disable standard keyboard management on scroll area. The flag, when enabled (default), guarantees current behaviour: arrow keys and PgUp/PgDown keys are used to scroll the console and cannot be used as key combinations for controls. When disabled, the scroll area does not consume key events anymore, leaving all the keys available as key combinations on the controls. --- ui/src/CMakeLists.txt | 1 + ui/src/src.pro | 2 + ui/src/virtualconsole/vcproperties.cpp | 27 ++++++++++++ ui/src/virtualconsole/vcproperties.h | 22 +++++++--- ui/src/virtualconsole/vcproperties.ui | 46 ++++++++++++++++++++ ui/src/virtualconsole/vcpropertieseditor.cpp | 6 +++ ui/src/virtualconsole/vcpropertieseditor.h | 1 + ui/src/virtualconsole/vcscrollarea.cpp | 18 ++++++++ ui/src/virtualconsole/vcscrollarea.h | 23 ++++++++++ ui/src/virtualconsole/virtualconsole.cpp | 12 ++++- ui/src/virtualconsole/virtualconsole.h | 6 ++- 11 files changed, 156 insertions(+), 8 deletions(-) create mode 100644 ui/src/virtualconsole/vcscrollarea.cpp create mode 100644 ui/src/virtualconsole/vcscrollarea.h diff --git a/ui/src/CMakeLists.txt b/ui/src/CMakeLists.txt index a0444ef83b..aa251f725c 100644 --- a/ui/src/CMakeLists.txt +++ b/ui/src/CMakeLists.txt @@ -127,6 +127,7 @@ add_library(${module_name} virtualconsole/vcmatrixproperties.cpp virtualconsole/vcmatrixproperties.h virtualconsole/vcmatrixproperties.ui virtualconsole/vcproperties.cpp virtualconsole/vcproperties.h virtualconsole/vcproperties.ui virtualconsole/vcpropertieseditor.cpp virtualconsole/vcpropertieseditor.h + virtualconsole/vcscrollarea.cpp virtualconsole/vcscrollarea.h virtualconsole/vcslider.cpp virtualconsole/vcslider.h virtualconsole/vcsliderproperties.cpp virtualconsole/vcsliderproperties.h virtualconsole/vcsliderproperties.ui virtualconsole/vcsoloframe.cpp virtualconsole/vcsoloframe.h diff --git a/ui/src/src.pro b/ui/src/src.pro index 8f80738cca..8f6a5f6caf 100644 --- a/ui/src/src.pro +++ b/ui/src/src.pro @@ -155,6 +155,7 @@ HEADERS += virtualconsole/addvcbuttonmatrix.h \ virtualconsole/vcmatrixproperties.h \ virtualconsole/vcproperties.h \ virtualconsole/vcpropertieseditor.h \ + virtualconsole/vcscrollarea.h \ virtualconsole/vcslider.h \ virtualconsole/vcsliderproperties.h \ virtualconsole/vcsoloframe.h \ @@ -337,6 +338,7 @@ SOURCES += virtualconsole/addvcbuttonmatrix.cpp \ virtualconsole/vcmatrixproperties.cpp \ virtualconsole/vcproperties.cpp \ virtualconsole/vcpropertieseditor.cpp \ + virtualconsole/vcscrollarea.cpp \ virtualconsole/vcslider.cpp \ virtualconsole/vcsliderproperties.cpp \ virtualconsole/vcsoloframe.cpp \ diff --git a/ui/src/virtualconsole/vcproperties.cpp b/ui/src/virtualconsole/vcproperties.cpp index 0d1360c927..0df0e8a0d1 100644 --- a/ui/src/virtualconsole/vcproperties.cpp +++ b/ui/src/virtualconsole/vcproperties.cpp @@ -34,6 +34,7 @@ VCProperties::VCProperties() : m_size(QSize(1920, 1080)) , m_gmVisible(true) + , m_keyboardScroll(true) , m_gmChannelMode(GrandMaster::Intensity) , m_gmValueMode(GrandMaster::Reduce) , m_gmSliderMode(GrandMaster::Normal) @@ -45,6 +46,7 @@ VCProperties::VCProperties() VCProperties::VCProperties(const VCProperties& properties) : m_size(properties.m_size) , m_gmVisible(properties.m_gmVisible) + , m_keyboardScroll(properties.m_keyboardScroll) , m_gmChannelMode(properties.m_gmChannelMode) , m_gmValueMode(properties.m_gmValueMode) , m_gmSliderMode(properties.m_gmSliderMode) @@ -63,6 +65,7 @@ VCProperties &VCProperties::operator=(const VCProperties &props) { m_size = props.m_size; m_gmVisible = props.m_gmVisible; + m_keyboardScroll = props.m_keyboardScroll; m_gmChannelMode = props.m_gmChannelMode; m_gmValueMode = props.m_gmValueMode; m_gmSliderMode = props.m_gmSliderMode; @@ -87,6 +90,20 @@ QSize VCProperties::size() const return m_size; } +/***************************************************************************** + * Keyboard scrolling + *****************************************************************************/ + +void VCProperties::setKeyboardScroll(const bool enable) +{ + m_keyboardScroll = enable; +} + +bool VCProperties::keyboardScroll() const +{ + return m_keyboardScroll; +} + /***************************************************************************** * Grand Master *****************************************************************************/ @@ -179,6 +196,15 @@ bool VCProperties::loadXML(QXmlStreamReader &root) /* Set size if both are valid */ if (sz.isValid() == true) setSize(sz); +\ + bool keyboardScroll = true; + + /* Keyboard scrolling */ + str = root.attributes().value(KXMLQLCVCPropertiesKeyboardScroll).toString(); + if (str.isEmpty() == false) + keyboardScroll = QVariant(str).toBool(); + setKeyboardScroll(keyboardScroll); + root.skipCurrentElement(); } else if (root.name() == KXMLQLCVCPropertiesGrandMaster) @@ -242,6 +268,7 @@ bool VCProperties::saveXML(QXmlStreamWriter *doc) const doc->writeStartElement(KXMLQLCVCPropertiesSize); doc->writeAttribute(KXMLQLCVCPropertiesSizeWidth, QString::number(size().width())); doc->writeAttribute(KXMLQLCVCPropertiesSizeHeight, QString::number(size().height())); + doc->writeAttribute(KXMLQLCVCPropertiesKeyboardScroll, QVariant(keyboardScroll()).toString()); doc->writeEndElement(); /*********************** diff --git a/ui/src/virtualconsole/vcproperties.h b/ui/src/virtualconsole/vcproperties.h index 2b1c8e08bc..3aa14a1779 100644 --- a/ui/src/virtualconsole/vcproperties.h +++ b/ui/src/virtualconsole/vcproperties.h @@ -35,12 +35,13 @@ class Doc; * @{ */ -#define KXMLQLCVirtualConsole QStringLiteral("VirtualConsole") +#define KXMLQLCVirtualConsole QStringLiteral("VirtualConsole") -#define KXMLQLCVCProperties QStringLiteral("Properties") -#define KXMLQLCVCPropertiesSize QStringLiteral("Size") -#define KXMLQLCVCPropertiesSizeWidth QStringLiteral("Width") -#define KXMLQLCVCPropertiesSizeHeight QStringLiteral("Height") +#define KXMLQLCVCProperties QStringLiteral("Properties") +#define KXMLQLCVCPropertiesSize QStringLiteral("Size") +#define KXMLQLCVCPropertiesSizeWidth QStringLiteral("Width") +#define KXMLQLCVCPropertiesSizeHeight QStringLiteral("Height") +#define KXMLQLCVCPropertiesKeyboardScroll QStringLiteral("KeyboardScroll") #define KXMLQLCVCPropertiesGrandMaster QStringLiteral("GrandMaster") #define KXMLQLCVCPropertiesGrandMasterVisible QStringLiteral("Visible") @@ -98,8 +99,19 @@ class VCProperties quint32 grandMasterInputUniverse() const; quint32 grandMasterInputChannel() const; + /********************************************************************* + * Keyboard scrolling + *********************************************************************/ + + /** Set Virtual Console keyboard scrolling */ + void setKeyboardScroll(const bool enable); + + /** Get Virtual Console keyboard scrolling */ + bool keyboardScroll() const; + private: bool m_gmVisible; + bool m_keyboardScroll; GrandMaster::ChannelMode m_gmChannelMode; GrandMaster::ValueMode m_gmValueMode; GrandMaster::SliderMode m_gmSliderMode; diff --git a/ui/src/virtualconsole/vcproperties.ui b/ui/src/virtualconsole/vcproperties.ui index 13a44e807c..e8fa9f5074 100644 --- a/ui/src/virtualconsole/vcproperties.ui +++ b/ui/src/virtualconsole/vcproperties.ui @@ -105,6 +105,35 @@ + + + Scrolling + + + + + + Use arrow and PgUp/PgDown keys to scroll + + + true + + + + + + + Note: enabling keyboard scroll prevents using arrow and PgUp/PgDown keys in Key combinations for console controls. + + + true + + + + + + + Qt::Orientation::Vertical @@ -830,6 +859,7 @@ m_sizeXSpin m_sizeYSpin + m_enableKeyboardScroll m_buttonWspin m_buttonHspin m_sliderWspin @@ -1004,6 +1034,22 @@ + + m_enableKeyboardScroll + toggled(bool) + VCPropertiesEditor + slotKeyboardScrollToggled(bool) + + + 190 + 198 + + + 190 + 245 + + + m_gmVisible toggled(bool) diff --git a/ui/src/virtualconsole/vcpropertieseditor.cpp b/ui/src/virtualconsole/vcpropertieseditor.cpp index 94a76ec29f..3bb6040f73 100644 --- a/ui/src/virtualconsole/vcpropertieseditor.cpp +++ b/ui/src/virtualconsole/vcpropertieseditor.cpp @@ -56,6 +56,7 @@ VCPropertiesEditor::VCPropertiesEditor(QWidget* parent, const VCProperties& prop /* General page */ m_sizeXSpin->setValue(properties.size().width()); m_sizeYSpin->setValue(properties.size().height()); + m_enableKeyboardScroll->setChecked(properties.keyboardScroll()); /* Widgets page */ QSettings settings; @@ -321,6 +322,11 @@ void VCPropertiesEditor::slotSizeYChanged(int value) m_properties.setSize(sz); } +void VCPropertiesEditor::slotKeyboardScrollToggled(bool checked) +{ + m_properties.setKeyboardScroll(checked); +} + void VCPropertiesEditor::slotSpeedDialConfirmed() { if (m_speedValueEdit->text().contains(".") == false) diff --git a/ui/src/virtualconsole/vcpropertieseditor.h b/ui/src/virtualconsole/vcpropertieseditor.h index 96cbca0500..d298a64b7c 100644 --- a/ui/src/virtualconsole/vcpropertieseditor.h +++ b/ui/src/virtualconsole/vcpropertieseditor.h @@ -84,6 +84,7 @@ class VCPropertiesEditor : public QDialog, public Ui_VCPropertiesEditor private slots: void slotSizeXChanged(int value); void slotSizeYChanged(int value); + void slotKeyboardScrollToggled(bool checked); /************************************************************************* * Widgets page diff --git a/ui/src/virtualconsole/vcscrollarea.cpp b/ui/src/virtualconsole/vcscrollarea.cpp new file mode 100644 index 0000000000..a608e09b88 --- /dev/null +++ b/ui/src/virtualconsole/vcscrollarea.cpp @@ -0,0 +1,18 @@ +#include "vcscrollarea.h" +#include "qevent.h" + +VCScrollArea::VCScrollArea(QWidget *parent) : QScrollArea(parent) { + // nothing more right now +} + +void VCScrollArea::keyPressEvent(QKeyEvent *ev) { + if (m_keyPassthru) { + ev->ignore(); + } else { + QScrollArea::keyPressEvent(ev); + } +} + +void VCScrollArea::setKeyPassthruEnabled(bool enable) { + m_keyPassthru = enable; +} diff --git a/ui/src/virtualconsole/vcscrollarea.h b/ui/src/virtualconsole/vcscrollarea.h new file mode 100644 index 0000000000..da2bee9ddb --- /dev/null +++ b/ui/src/virtualconsole/vcscrollarea.h @@ -0,0 +1,23 @@ +#ifndef VCSCROLLAREA_H +#define VCSCROLLAREA_H + +#include +#include +#include + +class VCScrollArea : public QScrollArea +{ + Q_OBJECT +public: + explicit VCScrollArea(QWidget *parent = nullptr); + + void setKeyPassthruEnabled(bool enabled); + +protected: + void keyPressEvent(QKeyEvent *) override; + +private: + bool m_keyPassthru; +}; + +#endif // VCSCROLLAREA_H diff --git a/ui/src/virtualconsole/virtualconsole.cpp b/ui/src/virtualconsole/virtualconsole.cpp index 617ea4ed41..383060b373 100644 --- a/ui/src/virtualconsole/virtualconsole.cpp +++ b/ui/src/virtualconsole/virtualconsole.cpp @@ -135,6 +135,7 @@ VirtualConsole::VirtualConsole(QWidget* parent, Doc* doc) , m_contents(NULL) , m_liveEdit(false) + , m_keyboardScroll(true) { Q_ASSERT(s_instance == NULL); s_instance = this; @@ -1014,6 +1015,7 @@ void VirtualConsole::slotToolsSettings() m_dockArea->setGrandMasterVisible(m_properties.grandMasterVisible()); m_dockArea->setGrandMasterInvertedAppearance(m_properties.grandMasterSliderMode()); } + m_keyboardScroll = m_properties.keyboardScroll(); QSettings settings; settings.setValue(SETTINGS_BUTTON_SIZE, vcpe.buttonSize()); @@ -1605,7 +1607,7 @@ void VirtualConsole::initContents() { Q_ASSERT(layout() != NULL); - m_scrollArea = new QScrollArea(this); + m_scrollArea = new VCScrollArea(this); m_contentsLayout->addWidget(m_scrollArea); m_scrollArea->setAlignment(Qt::AlignCenter); m_scrollArea->setWidgetResizable(false); @@ -1730,6 +1732,9 @@ void VirtualConsole::enableEdit() m_stackingRaiseAction->setShortcut(QKeySequence("SHIFT+UP")); m_stackingLowerAction->setShortcut(QKeySequence("SHIFT+DOWN")); + // disable key passthru + m_scrollArea->setKeyPassthruEnabled(false); + // Show toolbar m_toolbar->show(); } @@ -1783,6 +1788,10 @@ void VirtualConsole::disableEdit() m_stackingRaiseAction->setShortcut(QKeySequence()); m_stackingLowerAction->setShortcut(QKeySequence()); + + // manage key passthru + m_scrollArea->setKeyPassthruEnabled(!m_keyboardScroll); + // Hide toolbar; there's nothing usable there in operate mode m_toolbar->hide(); @@ -1845,6 +1854,7 @@ bool VirtualConsole::loadXML(QXmlStreamReader &root) QSize size(m_properties.size()); contents()->resize(size); contents()->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); + m_keyboardScroll = m_properties.keyboardScroll(); } else if (root.name() == KXMLQLCVCFrame) { diff --git a/ui/src/virtualconsole/virtualconsole.h b/ui/src/virtualconsole/virtualconsole.h index 8187b61ebe..589d7ca626 100644 --- a/ui/src/virtualconsole/virtualconsole.h +++ b/ui/src/virtualconsole/virtualconsole.h @@ -26,6 +26,7 @@ #include #include +#include "vcscrollarea.h" #include "vcproperties.h" #include "doc.h" @@ -34,7 +35,7 @@ class QXmlStreamWriter; class VirtualConsole; class QActionGroup; class QVBoxLayout; -class QScrollArea; +class VCScrollArea; class VCDockArea; class QKeyEvent; class QToolBar; @@ -338,7 +339,7 @@ public slots: protected: QVBoxLayout* m_contentsLayout; - QScrollArea* m_scrollArea; + VCScrollArea* m_scrollArea; VCFrame* m_contents; QHash m_widgetsMap; @@ -365,6 +366,7 @@ public slots: *********************************************************************/ private: bool m_liveEdit; + bool m_keyboardScroll; public: /** Toggle Virtual Console live editting */ From e0183ccac2a2458c5e17332e3a7ccc9f5003a817 Mon Sep 17 00:00:00 2001 From: Paolo Cancedda Date: Sat, 7 Jun 2025 19:34:36 +0200 Subject: [PATCH 4/5] fix: initialize m_keyPassthru in VCScrollArea constructor --- ui/src/virtualconsole/vcscrollarea.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/virtualconsole/vcscrollarea.cpp b/ui/src/virtualconsole/vcscrollarea.cpp index a608e09b88..c9306c176d 100644 --- a/ui/src/virtualconsole/vcscrollarea.cpp +++ b/ui/src/virtualconsole/vcscrollarea.cpp @@ -1,7 +1,7 @@ #include "vcscrollarea.h" #include "qevent.h" -VCScrollArea::VCScrollArea(QWidget *parent) : QScrollArea(parent) { +VCScrollArea::VCScrollArea(QWidget *parent) : QScrollArea(parent), m_keyPassthru(false) { // nothing more right now } From 89a98a6f166c68ce344e79e2f3ed44017b35c37c Mon Sep 17 00:00:00 2001 From: Paolo Cancedda Date: Sun, 8 Jun 2025 10:04:08 +0200 Subject: [PATCH 5/5] ui: allow scrolling in VC using scroll lock key At show time, even when "Use arrow and PgUp/PgDown keys to scroll" setting is unchecked, allow arrow and page keys to scroll around in virtual console. Scroll lock key toggles between scrolling and normal behaviour. --- ui/src/virtualconsole/virtualconsole.cpp | 21 ++++++++++++++++++--- ui/src/virtualconsole/virtualconsole.h | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ui/src/virtualconsole/virtualconsole.cpp b/ui/src/virtualconsole/virtualconsole.cpp index 383060b373..b99dd3775a 100644 --- a/ui/src/virtualconsole/virtualconsole.cpp +++ b/ui/src/virtualconsole/virtualconsole.cpp @@ -136,6 +136,7 @@ VirtualConsole::VirtualConsole(QWidget* parent, Doc* doc) , m_liveEdit(false) , m_keyboardScroll(true) + , m_forceKeyboardScroll(false) { Q_ASSERT(s_instance == NULL); s_instance = this; @@ -1016,6 +1017,7 @@ void VirtualConsole::slotToolsSettings() m_dockArea->setGrandMasterInvertedAppearance(m_properties.grandMasterSliderMode()); } m_keyboardScroll = m_properties.keyboardScroll(); + m_forceKeyboardScroll = false; QSettings settings; settings.setValue(SETTINGS_BUTTON_SIZE, vcpe.buttonSize()); @@ -1627,8 +1629,13 @@ void VirtualConsole::keyPressEvent(QKeyEvent* event) return; } - QKeySequence seq(event->key() | (event->modifiers() & ~Qt::ControlModifier)); - emit keyPressed(seq); + if (event->key() == Qt::Key_ScrollLock) { + m_forceKeyboardScroll = !m_forceKeyboardScroll; + m_scrollArea->setKeyPassthruEnabled(m_doc->mode() == Doc::Operate && !(m_keyboardScroll || m_forceKeyboardScroll)); + } else { + QKeySequence seq(event->key() | (event->modifiers() & ~Qt::ControlModifier)); + emit keyPressed(seq); + } event->accept(); } @@ -1641,6 +1648,12 @@ void VirtualConsole::keyReleaseEvent(QKeyEvent* event) return; } + // consume key release for scroll lock, since we already consumed key press + if (event->key() == Qt::Key_ScrollLock) { + event->accept(); + return; + } + QKeySequence seq(event->key() | event->modifiers()); emit keyReleased(seq); @@ -1790,7 +1803,8 @@ void VirtualConsole::disableEdit() // manage key passthru - m_scrollArea->setKeyPassthruEnabled(!m_keyboardScroll); + m_forceKeyboardScroll = false; + m_scrollArea->setKeyPassthruEnabled(m_doc->mode() == Doc::Operate && !(m_keyboardScroll || m_forceKeyboardScroll)); // Hide toolbar; there's nothing usable there in operate mode m_toolbar->hide(); @@ -1855,6 +1869,7 @@ bool VirtualConsole::loadXML(QXmlStreamReader &root) contents()->resize(size); contents()->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); m_keyboardScroll = m_properties.keyboardScroll(); + m_forceKeyboardScroll = false; } else if (root.name() == KXMLQLCVCFrame) { diff --git a/ui/src/virtualconsole/virtualconsole.h b/ui/src/virtualconsole/virtualconsole.h index 589d7ca626..1805f72704 100644 --- a/ui/src/virtualconsole/virtualconsole.h +++ b/ui/src/virtualconsole/virtualconsole.h @@ -367,6 +367,7 @@ public slots: private: bool m_liveEdit; bool m_keyboardScroll; + bool m_forceKeyboardScroll; public: /** Toggle Virtual Console live editting */