|
|
1.1 root 1: # button.tcl --
2: #
3: # This file contains Tcl procedures used to manage Tk buttons.
4: #
5: # $Header: /user6/ouster/wish/scripts/RCS/button.tcl,v 1.7 92/07/28 15:41:13 ouster Exp $ SPRITE (Berkeley)
6: #
7: # Copyright 1992 Regents of the University of California
8: # Permission to use, copy, modify, and distribute this
9: # software and its documentation for any purpose and without
10: # fee is hereby granted, provided that this copyright
11: # notice appears in all copies. The University of California
12: # makes no representations about the suitability of this
13: # software for any purpose. It is provided "as is" without
14: # express or implied warranty.
15: #
16:
17: # $tk_priv(window@$screen) keeps track of the button containing the mouse,
18: # and $tk_priv(relief@$screen) saves the original relief of the button so
19: # it can be restored when the mouse button is released.
20:
21: # The procedure below is invoked when the mouse pointer enters a
22: # button widget. It records the button we're in and changes the
23: # state of the button to active unless the button is disabled.
24:
25: proc tk_butEnter w {
26: global tk_priv
27: set screen [winfo screen $w]
28: if {[lindex [$w config -state] 4] != "disabled"} {
29: $w config -state active
30: set tk_priv(window@$screen) $w
31: } else {
32: set tk_priv(window@$screen) ""
33: }
34: }
35:
36: # The procedure below is invoked when the mouse pointer leaves a
37: # button widget. It changes the state of the button back to
38: # inactive.
39:
40: proc tk_butLeave w {
41: global tk_priv
42: if {[lindex [$w config -state] 4] != "disabled"} {
43: $w config -state normal
44: }
45: set screen [winfo screen $w]
46: set tk_priv(window@$screen) ""
47: }
48:
49: # The procedure below is invoked when the mouse button is pressed in
50: # a button/radiobutton/checkbutton widget. It records information
51: # (a) to indicate that the mouse is in the button, and
52: # (b) to save the button's relief so it can be restored later.
53:
54: proc tk_butDown w {
55: global tk_priv
56: set screen [winfo screen $w]
57: set tk_priv(relief@$screen) [lindex [$w config -relief] 4]
58: if {[lindex [$w config -state] 4] != "disabled"} {
59: $w config -relief sunken
60: update idletasks
61: }
62: }
63:
64: # The procedure below is invoked when the mouse button is released
65: # for a button/radiobutton/checkbutton widget. It restores the
66: # button's relief and invokes the command as long as the mouse
67: # hasn't left the button.
68:
69: proc tk_butUp w {
70: global tk_priv
71: set screen [winfo screen $w]
72: $w config -relief $tk_priv(relief@$screen)
73: update idletasks
74: if {($w == $tk_priv(window@$screen))
75: && ([lindex [$w config -state] 4] != "disabled")} {
76: uplevel #0 [list $w invoke]
77: }
78: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.