diff options
author | Siep Kroonenberg <siepo@cybercomm.nl> | 2011-02-17 15:53:26 +0000 |
---|---|---|
committer | Siep Kroonenberg <siepo@cybercomm.nl> | 2011-02-17 15:53:26 +0000 |
commit | 2acf4c9396e980e00adbdc02f5a70eefc7122b55 (patch) | |
tree | f0dd76ad4357b54e9b97cf618554cefadea99d48 /Master/tlpkg/tlperl/lib/auto/Tk/Widget/RestoreFocusGrab.al | |
parent | 2de20e5e6fe9f53f36acef44253e9e0b19a4bdb8 (diff) |
New tlperl part VI
git-svn-id: svn://tug.org/texlive/trunk@21428 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlperl/lib/auto/Tk/Widget/RestoreFocusGrab.al')
-rw-r--r-- | Master/tlpkg/tlperl/lib/auto/Tk/Widget/RestoreFocusGrab.al | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/RestoreFocusGrab.al b/Master/tlpkg/tlperl/lib/auto/Tk/Widget/RestoreFocusGrab.al new file mode 100644 index 00000000000..e295862b042 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/auto/Tk/Widget/RestoreFocusGrab.al @@ -0,0 +1,59 @@ +# NOTE: Derived from blib\lib\Tk\Widget.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Tk::Widget; + +#line 1718 "blib\lib\Tk\Widget.pm (autosplit into blib\lib\auto\Tk\Widget\RestoreFocusGrab.al)" +# ::tk::RestoreFocusGrab -- +# restore old focus and grab (for dialogs) +# Arguments: +# grab window that had taken grab +# focus window that had taken focus +# destroy destroy|withdraw - how to handle the old grabbed window +# Results: +# Returns nothing +# +sub RestoreFocusGrab +{ + my ($grab, $focus, $destroy) = @_; + $destroy = 'destroy' if !$destroy; + my $index = "$grab,$focus"; + my ($oldFocus, $oldGrab, $oldStatus); + if (exists $Tk::FocusGrab{$index}) + { + ($oldFocus, $oldGrab, $oldStatus) = $Tk::FocusGrab{$index}; + delete $Tk::FocusGrab{$index}; + } + else + { + $oldGrab = ""; + } + + Tk::catch { $oldFocus->focus }; + if (Tk::Exists($grab)) + { + $grab->grabRelease; + if ($destroy eq "withdraw") + { + $grab->withdraw; + } + else + { + $grab->destroy; + } + } + if (Tk::Exists($oldGrab) && $oldGrab->ismapped) + { + if ($oldStatus eq "global") + { + $oldGrab->grabGlobal; + } + else + { + $oldGrab->grab; + } + } +} + +# end of Tk::Widget::RestoreFocusGrab +1; |