From cfbf573c1bead6edf68250e25bad9066b73e30cb Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 13 Dec 2014 16:26:46 +0530 Subject: [PATCH] Fix #1401536 [wrapped C/C++ object of type QAction has been deleted (on device unmount)](https://bugs.launchpad.net/calibre/+bug/1401536) --- src/calibre/gui2/dbus_export/menu.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/dbus_export/menu.py b/src/calibre/gui2/dbus_export/menu.py index 4594a1b6b1..c12ae91a5b 100644 --- a/src/calibre/gui2/dbus_export/menu.py +++ b/src/calibre/gui2/dbus_export/menu.py @@ -9,7 +9,7 @@ __copyright__ = '2014, Kovid Goyal ' # Support for excporting Qt's MenuBars/Menus over DBUS. The API is defined in # dbus-menu.xml from the libdbusmenu project https://launchpad.net/libdbusmenu -import dbus +import dbus, sip from PyQt5.Qt import ( QApplication, QMenu, QIcon, QKeySequence, QObject, QEvent, QTimer, pyqtSignal, Qt) @@ -212,7 +212,9 @@ class DBusMenu(QObject): return changes def action_is_in_a_menu(self, ac): - all_menus = {ac.menu() for ac in self._action_to_id} + if sip.isdeleted(ac): + return False + all_menus = {a.menu() for a in self._action_to_id if not sip.isdeleted(a)} all_menus.discard(None) return bool(set(ac.associatedWidgets()).intersection(all_menus))