[gtk+] GtkPlacesSidebar: support open locations when dragging text
- From: Nelson Benítez León <nbenitez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] GtkPlacesSidebar: support open locations when dragging text
- Date: Wed, 23 Oct 2013 18:22:48 +0000 (UTC)
commit 1b839d4b72a2cedb2bb633b5acd57239860693f4
Author: Nelson Benítez León <nbenitezl+gnome gmail com>
Date: Sat Sep 7 13:09:47 2013 +0200
GtkPlacesSidebar: support open locations when dragging text
Make GtkPlacesSidebar also open locations when hovered by
text dnd targets.
Part of bug 707679
gtk/gtkplacessidebar.c | 21 ++++++++++++++++-----
1 files changed, 16 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkplacessidebar.c b/gtk/gtkplacessidebar.c
index 8dcca81..614bb4f 100644
--- a/gtk/gtkplacessidebar.c
+++ b/gtk/gtkplacessidebar.c
@@ -290,7 +290,8 @@ static void check_unmount_and_eject (GMount *mount,
enum {
GTK_TREE_MODEL_ROW,
TEXT_URI_LIST,
- XDND_DIRECT_SAVE
+ XDND_DIRECT_SAVE,
+ TEXT
};
/* Target types for dragging from the shortcuts list */
@@ -1594,11 +1595,13 @@ drag_motion_callback (GtkTreeView *tree_view,
gboolean res;
gboolean drop_as_bookmarks;
gboolean valid_xds_drag;
+ gboolean valid_text_drag;
char *drop_target_uri = NULL;
action = 0;
drop_as_bookmarks = FALSE;
valid_xds_drag = FALSE;
+ valid_text_drag = FALSE;
path = NULL;
if (!sidebar->drag_data_received) {
@@ -1618,13 +1621,15 @@ drag_motion_callback (GtkTreeView *tree_view,
/* Dragging bookmarks always moves them to another position in the bookmarks list */
action = GDK_ACTION_MOVE;
} else if (sidebar->drag_data_received &&
- sidebar->drag_data_info == XDND_DIRECT_SAVE) {
+ (sidebar->drag_data_info == XDND_DIRECT_SAVE ||
+ sidebar->drag_data_info == TEXT)) {
gtk_tree_model_get_iter (GTK_TREE_MODEL (sidebar->store), &iter, path);
gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store),
&iter,
PLACES_SIDEBAR_COLUMN_URI, &drop_target_uri,
-1);
- valid_xds_drag = TRUE;
+ valid_text_drag = sidebar->drag_data_info == TEXT;
+ valid_xds_drag = !valid_text_drag;
} else {
/* URIs are being dragged. See if the caller wants to handle a
* file move/copy operation itself, or if we should only try to
@@ -1667,7 +1672,7 @@ drag_motion_callback (GtkTreeView *tree_view,
}
out:
- if (action != 0 || valid_xds_drag) {
+ if (action != 0 || valid_xds_drag || valid_text_drag) {
check_switch_location_timer (sidebar, drop_target_uri);
start_drop_feedback (sidebar, path, pos, drop_as_bookmarks);
} else {
@@ -3652,6 +3657,7 @@ gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
GtkCellRenderer *cell;
GtkTreeSelection *selection;
GIcon *eject;
+ GtkTargetList *target_list;
gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (sidebar)),
GTK_STYLE_CLASS_SIDEBAR);
@@ -3815,9 +3821,14 @@ gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
GDK_ACTION_MOVE);
gtk_drag_dest_set (GTK_WIDGET (tree_view),
0,
- dnd_drop_targets, G_N_ELEMENTS (dnd_drop_targets),
+ NULL, 0,
GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK);
+ target_list = gtk_target_list_new (dnd_drop_targets, G_N_ELEMENTS (dnd_drop_targets));
+ gtk_target_list_add_text_targets (target_list, TEXT);
+ gtk_drag_dest_set_target_list (GTK_WIDGET (tree_view), target_list);
+ gtk_target_list_unref (target_list);
+
g_signal_connect (tree_view, "key-press-event",
G_CALLBACK (bookmarks_key_press_event_cb), sidebar);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]