From abaa0f8cd7bd2333c07cd3298a819a409f2c8f43 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 8 Jul 2012 23:16:23 +0530 Subject: [PATCH] ... --- src/calibre/gui2/complete2.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/calibre/gui2/complete2.py b/src/calibre/gui2/complete2.py index c3f9d624ba..4deb421566 100644 --- a/src/calibre/gui2/complete2.py +++ b/src/calibre/gui2/complete2.py @@ -57,6 +57,11 @@ class CompleteModel(QAbstractListModel): # {{{ except IndexError: pass 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): # {{{ @@ -111,6 +116,12 @@ class Completer(QListView): # {{{ index = self.model().index(r % self.model().rowCount()) 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): p = self m = p.model() @@ -252,12 +263,15 @@ class LineEdit(QLineEdit, LineEditECM): # }}} def complete(self, show_all=False): + orig = None if show_all: + orig = self.mcompleter.model().current_prefix self.mcompleter.set_completion_prefix('') if not self.mcompleter.model().current_items: self.mcompleter.hide() return self.mcompleter.popup() + self.mcompleter.scroll_to(orig) def relayout(self): self.mcompleter.popup()