aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2005-07-12 03:47:25 +0800
committerChristian Persch <chpe@src.gnome.org>2005-07-12 03:47:25 +0800
commit9f25938b8101d5ea10d547d709bc136d4aeddb6b (patch)
tree468a723c1d628db2c98d42b5f7c257c8743f756c /lib
parentd439bc7993fd7d4d490ee4d7a45943dfd5624c9d (diff)
downloadgsoc2013-epiphany-9f25938b8101d5ea10d547d709bc136d4aeddb6b.tar
gsoc2013-epiphany-9f25938b8101d5ea10d547d709bc136d4aeddb6b.tar.gz
gsoc2013-epiphany-9f25938b8101d5ea10d547d709bc136d4aeddb6b.tar.bz2
gsoc2013-epiphany-9f25938b8101d5ea10d547d709bc136d4aeddb6b.tar.lz
gsoc2013-epiphany-9f25938b8101d5ea10d547d709bc136d4aeddb6b.tar.xz
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.c40
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,