diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/auto/Tk/Widget/SetFocusGrab.al')
-rw-r--r-- | Master/tlpkg/tlperl/lib/auto/Tk/Widget/SetFocusGrab.al | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/auto/Tk/Widget/SetFocusGrab.al b/Master/tlpkg/tlperl/lib/auto/Tk/Widget/SetFocusGrab.al new file mode 100644 index 00000000000..53730834513 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/auto/Tk/Widget/SetFocusGrab.al @@ -0,0 +1,38 @@ +# 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 1688 "blib\lib\Tk\Widget.pm (autosplit into blib\lib\auto\Tk\Widget\SetFocusGrab.al)" +# ::tk::SetFocusGrab -- +# swap out current focus and grab temporarily (for dialogs) +# Arguments: +# grab new window to grab +# focus window to give focus to +# Results: +# Returns nothing +# +sub SetFocusGrab +{ + my ($grab,$focus) = @_; + my $index = "$grab,$focus"; + $Tk::FocusGrab{$index} ||= []; + my $data = $Tk::FocusGrab{$index}; + push @$data, $grab->focusCurrent; + my $oldGrab = $grab->grabCurrent; + push @$data, $oldGrab; + if (Tk::Exists($oldGrab)) + { + push @$data, $oldGrab->grabStatus; + } + # The "grab" command will fail if another application + # already holds the grab. So catch it. + Tk::catch { $grab->grab }; + if (Tk::Exists($focus)) + { + $focus->focus; + } +} + +# end of Tk::Widget::SetFocusGrab +1; |