Don't reload document if opening the same (#1242)

This commit is contained in:
Veronica Berglyd Olsen
2022-11-15 16:49:59 +01:00
parent 6560594c49
commit a2ea7b40e2
5 changed files with 26 additions and 18 deletions
+4 -3
View File
@@ -417,7 +417,7 @@ class GuiDocEditor(QTextEdit):
else:
self.setCursorPosition(self._nwItem.cursorPos)
elif isinstance(tLine, int):
self.setCursorLine(tLine - 1)
self.setCursorLine(tLine)
if self.mainConf.scrollPastEnd > 0:
fSize = QFontMetrics(self.font()).lineSpacing()
@@ -691,8 +691,9 @@ class GuiDocEditor(QTextEdit):
if not isinstance(lineNo, int):
return False
if lineNo >= 0:
theBlock = self.document().findBlockByLineNumber(lineNo)
lineIdx = lineNo - 1 # Block index is 0 offset, lineNo is 1 offset
if lineIdx >= 0:
theBlock = self.document().findBlockByLineNumber(lineIdx)
if theBlock:
self.setCursorPosition(theBlock.position())
logger.debug("Cursor moved to line %d", lineNo)
+3 -3
View File
@@ -59,7 +59,7 @@ class GuiNovelView(QWidget):
# Signals for user interaction with the novel tree
selectedItemChanged = pyqtSignal(str)
openDocumentRequest = pyqtSignal(str, Enum, str)
openDocumentRequest = pyqtSignal(str, Enum, str, bool)
def __init__(self, mainGui):
super().__init__(parent=mainGui)
@@ -594,7 +594,7 @@ class GuiNovelTree(QTreeWidget):
if tHandle is None:
return
self.novelView.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, sTitle or "")
self.novelView.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, sTitle or "", False)
return
@@ -637,7 +637,7 @@ class GuiNovelTree(QTreeWidget):
document editor.
"""
tHandle, sTitle = self.getSelectedHandle()
self.novelView.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, sTitle or "")
self.novelView.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, sTitle or "", True)
return
##
+2 -2
View File
@@ -55,7 +55,7 @@ logger = logging.getLogger(__name__)
class GuiOutlineView(QWidget):
loadDocumentTagRequest = pyqtSignal(str, Enum)
openDocumentRequest = pyqtSignal(str, Enum, str)
openDocumentRequest = pyqtSignal(str, Enum, str, bool)
def __init__(self, mainGui):
super().__init__(parent=mainGui)
@@ -545,7 +545,7 @@ class GuiOutlineTree(QTreeWidget):
tHandle, sTitle = self.getSelectedHandle()
if tHandle is None:
return
self.outlineView.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, sTitle or "")
self.outlineView.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, sTitle or "", True)
return
@pyqtSlot()
+5 -5
View File
@@ -60,7 +60,7 @@ class GuiProjectView(QWidget):
# Signals for user interaction with the project tree
selectedItemChanged = pyqtSignal(str)
openDocumentRequest = pyqtSignal(str, Enum, str)
openDocumentRequest = pyqtSignal(str, Enum, str, bool)
# Requests for the main GUI
projectSettingsRequest = pyqtSignal(int)
@@ -1144,7 +1144,7 @@ class GuiProjectTree(QTreeWidget):
return
if tItem.isFileType():
self.projView.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, "")
self.projView.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, "", True)
else:
trItem.setExpanded(not trItem.isExpanded())
@@ -1190,11 +1190,11 @@ class GuiProjectTree(QTreeWidget):
if isFile:
aOpenDoc = ctxMenu.addAction(self.tr("Open Document"))
aOpenDoc.triggered.connect(
lambda: self.projView.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, "")
lambda: self.projView.openDocumentRequest.emit(tHandle, nwDocMode.EDIT, "", True)
)
aViewDoc = ctxMenu.addAction(self.tr("View Document"))
aViewDoc.triggered.connect(
lambda: self.projView.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, "")
lambda: self.projView.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, "", False)
)
ctxMenu.addSeparator()
@@ -1324,7 +1324,7 @@ class GuiProjectTree(QTreeWidget):
return
if tItem.isFileType():
self.projView.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, "")
self.projView.openDocumentRequest.emit(tHandle, nwDocMode.VIEW, "", False)
return
+12 -5
View File
@@ -596,14 +596,21 @@ class GuiMain(QMainWindow):
logger.debug("Requested item '%s' is not a document", tHandle)
return False
cHandle = self.docEditor.docHandle()
if cHandle == tHandle:
self.docEditor.setCursorLine(tLine)
if changeFocus:
self.docEditor.setFocus()
return True
self.closeDocument(beforeOpen=True)
self._changeView(nwView.EDITOR)
if self.docEditor.loadText(tHandle, tLine):
if changeFocus:
self.docEditor.setFocus()
self.theProject.data.setLastHandle(tHandle, "editor")
self.projView.setSelectedHandle(tHandle, doScroll=doScroll)
self.novelView.setActiveHandle(tHandle)
if changeFocus:
self.docEditor.setFocus()
else:
return False
@@ -1476,8 +1483,8 @@ class GuiMain(QMainWindow):
self.viewDocument(tHandle=tHandle, sTitle=sTitle)
return
@pyqtSlot(str, Enum, str)
def _openDocument(self, tHandle, tMode, sTitle):
@pyqtSlot(str, Enum, str, bool)
def _openDocument(self, tHandle, tMode, sTitle, setFocus):
"""Handle an open document request from one of the tree views.
"""
if tHandle is not None:
@@ -1486,7 +1493,7 @@ class GuiMain(QMainWindow):
hItem = self.theProject.index.getItemHeader(tHandle, sTitle)
if hItem is not None:
tLine = hItem.line
self.openDocument(tHandle, tLine=tLine, changeFocus=False)
self.openDocument(tHandle, tLine=tLine, changeFocus=setFocus)
elif tMode == nwDocMode.VIEW:
self.viewDocument(tHandle=tHandle, sTitle=sTitle)
return