[GRASS5] winname.h inconsistency found

Glynn Clements glynn.clements at virgin.net
Tue May 28 19:02:13 EDT 2002


Glynn Clements wrote:

> > I've been long time wondering why tcltkgrass stopped closing monitors and
> > restoring them on reload. That's what I found out:
> > 
> > gui.tcl, line 1159:
> > } elseif {[regexp -nocase {^ *Name:.*GRASS.*Monitor: *(.*)} $line buffer monitor]}
> > 
> > in proc search_xdrivers, which must return a list of opened drivers
> > (as parameter to stop_monitors, for example. But: trying to parse a
> > string that *must* contain the word "GRASS" we'd fail to compose this
> > list, as the window title has no word 'GRASS' - only version number
> > (see winname.h and Graph_Set.c in XDRIVER sources.
> > 
> > There are at least two ways to fix this bug, - change the parser code
> > in gui.tcl (which I did to finally see my black windows hop-hop-hop),
> > or add the word GRASS to window name.
> 
> I would have thought that parsing the output from "d.mon -L" would be
> preferable. That should work for all drivers, not just XDRIVER.
> 
> Apart from that, the WM_CLASS property should always have "XDRIVER" as
> the "name" field.

	revision 1.15
	date: 2002/05/27 08:51:40;  author: alex;  state: Exp;  lines: +1 -1
	Added GRASS to window title

Note: this is a workaround, not a fix.

It won't work for drivers other than XDRIVER, and it won't work for
the libW11 version of XDRIVER (although that's not really relevant
until someone gets native (non-X11) Tcl/Tk working with Cygwin).

Also, the regexp seems a bit too general; it might conceivably match a
Netscape window for an HTML file whose title contains the words
"GRASS" and "Monitor".

Basically, all monitor management should be done through d.mon;
anything else is a hack.

-- 
Glynn Clements <glynn.clements at virgin.net>



More information about the grass-dev mailing list