The methods in this section all deal with the position of a widget.
To determine which widget is at the point (x, y), use the containing method:
$which = $widget->containing($x, $y);
The $x and $y coordinates must be relative to the root window (or on a Microsoft Windows system, the desktop). An empty string is returned if there is no widget found at those coordinates. If there are several widgets located at those coordinates, the one closest to the front is returned.
You can get the coordinates of the upper-left corner of a widget by using the x and y methods. The coordinates they return are relative to the parent of the widget:
$x = $widget->x; $y = $widget->y;
To get the coordinates relative to the root window, use rootx and rooty on the widget:
$x = $widget->rootx; $y = $widget->rooty;
The coordinates refer to the upper-left corner of the widget.
If you have a virtual desktop, there are special methods that give coordinates relative to the virtual desktop. Virtual desktops are very common on the X Window System (such as the fvwm and tvtwm window managers), but they exist on Microsoft Windows as well.
To determine the height and width of the virtual desktop, use the vrootheight and vrootwidth methods:
$height = $widget->vrootheight; $width = $widget->vrootwidth;
To get the coordinates of the widget's upper-left corner relative to the virtual desktop, use vrootx and vrooty:
$x = $widget->vrootx; $y = $widget->vrooty;
Each of these four methods returns an empty string if a virtual desktop is not found.
You can use pointerx, pointery, and pointerxy to determine the cursor coordinates on the screen.
$x = $widget->pointerx; $y = $widget->pointery; ($x, $y) = $widget->pointerxy;
All the coordinates returned are relative to the desktop (even if it is a virtual desktop).
Copyright © 2002 O'Reilly & Associates. All rights reserved.