]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
hob: giving focus to the search field loses the table sorting
authorCristiana Voicu <cristiana.voicu@intel.com>
Mon, 1 Apr 2013 10:36:25 +0000 (13:36 +0300)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 2 Apr 2013 16:50:47 +0000 (17:50 +0100)
Giving focus to the search text field should not impact the table
sorting.

[YOCTO #4113]
Signed-off-by: Cristiana Voicu <cristiana.voicu@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
lib/bb/ui/crumbs/hoblistmodel.py
lib/bb/ui/crumbs/hobwidget.py
lib/bb/ui/crumbs/packageselectionpage.py
lib/bb/ui/crumbs/recipeselectionpage.py

index 67d40e09a675cdbdb774c5683f781d89c8ec39ef..0bd9734f48a6c801d571e2e54c303622f54ce057 100644 (file)
@@ -91,7 +91,7 @@ class PackageListModel(gtk.ListStore):
         for key in filter.keys():
             if key == self.COL_NAME:
                 if filter[key] != 'Search packages by name':
-                    if filter[key] not in name:
+                    if name and filter[key] not in name:
                         return False
             else:
                 if model.get_value(it, key) not in filter[key]:
index 9b4261ab8df4a6bcfdecc6800e89dbdb2f0a0061..1d1ae1a349fe38f8875ab0aa9c3137b204bc9796 100644 (file)
@@ -481,6 +481,8 @@ class HobNotebook(gtk.Notebook):
         self.pages = []
 
         self.search = None
+        self.search_focus = False
+        self.page_changed = False
 
         self.connect("switch-page", self.page_changed_cb)
 
@@ -494,6 +496,7 @@ class HobNotebook(gtk.Notebook):
                 lbl.set_active(False)
 
         if self.search:
+            self.page_changed = True
             self.reset_entry(self.search, page_num)
 
     def append_page(self, child, tab_label, tab_tooltip=None):
@@ -537,6 +540,7 @@ class HobNotebook(gtk.Notebook):
                 child.set_count(0)
 
     def set_search_entry_editable_cb(self, search, event):
+        self.search_focus = True
         search.set_editable(True)
         text = search.get_text()
         if text in self.search_names:
index 2264116d77c38b14fc34e617e7f293e4d11db47b..fb9afcb3cf9833989d6311351a32aa025d184e86 100755 (executable)
@@ -181,24 +181,33 @@ class PackageSelectionPage (HobPage):
 
     def search_entry_changed(self, entry):
         text = entry.get_text()
-        if text not in self.ins.search_names:
-            current_tab = self.ins.get_current_page()
-            filter = self.pages[current_tab]['filter']
-            filter[PackageListModel.COL_NAME] = text
-            self.tables[current_tab].set_model(self.package_model.tree_model(filter, search_data=text))
-            if self.package_model.filtered_nb == 0:
-                if not self.ins.get_nth_page(current_tab).top_bar:
-                    self.ins.get_nth_page(current_tab).add_no_result_bar(entry)
-                self.ins.get_nth_page(current_tab).top_bar.show()
-                self.ins.get_nth_page(current_tab).scroll.hide()
-            else:
-                if self.ins.get_nth_page(current_tab).top_bar:
-                    self.ins.get_nth_page(current_tab).top_bar.hide()
-                self.ins.get_nth_page(current_tab).scroll.show()
-            if entry.get_text() == '':
-                entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False)
-            else:
-                entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, True)
+        if self.ins.search_focus:
+            self.ins.search_focus = False
+        elif self.ins.page_changed:
+            self.ins.page_change = False
+            self.filter_search(entry)
+        elif text not in self.ins.search_names:
+            self.filter_search(entry)
+
+    def filter_search(self, entry):
+        text = entry.get_text()
+        current_tab = self.ins.get_current_page()
+        filter = self.pages[current_tab]['filter']
+        filter[PackageListModel.COL_NAME] = text
+        self.tables[current_tab].set_model(self.package_model.tree_model(filter, search_data=text))
+        if self.package_model.filtered_nb == 0:
+            if not self.ins.get_nth_page(current_tab).top_bar:
+                self.ins.get_nth_page(current_tab).add_no_result_bar(entry)
+            self.ins.get_nth_page(current_tab).top_bar.show()
+            self.ins.get_nth_page(current_tab).scroll.hide()
+        else:
+            if self.ins.get_nth_page(current_tab).top_bar:
+                self.ins.get_nth_page(current_tab).top_bar.hide()
+            self.ins.get_nth_page(current_tab).scroll.show()
+        if entry.get_text() == '':
+            entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False)
+        else:
+            entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, True)
 
     def button_click_cb(self, widget, event):
         path, col = widget.table_tree.get_cursor()
index 670b4f92b6c5a03ede36b4f924c04eb94830295b..d1e5b69401e7bacc2731fc2e6c243c4e9038b735 100755 (executable)
@@ -196,24 +196,33 @@ class RecipeSelectionPage (HobPage):
 
     def search_entry_changed(self, entry):
         text = entry.get_text()
-        if text not in self.ins.search_names:
-            current_tab = self.ins.get_current_page()
-            filter = self.pages[current_tab]['filter']
-            filter[RecipeListModel.COL_NAME] = text
-            self.tables[current_tab].set_model(self.recipe_model.tree_model(filter, search_data=text))
-            if self.recipe_model.filtered_nb == 0:
-                if not self.ins.get_nth_page(current_tab).top_bar:
-                    self.ins.get_nth_page(current_tab).add_no_result_bar(entry)
-                self.ins.get_nth_page(current_tab).top_bar.show()
-                self.ins.get_nth_page(current_tab).scroll.hide()
-            else:
-                if self.ins.get_nth_page(current_tab).top_bar:
-                    self.ins.get_nth_page(current_tab).top_bar.hide()
-                self.ins.get_nth_page(current_tab).scroll.show()
-            if entry.get_text() == '':
-                entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False)
-            else:
-                entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, True)
+        if self.ins.search_focus:
+            self.ins.search_focus = False
+        elif self.ins.page_changed:
+            self.ins.page_change = False
+            self.filter_search(entry)
+        elif text not in self.ins.search_names:
+            self.filter_search(entry)
+
+    def filter_search(self, entry):
+        text = entry.get_text()
+        current_tab = self.ins.get_current_page()
+        filter = self.pages[current_tab]['filter']
+        filter[RecipeListModel.COL_NAME] = text
+        self.tables[current_tab].set_model(self.recipe_model.tree_model(filter, search_data=text))
+        if self.recipe_model.filtered_nb == 0:
+            if not self.ins.get_nth_page(current_tab).top_bar:
+                self.ins.get_nth_page(current_tab).add_no_result_bar(entry)
+            self.ins.get_nth_page(current_tab).top_bar.show()
+            self.ins.get_nth_page(current_tab).scroll.hide()
+        else:
+            if self.ins.get_nth_page(current_tab).top_bar:
+                self.ins.get_nth_page(current_tab).top_bar.hide()
+            self.ins.get_nth_page(current_tab).scroll.show()
+        if entry.get_text() == '':
+            entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False)
+        else:
+            entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, True)
 
     def button_click_cb(self, widget, event):
         path, col = widget.table_tree.get_cursor()