response to events
- From: Dov Kruger <dkruger stevens edu>
- To: gtk-app-devel-list gnome org
- Subject: response to events
- Date: Thu, 30 Mar 2006 18:05:14 -0500
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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]