summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Hua <william.hua@canonical.com>2015-09-25 09:18:14 -0400
committerWilliam Hua <william.hua@canonical.com>2016-01-06 10:37:41 -0500
commitcc690bdbea4dbe89f49bd1a3a142d7a00bd0cecd (patch)
tree05f78f2b52b591b720cbe4918b3810feeef50d71
parentf6d47073a282ef2fb7422e924334fdc31e8bd1b9 (diff)
downloadgtk+-cc690bdbea4dbe89f49bd1a3a142d7a00bd0cecd.tar.gz
gtkrecentchooserdefault: use gtk_menu_popup_with_params ()
-rw-r--r--gtk/gtkrecentchooserdefault.c77
1 files changed, 31 insertions, 46 deletions
diff --git a/gtk/gtkrecentchooserdefault.c b/gtk/gtkrecentchooserdefault.c
index 5d6172dba6..8392d2a7ce 100644
--- a/gtk/gtkrecentchooserdefault.c
+++ b/gtk/gtkrecentchooserdefault.c
@@ -1729,61 +1729,46 @@ recent_view_menu_build (GtkRecentChooserDefault *impl)
recent_view_menu_ensure_state (impl);
}
-/* taken from gtkfilechooserdefault.c */
-static void
-popup_position_func (GtkMenu *menu,
- gint *x,
- gint *y,
- gboolean *push_in,
- gpointer user_data)
-{
- GtkAllocation allocation;
- GtkWidget *widget = GTK_WIDGET (user_data);
- GdkScreen *screen = gtk_widget_get_screen (widget);
- GtkRequisition req;
- gint monitor_num;
- GdkRectangle monitor;
-
- if (G_UNLIKELY (!gtk_widget_get_realized (widget)))
- return;
-
- gdk_window_get_origin (gtk_widget_get_window (widget),
- x, y);
-
- gtk_widget_get_preferred_size (GTK_WIDGET (menu),
- &req, NULL);
-
- gtk_widget_get_allocation (widget, &allocation);
- *x += (allocation.width - req.width) / 2;
- *y += (allocation.height - req.height) / 2;
-
- monitor_num = gdk_screen_get_monitor_at_point (screen, *x, *y);
- gtk_menu_set_monitor (menu, monitor_num);
- gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
-
- *x = CLAMP (*x, monitor.x, monitor.x + MAX (0, monitor.width - req.width));
- *y = CLAMP (*y, monitor.y, monitor.y + MAX (0, monitor.height - req.height));
-
- *push_in = FALSE;
-}
-
-
static void
recent_view_menu_popup (GtkRecentChooserDefault *impl,
GdkEventButton *event)
{
+ GdkAttachParams *params;
+
recent_view_menu_build (impl);
if (event)
- gtk_menu_popup (GTK_MENU (impl->priv->recent_popup_menu),
- NULL, NULL, NULL, NULL,
- event->button, event->time);
+ gtk_menu_popup_with_params (GTK_MENU (impl->priv->recent_popup_menu),
+ NULL,
+ NULL,
+ NULL,
+ event->button,
+ event->time,
+ TRUE,
+ GDK_WINDOW_TYPE_HINT_POPUP_MENU,
+ NULL);
else
{
- gtk_menu_popup (GTK_MENU (impl->priv->recent_popup_menu),
- NULL, NULL,
- popup_position_func, impl->priv->recent_view,
- 0, GDK_CURRENT_TIME);
+ params = gtk_menu_create_params (GTK_MENU (impl->priv->recent_popup_menu));
+
+ gdk_attach_params_add_primary_rules (params,
+ GDK_ATTACH_AXIS_Y | GDK_ATTACH_RECT_MID | GDK_ATTACH_WINDOW_MID,
+ NULL);
+
+ gdk_attach_params_add_secondary_rules (params,
+ GDK_ATTACH_AXIS_X | GDK_ATTACH_RECT_MID | GDK_ATTACH_WINDOW_MID,
+ NULL);
+
+ gtk_menu_popup_with_params (GTK_MENU (impl->priv->recent_popup_menu),
+ NULL,
+ NULL,
+ impl->priv->recent_view,
+ 0,
+ GDK_CURRENT_TIME,
+ TRUE,
+ GDK_WINDOW_TYPE_HINT_POPUP_MENU,
+ params);
+
gtk_menu_shell_select_first (GTK_MENU_SHELL (impl->priv->recent_popup_menu),
FALSE);
}