vcl/unx/gtk3/gtkinst.cxx |   41 ++++++++++++++++++++++++++++++++++++-----
 1 file changed, 36 insertions(+), 5 deletions(-)

New commits:
commit 738a39c175f46d62102556423349e416f01c7993
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu May 13 21:00:27 2021 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri May 14 09:56:18 2021 +0200

    gtk4: move border width down to first child as margins
    
    Change-Id: I7bd1df9abd047780e6fe52c9a2acd56f5df25e4c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115572
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 7c8caee2a4d6..f9294c6b9be7 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -17546,12 +17546,14 @@ void ConvertTree(const 
Reference<css::xml::dom::XNode>& xNode)
     css::uno::Reference<css::xml::dom::XNodeList> xNodeList = 
xNode->getChildNodes();
     if (!xNodeList.is())
         return;
+
     std::vector<css::uno::Reference<css::xml::dom::XNode>> xRemoveList;
-    sal_Int32 nNodeCount = xNodeList->getLength();
-    for (sal_Int32 i = 0; i < nNodeCount; ++i)
-    {
-        css::uno::Reference<css::xml::dom::XNode> xChild = xNodeList->item(i);
 
+    OUString sBorderWidth;
+
+    for (css::uno::Reference<css::xml::dom::XNode> xChild = 
xNode->getFirstChild();
+         xChild.is(); xChild = xChild->getNextSibling())
+    {
         if (xChild->getNodeName() == "requires")
         {
             css::uno::Reference<css::xml::dom::XNamedNodeMap> xMap = 
xChild->getAttributes();
@@ -17567,6 +17569,10 @@ void ConvertTree(const 
Reference<css::xml::dom::XNode>& xNode)
             css::uno::Reference<css::xml::dom::XNamedNodeMap> xMap = 
xChild->getAttributes();
             css::uno::Reference<css::xml::dom::XNode> xName = 
xMap->getNamedItem("name");
             OUString sName(xName->getNodeValue().replace('_', '-'));
+
+            if (sName == "border-width")
+                sBorderWidth = OUString::number(12);
+
             if (sName == "type-hint" || sName == "skip-taskbar-hint" ||
                 sName == "can-default" || sName == "has-default" ||
                 sName == "border-width" || sName == "layout-style" ||
@@ -17578,6 +17584,32 @@ void ConvertTree(const 
Reference<css::xml::dom::XNode>& xNode)
         }
         else if (xChild->getNodeName() == "child")
         {
+            if (!sBorderWidth.isEmpty())
+            {
+                for (css::uno::Reference<css::xml::dom::XNode> 
xObjectCandidate = xChild->getFirstChild();
+                     xObjectCandidate.is();
+                     xObjectCandidate = xObjectCandidate->getNextSibling())
+                {
+                    if (xObjectCandidate->getNodeName() == "object")
+                    {
+                        auto xDoc = xChild->getOwnerDocument();
+                        auto xMarginEnd = CreateProperty(xDoc, "margin-end", 
sBorderWidth);
+
+                        auto xFirstChild = xObjectCandidate->getFirstChild();
+                        if (xFirstChild.is())
+                            xObjectCandidate->insertBefore(xMarginEnd, 
xFirstChild);
+                        else
+                            xObjectCandidate->appendChild(xMarginEnd);
+
+                        xObjectCandidate->insertBefore(CreateProperty(xDoc, 
"margin-top", sBorderWidth), xMarginEnd);
+                        xObjectCandidate->insertBefore(CreateProperty(xDoc, 
"margin-bottom", sBorderWidth), xMarginEnd);
+                        xObjectCandidate->insertBefore(CreateProperty(xDoc, 
"margin-start", sBorderWidth), xMarginEnd);
+                        break;
+                    }
+                }
+                sBorderWidth.clear();
+            }
+
             css::uno::Reference<css::xml::dom::XNamedNodeMap> xMap = 
xChild->getAttributes();
             css::uno::Reference<css::xml::dom::XNode> xName = 
xMap->getNamedItem("internal-child");
             if (xName)
@@ -17649,7 +17681,6 @@ void ConvertTree(const Reference<css::xml::dom::XNode>& 
xNode)
                 // go back to parent and find the object child and insert this 
"layout" as a
                 // new child of the object
                 auto xParent = xChild->getParentNode();
-                auto xInsertIn = xParent->getFirstChild();
                 for (css::uno::Reference<css::xml::dom::XNode> 
xObjectCandidate = xParent->getFirstChild();
                      xObjectCandidate.is();
                      xObjectCandidate = xObjectCandidate->getNextSibling())
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to