brossard%litsun2.epfl.ch@MITVMA.MIT.EDU (03/18/89)
[Sent: Fri. 17/Mar./89 Time: 17:53]
Either I found a bug or it doesn't do what I think it should do.
First, a few definitions:
widget = XtCreatePopupShell( pn_title,
wmShellWidgetClass, toplevel, args, nargs);
/*
* Make a form widget.
*/
form = XtCreateWidget("form", formWidgetClass, widget, NULL, 0);
followed by XtRealizeWidget, XtPopup and so on.
The problem: I'm trying to find the location of the widget's
window on the screen. Also worth mentionning, I'm using awm which
reparents windows (might be the source of the problem). If I understand
correctly, I should be getting the x and y position of the left upper corner:
XtTranslateCoords( widget, 0, 0, &shellx, &shelly );
The only thing I get is the ORIGINAL position of the window,
no amount of moving the window changes the result. I assume this is
related to awm reparenting the window, but I'm not sure. So is this
a bug?
Alternate question, how am I supposed to get the window location
of a widget?
1- XtTranslateCoords -> doesn't work right now
2- XGetWindowAttributes(display, XtWindow(widget), &attr);
gives (0,0) -> relative to parent (due to awm!)
so followed by:
XQueryTree(display, XtWindow(pn->pn_shellwidget), &root,
&parent, &children, &number);
if( parent != root ) XGetWindowAttributes(display, parent, &attr);
(now good coordinates in (attr.x, attr.y), independent of
which window manager is used)
3- XTranslateCoordinates( display, XtWindow(widget),
RootWindow(display, 0),
0, 0, &shellx, &shelly, &w );
(which works, but seems unduly complicated, and note the hardcoded
0 in RootWindow (see previous posting)).
4- ??
Additionnal info: SunOS3.5, SUN3/60 B&W, X.V11R3 patch level 9 +
Purdue speed ups, awm patch level 9.
Program available on request (modified Xpostit).
Alain Brossard
brossard@litsun2.epfl.chswick@ATHENA.MIT.EDU (Ralph R Swick) (03/18/89)
> Alternate question, how am I supposed to get the window location > of a widget? use XTranslateCoordinates (or a different wm :-) until the next Xt fix is published.