Tk Source Code

Artifact [51aecfec]
Login

Artifact 51aecfec9cfa61cb4fb55d8b9b2585bac9f4ca2e7b2d2a5db677e3c9479fecb5:

Attachment "diff.out" to ticket [d25b721f] added by nemethi 2025-07-13 12:57:14.
Index: generic/ttk/ttkScale.c
==================================================================
--- generic/ttk/ttkScale.c
+++ generic/ttk/ttkScale.c
@@ -438,18 +438,27 @@
 
 static double
 PointToValue(Scale *scalePtr, int x, int y)
 {
     Ttk_Box troughBox = TroughRange(scalePtr);
-    double from = 0, to = 1, fraction;
+    double value = 0, from = 0, to = 1, fraction;
 
+    Tcl_GetDoubleFromObj(NULL, scalePtr->scale.valueObj, &value);
     Tcl_GetDoubleFromObj(NULL, scalePtr->scale.fromObj, &from);
     Tcl_GetDoubleFromObj(NULL, scalePtr->scale.toObj, &to);
 
     if (scalePtr->scale.orient == TTK_ORIENT_HORIZONTAL) {
+	if (troughBox.width <= 0) {
+	    return value;
+	}
+
 	fraction = (double)(x - troughBox.x) / (double)troughBox.width;
     } else {
+	if (troughBox.height <= 0) {
+	    return value;
+	}
+
 	fraction = (double)(y - troughBox.y) / (double)troughBox.height;
     }
 
     fraction = fraction < 0 ? 0 : fraction > 1 ? 1 : fraction;