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