diff options
-rw-r--r-- | sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml | 8 | ||||
-rw-r--r-- | sources/pyside6/PySide6/glue/qtgui.cpp | 6 | ||||
-rw-r--r-- | sources/pyside6/tests/QtWidgets/qaction_test.py | 13 |
3 files changed, 24 insertions, 3 deletions
diff --git a/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml index 6010af37f..82bc2918e 100644 --- a/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml +++ b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml @@ -227,11 +227,15 @@ <enum-type name="ActionEvent"/> <enum-type name="MenuRole"/> <enum-type name="Priority" since="4.6"/> - <modify-function signature="setMenu(QMenu*)"> + <!-- PYSIDE-1627 QAction::menu()/setMenu() are templates --> + <add-function signature="menu()const" return-type="QObject*"> + <inject-code file="../glue/qtgui.cpp" snippet="qaction-menu"/> + </add-function> + <declare-function signature="setMenu(QObject*)"> <modify-argument index="1"> <parent index="this" action="add"/> </modify-argument> - </modify-function> + </declare-function> <modify-function signature="triggered(bool)" allow-thread="yes"/> <add-function signature="setShortcut(Qt::Key)"> <inject-code file="../glue/qtgui.cpp" snippet="set-qtkey-shortcut"/> diff --git a/sources/pyside6/PySide6/glue/qtgui.cpp b/sources/pyside6/PySide6/glue/qtgui.cpp index b312180b7..8cfdd69a3 100644 --- a/sources/pyside6/PySide6/glue/qtgui.cpp +++ b/sources/pyside6/PySide6/glue/qtgui.cpp @@ -136,6 +136,12 @@ QAccessibleInterface *PySideAccessibleFactory::callFactories(const QString &key, PySideAccessibleFactory::ensureInstance()->installFactory(%1); // @snippet qaccessible-installfactory +// @snippet qaction-menu +// %CPPSELF->menu(); // pretend it was called. +QObject *object = %CPPSELF->menu<QObject *>(); +%PYARG_0 = %CONVERTTOPYTHON[QObject*](object); +// @snippet qaction-menu + // @snippet glgetshadersource GLsizei bufSize = 4096; GLsizei length = bufSize - 1; diff --git a/sources/pyside6/tests/QtWidgets/qaction_test.py b/sources/pyside6/tests/QtWidgets/qaction_test.py index 6f9b1afec..26d3e65e6 100644 --- a/sources/pyside6/tests/QtWidgets/qaction_test.py +++ b/sources/pyside6/tests/QtWidgets/qaction_test.py @@ -36,7 +36,7 @@ from init_paths import init_test_paths init_test_paths(False) from PySide6.QtGui import QAction -from PySide6.QtWidgets import QWidget +from PySide6.QtWidgets import QWidget, QMenu from helper.usesqapplication import UsesQApplication @@ -73,6 +73,17 @@ class SetShortcutTest(UsesQApplication): s2 = action.shortcut() self.assertEqual(s2, shortcut) + def testMenu(self): + # Test the setMenu()/menu() old functionality removed in Qt6 + # that was added via helper functions. + menu = QMenu("menu") + action = QAction("action") + + # Using QAction::setMenu(QObject*) + action.setMenu(menu) + + self.assertEqual(action.menu(), menu) + if __name__ == '__main__': unittest.main() |