diff --git a/manuskript/ui/editors/editorWidget.py b/manuskript/ui/editors/editorWidget.py index b23d349..9c08a21 100644 --- a/manuskript/ui/editors/editorWidget.py +++ b/manuskript/ui/editors/editorWidget.py @@ -2,7 +2,8 @@ # --!-- coding: utf8 --!-- from PyQt5.QtCore import pyqtSignal, QModelIndex from PyQt5.QtGui import QPalette -from PyQt5.QtWidgets import QWidget, QFrame, QSpacerItem, QSizePolicy, QVBoxLayout +from PyQt5.QtWidgets import QWidget, QFrame, QSpacerItem, QSizePolicy +from PyQt5.QtWidgets import QVBoxLayout, qApp, QStyle from manuskript import settings from manuskript.functions import AUC, mainWindow @@ -60,10 +61,37 @@ class editorWidget(QWidget, Ui_editorWidget_ui): self._model = None + # Capture textEdit scrollbar, so that we can put it outside the margins. + self.txtEditScrollBar = self.txtRedacText.verticalScrollBar() + self.txtEditScrollBar.setParent(self) + self.stack.currentChanged.connect(self.setScrollBarVisibility) + # def setModel(self, model): # self._model = model # self.setView() + def resizeEvent(self, event): + """ + textEdit's scrollBar has been reparented to self. So we need to + update it's geomtry when self is resized, and put it where we want it + to be. + """ + # Update scrollbar geometry + r = self.geometry() + w = 10 # Cf. style.mainEditorTabSS + r.setWidth(w) + r.moveRight(self.geometry().width()) + self.txtEditScrollBar.setGeometry(r) + + QWidget.resizeEvent(self, event) + + def setScrollBarVisibility(self): + """ + Since the texteEdit scrollBar has been reparented to self, it is not + hidden when stack changes. We have to do it manually. + """ + self.txtEditScrollBar.setVisible(self.stack.currentIndex() == 0) + def setFolderView(self, v): oldV = self.folderView if v == "cork": @@ -214,7 +242,12 @@ class editorWidget(QWidget, Ui_editorWidget_ui): w = QWidget() w.setObjectName("editorWidgetFolderText") l = QVBoxLayout(w) - w.setStyleSheet("background: {};".format(settings.textEditor["background"])) + opt = settings.textEditor + background = (opt["background"] if not opt["backgroundTransparent"] + else "transparent") + w.setStyleSheet("background: {};".format(background)) + self.stack.widget(1).setStyleSheet("background: {}" + .format(background)) # self.scroll.setWidgetResizable(False) self.txtEdits = [] diff --git a/manuskript/ui/views/textEditView.py b/manuskript/ui/views/textEditView.py index cf8a018..ee58926 100644 --- a/manuskript/ui/views/textEditView.py +++ b/manuskript/ui/views/textEditView.py @@ -388,7 +388,8 @@ class textEditView(QTextEdit): self.sizeChange() def sizeChange(self): - docHeight = self.document().size().height() + opt = settings.textEditor + docHeight = self.document().size().height() + 2 * opt["marginsTB"] if self.heightMin <= docHeight <= self.heightMax: self.setMinimumHeight(docHeight)