The problem is the HorizPos/VertPos.sign fields
get modified when they shouldn't.
--- gbuffy.c.orig Fri Oct 10 14:30:11 2003
+++ gbuffy.c Thu Jan 8 10:17:22 2004
@@ -566,11 +566,10 @@
if (cur_height != Height)
Height = cur_height;
- HorizPos.sign = POSITIVE;
- VertPos.sign = POSITIVE;
-
- if (beenhere)
+ if (beenhere) {
+ HorizPos.sign = VertPos.sign = POSITIVE;
gdk_window_get_position (MainWindow->window, &HorizPos.value,
&VertPos.value);
+ }
else
beenhere = 1;
Or, just fix the code so it looks like the following in
gbuffy.c (move the assignment of POSITIVE to the sign fields
to within the "beenhere" if statement:
gdk_window_get_size(MainWindow->window, &cur_width, &cur_height);
if (cur_width != Width)
Width = cur_width;
if (cur_height != Height)
Height = cur_height;
/* old assignments were right here */
if (beenhere) {
HorizPos.sign = VertPos.sign = POSITIVE;
gdk_window_get_position (MainWindow->window, &HorizPos.value,
&VertPos.value);
}
else
beenhere = 1;
return TRUE;
}