Git commit 417af269e556cba6330a736b0b3089a053bff07f by Kurt Hindenburg. Committed on 28/12/2012 at 15:51. Pushed by hindenburg into branch 'master'.
Add option to disable ctrl+<mouse-wheel> zooming The built-in behavior of Ctrl+<Mouse Wheel> to zoom in/out the terminal can not be disabled. This patch adds an option to disable this behavior. (Default to the original behavior). Original patch by Yichao Yu yyc1992 at gmail.com I made some changes - bugs are mine as usual REVIEW: 107281 FIXED-IN: 4.11 GUI: M +11 -0 src/EditProfileDialog.cpp M +1 -0 src/EditProfileDialog.h M +10 -0 src/EditProfileDialog.ui M +2 -0 src/Profile.cpp M +10 -1 src/Profile.h M +2 -2 src/TerminalDisplay.cpp M +17 -0 src/TerminalDisplay.h M +3 -0 src/ViewManager.cpp http://commits.kde.org/konsole/417af269e556cba6330a736b0b3089a053bff07f diff --git a/src/EditProfileDialog.cpp b/src/EditProfileDialog.cpp index 00066e1..74b0237 100644 --- a/src/EditProfileDialog.cpp +++ b/src/EditProfileDialog.cpp @@ -471,6 +471,9 @@ void EditProfileDialog::setupAppearancePage(const Profile::Ptr profile) _ui->boldIntenseButton->setChecked(profile->boldIntense()); connect(_ui->boldIntenseButton, SIGNAL(toggled(bool)), this, SLOT(setBoldIntense(bool))); + _ui->enableMouseWheelZoomButton->setChecked(profile->mouseWheelZoomEnabled()); + connect(_ui->enableMouseWheelZoomButton, SIGNAL(toggled(bool)), this, + SLOT(toggleMouseWheelZoom(bool))); } void EditProfileDialog::setAntialiasText(bool enable) { @@ -486,6 +489,10 @@ void EditProfileDialog::setBoldIntense(bool enable) preview(Profile::BoldIntense, enable); updateTempProfileProperty(Profile::BoldIntense, enable); } +void EditProfileDialog::toggleMouseWheelZoom(bool enable) +{ + updateTempProfileProperty(Profile::MouseWheelZoomEnabled, enable); +} void EditProfileDialog::colorSchemeAnimationUpdate() { QAbstractItemModel* model = _ui->colorSchemeList->model(); @@ -1032,6 +1039,10 @@ void EditProfileDialog::setupMousePage(const Profile::Ptr profile) SLOT(TripleClickModeChanged(int))); _ui->openLinksByDirectClickButton->setEnabled(_ui->underlineLinksButton->isChecked()); + + _ui->enableMouseWheelZoomButton->setChecked(profile->mouseWheelZoomEnabled()); + connect(_ui->enableMouseWheelZoomButton, SIGNAL(toggled(bool)), this, + SLOT(toggleMouseWheelZoom(bool))); } void EditProfileDialog::setupAdvancedPage(const Profile::Ptr profile) { diff --git a/src/EditProfileDialog.h b/src/EditProfileDialog.h index c85bd11..30d72e5 100644 --- a/src/EditProfileDialog.h +++ b/src/EditProfileDialog.h @@ -129,6 +129,7 @@ private slots: void colorSchemeSelected(); void previewColorScheme(const QModelIndex& index); void fontSelected(const QFont&); + void toggleMouseWheelZoom(bool enable); void colorSchemeAnimationUpdate(); diff --git a/src/EditProfileDialog.ui b/src/EditProfileDialog.ui index 45eafcc..6cbf6a2 100644 --- a/src/EditProfileDialog.ui +++ b/src/EditProfileDialog.ui @@ -893,6 +893,16 @@ </property> </widget> </item> + <item> + <widget class="QCheckBox" name="enableMouseWheelZoomButton"> + <property name="toolTip"> + <string>Pressing Ctrl+&lt;mouse-wheel&gt; will increase/decrease the text size.</string> + </property> + <property name="text"> + <string>Allow Ctrl+&lt;mouse-wheel&gt; to zoom text size</string> + </property> + </widget> + </item> </layout> </widget> </item> diff --git a/src/Profile.cpp b/src/Profile.cpp index e81433f..4995d90 100644 --- a/src/Profile.cpp +++ b/src/Profile.cpp @@ -111,6 +111,7 @@ const Profile::PropertyInfo Profile::DefaultPropertyNames[] = { , { PasteFromSelectionEnabled , "PasteFromSelectionEnabled" , INTERACTION_GROUP , QVariant::Bool } , { PasteFromClipboardEnabled , "PasteFromClipboardEnabled" , INTERACTION_GROUP , QVariant::Bool } , { MiddleClickPasteMode, "MiddleClickPasteMode" , INTERACTION_GROUP , QVariant::Int } + , { MouseWheelZoomEnabled, "MouseWheelZoomEnabled", INTERACTION_GROUP, QVariant::Bool } // Encoding , { DefaultEncoding , "DefaultEncoding" , ENCODING_GROUP , QVariant::String } @@ -159,6 +160,7 @@ FallbackProfile::FallbackProfile() setProperty(SilenceSeconds, 10); setProperty(TerminalColumns, 80); setProperty(TerminalRows, 40); + setProperty(MouseWheelZoomEnabled, true); setProperty(KeyBindings, "default"); setProperty(ColorScheme, "Linux"); //use DarkPastels when is start support blue ncurses UI properly diff --git a/src/Profile.h b/src/Profile.h index ab154c0..6ba9bf5 100644 --- a/src/Profile.h +++ b/src/Profile.h @@ -245,7 +245,11 @@ public: * * In future, the format might be #.#.# to account for levels */ - MenuIndex + MenuIndex, + /** (bool) If true, mouse wheel scroll with Ctrl key pressed + * increases/decreases the terminal font size. + */ + MouseWheelZoomEnabled }; /** @@ -423,6 +427,11 @@ public: return property<bool>(Profile::BlinkingTextEnabled); } + /** Convenience method for property<bool>(Profile::MouseWheelZoomEnabled) */ + bool mouseWheelZoomEnabled() const { + return property<bool>(Profile::MouseWheelZoomEnabled); + } + /** Convenience method for property<bool>(Profile::BlinkingCursorEnabled) */ bool blinkingCursorEnabled() const { return property<bool>(Profile::BlinkingCursorEnabled); diff --git a/src/TerminalDisplay.cpp b/src/TerminalDisplay.cpp index 57e77a3..c5f6bc5 100644 --- a/src/TerminalDisplay.cpp +++ b/src/TerminalDisplay.cpp @@ -2392,8 +2392,8 @@ void TerminalDisplay::wheelEvent(QWheelEvent* ev) const int modifiers = ev->modifiers(); const int delta = ev->delta(); - // ctrl+<wheel> for zomming, like in konqueror and firefox - if (modifiers & Qt::ControlModifier) { + // ctrl+<wheel> for zooming, like in konqueror and firefox + if ((modifiers & Qt::ControlModifier) && mouseWheelZoom()) { if (delta > 0) { // wheel-up for increasing font size increaseFontSize(); diff --git a/src/TerminalDisplay.h b/src/TerminalDisplay.h index 8e246b8..1843e31 100644 --- a/src/TerminalDisplay.h +++ b/src/TerminalDisplay.h @@ -335,6 +335,22 @@ public: void visualBell(); /** + * Specified whether zoom terminal on Ctrl+<mouse wheel> is enabled or not. + * Defaults to enabled. + */ + void setMouseWheelZoom(bool value) { + _mouseWheelZoom = value; + }; + /** + * Returns the whether zoom terminal on Ctrl+<mouse wheel> is enabled. + * + * See setMouseWheelZoom() + */ + bool mouseWheelZoom() { + return _mouseWheelZoom; + }; + + /** * Reimplemented. Has no effect. Use setVTFont() to change the font * used to draw characters in the display. */ @@ -856,6 +872,7 @@ private: SessionController* _sessionController; bool _trimTrailingSpaces; // trim trailing spaces in selected text + bool _mouseWheelZoom; // enable mouse wheel zooming or not friend class TerminalDisplayAccessible; }; diff --git a/src/ViewManager.cpp b/src/ViewManager.cpp index faa1395..f9e5841 100644 --- a/src/ViewManager.cpp +++ b/src/ViewManager.cpp @@ -841,6 +841,9 @@ void ViewManager::applyProfileToView(TerminalDisplay* view , const Profile::Ptr // bell mode view->setBellMode(profile->property<int>(Profile::BellMode)); + + // mouse wheel zoom + view->setMouseWheelZoom(profile->mouseWheelZoomEnabled()); } void ViewManager::updateViewsForSession(Session* session)
