[Patch] Fix -readonly option in combo.tcl

Mo DeJong supermo@bayarea.net
Mon Feb 4 13:32:00 GMT 2002


Here is a small patch that fixes the combo class so that it works
with a stock Tk 8.3. The previous version depended on some local changes
that are not available in the stock Tk 8.3 and are not in the Tk
version on sources.

Since this is a small change I assume it will be covered by the
"Small changes can be accepted without a copyright
assignment form on file" text from the contrib webpage.

Mo

2002-02-04  Mo DeJong  <supermo@bayarea.net>

	* gui/combo.tcl (-state, -readonly): Implement a read
	only entry widget with a binding that ignores all
	key press events. The previous implementation depended
	on a local modification that added a -state readonly
	property to the entry widget. We can't depend on that
	modification since it will not exist in a system
	install of Tk 8.3.
	* tests/gui/combo.test: Add test case for selecttext
	member function.

--- gui/combo.tcl	Mon Feb 26 09:15:15 2001
+++ gui/combo.tcl	Mon Feb  4 00:20:51 2002
@@ -391,8 +391,9 @@
     # as a keep option to the widgets since
     # we need to configure the entry and
     # keep track of the -readonly option.
-    # We also only want to support to
-    # -state options, normal and disabled.
+    # The -state readonly is also not available
+    # in Tk 8.3, it only supports normal
+    # and disabled.
 
     itk_option define -state state State normal {
         if {$itk_option(-state) != "normal" &&
@@ -406,22 +407,23 @@
         if {$itk_option(-state) == "disabled"} {
             $itk_component(entry) configure -state disabled
         } else {
+            $itk_component(entry) configure -state normal
+
             if {$itk_option(-readonly)} {
-                $itk_component(entry) configure -state readonly
+                bind $itk_component(entry) <KeyPress> break
             } else {
-                $itk_component(entry) configure -state normal
+                bind $itk_component(entry) <KeyPress> {}
             }
         }
     }
 
     itk_option define -readonly readOnly ReadOnly 0 {
         if {$itk_option(-readonly)} {
-            if {$itk_option(-state) == "normal"} {
-                $itk_component(entry) configure -state readonly
+            if {[string equal $itk_option(-state) "normal"]} {
+                bind $itk_component(entry) <KeyPress> break
             }
         } else {
-            $itk_component(entry) configure -state \
-                $itk_option(-state)
+            bind $itk_component(entry) <KeyPress> {}
         }
     }
 



More information about the Sourcenav mailing list