From b7ca968fae803eec2845276b888c7aeecb527909 Mon Sep 17 00:00:00 2001 From: Chase Sterling Date: Wed, 7 Nov 2012 00:35:58 -0500 Subject: Fix jitter in gtk torrent view. --- ChangeLog | 1 + deluge/ui/gtkui/listview.py | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index c8a4b28fa..880af4d8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ ==== GtkUI ==== * Add move completed option to add torrent dialog + * Prevent jitter in torrent view === Deluge 1.3.5 (09 April 2012) === ==== Core ==== diff --git a/deluge/ui/gtkui/listview.py b/deluge/ui/gtkui/listview.py index 72613b3ed..d539d1a04 100644 --- a/deluge/ui/gtkui/listview.py +++ b/deluge/ui/gtkui/listview.py @@ -233,13 +233,25 @@ class ListView: self.set_sort_functions() self.treeview.set_model(self.model_filter) + def stabilize_sort_func(self, sort_func): + def stabilized(model, iter1, iter2, data): + result = sort_func(model, iter1, iter2, data) + if result == 0: + # Compare by hash if main column values are equal + return cmp(model[iter1][1], model[iter2][1]) + return result + return stabilized + + def generic_sort_func(self, model, iter1, iter2, data): + return cmp(model[iter1][data], model[iter2][data]) + def set_sort_functions(self): for column in self.columns.values(): - if column.sort_func: - self.model_filter.set_sort_func( - column.sort_id, - column.sort_func, - column.sort_id) + sort_func = column.sort_func or self.generic_sort_func + self.model_filter.set_sort_func( + column.sort_id, + self.stabilize_sort_func(sort_func), + column.sort_id) def create_column_state(self, column, position=None): if not position: -- cgit