[gnome-terminal] window: Attach popup menus to their parent widgets
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-terminal] window: Attach popup menus to their parent widgets
- Date: Sun, 14 Jun 2015 14:43:56 +0000 (UTC)
commit 67afb95efd64f29d62ebd32853276a76a5d0760f
Author: Jonas Ådahl <jadahl gmail com>
Date: Thu Jun 11 10:32:47 2015 +0800
window: Attach popup menus to their parent widgets
When running on Wayland, popup menus must have a parent widget to attach
to. If a parent widget is not explicitly set, the GDK backend tries to
guess what parent widget seems appropriate. In order to have more
reliable popups, change the popups in the terminal window to set their
parent widgets explicitly.
https://bugzilla.gnome.org/show_bug.cgi?id=750755
src/terminal-window.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
---
diff --git a/src/terminal-window.c b/src/terminal-window.c
index b254cd7..b34514c 100644
--- a/src/terminal-window.c
+++ b/src/terminal-window.c
@@ -2047,6 +2047,9 @@ popup_clipboard_targets_received_cb (GtkClipboard *clipboard,
if (info->button == 0)
gtk_menu_shell_select_first (GTK_MENU_SHELL (popup_menu), FALSE);
+ if (gtk_menu_get_attach_widget (GTK_MENU (popup_menu)))
+ gtk_menu_detach (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,
@@ -3172,6 +3175,7 @@ notebook_button_press_cb (GtkWidget *widget,
{
TerminalWindowPrivate *priv = window->priv;
GtkNotebook *notebook = GTK_NOTEBOOK (widget);
+ GtkWidget *tab;
GtkWidget *menu;
GtkAction *action;
int tab_clicked;
@@ -3192,6 +3196,10 @@ notebook_button_press_cb (GtkWidget *widget,
gtk_action_activate (action);
menu = gtk_ui_manager_get_widget (priv->ui_manager, "/NotebookPopup");
+ if (gtk_menu_get_attach_widget (GTK_MENU (menu)))
+ 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);
@@ -3222,6 +3230,9 @@ notebook_popup_menu_cb (GtkWidget *widget,
gtk_action_activate (action);
menu = gtk_ui_manager_get_widget (priv->ui_manager, "/NotebookPopup");
+ 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 ());
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]