rendered paste body#include <stdlib.h>
#include <gtk/gtk.h>
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 ()