diff options
author | Christian Persch <chpe@cvs.gnome.org> | 2005-07-12 03:47:25 +0800 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2005-07-12 03:47:25 +0800 |
commit | 9f25938b8101d5ea10d547d709bc136d4aeddb6b (patch) | |
tree | 468a723c1d628db2c98d42b5f7c257c8743f756c /lib | |
parent | d439bc7993fd7d4d490ee4d7a45943dfd5624c9d (diff) | |
download | gsoc2013-epiphany-9f25938b8101d5ea10d547d709bc136d4aeddb6b.tar.gz gsoc2013-epiphany-9f25938b8101d5ea10d547d709bc136d4aeddb6b.tar.zst gsoc2013-epiphany-9f25938b8101d5ea10d547d709bc136d4aeddb6b.zip |
Check all selected nodes if they allow dragging.
2005-07-11 Christian Persch <chpe@cvs.gnome.org>
* lib/widgets/ephy-node-view.c: (check_node_is_drag_source),
(can_drag_selection), (button_release_cb), (motion_notify_cb):
Check all selected nodes if they allow dragging.
* src/bookmarks/ephy-bookmarks-editor.c:
(ephy_bookmarks_editor_update_menu), (key_pressed_cb):
Don't allow to delete or rename local sites, or to put them
on the bookmarks bar.
* src/bookmarks/ephy-bookmarks.c: (ephy_bookmarks_init):
Fix capitalisation.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/widgets/ephy-node-view.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/lib/widgets/ephy-node-view.c b/lib/widgets/ephy-node-view.c index 23cc2fc60..010195e48 100644 --- a/lib/widgets/ephy-node-view.c +++ b/lib/widgets/ephy-node-view.c @@ -663,6 +663,42 @@ did_not_drag (EphyNodeView *view, } } +typedef struct +{ + EphyNodeView *view; + gboolean result; +} +ForeachData; + +static void +check_node_is_drag_source (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + ForeachData *data) +{ + EphyNode *node; + + node = get_node_from_path (data->view, path); + data->result = data->result && + node != NULL && + ephy_node_get_is_drag_source (node); +} + +static gboolean +can_drag_selection (EphyNodeView *view) +{ + GtkTreeView *tree_view = GTK_TREE_VIEW (view); + GtkTreeSelection *selection; + ForeachData data = { view, TRUE }; + + selection = gtk_tree_view_get_selection (tree_view); + gtk_tree_selection_selected_foreach (selection, + (GtkTreeSelectionForeachFunc) check_node_is_drag_source, + &data); + + return data.result; +} + static void drag_data_get_cb (GtkWidget *widget, GdkDragContext *context, @@ -707,6 +743,7 @@ button_release_cb (GtkWidget *widget, did_not_drag (view, event); return TRUE; } + view->priv->drag_started = FALSE; } return FALSE; } @@ -727,7 +764,8 @@ motion_notify_cb (GtkWidget *widget, { if (gtk_drag_check_threshold (widget, view->priv->drag_x, view->priv->drag_y, event->x, - event->y)) + event->y) + && can_drag_selection (view)) { context = gtk_drag_begin (widget, view->priv->source_target_list, |