shell bypass 403
# NOTE: Derived from blib/lib/Tk.pm.
# Changes made here will be lost when autosplit is run again.
# See AutoSplit.pm.
package Tk;
#line 618 "blib/lib/Tk.pm (autosplit into blib/lib/auto/Tk/getPrevFocus.al)"
sub getPrevFocus
{
my $w = shift;
my $cur = $w;
my @children;
my $i;
my $parent;
while (1)
{
# Collect information about the current window's position
# among its siblings. Also, if the window is a top-level,
# then reposition to just after the last child of the window.
if ($cur->toplevel() == $cur)
{
$parent = $cur;
@children = $cur->FocusChildren();
$i = @children;
}
else
{
$parent = $cur->parent();
@children = $parent->FocusChildren();
$i = lsearch(\@children,$cur);
}
# Go to the previous sibling, then descend to its last descendant
# (highest in stacking order. While doing this, ignore top-levels
# and their descendants. When we run out of descendants, go up
# one level to the parent.
while ($i > 0)
{
$i--;
$cur = $children[$i];
next if ($cur->toplevel() == $cur);
$parent = $cur;
@children = $parent->FocusChildren();
$i = @children;
}
$cur = $parent;
if ($cur == $w || $cur->FocusOK)
{
return $cur;
}
}
}
# end of Tk::getPrevFocus
1;