From f4c7db4eb405883a596ad00391fa9d35334640f0 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 15 Sep 2011 16:04:16 -0500 Subject: A check point --- src/idocalendarmenuitem.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/src/idocalendarmenuitem.c b/src/idocalendarmenuitem.c index 6d5c077..ec2e2b4 100644 --- a/src/idocalendarmenuitem.c +++ b/src/idocalendarmenuitem.c @@ -197,19 +197,57 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, GdkEventButton *event) { GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; + g_debug("Button Press"); if (event->button == 1) { if (gtk_widget_get_window (calendar) != NULL) { gdk_window_raise (gtk_widget_get_window (calendar)); + g_debug("Raise window"); } if (!gtk_widget_has_focus (calendar)) { gtk_widget_grab_focus (calendar); + g_debug("Grab focus: %d", gtk_widget_has_focus(calendar)); } - +GdkEvent * newevent = gdk_event_copy((GdkEvent *)(event)); +GList * children = gdk_window_get_children(gtk_widget_get_window(calendar)); +GList * child; +gint root_x, root_y; + +gdk_window_get_position(gtk_widget_get_window(widget), &root_x, &root_y); +root_x += event->x; +root_y += event->y; +g_debug("Root X: %d Y: %d", root_x, root_y); + +for (child = children; child != NULL; child = g_list_next(child)) { +gint newx, newy; +gint winx, winy; +GdkWindow * newwindow = (GdkWindow*)child->data; + +((GdkEventButton *)newevent)->window = newwindow; + +//gdk_window_get_position((GdkWindow*)child->data, &winx, &winy); +gdk_window_get_position(newwindow, &winx, &winy); +newx = root_x - winx; +newy = root_y - winy; + + +if (newx >= 0 && newy >= 0) { +//if (newx >= 0 && newy >= 0 && newx < gdk_window_get_width(newwindow) && newy < gdk_window_get_height(newwindow)) { +gboolean returned = FALSE; +g_debug("Simulating event at: %dx%d", newx, newy); +((GdkEventButton *)newevent)->x = newx; +((GdkEventButton *)newevent)->y = newy; + + returned = GTK_WIDGET_GET_CLASS(calendar)->button_press_event(GTK_WIDGET(calendar), (GdkEventButton*)newevent); + if (returned) { + g_debug("\tHandled"); + } + } + } return TRUE; } @@ -220,7 +258,18 @@ static gboolean ido_calendar_menu_item_button_release (GtkWidget *widget, GdkEventButton *event) { + g_debug("Button Release"); // GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; + GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; + +GdkEvent * newevent = gdk_event_copy((GdkEvent *)(event)); +GList * children = gdk_window_get_children(gtk_widget_get_window(calendar)); +GList * child; +for (child = children; child != NULL; child = g_list_next(child)) { +((GdkEventButton *)newevent)->window = (GdkWindow*)child->data; + + GTK_WIDGET_GET_CLASS(calendar)->button_release_event(GTK_WIDGET(calendar), (GdkEventButton*)newevent); + } return TRUE; } -- cgit v1.2.3 From f269963322e38963b8d2c5fdaea3d28622d552af Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 15 Sep 2011 16:06:37 -0500 Subject: Reformating --- src/idocalendarmenuitem.c | 106 +++++++++++++++++++++++----------------------- 1 file changed, 52 insertions(+), 54 deletions(-) diff --git a/src/idocalendarmenuitem.c b/src/idocalendarmenuitem.c index ec2e2b4..aa59989 100644 --- a/src/idocalendarmenuitem.c +++ b/src/idocalendarmenuitem.c @@ -196,62 +196,60 @@ static gboolean ido_calendar_menu_item_button_press (GtkWidget *widget, GdkEventButton *event) { - GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; - g_debug("Button Press"); - - if (event->button == 1) - { - if (gtk_widget_get_window (calendar) != NULL) - { - gdk_window_raise (gtk_widget_get_window (calendar)); - g_debug("Raise window"); - } - - if (!gtk_widget_has_focus (calendar)) - { - gtk_widget_grab_focus (calendar); - g_debug("Grab focus: %d", gtk_widget_has_focus(calendar)); - } -GdkEvent * newevent = gdk_event_copy((GdkEvent *)(event)); -GList * children = gdk_window_get_children(gtk_widget_get_window(calendar)); -GList * child; -gint root_x, root_y; - -gdk_window_get_position(gtk_widget_get_window(widget), &root_x, &root_y); -root_x += event->x; -root_y += event->y; -g_debug("Root X: %d Y: %d", root_x, root_y); - -for (child = children; child != NULL; child = g_list_next(child)) { -gint newx, newy; -gint winx, winy; -GdkWindow * newwindow = (GdkWindow*)child->data; - -((GdkEventButton *)newevent)->window = newwindow; - -//gdk_window_get_position((GdkWindow*)child->data, &winx, &winy); -gdk_window_get_position(newwindow, &winx, &winy); -newx = root_x - winx; -newy = root_y - winy; - - -if (newx >= 0 && newy >= 0) { -//if (newx >= 0 && newy >= 0 && newx < gdk_window_get_width(newwindow) && newy < gdk_window_get_height(newwindow)) { -gboolean returned = FALSE; -g_debug("Simulating event at: %dx%d", newx, newy); -((GdkEventButton *)newevent)->x = newx; -((GdkEventButton *)newevent)->y = newy; - - returned = GTK_WIDGET_GET_CLASS(calendar)->button_press_event(GTK_WIDGET(calendar), (GdkEventButton*)newevent); - if (returned) { - g_debug("\tHandled"); + GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; + g_debug("Button Press"); + + if (event->button == 1) { + if (gtk_widget_get_window (calendar) != NULL) { + gdk_window_raise (gtk_widget_get_window (calendar)); + g_debug("Raise window"); + } + + if (!gtk_widget_has_focus (calendar)) { + gtk_widget_grab_focus (calendar); + g_debug("Grab focus: %d", gtk_widget_has_focus(calendar)); + } + + GdkEvent * newevent = gdk_event_copy((GdkEvent *)(event)); + GList * children = gdk_window_get_children(gtk_widget_get_window(calendar)); + GList * child; + gint root_x, root_y; + + gdk_window_get_position(gtk_widget_get_window(widget), &root_x, &root_y); + root_x += event->x; + root_y += event->y; + g_debug("Root X: %d Y: %d", root_x, root_y); + + for (child = children; child != NULL; child = g_list_next(child)) { + gint newx, newy; + gint winx, winy; + GdkWindow * newwindow = (GdkWindow*)child->data; + + ((GdkEventButton *)newevent)->window = newwindow; + + //gdk_window_get_position((GdkWindow*)child->data, &winx, &winy); + gdk_window_get_position(newwindow, &winx, &winy); + newx = root_x - winx; + newy = root_y - winy; + + + if (newx >= 0 && newy >= 0) { + //if (newx >= 0 && newy >= 0 && newx < gdk_window_get_width(newwindow) && newy < gdk_window_get_height(newwindow)) { + gboolean returned = FALSE; + g_debug("Simulating event at: %dx%d", newx, newy); + ((GdkEventButton *)newevent)->x = newx; + ((GdkEventButton *)newevent)->y = newy; + + returned = GTK_WIDGET_GET_CLASS(calendar)->button_press_event(GTK_WIDGET(calendar), (GdkEventButton*)newevent); + if (returned) { + g_debug("\tHandled"); + } + } + } + return TRUE; } - } - } - return TRUE; - } - return FALSE; + return FALSE; } static gboolean -- cgit v1.2.3 From 8ca02b8e62853b79feee7e8a2b38fa680a7de12e Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 16 Sep 2011 10:17:36 -0500 Subject: Clean up some debug and such --- src/idocalendarmenuitem.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/idocalendarmenuitem.c b/src/idocalendarmenuitem.c index aa59989..4eac1c5 100644 --- a/src/idocalendarmenuitem.c +++ b/src/idocalendarmenuitem.c @@ -227,8 +227,8 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, ((GdkEventButton *)newevent)->window = newwindow; - //gdk_window_get_position((GdkWindow*)child->data, &winx, &winy); gdk_window_get_position(newwindow, &winx, &winy); + g_debug("Window position: %dx%d", winx, winy); newx = root_x - winx; newy = root_y - winy; @@ -237,8 +237,8 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, //if (newx >= 0 && newy >= 0 && newx < gdk_window_get_width(newwindow) && newy < gdk_window_get_height(newwindow)) { gboolean returned = FALSE; g_debug("Simulating event at: %dx%d", newx, newy); - ((GdkEventButton *)newevent)->x = newx; - ((GdkEventButton *)newevent)->y = newy; + //((GdkEventButton *)newevent)->x = newx; + //((GdkEventButton *)newevent)->y = newy; returned = GTK_WIDGET_GET_CLASS(calendar)->button_press_event(GTK_WIDGET(calendar), (GdkEventButton*)newevent); if (returned) { -- cgit v1.2.3 From 8d56d16eb7b4af02d84a683c9792ca218ed81980 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 16 Sep 2011 12:40:03 -0500 Subject: Use the root position in the event instead of finding it --- src/idocalendarmenuitem.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/idocalendarmenuitem.c b/src/idocalendarmenuitem.c index 4eac1c5..994e1e2 100644 --- a/src/idocalendarmenuitem.c +++ b/src/idocalendarmenuitem.c @@ -213,11 +213,10 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, GdkEvent * newevent = gdk_event_copy((GdkEvent *)(event)); GList * children = gdk_window_get_children(gtk_widget_get_window(calendar)); GList * child; - gint root_x, root_y; - gdk_window_get_position(gtk_widget_get_window(widget), &root_x, &root_y); - root_x += event->x; - root_y += event->y; + gint root_x = event->x_root; + gint root_y = event->y_root; + g_debug("Root X: %d Y: %d", root_x, root_y); for (child = children; child != NULL; child = g_list_next(child)) { -- cgit v1.2.3 From 94ce65a555a0fad7888ec94d1cb9f27c12395ebe Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 16 Sep 2011 12:40:28 -0500 Subject: Use get_origin instead of position and uncomment out our adjustments --- src/idocalendarmenuitem.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/idocalendarmenuitem.c b/src/idocalendarmenuitem.c index 994e1e2..aa5314c 100644 --- a/src/idocalendarmenuitem.c +++ b/src/idocalendarmenuitem.c @@ -226,18 +226,16 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, ((GdkEventButton *)newevent)->window = newwindow; - gdk_window_get_position(newwindow, &winx, &winy); + gdk_window_get_origin(newwindow, &winx, &winy); g_debug("Window position: %dx%d", winx, winy); newx = root_x - winx; newy = root_y - winy; - - if (newx >= 0 && newy >= 0) { - //if (newx >= 0 && newy >= 0 && newx < gdk_window_get_width(newwindow) && newy < gdk_window_get_height(newwindow)) { + if (newx >= 0 && newy >= 0 && newx < gdk_window_get_width(newwindow) && newy < gdk_window_get_height(newwindow)) { gboolean returned = FALSE; g_debug("Simulating event at: %dx%d", newx, newy); - //((GdkEventButton *)newevent)->x = newx; - //((GdkEventButton *)newevent)->y = newy; + ((GdkEventButton *)newevent)->x = newx; + ((GdkEventButton *)newevent)->y = newy; returned = GTK_WIDGET_GET_CLASS(calendar)->button_press_event(GTK_WIDGET(calendar), (GdkEventButton*)newevent); if (returned) { -- cgit v1.2.3 From f5be40f06a3a6591ef442261479b960c58dbe8c1 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 16 Sep 2011 12:42:17 -0500 Subject: Removing a bunch of debug messages --- src/idocalendarmenuitem.c | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/src/idocalendarmenuitem.c b/src/idocalendarmenuitem.c index aa5314c..085a2da 100644 --- a/src/idocalendarmenuitem.c +++ b/src/idocalendarmenuitem.c @@ -197,17 +197,14 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, GdkEventButton *event) { GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; - g_debug("Button Press"); if (event->button == 1) { if (gtk_widget_get_window (calendar) != NULL) { gdk_window_raise (gtk_widget_get_window (calendar)); - g_debug("Raise window"); } if (!gtk_widget_has_focus (calendar)) { gtk_widget_grab_focus (calendar); - g_debug("Grab focus: %d", gtk_widget_has_focus(calendar)); } GdkEvent * newevent = gdk_event_copy((GdkEvent *)(event)); @@ -217,8 +214,6 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, gint root_x = event->x_root; gint root_y = event->y_root; - g_debug("Root X: %d Y: %d", root_x, root_y); - for (child = children; child != NULL; child = g_list_next(child)) { gint newx, newy; gint winx, winy; @@ -227,20 +222,14 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, ((GdkEventButton *)newevent)->window = newwindow; gdk_window_get_origin(newwindow, &winx, &winy); - g_debug("Window position: %dx%d", winx, winy); newx = root_x - winx; newy = root_y - winy; if (newx >= 0 && newy >= 0 && newx < gdk_window_get_width(newwindow) && newy < gdk_window_get_height(newwindow)) { - gboolean returned = FALSE; - g_debug("Simulating event at: %dx%d", newx, newy); ((GdkEventButton *)newevent)->x = newx; ((GdkEventButton *)newevent)->y = newy; - returned = GTK_WIDGET_GET_CLASS(calendar)->button_press_event(GTK_WIDGET(calendar), (GdkEventButton*)newevent); - if (returned) { - g_debug("\tHandled"); - } + GTK_WIDGET_GET_CLASS(calendar)->button_press_event(GTK_WIDGET(calendar), (GdkEventButton*)newevent); } } return TRUE; @@ -253,18 +242,8 @@ static gboolean ido_calendar_menu_item_button_release (GtkWidget *widget, GdkEventButton *event) { - g_debug("Button Release"); - // GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; - -GdkEvent * newevent = gdk_event_copy((GdkEvent *)(event)); -GList * children = gdk_window_get_children(gtk_widget_get_window(calendar)); -GList * child; -for (child = children; child != NULL; child = g_list_next(child)) { -((GdkEventButton *)newevent)->window = (GdkWindow*)child->data; - - GTK_WIDGET_GET_CLASS(calendar)->button_release_event(GTK_WIDGET(calendar), (GdkEventButton*)newevent); - } + GTK_WIDGET_GET_CLASS(calendar)->button_release_event(GTK_WIDGET(calendar), event); return TRUE; } -- cgit v1.2.3 From d903b298a246c22fef75c01cb54bed56c0232eb1 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 16 Sep 2011 12:54:10 -0500 Subject: Putting the new code as GTK3 only --- src/idocalendarmenuitem.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/idocalendarmenuitem.c b/src/idocalendarmenuitem.c index 085a2da..bb4ccca 100644 --- a/src/idocalendarmenuitem.c +++ b/src/idocalendarmenuitem.c @@ -207,6 +207,7 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, gtk_widget_grab_focus (calendar); } +#if GTK_CHECK_VERSION (3, 0, 0) GdkEvent * newevent = gdk_event_copy((GdkEvent *)(event)); GList * children = gdk_window_get_children(gtk_widget_get_window(calendar)); GList * child; @@ -232,6 +233,8 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, GTK_WIDGET_GET_CLASS(calendar)->button_press_event(GTK_WIDGET(calendar), (GdkEventButton*)newevent); } } +#endif + return TRUE; } @@ -242,8 +245,10 @@ static gboolean ido_calendar_menu_item_button_release (GtkWidget *widget, GdkEventButton *event) { +#if GTK_CHECK_VERSION (3, 0, 0) GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; GTK_WIDGET_GET_CLASS(calendar)->button_release_event(GTK_WIDGET(calendar), event); +#endif return TRUE; } -- cgit v1.2.3 -- cgit v1.2.3 From 3abfadde5be590360900ce3ca92195fab7496ec5 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 16 Sep 2011 13:04:30 -0500 Subject: Freeing the new event --- src/idocalendarmenuitem.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/idocalendarmenuitem.c b/src/idocalendarmenuitem.c index bb4ccca..40d96a1 100644 --- a/src/idocalendarmenuitem.c +++ b/src/idocalendarmenuitem.c @@ -233,6 +233,9 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, GTK_WIDGET_GET_CLASS(calendar)->button_press_event(GTK_WIDGET(calendar), (GdkEventButton*)newevent); } } + + ((GdkEventButton *)newevent)->window = event->window; + gdk_event_free(newevent); #endif return TRUE; -- cgit v1.2.3