aboutsummaryrefslogtreecommitdiffstats
path: root/src/bookmarks/ephy-node-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bookmarks/ephy-node-view.c')
-rw-r--r--src/bookmarks/ephy-node-view.c43
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;