Fixed small bug in path_combo_chooser

The delete-text event was triggered when setting the text in the text entry.
The completion popup was then displayed when it shouldn't. Fixed by blocking
the signal while setting the text.
This commit is contained in:
bendikro 2014-01-21 02:54:36 +01:00
commit a47b1a28f4

View file

@ -540,7 +540,6 @@ class PathChooserPopup(object):
# Entry is not yet visible # Entry is not yet visible
if not (self.path_entry.flags() & gtk.REALIZED): if not (self.path_entry.flags() & gtk.REALIZED):
return return
#if not self.is_popped_up():
self.set_window_position_and_size() self.set_window_position_and_size()
def popdown(self): def popdown(self):
@ -937,8 +936,8 @@ class PathAutoCompleter(object):
self.signal_handlers["on_completion_popup_window_key_press_event"] = \ self.signal_handlers["on_completion_popup_window_key_press_event"] = \
self.on_completion_popup_window_key_press_event self.on_completion_popup_window_key_press_event
self.signal_handlers["on_entry_text_delete_text"] = \ # We must set the signal handler here to get the handler ID.
self.on_entry_text_delete_text self.text_entry_delete_handler_id = self.path_entry.text_entry.connect("delete-text", self.on_entry_text_delete_text)
self.signal_handlers["on_entry_text_insert_text"] = \ self.signal_handlers["on_entry_text_insert_text"] = \
self.on_entry_text_insert_text self.on_entry_text_insert_text
self.accelerator_string = gtk.accelerator_name(keysyms.Tab, 0) self.accelerator_string = gtk.accelerator_name(keysyms.Tab, 0)
@ -1098,7 +1097,11 @@ class PathChooserComboBox(gtk.HBox, StoredValuesPopup, gobject.GObject):
""" """
old_text = self.text_entry.get_text() old_text = self.text_entry.get_text()
# We must block the "delete-text" signal to avoid the signal handler being called
self.text_entry.handler_block(self.auto_completer.text_entry_delete_handler_id)
self.text_entry.set_text(text) self.text_entry.set_text(text)
self.text_entry.handler_unblock(self.auto_completer.text_entry_delete_handler_id)
self.text_entry.select_region(0, 0) self.text_entry.select_region(0, 0)
self.text_entry.set_position(len(text) if cursor_end else 0) self.text_entry.set_position(len(text) if cursor_end else 0)
self.set_selected_value(text, select_first=True) self.set_selected_value(text, select_first=True)