Tk Source Code

View Ticket
Login
Ticket UUID: 126d0714086a9a5e30309e6653409e8546bab1da
Title: Bug in the ttk::scale widget of the "default" theme
Type: Bug Version: 8.7b1 and 9
Submitter: nemethi Created on: 2025-01-09 19:35:35
Subsystem: 88. Themed Tk Assigned To: nobody
Priority: 5 Medium Severity: Minor
Status: Closed Last Modified: 2025-01-14 20:44:37
Resolution: Fixed Closed By: nemethi
    Closed on: 2025-01-14 20:44:37
Description:

I have found a bug in my own code that draws the slider element of the ttk::scale widget of the default theme.  For a horizontal ttk::scale widget it is only visible if the first element of the -padding option's value of the the widget's style is a sufficiently large screen distance.  The bug can easily be reproduced with the following simple script:

ttk::setTheme default
ttk::style configure TScale -padding 9p
ttk::scale .scl -from 0 -to 10 -value 5
pack .scl -padx 15p -pady 15p
focus .scl

This code produces the artifact shown in the attached screenshot (magnified by a factor of 2), in which part of the trough following the slider is unexpectedly rendered in a different color.

Here is the patch that fixes the bug:

Index: generic/ttk/ttkElements.c
==================================================================
--- generic/ttk/ttkElements.c
+++ generic/ttk/ttkElements.c
@@ -1443,16 +1443,18 @@
 	Ttk_GetOrientFromObj(NULL, slider->orientObj, &orient);
 	switch (orient) {
 	    case TTK_ORIENT_HORIZONTAL:
 		XFillRectangle(disp, d, gc,
 			mainInfoPtr->troughInnerX, mainInfoPtr->troughInnerY,
-			b.x + dim/2 - 1, mainInfoPtr->troughInnerHeight);
+			b.x + dim/2 - mainInfoPtr->troughInnerX,
+			mainInfoPtr->troughInnerHeight);
 		break;
 	    case TTK_ORIENT_VERTICAL:
 		XFillRectangle(disp, d, gc,
 			mainInfoPtr->troughInnerX, mainInfoPtr->troughInnerY,
-			mainInfoPtr->troughInnerWidth, b.y + dim/2 - 1);
+			mainInfoPtr->troughInnerWidth,
+			b.y + dim/2 - mainInfoPtr->troughInnerY);
 		break;
 	}
     }
 
     /*

User Comments: nemethi (claiming to be Csaba Nemethi) added on 2025-01-14 20:44:37:

Fixed with commits [83839103] and [45af413e]. Closing the ticket.


nemethi added on 2025-01-10 10:15:51:

The fix is now in branch "bug-126d071408".


Attachments: