[GRASS5] Monitor Resize Problem
Glynn Clements
glynn.clements at virgin.net
Wed Jul 18 23:44:28 EDT 2001
Bob Covill wrote:
> > > > Can you try modifying src/display/devices/XDRIVER/XDRIVER24/Client.c,
> > > > line 22. Currently, it should read:
> > > >
> > > > szhints->flags = PSize;
> > > >
> > > > Settings worth trying include
[snip]
> > > > and
> > > > szhints->flags = USPosition | USSize;
> > >
> > > WM_NORMAL_HINTS(WM_SIZE_HINTS):
> > > user specified location: 0, 0
> > > user specified size: 450 by 400
[snip]
> > > I was not able to resize the monitor after the abovce changes with the
> > > exception of "flags = 0". In the case of "flags = 0" I was able to
> > > resize the monitor until I drew in it. After that I was unable to resize
> > > it. The size seems to be getting locked somehow?? Could it be leaving a
> > > lock (??) file somewhere?
[snip]
> Disabling set_size() seems to have worked. Below is the output from
> xprop.
>
> WM_STATE(WM_STATE):
> window state: Normal
> icon window: 0x3404901
> _DT_WORKSPACE_PRESENCE(_DT_WORKSPACE_PRESENCE) = 0x101
> WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW
> WM_CLASS(STRING) = "x0", "GRASS 5.0.0pre1"
> WM_HINTS(WM_HINTS):
> bitmap id # to use for icon: 0x6400002
> WM_NORMAL_HINTS(WM_SIZE_HINTS):
> user specified location: 10, 10
> user specified size: 450 by 400
OK, so this is effectively the same WM_NORMAL_HINTS setting as above
except that now it works.
It seems that the min/max size setting is "sticky", i.e. once the
WM_NORMAL_HINTS property is given a min/max size, it persists even
after after the property is changed back.
Try replacing the lines:
szhints->flags = PSize;
szhints->width = xwa.width;
szhints->height = xwa.height;
szhints->min_width = xwa.width;
szhints->min_height = xwa.height;
szhints->max_width = xwa.width;
szhints->max_height = xwa.height;
if (minmax)
szhints->flags |= PMinSize | PMaxSize;
with:
szhints->flags = PSize | PMinSize | PMaxSize;
szhints->width = xwa.width;
szhints->height = xwa.height;
if (minmax)
{
szhints->min_width = xwa.width;
szhints->min_height = xwa.height;
szhints->max_width = xwa.width;
szhints->max_height = xwa.height;
}
else
{
szhints->min_width = 0;
szhints->min_height = 0;
szhints->max_width = DisplayWidth(dpy, scrn);
szhints->max_height = DisplayHeight(dpy, scrn);
}
If this works, can you also check that "maximising" the window works
correctly (i.e. it doesn't result in a window which is larger than the
screen).
--
Glynn Clements <glynn.clements at virgin.net>
More information about the grass-dev
mailing list