You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.5 KiB
Tcl
60 lines
1.5 KiB
Tcl
# wingrab.tcl -- grab support for Windows.
|
|
# Copyright (C) 1997 Cygnus Solutions.
|
|
# Written by Ian Lance Taylor <ian@cygnus.com>.
|
|
|
|
# Disable a list of windows.
|
|
|
|
proc WINGRAB_disable { args } {
|
|
foreach w $args {
|
|
ide_grab_support_disable [wm frame $w]
|
|
}
|
|
}
|
|
|
|
# Disable all top level windows, other than the argument, which are
|
|
# children of `.'. Note that if you do this, and then destroy the
|
|
# frame of the only enabled window, your application will lose the
|
|
# input focus to some other application. Make sure that you reenable
|
|
# the windows before calling wm transient or wm withdraw or destroy on
|
|
# the only enabled window.
|
|
|
|
proc WINGRAB_disable_except { window } {
|
|
foreach w [winfo children .] {
|
|
if {$w != $window} then {
|
|
ide_grab_support_disable [wm frame [winfo toplevel $w]]
|
|
}
|
|
}
|
|
}
|
|
|
|
# Enable a list of windows.
|
|
|
|
proc WINGRAB_enable { args } {
|
|
foreach w $args {
|
|
ide_grab_support_enable [wm frame $w]
|
|
}
|
|
}
|
|
|
|
# Enable all top level windows which are children of `.'.
|
|
|
|
proc WINGRAB_enable_all {} {
|
|
foreach w [winfo children .] {
|
|
ide_grab_support_enable [wm frame [winfo toplevel $w]]
|
|
}
|
|
}
|
|
|
|
# The basic routine. All commands are subcommands of this.
|
|
|
|
proc ide_grab_support {dispatch args} {
|
|
global tcl_platform
|
|
|
|
if {[info commands WINGRAB_$dispatch] == ""} then {
|
|
error "unrecognized key \"$dispatch\""
|
|
}
|
|
|
|
# We only need to do stuff on Windows.
|
|
if {$tcl_platform(platform) != "windows"} then {
|
|
return
|
|
}
|
|
|
|
eval WINGRAB_$dispatch $args
|
|
}
|