summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/auto/Tk/Widget/RestoreFocusGrab.al
diff options
context:
space:
mode:
authorSiep Kroonenberg <siepo@cybercomm.nl>2011-02-17 15:53:26 +0000
committerSiep Kroonenberg <siepo@cybercomm.nl>2011-02-17 15:53:26 +0000
commit2acf4c9396e980e00adbdc02f5a70eefc7122b55 (patch)
treef0dd76ad4357b54e9b97cf618554cefadea99d48 /Master/tlpkg/tlperl/lib/auto/Tk/Widget/RestoreFocusGrab.al
parent2de20e5e6fe9f53f36acef44253e9e0b19a4bdb8 (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.al59
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;