#----- general machinery -----
+# Interface:
+#
+# tk::tktray widget is called .i
+#
+# Inner window:
+# Caller that needs access to inner window should define
+# proc innerwindow {} { ... }
+# and run
+# innerwindow
+# This will create
+# .i.i.b frame to contain container
+# .i.i.b.c actual container
+#
+# Button presses
+# Caller should provide
+# proc pressed {b x y} { ... }
+# which should examine b and do something appropriate.
+#
+
+
+
package require tktray
+#load /home/ian/things/Systray/tktray-1.3.8/libtktray1.3.8.so
+
wm withdraw .
menu .m$b -tearoff 0
}
-proc pressed {b x y} {
+proc menubuttonpressed {b x y} {
global posted
tooltip_cancel
if {$posted == $b} {
set posted 0
}
+proc innerwindow-event {why} {
+ global innerwindow_after
+puts "IW-EVENT $why"
+ if {[info exists innerwindow_after]} return
+ set innerwindow_after [after idle innerwindow-resetup]
+}
+
+proc innerwindow-resetup {} {
+ global innerwindow_after
+ unset innerwindow_after
+
+puts RESETUP
+
+ catch { destroy .i.i.c }
+ if {![winfo exists .i.i]} return
+ destroy [frame .i.i.make-exist]
+ catch { destroy .i.i.b.c }
+ catch { destroy .i.i.b }
+ frame .i.i.b
+ pack .i.i.b -fill both -side left -expand 1
+ frame .i.i.b.c -container 1 -background orange
+ pack .i.i.b.c -fill both -side left -expand 1
+ bind .i.i <ButtonPress> { pressed %b %X %Y }
+#
+ global inner_lastw inner_lasth
+ #set w [winfo width .i.i]
+# set w [winfo width .i.i]
+# set h [winfo height .i.i]
+
+# if {$w != $inner_lastw || $h != $inner_lasth} {
+# set inner_lastw $w
+# set inner_lasth $h
+# innerwindow-ph-dummy configure -width $w -height 2
+ innerwindow [winfo id .i.i.b.c]
+# }
+}
+
+proc setupinnerwindow {w} {
+ global inner_lastw inner_lasth
+ set inner_lastw -2
+ set inner_lasth -2
+
+ image create photo innerwindow-ph-dummy -width $w -height 2
+ .i configure -image innerwindow-ph-dummy
+
+ destroy [frame .i.make-exist]
+ destroy [frame .i.i.make-exist]
+ bind .i <<IconConfigure>> { innerwindow-event "%w" }
+}
+
bind .i <ButtonPress> { pressed %b %X %Y }
proc tooltip_starttimer {state x y} {