blob: e295862b042ec3b409e02fd562d59b7f1dfe4c72 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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;
|