From 22609fa1fd82b81225d44e1d97980c4a9945a5c6 Mon Sep 17 00:00:00 2001 From: tcsch <105005552+tcsch@users.noreply.github.com> Date: Fri, 12 Aug 2022 17:10:34 +0200 Subject: [PATCH 1/2] Add drag and drop functionality for outline items to editors --- manuskript/ui/editors/tabSplitter.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/manuskript/ui/editors/tabSplitter.py b/manuskript/ui/editors/tabSplitter.py index d6f4ff35..806c5f36 100644 --- a/manuskript/ui/editors/tabSplitter.py +++ b/manuskript/ui/editors/tabSplitter.py @@ -4,6 +4,7 @@ import locale from PyQt5.QtCore import QModelIndex, QRect, QPoint, Qt, QObject, QSize from PyQt5.QtGui import QIcon, QPalette +from PyQt5.QtGui import QDropEvent, QDragEnterEvent from PyQt5.QtWidgets import QWidget, QPushButton, qApp from manuskript.functions import mainWindow, appPath @@ -80,6 +81,19 @@ class tabSplitter(QWidget, Ui_tabSplitter): self.tab.currentChanged.connect(self.mainEditor.tabChanged) qApp.focusChanged.connect(self.focusChanged) + self.setAcceptDrops(True) + + def dragEnterEvent(self, event: QDragEnterEvent) -> None: + if event.mimeData().hasFormat('application/xml'): + event.accept() + else: + event.ignore() + + def dropEvent(self, event: QDropEvent) -> None: + itemID = mainWindow().mdlOutline.decodeMimeData(event.mimeData())[0].ID() + itemIndex = mainWindow().mdlOutline.getIndexByID(itemID) + self.mainEditor.setCurrentModelIndex(itemIndex, tabWidget = self.tab) + def updateStyleSheet(self): self.setStyleSheet(style.mainEditorTabSS()) if self.secondTab: From 0c1283861095945a6277a1ac86c4a1d014510c53 Mon Sep 17 00:00:00 2001 From: tcsch <105005552+tcsch@users.noreply.github.com> Date: Fri, 12 Aug 2022 17:39:54 +0200 Subject: [PATCH 2/2] Fix isTarget not being respected when selecting outline items --- manuskript/ui/editors/mainEditor.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/manuskript/ui/editors/mainEditor.py b/manuskript/ui/editors/mainEditor.py index 7ee4300b..0b6f7282 100644 --- a/manuskript/ui/editors/mainEditor.py +++ b/manuskript/ui/editors/mainEditor.py @@ -214,6 +214,11 @@ class mainEditor(QWidget, Ui_mainEditor): title = self.getIndexTitle(index) if tabWidget == None: + # no tabWidget specified, update all tabs of views that are a target + for ts in self.allTabSplitters(): + if ts.isTarget: + self.setCurrentModelIndex(index, newTab, tabWidget=ts.tab) + # additionally always update the current tabWidget tabWidget = self.currentTabWidget() # Checking if tab is already opened