[Libreoffice-commits] core.git: vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Sun Jun 6 19:38:20 UTC 2021
vcl/unx/gtk4/convert3to4.cxx | 47 ++++++++++++++++++++++++++++++++++++-------
1 file changed, 40 insertions(+), 7 deletions(-)
New commits:
commit a134845061b16e43d192feaceac3ecb8f4a51cdb
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Sat Jun 5 20:59:54 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Sun Jun 6 21:37:43 2021 +0200
gtk4: convert MenuButton "image" to "icon-name"
Change-Id: Ic290b6008739a729b786562affb72d26da2191d3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116754
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/vcl/unx/gtk4/convert3to4.cxx b/vcl/unx/gtk4/convert3to4.cxx
index 88d3de723d39..51649c981503 100644
--- a/vcl/unx/gtk4/convert3to4.cxx
+++ b/vcl/unx/gtk4/convert3to4.cxx
@@ -570,8 +570,7 @@ ConvertResult Convert3To4(const css::uno::Reference<css::xml::dom::XNode>& xNode
|| GetParentObjectType(xChild) == "GtkMenuButton"
|| GetParentObjectType(xChild) == "GtkToggleButton")
{
- // find the image object, expected to be a child of "interface" and relocate
- // it to be a child of this GtkButton
+ // find the image object, expected to be a child of "interface"
auto xObjectCandidate = xChild->getParentNode();
if (xObjectCandidate->getNodeName() == "object")
{
@@ -606,11 +605,45 @@ ConvertResult Convert3To4(const css::uno::Reference<css::xml::dom::XNode>& xNode
}
auto xDoc = xChild->getOwnerDocument();
- css::uno::Reference<css::xml::dom::XElement> xImageChild
- = xDoc->createElement("child");
- xImageChild->appendChild(
- xImageNode->getParentNode()->removeChild(xImageNode));
- xObjectCandidate->appendChild(xImageChild);
+
+ if (GetParentObjectType(xChild) == "GtkButton"
+ || GetParentObjectType(xChild) == "GtkToggleButton")
+ {
+ // relocate it to be a child of this GtkButton
+ css::uno::Reference<css::xml::dom::XElement> xImageChild
+ = xDoc->createElement("child");
+ xImageChild->appendChild(
+ xImageNode->getParentNode()->removeChild(xImageNode));
+ xObjectCandidate->appendChild(xImageChild);
+ }
+ else if (GetParentObjectType(xChild) == "GtkMenuButton")
+ {
+ auto xProp = xImageNode->getFirstChild();
+ while (xProp.is())
+ {
+ if (xProp->getNodeName() == "property")
+ {
+ css::uno::Reference<css::xml::dom::XNamedNodeMap> xPropMap
+ = xProp->getAttributes();
+ css::uno::Reference<css::xml::dom::XNode> xPropName
+ = xPropMap->getNamedItem("name");
+ OUString sPropName(xPropName->getNodeValue().replace('_', '-'));
+ if (sPropName == "icon-name")
+ {
+ OUString sIconName(xProp->getFirstChild()->getNodeValue());
+ fprintf(stderr, "icon name is %s\n",
+ sIconName.toUtf8().getStr());
+ auto xIconName
+ = CreateProperty(xDoc, "icon-name", sIconName);
+ xObjectCandidate->insertBefore(xIconName, xChild);
+ break;
+ }
+ }
+
+ xProp = xProp->getNextSibling();
+ }
+ xImageNode->getParentNode()->removeChild(xImageNode);
+ }
}
xRemoveList.push_back(xChild);
More information about the Libreoffice-commits
mailing list