vcl/inc/qt5/QtBuilder.hxx | 4 +++- vcl/qt5/QtBuilder.cxx | 23 +++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-)
New commits: commit 2172bb226ab29ff0e9ea8ebe1a498f83afb5c891 Author: Michael Weghorn <[email protected]> AuthorDate: Sat Jan 18 17:23:32 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Sun Jan 19 21:34:43 2025 +0100 tdf#130857 qt weld: Set GtkButton props for MenuButton The GTK 3 GtkMenuButton [1] subclasses GtkButton [2]. Therefore, let QtBuilder apply the GtkButton properties for the QToolButton created for a "GtkMenuButton" object in a .ui file as well. This e.g. ensures that the menu button in the "File" -> "Templates" -> "Manage Templates" dialog gets the "Manage" label in a WIP branch where support for that dialog using native Qt widgets is declared. [1] https://docs.gtk.org/gtk3/class.MenuButton.html [2] https://docs.gtk.org/gtk3/class.Button.html Change-Id: I3f2e7b701776476a6677d2bb324ffbdd4956f471 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180461 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/vcl/inc/qt5/QtBuilder.hxx b/vcl/inc/qt5/QtBuilder.hxx index 254fb379023b..c2987dc33b19 100644 --- a/vcl/inc/qt5/QtBuilder.hxx +++ b/vcl/inc/qt5/QtBuilder.hxx @@ -97,7 +97,7 @@ private: // remove pOldWidget from the widget hierarchy and set (child widget) pNewWidget in its place static void replaceWidget(QWidget* pOldWidget, QWidget* pNewWidget); static void setProperties(QObject* obj, stringmap& rProps); - void setButtonProperties(QPushButton& rButton, stringmap& rProps); + void setButtonProperties(QAbstractButton& rButton, stringmap& rProps); static void setLabelProperties(QLabel& rLabel, stringmap& rProps); void setMenuButtonProperties(QToolButton& rButton, stringmap& rProps); void setScaleProperties(QSlider& rSlider, stringmap& rProps); diff --git a/vcl/qt5/QtBuilder.cxx b/vcl/qt5/QtBuilder.cxx index 1dafdae0ee57..132d9e8a38c0 100644 --- a/vcl/qt5/QtBuilder.cxx +++ b/vcl/qt5/QtBuilder.cxx @@ -801,7 +801,7 @@ void QtBuilder::setProperties(QObject* pObject, stringmap& rProps) } } -void QtBuilder::setButtonProperties(QPushButton& rButton, stringmap& rProps) +void QtBuilder::setButtonProperties(QAbstractButton& rButton, stringmap& rProps) { for (auto const & [ rKey, rValue ] : rProps) { @@ -846,6 +846,8 @@ void QtBuilder::setMenuButtonProperties(QToolButton& rButton, stringmap& rProps) assert(pMenu && "menu button references non-existing menu"); rButton.setMenu(pMenu); } + + setButtonProperties(rButton, rProps); } void QtBuilder::setScaleProperties(QSlider& rSlider, stringmap& rProps) commit a6cd97bd9c513a6131be1e7f46c44e2d135f8dc7 Author: Michael Weghorn <[email protected]> AuthorDate: Sat Jan 18 17:17:25 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Sun Jan 19 21:34:34 2025 +0100 tdf#130857 qt weld: Extract helper method to set menu button props Change-Id: I5f23f3e5734cee99ed54c9082fe9cbb3d9b54f0d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180460 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/vcl/inc/qt5/QtBuilder.hxx b/vcl/inc/qt5/QtBuilder.hxx index bb5ba7ad6278..254fb379023b 100644 --- a/vcl/inc/qt5/QtBuilder.hxx +++ b/vcl/inc/qt5/QtBuilder.hxx @@ -20,6 +20,7 @@ #include <QtWidgets/QMessageBox> #include <QtWidgets/QPushButton> #include <QtWidgets/QSlider> +#include <QtWidgets/QToolButton> #include <rtl/ustring.hxx> #include <unotools/resmgr.hxx> @@ -98,6 +99,7 @@ private: static void setProperties(QObject* obj, stringmap& rProps); void setButtonProperties(QPushButton& rButton, stringmap& rProps); static void setLabelProperties(QLabel& rLabel, stringmap& rProps); + void setMenuButtonProperties(QToolButton& rButton, stringmap& rProps); void setScaleProperties(QSlider& rSlider, stringmap& rProps); void setSpinButtonProperties(QDoubleSpinBox& rSpinBox, stringmap& rProps); static QWidget* windowForObject(QObject* pObject); diff --git a/vcl/qt5/QtBuilder.cxx b/vcl/qt5/QtBuilder.cxx index 8b1b4293c8ff..1dafdae0ee57 100644 --- a/vcl/qt5/QtBuilder.cxx +++ b/vcl/qt5/QtBuilder.cxx @@ -286,13 +286,7 @@ QObject* QtBuilder::makeObject(QObject* pParent, std::u16string_view sName, std: else if (sName == u"GtkMenuButton") { QToolButton* pMenuButton = new QToolButton(pParentWidget); - const OUString sMenu = extractPopupMenu(rMap); - if (!sMenu.isEmpty()) - { - QMenu* pMenu = get_menu(sMenu); - assert(pMenu && "menu button references non-existing menu"); - pMenuButton->setMenu(pMenu); - } + setMenuButtonProperties(*pMenuButton, rMap); pObject = pMenuButton; } else if (sName == u"GtkNotebook") @@ -843,6 +837,17 @@ void QtBuilder::setLabelProperties(QLabel& rLabel, stringmap& rProps) } } +void QtBuilder::setMenuButtonProperties(QToolButton& rButton, stringmap& rProps) +{ + const OUString sMenu = extractPopupMenu(rProps); + if (!sMenu.isEmpty()) + { + QMenu* pMenu = get_menu(sMenu); + assert(pMenu && "menu button references non-existing menu"); + rButton.setMenu(pMenu); + } +} + void QtBuilder::setScaleProperties(QSlider& rSlider, stringmap& rProps) { if (!hasOrientationVertical(rProps))
