[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