Package: penguineyes
Version: 0.9-2

On my slow old SVGA and with the fvwm window manager I find that when
dragging the penguineyes window around the screen it jumps about,
going sideways away from the path of the drag, or forward and
backward.  With lwm the effect is worse, with no window manager it
doesn't occur.

I think what's going on is that in penguineyes.c the
gdk_window_set_position() in motion_notify() goes to the window
manager via substructure redirection and the window manager doesn't
always have time to do the actual XMoveWindow() before the next
motion_notify() tries to read the position with
gdk_window_get_position().  Very likely my slow video card is delaying
the server and exacerbating the problem, it might not show up on a
fast video.

If penguineyes is going to do it's own window positioning then it
should set override_redirect to tell the window manager to keep it's
hands off.  Using GTK_WINDOW_POPUP for the top level window achieves
this, though maybe there's a better way.

--- penguineyes.c.old	Thu Jan 20 15:16:25 2000
+++ penguineyes.c	Thu Jan 20 17:53:31 2000
@@ -470,7 +470,10 @@
 	mainWindow = applet_widget_new("penguineyes");
     else
 #endif
-	mainWindow = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+	/* The get/set window positions in motion_notify() don't work well
+           if the window manager is doing substructure redirection.  Using
+           GTK_WINDOW_POPUP sets override_redirect and avoids this.  */
+	mainWindow = gtk_window_new( GTK_WINDOW_POPUP );
 
     gtk_widget_push_visual(gdk_imlib_get_visual());
     gtk_widget_push_colormap(gdk_imlib_get_colormap());

Reply via email to