summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2012-01-10 19:24:31 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2012-01-10 19:24:31 +0000
commit3ba2b844d74f7196ac92b8ff6d6e516784e9140e (patch)
tree58894dd9a835f6ed8ef27a2df0e9884a57fe7322
parent8d986c31c7d47c2c6f8c5e2eab34b6467ed9365e (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.c12
-rw-r--r--src/trg-files-tree-view-common.c9
-rw-r--r--src/trg-files-tree-view-common.h1
-rw-r--r--src/trg-files-tree-view.c3
-rw-r--r--src/trg-files-tree.h2
-rw-r--r--src/trg-torrent-add-dialog.c10
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))