summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/terminal-window.c72
1 files changed, 7 insertions, 65 deletions
diff --git a/src/terminal-window.c b/src/terminal-window.c
index d8c1e71..616605a 100644
--- a/src/terminal-window.c
+++ b/src/terminal-window.c
@@ -564,60 +564,6 @@ find_tab_num_at_pos (GtkNotebook *notebook,
}
static void
-position_menu_under_widget (GtkMenu *menu,
- int *x,
- int *y,
- gboolean *push_in,
- gpointer user_data)
-{
- /* Adapted from gtktoolbar.c */
- GtkWidget *widget = GTK_WIDGET (user_data);
- GdkWindow *widget_window;
- GtkWidget *container;
- GtkRequisition req;
- GtkRequisition menu_req;
- GdkRectangle monitor;
- GdkMonitor *monitor_num;
- GdkDisplay *display;
- GtkAllocation widget_allocation;
-
- widget_window = gtk_widget_get_window (widget);
- gtk_widget_get_allocation (widget, &widget_allocation);
- container = gtk_widget_get_ancestor (widget, GTK_TYPE_CONTAINER);
-
- gtk_widget_get_preferred_size (widget, &req, NULL);
- gtk_widget_get_preferred_size (GTK_WIDGET (menu), &menu_req, NULL);
-
- display = gtk_widget_get_display (GTK_WIDGET (menu));
- monitor_num = gdk_display_get_monitor_at_window (display, widget_window);
- if (monitor_num == NULL)
- monitor_num = gdk_display_get_monitor (display, 0);
- gdk_monitor_get_geometry (monitor_num, &monitor);
-
- gdk_window_get_origin (widget_window, x, y);
- if (!gtk_widget_get_has_window (widget))
- {
- *x += widget_allocation.x;
- *y += widget_allocation.y;
- }
- if (gtk_widget_get_direction (container) == GTK_TEXT_DIR_LTR)
- *x += widget_allocation.width - req.width;
- else
- *x += req.width - menu_req.width;
-
- if ((*y + widget_allocation.height + menu_req.height) <= monitor.y + monitor.height)
- *y += widget_allocation.height;
- else if ((*y - menu_req.height) >= monitor.y)
- *y -= menu_req.height;
- else if (monitor.y + monitor.height - (*y + widget_allocation.height) > *y)
- *y += widget_allocation.height;
- else
- *y -= menu_req.height;
-
- *push_in = FALSE;
-}
-
-static void
terminal_set_profile_toggled_callback (GtkToggleAction *action,
TerminalWindow *window)
{
@@ -1545,11 +1491,7 @@ popup_clipboard_targets_received_cb (GtkClipboard *clipboard,
if (!gtk_menu_get_attach_widget (GTK_MENU (popup_menu)))
gtk_menu_attach_to_widget (GTK_MENU (popup_menu),GTK_WIDGET (screen),NULL);
- gtk_menu_popup (GTK_MENU (popup_menu),
- NULL, NULL,
- NULL, NULL,
- info->button,
- info->timestamp);
+ gtk_menu_popup_at_pointer (GTK_MENU (popup_menu), NULL);
}
static void
@@ -2978,9 +2920,7 @@ notebook_button_press_cb (GtkWidget *widget,
gtk_menu_detach (GTK_MENU (menu));
tab = gtk_notebook_get_nth_page (notebook, tab_clicked);
gtk_menu_attach_to_widget (GTK_MENU (menu), tab, NULL);
- gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
- NULL, NULL,
- event->button, event->time);
+ gtk_menu_popup_at_pointer (GTK_MENU (menu), NULL);
return TRUE;
}
@@ -3047,9 +2987,11 @@ notebook_popup_menu_cb (GtkWidget *widget,
if (gtk_menu_get_attach_widget (GTK_MENU (menu)))
gtk_menu_detach (GTK_MENU (menu));
gtk_menu_attach_to_widget (GTK_MENU (menu), tab_label, NULL);
- gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
- position_menu_under_widget, tab_label,
- 0, gtk_get_current_event_time ());
+ gtk_menu_popup_at_widget (GTK_MENU (menu),
+ tab_label,
+ GDK_GRAVITY_SOUTH_WEST,
+ GDK_GRAVITY_NORTH_WEST,
+ NULL);
gtk_menu_shell_select_first (GTK_MENU_SHELL (menu), FALSE);
return TRUE;