#include #include int on_mouse_over(GtkPaned *paned, GdkEventButton *event, GtkPaned *vpane1) ; void got_enter(GtkWidget *paned, GdkEventCrossing *event, gpointer user_data) { printf("Hmmm...\n"); } int on_mouse_over(GtkPaned *paned, GdkEventButton *event, GtkPaned *vpane1) { if(GTK_IS_PANED(paned)) g_signal_emit_by_name(GTK_OBJECT(paned), "button_press_event"); return TRUE; // return FALSE; // printf("%d",sig); } int main( int argc, char *argv[] ) { GtkWidget *window; GtkWidget *event_box; GtkWidget *label; GtkWidget *vpane1; GtkWidget *vpane2; GtkWidget *view1; GtkWidget *view2; GtkWidget *view3; GtkTextBuffer *buffer; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Event Box"); gtk_window_resize(GTK_WINDOW (window),300,300); g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (exit), NULL); // gtk_container_set_border_width (GTK_CONTAINER (window), 10); /* Create an EventBox and add it to our toplevel window */ event_box = gtk_event_box_new (); gtk_container_add (GTK_CONTAINER (window), event_box); /*-- Create the horizontal pane --*/ vpane1 = gtk_vpaned_new(); vpane2 = gtk_vpaned_new(); view1 = gtk_text_view_new (); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view1)); gtk_text_buffer_set_text (buffer, "Hello, this is pane1", -1); view2 = gtk_text_view_new (); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view2)); gtk_text_buffer_set_text (buffer, "Hello, this is pane2", -1); view3 = gtk_text_view_new (); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view3)); gtk_text_buffer_set_text (buffer, "Hello, this is pane3", -1); gtk_paned_add1(GTK_PANED(vpane1), view1); gtk_paned_add2(GTK_PANED(vpane1), vpane2); gtk_paned_add1(GTK_PANED(vpane2), view2); gtk_paned_add2(GTK_PANED(vpane2), view3); // gtk_widget_set_events(event_box, GDK_ALL_EVENTS_MASK); gtk_container_add(GTK_CONTAINER(event_box), vpane1); // gtk_signal_connect(GTK_OBJECT(event_box), "enter-notify-event", GTK_SIGNAL_FUNC(got_enter), vpane1); gtk_signal_connect(GTK_OBJECT(vpane1), "motion-notify-event", GTK_SIGNAL_FUNC(on_mouse_over), vpane1); gtk_widget_show (event_box); gtk_widget_show(vpane1); gtk_widget_show(vpane2); gtk_widget_show(view1); gtk_widget_show(view2); gtk_widget_show(view3); /* Yet one more thing you need an X window for ... */ gtk_widget_realize (event_box); // gdk_window_set_cursor (event_box->window, gdk_cursor_new (GDK_HAND1)); gtk_widget_show (window); gtk_main (); return 0; } ===Stack Trace=== #0 0x4b5aa36e in g_value_array_sort_with_data () from /usr/lib/libgobject-2.0.so.0 #1 0x4b59bc4b in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0 #2 0x4b59bea8 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0 #3 0x08048ca6 in on_mouse_over () #4 0x4b8c9151 in _gtk_marshal_BOOLEAN__BOXED (closure=0x80808e8, return_value=0xbfea4ff0, n_param_values=2, param_values=0xbfea5140, invocation_hint=0xbfea5018, marshal_data=0x0) at gtkmarshalers.c:83 #5 0x4b586a28 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0 #6 0x4b59ad93 in g_signal_has_handler_pending () from /usr/lib/libgobject-2.0.so.0 #7 0x4b59ba36 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0 #8 0x4b59bfa0 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0 #9 0x4b9b2a04 in gtk_widget_event_internal (widget=0x8077800, event=0x8061288) at gtkwidget.c:3751 #10 0x4b8c78b9 in IA__gtk_propagate_event (widget=0x8077800, event=0x8061288) at gtkmain.c:2195 #11 0x4b8c7b90 in IA__gtk_main_do_event (event=0x8061288) at gtkmain.c:1424 #12 0x4bb60a62 in gdk_event_dispatch (source=0x0, callback=0, user_data=0x0) at gdkevents-x11.c:2291 #13 0x4b50d605 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #14 0x4b50ee08 in g_main_context_acquire () from /usr/lib/libglib-2.0.so.0 #15 0x4b50f12f in g_main_loop_run () from /usr/lib/libglib-2.0.so.0 #16 0x4b8c6f76 in IA__gtk_main () at gtkmain.c:1003 #17 0x08048fcb in main ()