use our roster filter as soon as we type a letter. Fixes #5221
This commit is contained in:
		
							parent
							
								
									0c65ea1ce6
								
							
						
					
					
						commit
						9308d3af17
					
				
					 2 changed files with 23 additions and 33 deletions
				
			
		| 
						 | 
				
			
			@ -218,16 +218,6 @@
 | 
			
		|||
                        <signal name="toggled" handler="on_show_roster_menuitem_toggled"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkCheckMenuItem" id="show_rfilter_menuitem">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
 | 
			
		||||
                        <property name="label" translatable="yes">Show Roster Fi_lter</property>
 | 
			
		||||
                        <property name="use_underline">True</property>
 | 
			
		||||
                        <accelerator key="L" signal="activate" modifiers="GDK_CONTROL_MASK"/>
 | 
			
		||||
                        <signal name="toggled" handler="on_show_rfilter_menuitem_toggled"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkSeparatorMenuItem" id="separator3">
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1495,11 +1495,6 @@ class RosterWindow:
 | 
			
		|||
### Roster and Modelfilter handling
 | 
			
		||||
##############################################################################
 | 
			
		||||
 | 
			
		||||
    def _search_roster_func(self, model, column, key, titer):
 | 
			
		||||
        key = key.decode('utf-8').lower()
 | 
			
		||||
        name = model[titer][C_NAME].decode('utf-8').lower()
 | 
			
		||||
        return not (key in name)
 | 
			
		||||
 | 
			
		||||
    def refilter_shown_roster_items(self):
 | 
			
		||||
        self.filtering = True
 | 
			
		||||
        self.modelfilter.refilter()
 | 
			
		||||
| 
						 | 
				
			
			@ -3372,6 +3367,10 @@ class RosterWindow:
 | 
			
		|||
            elif type_ == 'agent':
 | 
			
		||||
                self.on_remove_agent(widget, list_)
 | 
			
		||||
 | 
			
		||||
        elif gtk.gdk.keyval_to_unicode(event.keyval): # if we got unicode symbol
 | 
			
		||||
            num = gtk.gdk.keyval_to_unicode(event.keyval)
 | 
			
		||||
            self.enable_rfilter(unichr(num))
 | 
			
		||||
 | 
			
		||||
    def on_roster_treeview_button_release_event(self, widget, event):
 | 
			
		||||
        try:
 | 
			
		||||
            path = self.tree.get_path_at_pos(int(event.x), int(event.y))[0]
 | 
			
		||||
| 
						 | 
				
			
			@ -4218,25 +4217,29 @@ class RosterWindow:
 | 
			
		|||
        """ When we update the content of the filter """
 | 
			
		||||
        self.rfilter_string = widget.get_text().lower()
 | 
			
		||||
        if self.rfilter_string == '':
 | 
			
		||||
            self.rfilter_enabled = False
 | 
			
		||||
        else:
 | 
			
		||||
            self.rfilter_enabled = True
 | 
			
		||||
            self.disable_rfilter()
 | 
			
		||||
        self.refilter_shown_roster_items()
 | 
			
		||||
 | 
			
		||||
    def on_rfilter_entry_icon_press(self, widget, icon, event):
 | 
			
		||||
        """ Disable the roster filtering by clicking the icon in the textEntry """
 | 
			
		||||
        self.xml.get_object('show_rfilter_menuitem').set_active(False)
 | 
			
		||||
        self.rfilter_enabled = False
 | 
			
		||||
        self.refilter_shown_roster_items()
 | 
			
		||||
        """
 | 
			
		||||
        Disable the roster filtering by clicking the icon in the textEntry
 | 
			
		||||
        """
 | 
			
		||||
        self.disable_rfilter()
 | 
			
		||||
 | 
			
		||||
    def on_show_rfilter_menuitem_toggled(self, widget):
 | 
			
		||||
        """ Show the roster filter entry """
 | 
			
		||||
        self.rfilter_enabled = widget.get_active()
 | 
			
		||||
        self.rfilter_entry.set_visible(self.rfilter_enabled)
 | 
			
		||||
        self.rfilter_entry.set_editable(self.rfilter_enabled)
 | 
			
		||||
        if self.rfilter_enabled:
 | 
			
		||||
            self.rfilter_entry.set_text('')
 | 
			
		||||
            self.rfilter_entry.grab_focus()
 | 
			
		||||
    def enable_rfilter(self, search_string):
 | 
			
		||||
        self.rfilter_enabled = True
 | 
			
		||||
        self.rfilter_entry.set_visible(True)
 | 
			
		||||
        self.rfilter_entry.set_editable(True)
 | 
			
		||||
        self.rfilter_entry.set_text(search_string)
 | 
			
		||||
        self.rfilter_entry.grab_focus()
 | 
			
		||||
        self.rfilter_entry.set_position(-1)
 | 
			
		||||
 | 
			
		||||
    def disable_rfilter(self):
 | 
			
		||||
        self.rfilter_enabled = False
 | 
			
		||||
        self.rfilter_entry.set_visible(False)
 | 
			
		||||
        self.rfilter_entry.set_editable(False)
 | 
			
		||||
        self.refilter_shown_roster_items()
 | 
			
		||||
        self.tree.grab_focus()
 | 
			
		||||
 | 
			
		||||
    def on_roster_hpaned_notify(self, pane, gparamspec):
 | 
			
		||||
        """
 | 
			
		||||
| 
						 | 
				
			
			@ -6357,9 +6360,6 @@ class RosterWindow:
 | 
			
		|||
        col.set_visible(False)
 | 
			
		||||
        self.tree.set_expander_column(col)
 | 
			
		||||
 | 
			
		||||
        # set search function
 | 
			
		||||
        self.tree.set_search_equal_func(self._search_roster_func)
 | 
			
		||||
 | 
			
		||||
        # signals
 | 
			
		||||
        self.TARGET_TYPE_URI_LIST = 80
 | 
			
		||||
        TARGETS = [('MY_TREE_MODEL_ROW',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue