tl@censun1.UUCP (SSUID Tin Li) (10/27/89)
obtained olwm from expo and used on a SUN 3/160 with MIT X11R3
server. I tried to move the toplevel window using XMoveWindow
and XSetSizeHints but olwm would not let me. The same code had
no problem if I used mwm, twm, or uwm. I wonder if anyone had
encountered similar problems. The test program first creates a
HP form widget with a button in it. When I click on the button,
the whole window should reposition to 300,300 but olwm just
repaint the window and does not move it.
Here is the test program
---- test program begin ------
#include <stdio.h>
#include <X11/StringDefs.h>
#include <X11/Intrinsic.h>
#include "Xw.h"
#include "Form.h"
#include "PButton.h"
#include <X11/Xatom.h>
Widget toplevel, buttonwidget, formwidget;
/*
* button callback function
*/
void buttonselected (w, client_data, call_data)
Widget w;
caddr_t client_data;
caddr_t call_data;
{
XSizeHints *hints;
printf ("Button CallBack Selected\n" );
XMoveWindow( XtDisplay(toplevel), XtWindow(toplevel),300,300);
hints = (XSizeHints *)XtMalloc(sizeof(XSizeHints));
hints->x = 300; hints->y=300;
hints->flags = PPosition|USPosition;
XSetSizeHints( XtDisplay(toplevel), XtWindow(toplevel),
hints , XA_WM_SIZE_HINTS);
XtFree(hints);
}
/*
* main program
*/
void main (argc, argv)
unsigned int argc;
char **argv;
{
Cardinal i;
Arg arglist[20];
XSizeHints *hints;
static XtCallbackRec buttonselectcallbacks[] = {
{ buttonselected, NULL },
{ NULL, NULL },
};
toplevel = XtInitialize ("main", "DEmo", NULL, NULL, &argc, argv);
XtSetArg(arglist[0], XtNx, 100); /* set initial shell size */
XtSetArg(arglist[1], XtNy, 600);
XtSetValues ( toplevel, arglist, 2);
XtSetMappedWhenManaged(toplevel, FALSE);
formwidget = XtCreateManagedWidget ("test", XwformWidgetClass,
toplevel, NULL, NULL);
i = 0; /* create a button */
XtSetArg (arglist[i], XtNlabel, "LABEL"); i++;
XtSetArg(arglist[i], XtNselect, buttonselectcallbacks);i++;
XtSetArg(arglist[i], XtNwidth, 100);i++;
XtSetArg(arglist[i], XtNheight, 100);i++;
buttonwidget = XtCreateManagedWidget ("dialog", XwpushButtonWidgetClass,
formwidget, arglist, i);
XtRealizeWidget (toplevel);
hints = (XSizeHints *)XtMalloc(sizeof(XSizeHints));
hints->x = 100; hints->y = 600; /* tell wm initial size and position */
hints->width=100; hints->height=100;
hints->flags = PPosition|PSize|USPosition|USSize;
XSetStandardProperties(XtDisplay(toplevel), XtWindow(toplevel), "panelname",
"iconname",None,NULL,0,hints );
XtFree((void *)hints);
XtMapWidget(toplevel);
XtMainLoop ();
}
---- test program end ------
Also is there a easy way to find out the height of the title bar that
decorated a window?
Thanks in advance!
Tin P. Li
internet: tl@cen.com Century Computing Inc
uucp: uunet!censun1!tl 1014 West St.
Laurel, MD, 20707