|
4 | 4 | from collections.abc import Collection, Iterable, Mapping, Sequence |
5 | 5 | from typing import TYPE_CHECKING, cast |
6 | 6 |
|
7 | | -from qtpy.QtWidgets import QMenu, QMenuBar, QToolBar |
| 7 | +from qtpy.QtWidgets import QApplication, QMenu, QMenuBar, QToolBar |
8 | 8 |
|
9 | 9 | from app_model import Application |
10 | 10 | from app_model.types import SubmenuItem |
@@ -300,14 +300,18 @@ def _rebuild( |
300 | 300 |
|
301 | 301 | groups = list(app.menus.iter_menu_groups(menu_id)) |
302 | 302 | n_groups = len(groups) |
| 303 | + qapp = QApplication.instance() |
303 | 304 | for n, group in enumerate(groups): |
304 | 305 | for item in group: |
305 | 306 | if isinstance(item, SubmenuItem): |
306 | 307 | if include_submenus: |
307 | 308 | submenu = QModelSubmenu(item, app, parent=menu) |
308 | 309 | cast("QMenu", menu).addMenu(submenu) |
309 | 310 | elif item.command.id not in _exclude: |
310 | | - action = QMenuItemAction.create(item, app=app, parent=menu) |
| 311 | + # use QApplication instance as parent for actions |
| 312 | + # because we use action singleton, and actions |
| 313 | + # are not related to any window. |
| 314 | + action = QMenuItemAction.create(item, app=app, parent=qapp) |
311 | 315 | menu.addAction(action) |
312 | 316 | if n < n_groups - 1: |
313 | 317 | menu.addSeparator() |
|
0 commit comments