[gtk+/wip/attach-params-pass-event: 12/15] 99db2f96 gtkmenu use event
- From: William Hua <williamhua src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/attach-params-pass-event: 12/15] 99db2f96 gtkmenu use event
- Date: Thu, 18 Feb 2016 16:09:02 +0000 (UTC)
commit 11269f8f3304b0856c8515dd6dae1f8aaf001a5d
Author: William Hua <william hua canonical com>
Date: Wed Feb 17 22:37:28 2016 -0500
99db2f96 gtkmenu use event
gtk/gtkmenu.c | 66 ++++++++++++++------------------------------------------
1 files changed, 17 insertions(+), 49 deletions(-)
---
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index 2343173..a11c799 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -1935,18 +1935,21 @@ gtk_menu_popup_with_params (GtkMenu *menu,
GdkWindowTypeHint type_hint,
GdkAttachParams *params)
{
- GdkDisplay *display;
+ GdkRectangle rectangle = { 0, 0, 1, 1 };
+ GdkEvent *current_event = NULL;
+ GdkSeat *seat;
GdkDevice *pointer;
GdkWindow *parent;
- GdkEvent *current_event;
- GdkRectangle rectangle = { 0 };
- gint x;
- gint y;
+ guint button;
g_return_if_fail (GTK_IS_MENU (menu));
+ g_warn_if_fail (event);
- if (seat)
- g_object_ref (seat);
+ if (!event)
+ {
+ current_event = gtk_get_current_event ();
+ event = current_event;
+ }
if (!params)
{
@@ -1954,50 +1957,12 @@ gtk_menu_popup_with_params (GtkMenu *menu,
if (!attach_widget)
{
- parent = NULL;
-
- if (!seat)
- {
- current_event = gtk_get_current_event ();
-
- if (current_event)
- {
- g_set_object (&seat, gdk_event_get_seat (current_event));
- g_set_object (&parent, gdk_event_get_window (current_event));
- gdk_event_free (current_event);
- }
- }
-
- display = gtk_widget_get_display (GTK_WIDGET (menu));
-
- if (seat && gdk_seat_get_display (seat) != display)
- g_clear_object (&seat);
-
- if (!seat)
- g_set_object (&seat, gdk_display_get_default_seat (display));
-
+ seat = gdk_event_get_seat (event);
pointer = gdk_seat_get_pointer (seat);
-
- if (pointer)
- {
- gdk_device_get_position (pointer, NULL, &rectangle.x, &rectangle.y);
- rectangle.width = 1;
- rectangle.height = 1;
-
- if (!parent)
- parent = gdk_device_get_last_event_window (pointer);
-
- if (parent)
- {
- gdk_window_get_origin (parent, &x, &y);
- rectangle.x -= x;
- rectangle.y -= y;
- }
- }
+ parent = gdk_device_get_window_at_position (pointer, &rectangle.x, &rectangle.y);
gdk_attach_params_set_attach_rect (params, &rectangle, parent);
gdk_attach_params_set_anchors (params, GDK_ATTACH_BOTTOM_RIGHT, GDK_ATTACH_TOP_LEFT);
- g_clear_object (&parent);
}
}
@@ -2013,6 +1978,9 @@ gtk_menu_popup_with_params (GtkMenu *menu,
menu->priv->type_hint = type_hint;
+ if (!gdk_event_get_button (event, &button))
+ button = 0;
+
gtk_menu_popup_internal (menu,
seat,
parent_menu_shell,
@@ -2021,10 +1989,10 @@ gtk_menu_popup_with_params (GtkMenu *menu,
NULL,
NULL,
button,
- activate_time,
+ gdk_event_get_time (event),
params);
- g_clear_object (&seat);
+ g_clear_pointer (¤t_event, gdk_event_free);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]