aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@gnome.org>2004-09-15 16:04:46 +0800
committerMarco Pesenti Gritti <marco@src.gnome.org>2004-09-15 16:04:46 +0800
commit9d03728737c3ac793ac7a8d63398dad4053be7f9 (patch)
tree39857274e7cdcac6c079329fa1511c4b8201bc20 /lib
parentad595146b5a48a6b527d0f643e5b06edae32917d (diff)
downloadgsoc2013-epiphany-9d03728737c3ac793ac7a8d63398dad4053be7f9.tar
gsoc2013-epiphany-9d03728737c3ac793ac7a8d63398dad4053be7f9.tar.gz
gsoc2013-epiphany-9d03728737c3ac793ac7a8d63398dad4053be7f9.tar.bz2
gsoc2013-epiphany-9d03728737c3ac793ac7a8d63398dad4053be7f9.tar.lz
gsoc2013-epiphany-9d03728737c3ac793ac7a8d63398dad4053be7f9.tar.xz
gsoc2013-epiphany-9d03728737c3ac793ac7a8d63398dad4053be7f9.tar.zst
gsoc2013-epiphany-9d03728737c3ac793ac7a8d63398dad4053be7f9.zip
Add api to show a context menu. Useful to make distinction between key and
2004-09-15 Marco Pesenti Gritti <marco@gnome.org> * lib/widgets/ephy-node-view.c: (ephy_node_view_add_toggle), (ephy_node_view_popup): * lib/widgets/ephy-node-view.h: Add api to show a context menu. Useful to make distinction between key and mouse events. * src/bookmarks/ephy-bookmarks-editor.c: (ephy_bookmarks_editor_show_popup_cb), (keyword_node_show_popup_cb): * src/ephy-history-window.c: (ephy_history_window_show_popup_cb): Use it. Fix #152431
Diffstat (limited to 'lib')
-rw-r--r--lib/widgets/ephy-node-view.c25
-rw-r--r--lib/widgets/ephy-node-view.h3
2 files changed, 28 insertions, 0 deletions
diff --git a/lib/widgets/ephy-node-view.c b/lib/widgets/ephy-node-view.c
index 0afbb9844..dc23e5efa 100644
--- a/lib/widgets/ephy-node-view.c
+++ b/lib/widgets/ephy-node-view.c
@@ -29,6 +29,7 @@
#include <gtk/gtkcellrenderertoggle.h>
#include <gtk/gtktreemodelfilter.h>
#include <gtk/gtkwindow.h>
+#include <gtk/gtkmain.h>
#include <gdk/gdkkeysyms.h>
#include "ephy-node-view.h"
@@ -1577,6 +1578,30 @@ ephy_node_view_add_toggle (EphyNodeView *view, EphyTreeModelNodeValueFunc value_
gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
}
+void
+ephy_node_view_popup (EphyNodeView *view, GtkWidget *menu)
+{
+ GdkEvent *event;
+
+ event = gtk_get_current_event ();
+ if (event)
+ {
+ if (event->type == GDK_KEY_PRESS)
+ {
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
+ ephy_gui_menu_position_tree_selection,
+ view, 2, gtk_get_current_event_time ());
+ }
+ else
+ {
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL,
+ NULL, 2, gtk_get_current_event_time ());
+ }
+
+ gdk_event_free (event);
+ }
+}
+
static void
ephy_node_view_class_init (EphyNodeViewClass *klass)
{
diff --git a/lib/widgets/ephy-node-view.h b/lib/widgets/ephy-node-view.h
index 0779e9d5c..339eb5c62 100644
--- a/lib/widgets/ephy-node-view.h
+++ b/lib/widgets/ephy-node-view.h
@@ -128,6 +128,9 @@ void ephy_node_view_edit (EphyNodeView *view,
gboolean ephy_node_view_is_target (EphyNodeView *view);
+void ephy_node_view_popup (EphyNodeView *view,
+ GtkWidget *menu);
+
G_END_DECLS
#endif /* EPHY_NODE_VIEW_H */