View Issue Details

IDProjectCategoryView StatusLast Update
0014645ScribusCanvaspublic2025-08-28 15:45
ReporterDoctorJellyface Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
Status newResolutionopen 
Platformx86_64OSArch LinuxOS Versionrolling
Product Version1.5.3.svn 
Summary0014645: [PATCH] Touchpad/trackpoint extremely sensitive in canvas
DescriptionWhen moving around/scrolling with a touchpad/trackpoint Scribus uses the same setting as with a mouse, making the really sensitive—touching the trackpoint with a feather while holding down CTRL would zoom one level, and I’m not exaggerating.

This is a shame because Qt5 brings the ability to utilize touchpads/trackpoints with full definition, making scrolling/zooming completely smooth.

I work in Scribus on the road often, and I use the trackpoint on my Thinkpad extensively, however because of this bug it’s almost impossible to do so.
TagsNo tags attached.
PatchYes

Activities

ale

2025-08-28 07:48

manager   ~0052975

Some time ago, a user proposed a patch on Github:

https://github.com/scribusproject/scribus/pull/184

The corresponding ticket is:

https://github.com/scribusproject/scribus/pull/184

I'm attaching the patch as a diff file.
touchpad-sensitivity.diff (1,066 bytes)   
diff --git a/scribus/scribusview.cpp b/scribus/scribusview.cpp
index 70c93cbd25..3398b5764e 100644
--- a/scribus/scribusview.cpp
+++ b/scribus/scribusview.cpp
@@ -3158,7 +3158,12 @@ void ScribusView::wheelEvent(QWheelEvent *w)
 	if (w->modifiers() == Qt::ControlModifier)
 	{
 		FPoint mp = m_canvas->globalToCanvas(w->globalPos());
-		w->delta() > 0 ? slotZoomIn(mp.x(), mp.y() , true) : slotZoomOut(mp.x(), mp.y(), true);
+		wheelAccumulatedDelta += w->delta();
+		if (abs(wheelAccumulatedDelta) >= QWheelEvent::DefaultDeltasPerStep)
+		{
+			wheelAccumulatedDelta > 0 ? slotZoomIn(mp.x(), mp.y() , true) : slotZoomOut(mp.x(), mp.y(), true);
+			wheelAccumulatedDelta = 0;
+		}
 	}
 	else
 	{
diff --git a/scribus/scribusview.h b/scribus/scribusview.h
index a3bbc46ab9..512e06f87f 100644
--- a/scribus/scribusview.h
+++ b/scribus/scribusview.h
@@ -298,6 +298,7 @@ public slots: // Public slots
 	bool linkAfterDraw { false };
 	bool ImageAfterDraw { false };
 	QStack<ViewState> m_viewStates;
+	int wheelAccumulatedDelta { 0 };
 
 private slots:
 	void setZoom();
touchpad-sensitivity.diff (1,066 bytes)   

melwyncarlo

2025-08-28 13:55

reporter   ~0052977

I have created a solution, which has 2 parts:
1. Mimicking the existing codebase, i.e. a QElapsedTimer. This creates an initial pause, similar to the above-mentioned diff's wheelAccumulatedDelta variable.
2. Create a Preferences slider under: Preferences -> User Interface -> Interactivity -> Zoom Sensitivity. Tweaking this provides additional control over trackpad sensitivity.

I've tested it, and it works as intended, on my end.
melwyn_carlo_bug_id_0014645.diff (10,272 bytes)   
Index: scribus/prefsmanager.cpp
===================================================================
--- scribus/prefsmanager.cpp	(revision 27002)
+++ scribus/prefsmanager.cpp	(working copy)
@@ -156,6 +156,7 @@
 
 	appPrefs.uiPrefs.mouseMoveTimeout = 150;
 	appPrefs.uiPrefs.wheelJump = 40;
+	appPrefs.uiPrefs.zoomSensitivity = 1.0;
 	appPrefs.uiPrefs.style = "";
 	appPrefs.uiPrefs.stylePalette = "auto";
 	// On Windows, use the Fusion theme by default when possible,
@@ -1363,6 +1364,7 @@
 	dcUI.setAttribute("Theme", appPrefs.uiPrefs.style);
 	dcUI.setAttribute("ThemePalette", appPrefs.uiPrefs.stylePalette);
 	dcUI.setAttribute("ScrollWheelJump", appPrefs.uiPrefs.wheelJump);
+	dcUI.setAttribute("ZoomSensitivity", ScCLocale::toQStringC(appPrefs.uiPrefs.zoomSensitivity));
 	dcUI.setAttribute("MouseMoveTimeout", appPrefs.uiPrefs.mouseMoveTimeout);
 	dcUI.setAttribute("ApplicationFontSize", appPrefs.uiPrefs.applicationFontSize);
 	dcUI.setAttribute("PaletteFontSize", appPrefs.uiPrefs.paletteFontSize);
@@ -2043,6 +2045,7 @@
 			appPrefs.uiPrefs.style = dc.attribute("Theme", "Default");
 			appPrefs.uiPrefs.stylePalette = dc.attribute("ThemePalette", "auto");
 			appPrefs.uiPrefs.wheelJump = dc.attribute("ScrollWheelJump").toInt();
+			appPrefs.uiPrefs.zoomSensitivity = ScCLocale::toDoubleC(dc.attribute("ZoomSensitivity"), 1.0);
 			appPrefs.uiPrefs.mouseMoveTimeout = dc.attribute("MouseMoveTimeout", "150").toInt();
 			appPrefs.uiPrefs.applicationFontSize = dc.attribute("ApplicationFontSize", "12").toInt();
 			appPrefs.uiPrefs.paletteFontSize = dc.attribute("PaletteFontSize", "10").toInt();
Index: scribus/prefsstructs.h
===================================================================
--- scribus/prefsstructs.h	(revision 27002)
+++ scribus/prefsstructs.h	(working copy)
@@ -117,6 +117,7 @@
 {
 	int mouseMoveTimeout {150}; //! Mouse move timeout for move/resize operations
 	int wheelJump {40}; //! Distance to jump with mouse wheel scrolling
+	double zoomSensitivity {1.0}; //! Sensitivity (responsiveness) experienced while zooming
 	int applicationFontSize {12}; //! Font size to use in the application, apart from pßalettes
 	int paletteFontSize {10}; //! Font size to use in the palettes
 	QString style; 	//! Currently used QStyle name
Index: scribus/scribusview.cpp
===================================================================
--- scribus/scribusview.cpp	(revision 27002)
+++ scribus/scribusview.cpp	(working copy)
@@ -2160,9 +2160,9 @@
 	}
 	rememberOldZoomLocation(oldZoomX, oldZoomY);
 
-	double newScale = m_canvas->scale() * (1 + static_cast<double>(m_doc->opToolPrefs().magStep) / 100.0);
+	double newScale = m_canvas->scale() * (1 + static_cast<double>(m_doc->opToolPrefs().magStep * Prefs->uiPrefs.zoomSensitivity) / 100.0);
 	if (static_cast<int>(newScale * 100.0) > static_cast<int>(100.0 * static_cast<double>(m_doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale / 100.0))
-		newScale = m_canvas->scale() + static_cast<double>(m_doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale / 100.0;
+		newScale = m_canvas->scale() + static_cast<double>(m_doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale * Prefs->uiPrefs.zoomSensitivity / 100.0;
 
 	int zoomPointX(m_oldZoomX), zoomPointY(m_oldZoomY);
 	if (!preservePoint)
@@ -2194,9 +2194,9 @@
 	}
 	rememberOldZoomLocation(oldZoomX, oldZoomY);
 
-	double newScale = m_canvas->scale() - static_cast<double>(m_doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale / 100.0;
+	double newScale = m_canvas->scale() - static_cast<double>(m_doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale * Prefs->uiPrefs.zoomSensitivity / 100.0;
 	if (newScale <= Prefs->displayPrefs.displayScale / 100.0)
-		newScale = m_canvas->scale() / (1 + static_cast<double>(m_doc->opToolPrefs().magStep) / 100.0);
+		newScale = m_canvas->scale() + Prefs->uiPrefs.zoomSensitivity * ((m_canvas->scale() / (1 + static_cast<double>(m_doc->opToolPrefs().magStep) / 100.0)) - m_canvas->scale());
 	if (newScale <= Prefs->displayPrefs.displayScale / 100.0)
 		newScale = m_canvas->scale();
 
@@ -3205,10 +3205,19 @@
 
 void ScribusView::wheelEvent(QWheelEvent *w)
 {
+	if (m_scrollTimer.isValid()) {
+		if (!m_scrollTimer.hasExpired(Prefs->uiPrefs.mouseMoveTimeout)) {
+		    return;
+		}
+		m_scrollTimer.restart();
+	} else {
+		m_scrollTimer.start();
+	}
 	QPoint angleDelta = w->angleDelta();
 	if (w->modifiers() == Qt::ControlModifier)
 	{
 		FPoint mp = m_canvas->globalToCanvas(w->globalPosition());
+qDebug() << "angleDelta.y() = " << angleDelta.y();
 		angleDelta.y() > 0 ? slotZoomIn(mp.x(), mp.y(), true) : slotZoomOut(mp.x(), mp.y(), true);
 	}
 	else
Index: scribus/scribusview.h
===================================================================
--- scribus/scribusview.h	(revision 27002)
+++ scribus/scribusview.h	(working copy)
@@ -289,6 +289,7 @@
 	QMenu *pmenResolution { nullptr };
 	QPointF m_pressLocation;
 	QElapsedTimer m_moveTimer;
+	QElapsedTimer m_scrollTimer;
 	QTimer *m_dragTimer { nullptr };
 	bool m_dragTimerFired { false };
 	bool m_ready { false }; 
Index: scribus/ui/prefs_userinterface.cpp
===================================================================
--- scribus/ui/prefs_userinterface.cpp	(revision 27002)
+++ scribus/ui/prefs_userinterface.cpp	(working copy)
@@ -81,6 +81,7 @@
 	fontSizePaletteSpinBox->setToolTip( "<qt>" + tr( "Default font size for the tool windows" ) + "</qt>");
 	resizeMoveDelaySpinBox->setToolTip( "<qt>" + tr( "Time before resize or move starts allows for a slight delay between when you click and the operation happens to avoid unintended moves. This can be helpful when dealing with mouse sensitivity settings or accessibility issues related to ergonomic mice, touch pads or moveability of the wrists and hands." ) + "</qt>");
 	wheelJumpSpinBox->setToolTip( "<qt>" + tr( "Number of lines Scribus will scroll for each \"notch\" of the mouse wheel" ) + "</qt>");
+	zoomSensitivitySlider->setToolTip( "<qt>" + tr( "Sensitivity (responsiveness) experienced while zooming" ) + "</qt>");
 	//showSplashCheckBox->setToolTip( "<qt>" + tr( "" ) + "</qt>");
 	//showStartupDialogCheckBox->setToolTip( "<qt>" + tr( "" ) + "</qt>");
 	storyEditorUseSmartSelectionCheckBox->setToolTip( "<qt>" + tr( "The default behavior when double-clicking on a word is to select the word and the first following space. Smart selection will select only the word, without the following space." ) + "</qt>");
@@ -110,7 +111,7 @@
 		themePaletteComboBox->setCurrentIndex(index);
 	else
 		themePaletteComboBox->setCurrentIndex(0);
-
+qDebug() << "zoomSensitivity = " << prefsData->uiPrefs.zoomSensitivity;
 	setCurrentComboItem(languageComboBox, langString);
 	numberFormatComboBox->setCurrentIndex(prefsData->uiPrefs.userPreferredLocale == "System" ? 0 : 1);
 	setCurrentComboItem(themeComboBox, prefsData->uiPrefs.style);
@@ -118,6 +119,7 @@
 	fontSizeMenuSpinBox->setValue( prefsData->uiPrefs.applicationFontSize );
 	fontSizePaletteSpinBox->setValue( prefsData->uiPrefs.paletteFontSize);
 	wheelJumpSpinBox->setValue( prefsData->uiPrefs.wheelJump );
+	zoomSensitivitySlider->setValue( static_cast<int>(prefsData->uiPrefs.zoomSensitivity * 100) );
 	resizeMoveDelaySpinBox->setValue(prefsData->uiPrefs.mouseMoveTimeout);
 	recentDocumentsSpinBox->setValue( prefsData->uiPrefs.recentDocCount );
 	showStartupDialogCheckBox->setChecked(prefsData->uiPrefs.showStartupDialog);
@@ -142,6 +144,7 @@
 	prefsData->uiPrefs.applicationFontSize = fontSizeMenuSpinBox->value();
 	prefsData->uiPrefs.paletteFontSize = fontSizePaletteSpinBox->value();
 	prefsData->uiPrefs.wheelJump = wheelJumpSpinBox->value();
+	prefsData->uiPrefs.zoomSensitivity = static_cast<double>(zoomSensitivitySlider->value()) / 100.0;
 	prefsData->uiPrefs.mouseMoveTimeout = resizeMoveDelaySpinBox->value();
 	prefsData->uiPrefs.recentDocCount = recentDocumentsSpinBox->value();
 	prefsData->uiPrefs.showStartupDialog = showStartupDialogCheckBox->isChecked();
Index: scribus/ui/prefs_userinterfacebase.ui
===================================================================
--- scribus/ui/prefs_userinterfacebase.ui	(revision 27002)
+++ scribus/ui/prefs_userinterfacebase.ui	(working copy)
@@ -397,6 +397,50 @@
          <item row="1" column="1">
           <widget class="QSpinBox" name="wheelJumpSpinBox"/>
          </item>
+         <item row="2" column="0">
+          <widget class="QLabel" name="zoomSensitivityLabel">
+           <property name="text">
+            <string>&amp;Zoom Sensitivity:</string>
+           </property>
+           <property name="buddy">
+            <cstring>zoomSensitivitySlider</cstring>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="1">
+          <widget class="QSlider" name="zoomSensitivitySlider">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="minimumSize">
+            <size>
+             <width>200</width>
+             <height>0</height>
+            </size>
+           </property>
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>100</number>
+           </property>
+           <property name="singleStep">
+            <number>1</number>
+           </property>
+           <property name="pageStep">
+            <number>10</number>
+           </property>
+           <property name="tracking">
+            <bool>false</bool>
+           </property>
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+          </widget>
+         </item>
         </layout>
        </item>
        <item>
@@ -470,6 +514,7 @@
   <tabstop>fontSizeMenuSpinBox</tabstop>
   <tabstop>fontSizePaletteSpinBox</tabstop>
   <tabstop>wheelJumpSpinBox</tabstop>
+  <tabstop>zoomSensitivitySlider</tabstop>
   <tabstop>showSplashCheckBox</tabstop>
   <tabstop>showStartupDialogCheckBox</tabstop>
   <tabstop>storyEditorUseSmartSelectionCheckBox</tabstop>

melwyncarlo

2025-08-28 15:45

reporter   ~0052981

The previous diff file contains a couple qDebug() statements, which are not useful.
I know I should not include debugging statements in my diffs, so here is a new diff, with the qDebug() statements removed.
melwyn_carlo_bug_id_0014645_v2.diff (9,630 bytes)   
Index: scribus/prefsmanager.cpp
===================================================================
--- scribus/prefsmanager.cpp	(revision 27002)
+++ scribus/prefsmanager.cpp	(working copy)
@@ -156,6 +156,7 @@
 
 	appPrefs.uiPrefs.mouseMoveTimeout = 150;
 	appPrefs.uiPrefs.wheelJump = 40;
+	appPrefs.uiPrefs.zoomSensitivity = 1.0;
 	appPrefs.uiPrefs.style = "";
 	appPrefs.uiPrefs.stylePalette = "auto";
 	// On Windows, use the Fusion theme by default when possible,
@@ -1363,6 +1364,7 @@
 	dcUI.setAttribute("Theme", appPrefs.uiPrefs.style);
 	dcUI.setAttribute("ThemePalette", appPrefs.uiPrefs.stylePalette);
 	dcUI.setAttribute("ScrollWheelJump", appPrefs.uiPrefs.wheelJump);
+	dcUI.setAttribute("ZoomSensitivity", ScCLocale::toQStringC(appPrefs.uiPrefs.zoomSensitivity));
 	dcUI.setAttribute("MouseMoveTimeout", appPrefs.uiPrefs.mouseMoveTimeout);
 	dcUI.setAttribute("ApplicationFontSize", appPrefs.uiPrefs.applicationFontSize);
 	dcUI.setAttribute("PaletteFontSize", appPrefs.uiPrefs.paletteFontSize);
@@ -2043,6 +2045,7 @@
 			appPrefs.uiPrefs.style = dc.attribute("Theme", "Default");
 			appPrefs.uiPrefs.stylePalette = dc.attribute("ThemePalette", "auto");
 			appPrefs.uiPrefs.wheelJump = dc.attribute("ScrollWheelJump").toInt();
+			appPrefs.uiPrefs.zoomSensitivity = ScCLocale::toDoubleC(dc.attribute("ZoomSensitivity"), 1.0);
 			appPrefs.uiPrefs.mouseMoveTimeout = dc.attribute("MouseMoveTimeout", "150").toInt();
 			appPrefs.uiPrefs.applicationFontSize = dc.attribute("ApplicationFontSize", "12").toInt();
 			appPrefs.uiPrefs.paletteFontSize = dc.attribute("PaletteFontSize", "10").toInt();
Index: scribus/prefsstructs.h
===================================================================
--- scribus/prefsstructs.h	(revision 27002)
+++ scribus/prefsstructs.h	(working copy)
@@ -117,6 +117,7 @@
 {
 	int mouseMoveTimeout {150}; //! Mouse move timeout for move/resize operations
 	int wheelJump {40}; //! Distance to jump with mouse wheel scrolling
+	double zoomSensitivity {1.0}; //! Sensitivity (responsiveness) experienced while zooming
 	int applicationFontSize {12}; //! Font size to use in the application, apart from pßalettes
 	int paletteFontSize {10}; //! Font size to use in the palettes
 	QString style; 	//! Currently used QStyle name
Index: scribus/scribusview.cpp
===================================================================
--- scribus/scribusview.cpp	(revision 27002)
+++ scribus/scribusview.cpp	(working copy)
@@ -2160,9 +2160,9 @@
 	}
 	rememberOldZoomLocation(oldZoomX, oldZoomY);
 
-	double newScale = m_canvas->scale() * (1 + static_cast<double>(m_doc->opToolPrefs().magStep) / 100.0);
+	double newScale = m_canvas->scale() * (1 + static_cast<double>(m_doc->opToolPrefs().magStep * Prefs->uiPrefs.zoomSensitivity) / 100.0);
 	if (static_cast<int>(newScale * 100.0) > static_cast<int>(100.0 * static_cast<double>(m_doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale / 100.0))
-		newScale = m_canvas->scale() + static_cast<double>(m_doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale / 100.0;
+		newScale = m_canvas->scale() + static_cast<double>(m_doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale * Prefs->uiPrefs.zoomSensitivity / 100.0;
 
 	int zoomPointX(m_oldZoomX), zoomPointY(m_oldZoomY);
 	if (!preservePoint)
@@ -2194,9 +2194,9 @@
 	}
 	rememberOldZoomLocation(oldZoomX, oldZoomY);
 
-	double newScale = m_canvas->scale() - static_cast<double>(m_doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale / 100.0;
+	double newScale = m_canvas->scale() - static_cast<double>(m_doc->opToolPrefs().magStep) * Prefs->displayPrefs.displayScale * Prefs->uiPrefs.zoomSensitivity / 100.0;
 	if (newScale <= Prefs->displayPrefs.displayScale / 100.0)
-		newScale = m_canvas->scale() / (1 + static_cast<double>(m_doc->opToolPrefs().magStep) / 100.0);
+		newScale = m_canvas->scale() + Prefs->uiPrefs.zoomSensitivity * ((m_canvas->scale() / (1 + static_cast<double>(m_doc->opToolPrefs().magStep) / 100.0)) - m_canvas->scale());
 	if (newScale <= Prefs->displayPrefs.displayScale / 100.0)
 		newScale = m_canvas->scale();
 
@@ -3205,6 +3205,14 @@
 
 void ScribusView::wheelEvent(QWheelEvent *w)
 {
+	if (m_scrollTimer.isValid()) {
+		if (!m_scrollTimer.hasExpired(Prefs->uiPrefs.mouseMoveTimeout)) {
+		    return;
+		}
+		m_scrollTimer.restart();
+	} else {
+		m_scrollTimer.start();
+	}
 	QPoint angleDelta = w->angleDelta();
 	if (w->modifiers() == Qt::ControlModifier)
 	{
Index: scribus/scribusview.h
===================================================================
--- scribus/scribusview.h	(revision 27002)
+++ scribus/scribusview.h	(working copy)
@@ -289,6 +289,7 @@
 	QMenu *pmenResolution { nullptr };
 	QPointF m_pressLocation;
 	QElapsedTimer m_moveTimer;
+	QElapsedTimer m_scrollTimer;
 	QTimer *m_dragTimer { nullptr };
 	bool m_dragTimerFired { false };
 	bool m_ready { false }; 
Index: scribus/ui/prefs_userinterface.cpp
===================================================================
--- scribus/ui/prefs_userinterface.cpp	(revision 27002)
+++ scribus/ui/prefs_userinterface.cpp	(working copy)
@@ -81,6 +81,7 @@
 	fontSizePaletteSpinBox->setToolTip( "<qt>" + tr( "Default font size for the tool windows" ) + "</qt>");
 	resizeMoveDelaySpinBox->setToolTip( "<qt>" + tr( "Time before resize or move starts allows for a slight delay between when you click and the operation happens to avoid unintended moves. This can be helpful when dealing with mouse sensitivity settings or accessibility issues related to ergonomic mice, touch pads or moveability of the wrists and hands." ) + "</qt>");
 	wheelJumpSpinBox->setToolTip( "<qt>" + tr( "Number of lines Scribus will scroll for each \"notch\" of the mouse wheel" ) + "</qt>");
+	zoomSensitivitySlider->setToolTip( "<qt>" + tr( "Sensitivity (responsiveness) experienced while zooming" ) + "</qt>");
 	//showSplashCheckBox->setToolTip( "<qt>" + tr( "" ) + "</qt>");
 	//showStartupDialogCheckBox->setToolTip( "<qt>" + tr( "" ) + "</qt>");
 	storyEditorUseSmartSelectionCheckBox->setToolTip( "<qt>" + tr( "The default behavior when double-clicking on a word is to select the word and the first following space. Smart selection will select only the word, without the following space." ) + "</qt>");
@@ -118,6 +119,7 @@
 	fontSizeMenuSpinBox->setValue( prefsData->uiPrefs.applicationFontSize );
 	fontSizePaletteSpinBox->setValue( prefsData->uiPrefs.paletteFontSize);
 	wheelJumpSpinBox->setValue( prefsData->uiPrefs.wheelJump );
+	zoomSensitivitySlider->setValue( static_cast<int>(prefsData->uiPrefs.zoomSensitivity * 100) );
 	resizeMoveDelaySpinBox->setValue(prefsData->uiPrefs.mouseMoveTimeout);
 	recentDocumentsSpinBox->setValue( prefsData->uiPrefs.recentDocCount );
 	showStartupDialogCheckBox->setChecked(prefsData->uiPrefs.showStartupDialog);
@@ -142,6 +144,7 @@
 	prefsData->uiPrefs.applicationFontSize = fontSizeMenuSpinBox->value();
 	prefsData->uiPrefs.paletteFontSize = fontSizePaletteSpinBox->value();
 	prefsData->uiPrefs.wheelJump = wheelJumpSpinBox->value();
+	prefsData->uiPrefs.zoomSensitivity = static_cast<double>(zoomSensitivitySlider->value()) / 100.0;
 	prefsData->uiPrefs.mouseMoveTimeout = resizeMoveDelaySpinBox->value();
 	prefsData->uiPrefs.recentDocCount = recentDocumentsSpinBox->value();
 	prefsData->uiPrefs.showStartupDialog = showStartupDialogCheckBox->isChecked();
Index: scribus/ui/prefs_userinterfacebase.ui
===================================================================
--- scribus/ui/prefs_userinterfacebase.ui	(revision 27002)
+++ scribus/ui/prefs_userinterfacebase.ui	(working copy)
@@ -397,6 +397,50 @@
          <item row="1" column="1">
           <widget class="QSpinBox" name="wheelJumpSpinBox"/>
          </item>
+         <item row="2" column="0">
+          <widget class="QLabel" name="zoomSensitivityLabel">
+           <property name="text">
+            <string>&amp;Zoom Sensitivity:</string>
+           </property>
+           <property name="buddy">
+            <cstring>zoomSensitivitySlider</cstring>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="1">
+          <widget class="QSlider" name="zoomSensitivitySlider">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="minimumSize">
+            <size>
+             <width>200</width>
+             <height>0</height>
+            </size>
+           </property>
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>100</number>
+           </property>
+           <property name="singleStep">
+            <number>1</number>
+           </property>
+           <property name="pageStep">
+            <number>10</number>
+           </property>
+           <property name="tracking">
+            <bool>false</bool>
+           </property>
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+          </widget>
+         </item>
         </layout>
        </item>
        <item>
@@ -470,6 +514,7 @@
   <tabstop>fontSizeMenuSpinBox</tabstop>
   <tabstop>fontSizePaletteSpinBox</tabstop>
   <tabstop>wheelJumpSpinBox</tabstop>
+  <tabstop>zoomSensitivitySlider</tabstop>
   <tabstop>showSplashCheckBox</tabstop>
   <tabstop>showStartupDialogCheckBox</tabstop>
   <tabstop>storyEditorUseSmartSelectionCheckBox</tabstop>

Issue History

Date Modified Username Field Change
2017-02-25 16:48 DoctorJellyface New Issue
2025-08-28 07:48 ale Note Added: 0052975
2025-08-28 07:48 ale File Added: touchpad-sensitivity.diff
2025-08-28 07:48 ale Summary Touchpad/trackpoint extremely sensitive in canvas => [PATCH] Touchpad/trackpoint extremely sensitive in canvas
2025-08-28 07:48 ale Patch No => Yes
2025-08-28 13:55 melwyncarlo Note Added: 0052977
2025-08-28 13:55 melwyncarlo File Added: melwyn_carlo_bug_id_0014645.diff
2025-08-28 15:45 melwyncarlo Note Added: 0052981
2025-08-28 15:45 melwyncarlo File Added: melwyn_carlo_bug_id_0014645_v2.diff