diff --git a/src/app_model/_app.py b/src/app_model/_app.py index 8df3e7a..507ff3f 100644 --- a/src/app_model/_app.py +++ b/src/app_model/_app.py @@ -311,12 +311,12 @@ def _register_action_obj(self, action: Action) -> DisposeCallable: """ # register commands disposers = [self.commands.register_action(action)] - # register menus - if dm := self.menus.append_action_menus(action): - disposers.append(dm) # register keybindings if dk := self.keybindings.register_action_keybindings(action): disposers.append(dk) + # register menus + if dm := self.menus.append_action_menus(action): + disposers.append(dm) # remember the action object as a whole. # note that commands.register_action will have raised an exception diff --git a/tests/test_qt/test_qmainwindow.py b/tests/test_qt/test_qmainwindow.py index 0868595..a31b137 100644 --- a/tests/test_qt/test_qmainwindow.py +++ b/tests/test_qt/test_qmainwindow.py @@ -1,14 +1,22 @@ +from __future__ import annotations + from typing import TYPE_CHECKING from qtpy.QtCore import Qt +from qtpy.QtWidgets import QAction, QApplication from app_model.backends.qt import QModelMainWindow, QModelToolBar +from app_model.types._action import Action if TYPE_CHECKING: + from pytestqt.qtbot import QtBot + from ..conftest import FullApp # noqa: TID252 -def test_qmodel_main_window(qtbot, full_app: "FullApp") -> None: +def test_qmodel_main_window( + qtbot: QtBot, qapp: QApplication, full_app: FullApp +) -> None: win = QModelMainWindow(full_app) qtbot.addWidget(win) @@ -27,3 +35,16 @@ def test_qmodel_main_window(qtbot, full_app: "FullApp") -> None: ) assert isinstance(tb, QModelToolBar) win.addModelToolBar(full_app.Menus.EDIT, area=Qt.ToolBarArea.RightToolBarArea) + + full_app.register_action( + Action( + id="late-action", + title="Late Action", + keybindings=[{"primary": "Shift+L"}], + menus=[{"id": full_app.Menus.FILE}], + callback=lambda: None, + ) + ) + + action = qapp.findChild(QAction, "late-action") + assert action.shortcut().toString() == "Shift+L"