[CF-Devel] bugs
Preston Crow
pc-crossfire at crowcastle.net
Wed Dec 4 13:29:15 CST 2002
I wrote:
>>
When you save the window positions and then restart, all the windows shift
>>
down by the height of the titlebar, at least if you're using twm as your
>>
window manager (I haven't tried anything else). In my case, I just edited
>>
the file by hand to subtract 19 from each y coordinate. That's not
>>
something we should expect people to need to do.
Mark Wedel replied:
>
Works properly with fvwm (that is, windows re-appear where specified). I
>
remember seeing something someplace that twm did something not quite right in
>
that regard. As of now, I'll just attribute this to a bug in twm.
I found this report of a similar problem in another program:
http://bugzilla.gnome.org/show_bug.cgi?id=75419
It looks like this may not just be a twm issue.
The solution is to change how get_window_coord() in gx11.c works.
We might want to replace gdk_window_get_origin() with
gdk_window_get_root_origin() or gdk_window_get_deskrelative_origin(). I
haven't played with that, and I couldn't find documentation on these
functions, so I'm not sure what the difference would be.
What I did find was that the following works:
/* Gets a specified windows coordinates. This function is pretty much
* an exact copy out of the server.
*/
void get_window_coord(GtkWidget *win,
int *x,int *y,
int *wx,int *wy,
int *w,int *h)
{
int tmp;
gdk_window_get_geometry (win->window, x, y, w, h, &tmp);
/* gdk_window_get_root_origin (win->window, wx, wy); */
/* gdk_window_get_deskrelative_origin (win->window, wx, wy); */
gdk_window_get_origin (win->window, wx, wy);
wx -= x;
wy -= y;
}
With twm as I have it configured, x is 0 and y is 19; the exact amount of
the error. If you can confirm that for window managers where the current
system is working x and y are both zero, then it looks like we have a
solution.
I seem to recall the same problem with the x11 client. Looking at the
code, I'm guessing that the same fix may work there.
--PC
More information about the crossfire
mailing list