This commit is contained in:
Kovid Goyal 2012-07-08 23:16:23 +05:30
parent ae1f768c1a
commit abaa0f8cd7

View File

@ -57,6 +57,11 @@ class CompleteModel(QAbstractListModel): # {{{
except IndexError: except IndexError:
pass pass
return NONE return NONE
def index_for_prefix(self, prefix):
for i, item in enumerate(self.current_items):
if primary_startswith(item, prefix):
return self.index(i)
# }}} # }}}
class Completer(QListView): # {{{ class Completer(QListView): # {{{
@ -111,6 +116,12 @@ class Completer(QListView): # {{{
index = self.model().index(r % self.model().rowCount()) index = self.model().index(r % self.model().rowCount())
self.setCurrentIndex(index) self.setCurrentIndex(index)
def scroll_to(self, orig):
if orig:
index = self.model().index_for_prefix(orig)
if index is not None and index.isValid():
self.setCurrentIndex(index)
def popup(self): def popup(self):
p = self p = self
m = p.model() m = p.model()
@ -252,12 +263,15 @@ class LineEdit(QLineEdit, LineEditECM):
# }}} # }}}
def complete(self, show_all=False): def complete(self, show_all=False):
orig = None
if show_all: if show_all:
orig = self.mcompleter.model().current_prefix
self.mcompleter.set_completion_prefix('') self.mcompleter.set_completion_prefix('')
if not self.mcompleter.model().current_items: if not self.mcompleter.model().current_items:
self.mcompleter.hide() self.mcompleter.hide()
return return
self.mcompleter.popup() self.mcompleter.popup()
self.mcompleter.scroll_to(orig)
def relayout(self): def relayout(self):
self.mcompleter.popup() self.mcompleter.popup()