First some background information. I'm writing an application to
display a 3D object in a drawing area widget that uses OpenGL via the
GtkGLExt extension. I've mainly developed the application under Linux.
I have the drawing area setup to act on configure, expose, button press,
button release, and button motion signal/events. If the window is
reconfigured the drawing area widget expands. If you press a mouse
button and drag the object is rotated as the mouse moves. (After
getting the mouse movement I call a gdk_window_invalidate_rect() so
that an expose event is created and the expose callback draws the object
in the updated state. This all works find and dandy under Linux.
(Using GTK+ 2.4.13 under linux I believe, whatever is standard under RH
FC 3).
I also need to have this application work under Windows XP. So, I
compile the same code under XP using MSYS and the GTK+ 2.4.14 (Tor)
libraries. When I run the executable I am unable to rotate the object.
Using print statements, I know that the button motion callback is being
executed and I have a gdk_window_invalidate_rect within this routine.
However, the expose event handler (which should be called due to the
gdk_window_invalidate_rect) is not being called. If I stretch the
window some horizontally so that the drawing area expands after some
point (321 pixels for some reason), the application starts behaving
correctly. That is, dragging the mouse results in the object being
updated as it is moved. Stretching vertically does not seem to have an
effect. If I shrink the window horizontally (after some point) it goes
back to its original behavior of not updating. Also, this problem is
not just isolated with the mouse dragging. Other commands (widgets) in
the interface which should cause the display to change in some manner
and be updated via an expose event that is supposed to be generated by a
call to gdk_window_invalidate_rect are also not occurring.
Next, I then took this same windows executable and tried it on a Win
2000 machine with the same GTK+ libraries. On this machine the
application is working as it should. Mouse dragging results in the
expose event handler eventually being called via the
gdk_window_invalidate_rect().
_______________________________________________
gtk-list@xxxxxxxxx
http://mail.gnome.org/mailman/listinfo/gtk-list