diff options
author | Jorn Baayen <jbaayen@gnome.org> | 2005-01-22 03:33:03 +0800 |
---|---|---|
committer | Jorn Baayen <jbaayen@src.gnome.org> | 2005-01-22 03:33:03 +0800 |
commit | 549171e9af818b784548fc2bed4bd375006b7adc (patch) | |
tree | 5a3e639a8fe9f2175adde95c9e60ae77a76a8016 /lib/widgets/ephy-tree-model-sort.c | |
parent | 39f7d93acea222b6b3e1cd53875ac16f5cbdea4f (diff) | |
download | gsoc2013-epiphany-549171e9af818b784548fc2bed4bd375006b7adc.tar.gz gsoc2013-epiphany-549171e9af818b784548fc2bed4bd375006b7adc.tar.zst gsoc2013-epiphany-549171e9af818b784548fc2bed4bd375006b7adc.zip |
Add proper _NETSCAPE_URL drag support, supplying the URL as well as the
2005-01-21 Jorn Baayen <jbaayen@gnome.org>
* lib/widgets/ephy-node-view.c: (ephy_node_view_add_column),
(ephy_node_view_enable_drag_source):
* lib/widgets/ephy-node-view.h:
* lib/widgets/ephy-tree-model-sort.c: (ephy_tree_model_sort_init),
(ephy_tree_model_sort_multi_row_draggable),
(ephy_tree_model_sort_set_base_drag_column_id),
(ephy_tree_model_sort_set_extra_drag_column_id),
(each_property_get_data_binder):
* lib/widgets/ephy-tree-model-sort.h:
* src/bookmarks/ephy-bookmark-action.c: (drag_data_get_cb):
* src/bookmarks/ephy-bookmarks-editor.c:
(ephy_bookmarks_editor_construct):
* src/bookmarks/ephy-topics-selector.c:
(ephy_topics_selector_constructor):
* src/ephy-encoding-dialog.c: (ephy_encoding_dialog_init):
* src/ephy-history-window.c: (ephy_history_window_construct):
Add proper _NETSCAPE_URL drag support, supplying the URL as well as
the title. As a side effect most data_columns in NodeViews have been
obsoleted. Fixes #163937.
Diffstat (limited to 'lib/widgets/ephy-tree-model-sort.c')
-rw-r--r-- | lib/widgets/ephy-tree-model-sort.c | 51 |
1 files changed, 36 insertions, 15 deletions
diff --git a/lib/widgets/ephy-tree-model-sort.c b/lib/widgets/ephy-tree-model-sort.c index c20af59d0..1c9ae1e4f 100644 --- a/lib/widgets/ephy-tree-model-sort.c +++ b/lib/widgets/ephy-tree-model-sort.c @@ -48,7 +48,8 @@ static gboolean ephy_tree_model_sort_multi_drag_data_delete (EggTreeMultiDragSou struct _EphyTreeModelSortPrivate { char *str_list; - int drag_column_id; + int base_drag_column_id; + int extra_drag_column_id; }; static GObjectClass *parent_class = NULL; @@ -108,7 +109,8 @@ ephy_tree_model_sort_init (EphyTreeModelSort *ma) { ma->priv = EPHY_TREE_MODEL_SORT_GET_PRIVATE (ma); - ma->priv->drag_column_id = -1; + ma->priv->base_drag_column_id = -1; + ma->priv->extra_drag_column_id = -1; } static void @@ -146,14 +148,21 @@ ephy_tree_model_sort_multi_drag_source_init (EggTreeMultiDragSourceIface *iface) static gboolean ephy_tree_model_sort_multi_row_draggable (EggTreeMultiDragSource *drag_source, GList *path_list) { - return (EPHY_TREE_MODEL_SORT (drag_source)->priv->drag_column_id > 0); + return (EPHY_TREE_MODEL_SORT (drag_source)->priv->base_drag_column_id >= 0); } void -ephy_tree_model_sort_set_column_id (EphyTreeModelSort *ms, - int id) +ephy_tree_model_sort_set_base_drag_column_id (EphyTreeModelSort *ms, + int id) { - ms->priv->drag_column_id = id; + ms->priv->base_drag_column_id = id; +} + +void +ephy_tree_model_sort_set_extra_drag_column_id (EphyTreeModelSort *ms, + int id) +{ + ms->priv->extra_drag_column_id = id; } static gboolean @@ -171,29 +180,41 @@ each_property_get_data_binder (EphyDragEachSelectedItemDataGet iteratee, GList *path_list = (GList *) (context[0]); GList *i; EphyTreeModelSort *model = EPHY_TREE_MODEL_SORT (context[1]); - GValue value = {0, }; + GValue base_value = {0, }, extra_value = {0, }; for (i = path_list; i != NULL; i = i->next) { GtkTreeIter iter; GtkTreePath *path = NULL; - const char *svalue; + const char *base_data, *extra_data; path = gtk_tree_row_reference_get_path (i->data); gtk_tree_model_get_iter (GTK_TREE_MODEL (model), &iter, path); + gtk_tree_model_get_value (GTK_TREE_MODEL (model), &iter, - model->priv->drag_column_id, - &value); - svalue = g_value_get_string (&value); + model->priv->base_drag_column_id, + &base_value); + base_data = g_value_get_string (&base_value); + + if (model->priv->extra_drag_column_id >= 0) { + gtk_tree_model_get_value (GTK_TREE_MODEL (model), &iter, + model->priv->extra_drag_column_id, + &extra_value); + extra_data = g_value_get_string (&extra_value); + } else + extra_data = NULL; - g_return_if_fail (svalue != NULL); + g_return_if_fail (base_data != NULL); - LOG ("Data get %s", svalue) + LOG ("Data get %s (%s)", base_data, extra_data) - iteratee (svalue, NULL, data); + iteratee (base_data, extra_data, data); gtk_tree_path_free (path); - g_value_unset (&value); + g_value_unset (&base_value); + + if (model->priv->extra_drag_column_id >= 0) + g_value_unset (&extra_value); } } |