The following function attempts to turn on event trapping for all GDK events, but I only get the mouse down events,
GtkWidget *create_gl_window() { GtkWidget* glwindow; glwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(glwindow), "Graphite"); gtk_container_border_width(GTK_CONTAINER(glwindow), 2); // create_popup_menu(glwindow); gtk_signal_connect (GTK_OBJECT(glwindow), "delete_event", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* ... Destroy this window when exiting from gtk_main() ... */ gtk_quit_add_destroy(1, GTK_OBJECT(glwindow)); /* ... Create new OpenGL widget with GTK's window mode; analogous to glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); */ glarea = gtk_gl_area_new_vargs(NULL, /* no sharing */ GDK_GL_DOUBLEBUFFER, GDK_GL_RGBA, GDK_GL_DEPTH_SIZE,1, GDK_GL_NONE);/* last arg must be GDK_GL_NONE */ if (!glarea) { g_print("Can't create GtkGlArea widget\n"); return FALSE; } /* ... Set up events and signals for OpenGL widget ... */ gtk_widget_set_events(GTK_WIDGET(glarea),GDK_ALL_EVENTS_MASK); #if 0 GDK_EXPOSURE_MASK| GDK_BUTTON_PRESS_MASK| GDK_BUTTON_RELEASE_MASK| GDK_KEY_PRESS_MASK| GDK_KEY_RELEASE_MASK| GDK_POINTER_MOTION_MASK| GDK_POINTER_MOTION_HINT_MASK); #endif gtk_signal_connect (GTK_OBJECT(glarea), "expose_event", GTK_SIGNAL_FUNC(glarea_expose), NULL); gtk_signal_connect (GTK_OBJECT(glarea), "motion_notify_event", GTK_SIGNAL_FUNC(glarea_motion_notify), NULL); gtk_signal_connect (GTK_OBJECT(glarea), "button_press_event", GTK_SIGNAL_FUNC(glarea_button_press), NULL); gtk_signal_connect (GTK_OBJECT(glarea), "configure_event", GTK_SIGNAL_FUNC(glarea_configure), NULL); gtk_signal_connect (GTK_OBJECT(glarea), "key_press_event", GTK_SIGNAL_FUNC(glarea_key_press_event), NULL); gtk_signal_connect (GTK_OBJECT(glarea), "delete_event", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); gtk_widget_set_usize(glarea, 640, 480); /* minimum size */ gtk_quit_add_destroy(1, GTK_OBJECT(glarea)); /* ... Insert glarea into window and show it all ... */ gtk_container_add(GTK_CONTAINER(glwindow),glarea); gtk_widget_show(glarea); gtk_widget_show(glwindow); /* ... Set focus to glarea widget and initialize OpenGL ... */ GTK_WIDGET_SET_FLAGS(glarea,GTK_CAN_FOCUS); gtk_widget_grab_focus(GTK_WIDGET(glarea)); initgl(); return glwindow; } I inserted the #if region and asked to receive all events. However, I am not receiving any mouse moves, only mouse presses. The following motion_notify callback should be printing all the time, but I only get an event when I press the mouse. What am I doing wrong? thanks! Dov gint glarea_motion_notify(GtkWidget* widget, GdkEventMotion* event) { cout << event->x << "," << event->y << "\n"; GLPP::Controller* controller = viewer->getController(); controller->setLoc((int)event->x, (int)event->y); controller->dispatch((event->type << 24) + (event->state << 8)); return TRUE; _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list