From a5257b532f954ec0792a7e908a0ea71abba53e12 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 1 Jan 2022 22:38:50 +0530 Subject: [PATCH] pyqt6: Fix drop and hover events as well --- src/calibre/gui2/bars.py | 2 +- src/calibre/gui2/library/alternate_views.py | 2 +- src/calibre/gui2/library/views.py | 2 +- src/calibre/gui2/pyqt6_compat.py | 6 +++++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/bars.py b/src/calibre/gui2/bars.py index d4024b76b3..0f03d9e029 100644 --- a/src/calibre/gui2/bars.py +++ b/src/calibre/gui2/bars.py @@ -232,7 +232,7 @@ class ToolBar(QToolBar): # {{{ # support drag&drop from/to library, from/to reader/card, enabled plugins def check_iactions_for_drag(self, event, md, func): if self.added_actions: - pos = event.pos() + pos = event.position().toPoint() for iac in itervalues(self.gui.iactions): if iac.accepts_drops: aa = iac.qaction diff --git a/src/calibre/gui2/library/alternate_views.py b/src/calibre/gui2/library/alternate_views.py index ca852c10db..f1b17cd6b0 100644 --- a/src/calibre/gui2/library/alternate_views.py +++ b/src/calibre/gui2/library/alternate_views.py @@ -232,7 +232,7 @@ def dropEvent(self, event): md = event.mimeData() if dnd_merge_ok(md): ids = set(map(int, filter(None, bytes(md.data('application/calibre+from_library')).decode('utf-8').split(' ')))) - row = self.indexAt(event.pos()).row() + row = self.indexAt(event.position().toPoint()).row() if row > -1 and ids: book_id = self.model().id(row) if book_id and book_id not in ids: diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index 116f4f5b41..335c7e0771 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -61,7 +61,7 @@ class HeaderView(QHeaderView): # {{{ def event(self, e): if e.type() in (QEvent.Type.HoverMove, QEvent.Type.HoverEnter): - self.hover = self.logicalIndexAt(e.pos()) + self.hover = self.logicalIndexAt(e.position().toPoint()) elif e.type() in (QEvent.Type.Leave, QEvent.Type.HoverLeave): self.hover = -1 return QHeaderView.event(self, e) diff --git a/src/calibre/gui2/pyqt6_compat.py b/src/calibre/gui2/pyqt6_compat.py index da9c2170da..ca1e73108f 100644 --- a/src/calibre/gui2/pyqt6_compat.py +++ b/src/calibre/gui2/pyqt6_compat.py @@ -10,7 +10,7 @@ from qt.core import ( QAbstractItemView, QAction, QComboBox, QDialog, QDialogButtonBox, QDrag, QEventLoop, QFontMetrics, QFormLayout, QFrame, QImage, QIODevice, QLineEdit, QMenu, QMessageBox, QModelIndex, QPalette, QSinglePointEvent, Qt, QThread, - QToolButton, QEvent + QToolButton, QEvent, QDropEvent, QHoverEvent ) from calibre_extensions import progress_indicator @@ -24,6 +24,10 @@ QSinglePointEvent.globalY = lambda self: self.globalPosition().toPoint().y() QSinglePointEvent.localPos = lambda self: self.position() QSinglePointEvent.screenPos = lambda self: self.globalPosition() QSinglePointEvent.windowPos = lambda self: self.scenePosition() +QDropEvent.pos = lambda self: self.position().toPoint() +QDropEvent.posF = lambda self: self.position() +QHoverEvent.pos = lambda self: self.position().toPoint() +QHoverEvent.posF = lambda self: self.position() # Restore the removed exec_ method