diff options
Diffstat (limited to 'src/bookmarks/ephy-node-view.c')
-rw-r--r-- | src/bookmarks/ephy-node-view.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/bookmarks/ephy-node-view.c b/src/bookmarks/ephy-node-view.c index f82b40228..cb96f72b1 100644 --- a/src/bookmarks/ephy-node-view.c +++ b/src/bookmarks/ephy-node-view.c @@ -22,6 +22,7 @@ #include <gtk/gtkcellrenderertext.h> #include <gtk/gtkcellrendererpixbuf.h> #include <gtk/gtkwindow.h> +#include <gdk/gdkkeysyms.h> #include <libgnome/gnome-i18n.h> #include "eggtreemodelfilter.h" @@ -84,6 +85,8 @@ enum PROP_FILTER }; +static EphyNodeView *target_view; + static GObjectClass *parent_class = NULL; static guint ephy_node_view_signals[LAST_SIGNAL] = { 0 }; @@ -290,6 +293,22 @@ get_node_from_path (EphyNodeView *view, GtkTreePath *path) } static gboolean +ephy_node_view_key_press_cb (GtkTreeView *treeview, + GdkEventKey *event, + EphyNodeView *view) +{ + if ((event->state & GDK_SHIFT_MASK) && + (event->keyval == GDK_F10)) + { + g_signal_emit (G_OBJECT (view), ephy_node_view_signals[SHOW_POPUP], 0); + + return TRUE; + } + + return FALSE; +} + +static gboolean ephy_node_view_button_press_cb (GtkTreeView *treeview, GdkEventButton *event, EphyNodeView *view) @@ -319,7 +338,9 @@ ephy_node_view_button_press_cb (GtkTreeView *treeview, view->priv->selected_node = get_node_from_path (view, path); } + target_view = view; g_signal_emit (G_OBJECT (view), ephy_node_view_signals[SHOW_POPUP], 0); + target_view = NULL; } } @@ -420,6 +441,11 @@ ephy_node_view_construct (EphyNodeView *view) view, 0); g_signal_connect_object (G_OBJECT (view), + "key_press_event", + G_CALLBACK (ephy_node_view_key_press_cb), + view, + 0); + g_signal_connect_object (G_OBJECT (view), "row_activated", G_CALLBACK (ephy_node_view_row_activated_cb), view, @@ -970,6 +996,23 @@ ephy_node_view_is_editing (EphyNodeView *view) } gboolean +ephy_node_view_is_target (EphyNodeView *view) +{ + if (target_view == view) + { + return TRUE; + } + else if (target_view != NULL) + { + return FALSE; + } + else + { + return gtk_widget_is_focus (GTK_WIDGET (view)); + } +} + +gboolean ephy_node_view_has_selection (EphyNodeView *view, gboolean *multiple) { GtkTreeSelection *selection; |