vcl/qt5/QtBuilder.cxx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
New commits: commit 0eb86f18f9d9f3ef1c86b9d1fd7af50ea9c20e6c Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Sat Apr 12 00:32:01 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Sat Apr 12 09:11:15 2025 +0200 tdf#130857 qt weld: Add initial tool button support Handle "GtkToolButton" objects in QtBuilder by creating a QToolButton widget for them. Evaluate the GtkToolButton::icon-name property [1]. This is used e.g. in the spelling dialog ("Tools" -> "Spelling"), .ui file: cui/uiconfig/ui/spellingdialog.ui (Dialog not declared as supported yet in QtInstanceBuilder and there's much more to do before it can be.) Support for more properties can be added when needed. [1] https://docs.gtk.org/gtk3/property.ToolButton.icon-name.html Change-Id: I07c406d6257912a64eeaa781edf245ad16c87862 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184084 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/vcl/qt5/QtBuilder.cxx b/vcl/qt5/QtBuilder.cxx index d80ed71e1666..84dc10b91073 100644 --- a/vcl/qt5/QtBuilder.cxx +++ b/vcl/qt5/QtBuilder.cxx @@ -351,6 +351,17 @@ QObject* QtBuilder::makeObject(QObject* pParent, std::u16string_view sName, std: { pObject = new QToolBar(pParentWidget); } + else if (sName == u"GtkToolButton") + { + QToolButton* pToolButton = new QToolButton(pParentWidget); + const OUString sIconName = extractIconName(rMap); + if (!sIconName.isEmpty()) + { + const Image aImage = loadThemeImage(sIconName); + pToolButton->setIcon(toQPixmap(aImage)); + } + pObject = pToolButton; + } else if (sName == u"GtkTreeView") { QTreeView* pTreeView = new QTreeView(pParentWidget); @@ -407,6 +418,12 @@ QObject* QtBuilder::makeObject(QObject* pParent, std::u16string_view sName, std: // unset pParentWidget to not create a layout below pParentWidget = nullptr; } + else if (QToolBar* pParentToolBar = qobject_cast<QToolBar*>(pParentWidget)) + { + pParentToolBar->addWidget(pWidget); + // unset pParentWidget to not create a layout below + pParentWidget = nullptr; + } else if (QtExpander* pExpander = qobject_cast<QtExpander*>(pParentWidget)) { // set the content (not the label) child as the expander's widget