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

Reply via email to