From 3389ee02736c231e61877abd5d9663e57f27a276 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Tue, 20 May 2003 20:52:47 +0000 Subject: Fix nodes drag and drop. Make double click select the whole address in 2003-05-20 Marco Pesenti Gritti * lib/ephy-dnd.c: (ephy_dnd_drag_data_get), (ephy_dnd_node_list_extract_nodes): * lib/ephy-node-db.c: (ephy_node_db_set_name), (node_from_id_real), (ephy_node_db_get_name): * lib/ephy-node-db.h: * lib/ephy-node.c: (ephy_node_get_db): * lib/ephy-node.h: * lib/widgets/ephy-location-entry.c: (ephy_location_entry_button_press_event_cb), (ephy_location_entry_build): * lib/widgets/ephy-tree-model-sort.c: (each_node_get_data_binder): Fix nodes drag and drop. Make double click select the whole address in toolbar entry. --- ChangeLog | 31 +++++++++++++++++++++++++++++++ lib/ephy-dnd.c | 13 +++++++------ lib/ephy-node-db.c | 8 +++++++- lib/ephy-node-db.h | 2 ++ lib/ephy-node.c | 6 ++++++ lib/ephy-node.h | 2 ++ lib/widgets/ephy-location-entry.c | 14 ++++++++++++++ lib/widgets/ephy-tree-model-sort.c | 6 +++++- 8 files changed, 74 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 14ddf0598..3947f8f50 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,34 @@ +2003-05-20 Marco Pesenti Gritti + + * lib/ephy-dnd.c: (ephy_dnd_drag_data_get), + (ephy_dnd_node_list_extract_nodes): + * lib/ephy-node-db.c: (ephy_node_db_set_name), (node_from_id_real), + (ephy_node_db_get_name): + * lib/ephy-node-db.h: + * lib/ephy-node.c: (ephy_node_get_db): + * lib/ephy-node.h: + * lib/widgets/ephy-location-entry.c: + (ephy_location_entry_button_press_event_cb), + (ephy_location_entry_build): + * lib/widgets/ephy-tree-model-sort.c: (each_node_get_data_binder): + + Fix nodes drag and drop. + Make double click select the whole address in toolbar entry. + +2003-05-20 Marco Pesenti Gritti + + * lib/ephy-dnd.c: (ephy_dnd_drag_data_get), + (ephy_dnd_node_list_extract_nodes): + * lib/ephy-node-db.c: (ephy_node_db_set_name), (node_from_id_real), + (ephy_node_db_get_name): + * lib/ephy-node-db.h: + * lib/ephy-node.c: (ephy_node_get_db): + * lib/ephy-node.h: + * lib/widgets/ephy-location-entry.c: + (ephy_location_entry_button_press_event_cb), + (ephy_location_entry_build): + * lib/widgets/ephy-tree-model-sort.c: (each_node_get_data_binder): + 2003-05-20 Christian Neumair * embed/downloader-view.c: (format_time): diff --git a/lib/ephy-dnd.c b/lib/ephy-dnd.c index 8c18bd754..9f10c5a3c 100644 --- a/lib/ephy-dnd.c +++ b/lib/ephy-dnd.c @@ -92,6 +92,7 @@ ephy_dnd_drag_data_get (GtkWidget *widget, { result = g_string_new (NULL); (* each_selected_item_iterator) (add_one_node, container_context, result); + g_string_erase (result, result->len - 1, -1); } else { @@ -110,21 +111,21 @@ ephy_dnd_drag_data_get (GtkWidget *widget, GList * ephy_dnd_node_list_extract_nodes (const char *node_list) { - EphyNodeDb *db; GList *result = NULL; char **nodes; int i; nodes = g_strsplit (node_list, ";", -1); - db = ephy_node_db_get_by_name (nodes[0]); - g_return_val_if_fail (db != NULL, NULL); - - for (i = 1; nodes[i] != NULL; i++) + for (i = 0; nodes[i] != NULL; i = i + 2) { gulong id; + EphyNodeDb *db; + + db = ephy_node_db_get_by_name (nodes[i]); + g_return_val_if_fail (db != NULL, NULL); - if (ephy_str_to_int (nodes[i], &id)) + if (ephy_str_to_int (nodes[i + 1], &id)) { EphyNode *node; diff --git a/lib/ephy-node-db.c b/lib/ephy-node-db.c index f77bac0bd..366b55365 100644 --- a/lib/ephy-node-db.c +++ b/lib/ephy-node-db.c @@ -82,7 +82,7 @@ ephy_node_db_set_name (EphyNodeDb *db, const char *name) if (ephy_node_databases == NULL) { ephy_node_databases = g_hash_table_new_full - (g_str_hash, g_str_equal, NULL, NULL); + (g_str_hash, g_str_equal, g_free, NULL); } g_hash_table_insert (ephy_node_databases, db->priv->name, db); @@ -228,6 +228,12 @@ node_from_id_real (EphyNodeDb *db, long id) return ret; } +const char * +ephy_node_db_get_name (EphyNodeDb *db) +{ + return db->priv->name; +} + EphyNode * ephy_node_db_get_node_from_id (EphyNodeDb *db, long id) { diff --git a/lib/ephy-node-db.h b/lib/ephy-node-db.h index 2b8c7637c..2b1f8fd7d 100644 --- a/lib/ephy-node-db.h +++ b/lib/ephy-node-db.h @@ -56,6 +56,8 @@ EphyNodeDb *ephy_node_db_get_by_name (const char *name); EphyNodeDb *ephy_node_db_new (const char *name); +const char *ephy_node_db_get_name (EphyNodeDb *db); + EphyNode *ephy_node_db_get_node_from_id (EphyNodeDb *db, long id); diff --git a/lib/ephy-node.c b/lib/ephy-node.c index f860d7467..d155aae78 100644 --- a/lib/ephy-node.c +++ b/lib/ephy-node.c @@ -345,6 +345,12 @@ ephy_node_new_with_id (EphyNodeDb *db, gulong reserved_id) return node; } +EphyNodeDb * +ephy_node_get_db (EphyNode *node) +{ + return node->db; +} + long ephy_node_get_id (EphyNode *node) { diff --git a/lib/ephy-node.h b/lib/ephy-node.h index 9fb3084a0..846d5fa41 100644 --- a/lib/ephy-node.h +++ b/lib/ephy-node.h @@ -47,6 +47,8 @@ EphyNode *ephy_node_new (EphyNodeDb *db); EphyNode *ephy_node_new_with_id (EphyNodeDb *db, gulong reserved_id); +EphyNodeDb *ephy_node_get_db (EphyNode *node); + /* unique node ID */ long ephy_node_get_id (EphyNode *node); diff --git a/lib/widgets/ephy-location-entry.c b/lib/widgets/ephy-location-entry.c index 0db0694ee..a9884f3c3 100644 --- a/lib/widgets/ephy-location-entry.c +++ b/lib/widgets/ephy-location-entry.c @@ -194,6 +194,18 @@ ephy_location_entry_new (void) return GTK_WIDGET (g_object_new (EPHY_TYPE_LOCATION_ENTRY, NULL)); } +static gboolean +ephy_location_entry_button_press_event_cb (GtkWidget *entry, GdkEventButton *event, EphyLocationEntry *w) +{ + if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) + { + ephy_location_entry_activate (w); + return TRUE; + } + + return FALSE; +} + static void ephy_location_entry_build (EphyLocationEntry *w) { @@ -207,6 +219,8 @@ ephy_location_entry_build (EphyLocationEntry *w) g_signal_connect (p->entry, "key-press-event", G_CALLBACK (ephy_location_entry_key_press_event_cb), w); + g_signal_connect (p->entry, "button-press-event", + G_CALLBACK (ephy_location_entry_button_press_event_cb), w); g_signal_connect (p->entry, "activate", G_CALLBACK (ephy_location_entry_activate_cb), w); diff --git a/lib/widgets/ephy-tree-model-sort.c b/lib/widgets/ephy-tree-model-sort.c index 1d03effb8..b91946e8d 100644 --- a/lib/widgets/ephy-tree-model-sort.c +++ b/lib/widgets/ephy-tree-model-sort.c @@ -250,6 +250,7 @@ each_node_get_data_binder (EphyDragEachSelectedItemDataGet iteratee, GtkTreeIter iter; GtkTreePath *path = gtk_tree_row_reference_get_path (i->data); EphyNode *node = NULL; + EphyNodeDb *db; char *value; gtk_tree_model_get_iter (GTK_TREE_MODEL (model), &iter, path); @@ -259,7 +260,10 @@ each_node_get_data_binder (EphyDragEachSelectedItemDataGet iteratee, if (node == NULL) return; - value = g_strdup_printf ("%ld", ephy_node_get_id (node)); + db = ephy_node_get_db (node); + value = g_strdup_printf ("%s;%ld", + ephy_node_db_get_name (db), + ephy_node_get_id (node)); iteratee (value, -1, -1, -1, -1, data); g_free (value); } -- cgit v1.2.3