From 6fe52d1b106291ff5dfe7dd9bca9d4306f2d6c47 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Javier=20Jard=C3=B3n?= Date: Tue, 3 May 2011 16:46:38 +0100 Subject: [PATCH] moonshot-window: search filter works Redraw the widgets manually when some new text is in the entry --- src/moonshot-window.vala | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/moonshot-window.vala b/src/moonshot-window.vala index 829974a..2c78df6 100644 --- a/src/moonshot-window.vala +++ b/src/moonshot-window.vala @@ -89,6 +89,7 @@ class MainWindow : Window private void search_entry_text_changed_cb () { this.filter.refilter (); + redraw_id_card_widgets (); var has_text = this.search_entry.get_text_length () > 0; this.search_entry.set_icon_sensitive (EntryIconPosition.PRIMARY, has_text); @@ -114,6 +115,7 @@ class MainWindow : Window foreach (IdCard id_card in identities_manager.id_card_list) { + add_id_card_data (id_card); add_id_card_widget (id_card); } } @@ -204,8 +206,6 @@ class MainWindow : Window private void add_id_card_widget (IdCard id_card) { - add_id_card_data (id_card); - var id_card_widget = new IdCardWidget (id_card); this.custom_vbox.add_id_card_widget (id_card_widget); @@ -223,6 +223,7 @@ class MainWindow : Window this.identities_manager.id_card_list.prepend (id_card); this.identities_manager.store_id_cards (); + add_id_card_data (id_card); add_id_card_widget (id_card); } @@ -258,6 +259,28 @@ class MainWindow : Window remove_id_card_widget (id_card_widget); } + private void redraw_id_card_widgets () + { + TreeIter iter; + IdCard id_card; + + var children = this.custom_vbox.get_children (); + foreach (var id_card_widget in children) + id_card_widget.destroy(); + + if (filter.get_iter_first (out iter)) + { + do + { + filter.get (iter, + Columns.IDCARD_COL, out id_card); + + add_id_card_widget (id_card); + } + while (filter.iter_next (ref iter)); + } + } + private void remove_identity_cb (IdCardWidget id_card_widget) { var id_card = id_card_widget.id_card; -- 2.1.4