From c504cb510e17fe003ad7f733805484ce60276948 Mon Sep 17 00:00:00 2001 From: Olivier Keshavjee Date: Tue, 28 Nov 2017 19:58:23 +0100 Subject: [PATCH] Fixes fullScreen scrollbar range --- manuskript/ui/editors/fullScreenEditor.py | 12 ++++++++++++ manuskript/ui/views/MDEditView.py | 6 +++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/manuskript/ui/editors/fullScreenEditor.py b/manuskript/ui/editors/fullScreenEditor.py index 4de5ba8..cc0f065 100644 --- a/manuskript/ui/editors/fullScreenEditor.py +++ b/manuskript/ui/editors/fullScreenEditor.py @@ -206,6 +206,7 @@ class fullScreenEditor(QWidget): # self.lblWC.setPalette(p) self.update() + self.editor.centerCursor() def paintEvent(self, event): if self._background: @@ -307,10 +308,21 @@ class myScrollBar(QScrollBar): self.timer.timeout.connect(lambda: self.parent().hideWidget(self)) self.valueChanged.connect(lambda v: self.timer.start()) self.valueChanged.connect(lambda: self.parent().showWidget(self)) + self.rangeChanged.connect(self.rangeHasChanged) def setColor(self, color): self._color = color + def rangeHasChanged(self, min, max): + """ + Adds viewport height to scrollbar max so that we can center cursor + on screen. + """ + if settings.textEditor["alwaysCenter"]: + self.blockSignals(True) + self.setMaximum(max + self.parent().height()) + self.blockSignals(False) + def paintEvent(self, event): opt = QStyleOptionSlider() self.initStyleOption(opt) diff --git a/manuskript/ui/views/MDEditView.py b/manuskript/ui/views/MDEditView.py index e4209b2..5b020cf 100644 --- a/manuskript/ui/views/MDEditView.py +++ b/manuskript/ui/views/MDEditView.py @@ -51,17 +51,21 @@ class MDEditView(textEditView): # TypeWriterScrolling ########################################################################### + def setCurrentModelIndex(self, index): + textEditView.setCurrentModelIndex(self, index) + self.centerCursor() + def cursorPositionHasChanged(self): self.centerCursor() def centerCursor(self, force=False): cursor = self.cursorRect() + scrollbar = self.verticalScrollBar() viewport = self.viewport().rect() if (force or settings.textEditor["alwaysCenter"] or cursor.bottom() >= viewport.bottom() or cursor.top() <= viewport.top()): offset = viewport.center() - cursor.center() - scrollbar = self.verticalScrollBar() scrollbar.setValue(scrollbar.value() - offset.y()) def scrollBarRangeChanged(self, min, max):