diff options
author | Christian Persch <chpe@cvs.gnome.org> | 2004-11-08 04:26:57 +0800 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2004-11-08 04:26:57 +0800 |
commit | 1f545ca03b769815e6e1da4cb180c5028d69d827 (patch) | |
tree | d5723fda7fecd99a4d8b8d6fa17a43b640773b24 /src/ephy-window.c | |
parent | 27909c033836613152167b9969b8014b98238006 (diff) | |
download | gsoc2013-epiphany-1f545ca03b769815e6e1da4cb180c5028d69d827.tar gsoc2013-epiphany-1f545ca03b769815e6e1da4cb180c5028d69d827.tar.gz gsoc2013-epiphany-1f545ca03b769815e6e1da4cb180c5028d69d827.tar.bz2 gsoc2013-epiphany-1f545ca03b769815e6e1da4cb180c5028d69d827.tar.lz gsoc2013-epiphany-1f545ca03b769815e6e1da4cb180c5028d69d827.tar.xz gsoc2013-epiphany-1f545ca03b769815e6e1da4cb180c5028d69d827.tar.zst gsoc2013-epiphany-1f545ca03b769815e6e1da4cb180c5028d69d827.zip |
Sanitise the embed popup position. Fixes bug #157162.
2004-11-07 Christian Persch <chpe@cvs.gnome.org>
* lib/ephy-gui.c: (ephy_gui_sanitise_popup_position),
(ephy_gui_menu_position_tree_selection),
(ephy_gui_menu_position_under_widget):
* lib/ephy-gui.h:
* src/ephy-window.c: (popup_menu_at_coords), (show_embed_popup):
Sanitise the embed popup position. Fixes bug #157162.
Diffstat (limited to 'src/ephy-window.c')
-rw-r--r-- | src/ephy-window.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/ephy-window.c b/src/ephy-window.c index 2ed8e044f..f0c2455a9 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -50,6 +50,7 @@ #include "ephy-stock-icons.h" #include "ephy-extension.h" #include "ephy-favicon-cache.h" +#include "ephy-gui.h" #include <string.h> #include <glib/gi18n.h> @@ -1545,10 +1546,17 @@ static void popup_menu_at_coords (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data) { - EphyEmbedEvent *event = (EphyEmbedEvent *) user_data; + GtkWidget *window = GTK_WIDGET (user_data); + EphyEmbedEvent *event; + + event = g_object_get_data (G_OBJECT (window), "context_event"); + g_return_if_fail (event != NULL); ephy_embed_event_get_coords (event, x, y); + /* FIXME: better position the popup within the window bounds? */ + ephy_gui_sanitise_popup_position (menu, window, x, y); + *push_in = TRUE; } @@ -1761,7 +1769,7 @@ show_embed_popup (EphyWindow *window, EphyTab *tab, EphyEmbedEvent *event) if (type == EPHY_EMBED_EVENT_KEY) { gtk_menu_popup (GTK_MENU (widget), NULL, NULL, - popup_menu_at_coords, event, 0, + popup_menu_at_coords, window, 0, gtk_get_current_event_time ()); gtk_menu_shell_select_first (GTK_MENU_SHELL (widget), FALSE); } |