diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2012-01-10 19:24:31 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2012-01-10 19:24:31 +0000 |
commit | 3ba2b844d74f7196ac92b8ff6d6e516784e9140e (patch) | |
tree | 58894dd9a835f6ed8ef27a2df0e9884a57fe7322 | |
parent | 8d986c31c7d47c2c6f8c5e2eab34b6467ed9365e (diff) |
fix for click on priority in main tree view toggling enabled/disabled. increment file parent sizes in the temporary tree instead of in the gtk model for performance.
-rw-r--r-- | src/trg-file-parser.c | 12 | ||||
-rw-r--r-- | src/trg-files-tree-view-common.c | 9 | ||||
-rw-r--r-- | src/trg-files-tree-view-common.h | 1 | ||||
-rw-r--r-- | src/trg-files-tree-view.c | 3 | ||||
-rw-r--r-- | src/trg-files-tree.h | 2 | ||||
-rw-r--r-- | src/trg-torrent-add-dialog.c | 10 |
6 files changed, 17 insertions, 20 deletions
diff --git a/src/trg-file-parser.c b/src/trg-file-parser.c index da34a5a..60dfe1f 100644 --- a/src/trg-file-parser.c +++ b/src/trg-file-parser.c @@ -80,12 +80,18 @@ static trg_files_tree_node top->children = g_list_append(top->children, target_node); } - lastIter = target_node; - if (isFile) { - target_node->length = (gint64) file_length_node->val.i; target_node->index = index; + target_node->length = (gint64) file_length_node->val.i; + + while (lastIter) + { + lastIter->length = target_node->length; + lastIter = lastIter->parent; + } } + + lastIter = target_node; } g_list_free(parentList); diff --git a/src/trg-files-tree-view-common.c b/src/trg-files-tree-view-common.c index 4eeb65a..0ab24c9 100644 --- a/src/trg-files-tree-view-common.c +++ b/src/trg-files-tree-view-common.c @@ -113,7 +113,7 @@ gboolean trg_files_tree_view_viewOnPopupMenu(GtkWidget * treeview, static gboolean onViewPathToggled(GtkTreeView * view, GtkTreeViewColumn * col, - GtkTreePath * path, gboolean oneClick, + GtkTreePath * path, gint pri_id, gint enabled_id, gpointer data) { @@ -130,7 +130,7 @@ static gboolean onViewPathToggled(GtkTreeView * view, gtk_tree_model_get_iter(model, &iter, path); - if (cid == pri_id && oneClick) { + if (cid == pri_id) { int priority; gtk_tree_model_get(model, &iter, pri_id, &priority, -1); switch (priority) { @@ -146,7 +146,7 @@ static gboolean onViewPathToggled(GtkTreeView * view, } trg_files_tree_model_set_subtree(model, path, &iter, pri_id, priority); - } else { + } else if (cid == enabled_id) { int enabled; gtk_tree_model_get(model, &iter, enabled_id, &enabled, -1); enabled = !enabled; @@ -185,7 +185,6 @@ gboolean trg_files_tree_view_onViewButtonPressed(GtkWidget * w, GdkEventButton * event, gint pri_id, gint enabled_id, - gboolean one_click, GCallback low_cb, GCallback normal_cb, GCallback high_cb, @@ -203,7 +202,7 @@ gboolean trg_files_tree_view_onViewButtonPressed(GtkWidget * w, && !(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) && getAndSelectEventPath(treeview, event, &col, &path)) { handled = - onViewPathToggled(treeview, col, path, one_click, pri_id, enabled_id, + onViewPathToggled(treeview, col, path, pri_id, enabled_id, NULL); } else if (event->type == GDK_BUTTON_PRESS && event->button == 3) { selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); diff --git a/src/trg-files-tree-view-common.h b/src/trg-files-tree-view-common.h index de21e43..7929c67 100644 --- a/src/trg-files-tree-view-common.h +++ b/src/trg-files-tree-view-common.h @@ -24,7 +24,6 @@ gboolean trg_files_tree_view_onViewButtonPressed(GtkWidget * w, GdkEventButton * event, gint pri_id, gint enabled_id, - gboolean one_click, GCallback low_cb, GCallback normal_cb, GCallback high_cb, diff --git a/src/trg-files-tree-view.c b/src/trg-files-tree-view.c index 3aae35d..8b0db27 100644 --- a/src/trg-files-tree-view.c +++ b/src/trg-files-tree-view.c @@ -162,9 +162,8 @@ static gboolean view_onButtonPressed(GtkWidget * treeview, { gboolean handled = trg_files_tree_view_onViewButtonPressed(treeview, event, - FILESCOL_PRIORITY, + -1, //FILESCOL_PRIORITY, FILESCOL_WANTED, - FALSE, G_CALLBACK(set_low), G_CALLBACK(set_normal), G_CALLBACK(set_high), diff --git a/src/trg-files-tree.h b/src/trg-files-tree.h index 3cc7269..bfd9189 100644 --- a/src/trg-files-tree.h +++ b/src/trg-files-tree.h @@ -26,7 +26,7 @@ #include "trg-files-tree.h" typedef struct { - char *name; + gchar *name; gint64 length; gint64 bytesCompleted; GList *children; diff --git a/src/trg-torrent-add-dialog.c b/src/trg-torrent-add-dialog.c index 0c25058..b78c30a 100644 --- a/src/trg-torrent-add-dialog.c +++ b/src/trg-torrent-add-dialog.c @@ -292,7 +292,6 @@ static gboolean onViewButtonPressed(GtkWidget * w, GdkEventButton * event, { return trg_files_tree_view_onViewButtonPressed(w, event, FC_PRIORITY, FC_ENABLED, - TRUE, G_CALLBACK(set_low), G_CALLBACK(set_normal), G_CALLBACK(set_high), @@ -473,13 +472,8 @@ static void store_add_node(GtkTreeStore * store, GtkTreeIter * parent, gtk_tree_store_append(store, &child, parent); gtk_tree_store_set(store, &child, FC_LABEL, node->name, FC_ENABLED, 1, FC_INDEX, node->children ? -1 : node->index, - FC_PRIORITY, TR_PRI_NORMAL, -1); - - if (!node->children) { - gtk_tree_store_set(store, &child, FC_SIZE, node->length, -1); - trg_files_model_update_parents(GTK_TREE_MODEL(store), &child, - FC_SIZE); - } + FC_PRIORITY, TR_PRI_NORMAL, + FC_SIZE, node->length, -1); } for (li = node->children; li; li = g_list_next(li)) |