[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