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] 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: