diff --git a/qutebrowser/utils/completer.py b/qutebrowser/utils/completer.py
index 510ad3c..5085e62 100644
--- a/qutebrowser/utils/completer.py
+++ b/qutebrowser/utils/completer.py
@@ -55,13 +55,13 @@ class Completer(QObject):
self._win_id = win_id
self._ignore_change = False
- self.models = {
+ self._models = {
usertypes.Completion.option: {},
usertypes.Completion.value: {},
}
self._init_static_completions()
self._init_setting_completions()
- self._init_quickmark_completions()
+ self.init_quickmark_completions()
def __repr__(self):
return utils.get_repr(self)
@@ -74,30 +74,35 @@ class Completer(QObject):
def _init_static_completions(self):
"""Initialize the static completion models."""
- self.models[usertypes.Completion.command] = CFM(
+ self._models[usertypes.Completion.command] = CFM(
models.CommandCompletionModel(self), self)
- self.models[usertypes.Completion.helptopic] = CFM(
+ self._models[usertypes.Completion.helptopic] = CFM(
models.HelpCompletionModel(self), self)
def _init_setting_completions(self):
"""Initialize setting completion models."""
- self.models[usertypes.Completion.section] = CFM(
+ self._models[usertypes.Completion.section] = CFM(
models.SettingSectionCompletionModel(self), self)
- self.models[usertypes.Completion.option] = {}
- self.models[usertypes.Completion.value] = {}
+ self._models[usertypes.Completion.option] = {}
+ self._models[usertypes.Completion.value] = {}
for sectname in configdata.DATA:
model = models.SettingOptionCompletionModel(sectname, self)
- self.models[usertypes.Completion.option][sectname] = CFM(
+ self._models[usertypes.Completion.option][sectname] = CFM(
model, self)
- self.models[usertypes.Completion.value][sectname] = {}
+ self._models[usertypes.Completion.value][sectname] = {}
for opt in configdata.DATA[sectname].keys():
model = models.SettingValueCompletionModel(sectname, opt, self)
- self.models[usertypes.Completion.value][sectname][opt] = CFM(
+ self._models[usertypes.Completion.value][sectname][opt] = CFM(
model, self)
- def _init_quickmark_completions(self):
+ @pyqtSlot()
+ def init_quickmark_completions(self):
"""Initialize quickmark completion models."""
- self.models[usertypes.Completion.quickmark] = CFM(
+ try:
+ self._models[usertypes.Completion.quickmark].deleteLater()
+ except KeyError:
+ pass
+ self._models[usertypes.Completion.quickmark] = CFM(
models.QuickmarkCompletionModel(self), self)
def _get_new_completion(self, parts, cursor_part):
@@ -109,7 +114,7 @@ class Completer(QObject):
"""
if cursor_part == 0:
# '|' or 'set|'
- return self.models[usertypes.Completion.command]
+ return self._models[usertypes.Completion.command]
# delegate completion to command
try:
completions = cmdutils.cmd_dict[parts[0]].completion
@@ -133,17 +138,17 @@ class Completer(QObject):
', '.join(dbg_completions)))
if completion == usertypes.Completion.option:
section = parts[cursor_part - 1]
- model = self.models[completion].get(section)
+ model = self._models[completion].get(section)
elif completion == usertypes.Completion.value:
section = parts[cursor_part - 2]
option = parts[cursor_part - 1]
try:
- model = self.models[completion][section][option]
+ model = self._models[completion][section][option]
except KeyError:
# No completion model for this section/option.
model = None
else:
- model = self.models.get(completion)
+ model = self._models.get(completion)
return model
def _quote(self, s):
@@ -186,11 +191,6 @@ class Completer(QObject):
self._ignore_change = True
self.change_completed_part.emit(data, False)
- @pyqtSlot()
- def on_quickmarks_changed(self):
- self.clear()
- self._init_quickmark_completions()
-
@pyqtSlot(str, list, int)
def on_update_completion(self, prefix, parts, cursor_part):
"""Schedule updating/enabling completion.
diff --git a/qutebrowser/widgets/mainwindow.py b/qutebrowser/widgets/mainwindow.py
index 6138095..317743e 100644
--- a/qutebrowser/widgets/mainwindow.py
+++ b/qutebrowser/widgets/mainwindow.py
@@ -119,10 +119,6 @@ class MainWindow(QWidget):
config.on_change(self.resize_completion, 'completion', 'height')
config.on_change(self.resize_completion, 'completion', 'shrink')
- quickmark_model = self._get_object('completer').models[usertypes.Completion.quickmark]
- quickmark_manager = objreg.get('quickmark-manager')
- quickmark_manager.changed.connect(quickmark_model.srcmodel.on_quickmarks_changed)
-
#self.retranslateUi(MainWindow)
#self.tabWidget.setCurrentIndex(0)
#QtCore.QMetaObject.connectSlotsByName(MainWindow)
@@ -264,6 +260,12 @@ class MainWindow(QWidget):
# downloads
tabs.start_download.connect(download_manager.fetch)
+ # quickmark completion
+ completer = self._get_object('completer')
+ quickmark_manager = objreg.get('quickmark-manager')
+ quickmark_manager.changed.connect(completer.init_quickmark_completions)
+
+
@pyqtSlot()
def resize_completion(self):
"""Adjust completion according to config."""