Tk Source Code

Artifact [7abb5961]
Login

Artifact 7abb5961735be261910ed775d1c7ad23f582e21272174a4a4651d31e537438bb:

Attachment "style_configure_._-insertofftime_Patch1.diff" to ticket [3531366f] added by fvogel 2023-06-08 20:55:12.
Index: generic/ttk/ttkBlink.c
==================================================================
--- generic/ttk/ttkBlink.c
+++ generic/ttk/ttkBlink.c
@@ -149,10 +149,17 @@
 	    if (RealFocusEvent(eventPtr->xfocus.detail))
 		LoseCursor(cm, corePtr);
 	    break;
     }
 }
+
+void TtkSetBlinkOffTime(WidgetCore* corePtr, int offTime)
+{
+    CursorManager* cm = GetCursorManager(corePtr->interp);
+
+    cm->offTime = offTime;
+}
 
 /*
  * TtkBlinkCursor (main routine) --
  * 	Arrange to blink the cursor on and off whenever the
  * 	widget has focus.

Index: generic/ttk/ttkWidget.c
==================================================================
--- generic/ttk/ttkWidget.c
+++ generic/ttk/ttkWidget.c
@@ -4,10 +4,11 @@
  * Core widget utilities.
  */
 
 #include "tkInt.h"
 #include "ttkTheme.h"
+#include "ttkThemeInt.h"
 #include "ttkWidget.h"
 
 /*------------------------------------------------------------------------
  * +++ Internal helper routines.
  */
@@ -122,11 +123,25 @@
  * 	recomputes geometry.
  */
 static void WidgetWorldChanged(ClientData clientData)
 {
     WidgetCore *corePtr = clientData;
+    Ttk_Theme theme;
+    Ttk_Style style = NULL;
+    Tcl_Obj* result;
+    int offTime;
+
     SizeChanged(corePtr);
+
+    theme = Ttk_GetCurrentTheme(corePtr->interp);
+    style = Ttk_GetStyle(theme, ".");
+    result = Ttk_StyleDefault(style, "-insertofftime");
+    if (result) {
+	Tcl_GetIntFromObj(corePtr->interp, result, &offTime);
+	TtkSetBlinkOffTime(corePtr, offTime);
+    }
+
     TtkRedisplayWidget(corePtr);
 }
 
 /* TtkResizeWidget --
  * 	Recompute widget size, schedule geometry propagation and redisplay.

Index: generic/ttk/ttkWidget.h
==================================================================
--- generic/ttk/ttkWidget.h
+++ generic/ttk/ttkWidget.h
@@ -144,10 +144,12 @@
 
 MODULE_SCOPE void TtkRedisplayWidget(WidgetCore *);
 MODULE_SCOPE void TtkResizeWidget(WidgetCore *);
 
 MODULE_SCOPE void TtkTrackElementState(WidgetCore *);
+
+MODULE_SCOPE void TtkSetBlinkOffTime(WidgetCore* corePtr, int offTime);
 MODULE_SCOPE void TtkBlinkCursor(WidgetCore *);
 
 /*
  * -state option values (compatibility)
  */