[Libreoffice-commits] core.git: vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Tue May 18 10:37:35 UTC 2021
vcl/unx/gtk3/gtkinst.cxx | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 46 insertions(+), 1 deletion(-)
New commits:
commit 5c5b058c83e31e798a63a96d0e16b35927ce519f
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue May 18 10:37:53 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Tue May 18 12:36:57 2021 +0200
gtk4: relocate GtkButton image to be a child of the GtkButton
Change-Id: Iaf63de3eeebd575bc664d07b0254577219bf1bde
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115730
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index b1b3f7dfc9f6..08d21e0728df 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -17803,6 +17803,50 @@ bool ConvertTree(const Reference<css::xml::dom::XNode>& xNode)
xRemoveList.push_back(xChild);
}
+ if (sName == "image")
+ {
+ if (GetParentObjectType(xChild) == "GtkButton")
+ {
+ // find the image object, expected to be a child of "interface" and relocate
+ // it to be a child of this GtkButton
+ auto xObjectCandidate = xChild->getParentNode();
+ if (xObjectCandidate->getNodeName() == "object")
+ {
+ OUString sImageId = xChild->getFirstChild()->getNodeValue();
+
+ css::uno::Reference<css::xml::dom::XNode> xRootCandidate = xChild->getParentNode();
+ while (xRootCandidate)
+ {
+ if (xRootCandidate->getNodeName() == "interface")
+ break;
+ xRootCandidate = xRootCandidate->getParentNode();
+ }
+
+ css::uno::Reference<css::xml::dom::XNode> xImageNode;
+
+ for (auto xImageCandidate = xRootCandidate->getFirstChild(); xImageCandidate.is(); xImageCandidate= xImageCandidate->getNextSibling())
+ {
+ css::uno::Reference<css::xml::dom::XNamedNodeMap> xImageCandidateMap = xImageCandidate->getAttributes();
+ if (!xImageCandidateMap.is())
+ continue;
+ css::uno::Reference<css::xml::dom::XNode> xId = xImageCandidateMap->getNamedItem("id");
+ if (xId && xId->getNodeValue() == sImageId)
+ {
+ xImageNode = xImageCandidate;
+ break;
+ }
+ }
+
+ auto xDoc = xChild->getOwnerDocument();
+ css::uno::Reference<css::xml::dom::XElement> xImageChild = xDoc->createElement("child");
+ xImageChild->appendChild(xImageNode->getParentNode()->removeChild(xImageNode));
+ xObjectCandidate->appendChild(xImageChild);
+ }
+
+ xRemoveList.push_back(xChild);
+ }
+ }
+
if (sName == "draw-indicator")
{
assert(toBool(xChild->getFirstChild()->getNodeValue()));
@@ -19088,7 +19132,8 @@ void GtkInstanceWidget::help_hierarchy_foreach(const std::function<bool(const OS
weld::Builder* GtkInstance::CreateBuilder(weld::Widget* pParent, const OUString& rUIRoot, const OUString& rUIFile)
{
#if GTK_CHECK_VERSION(4, 0, 0)
- if (rUIFile != "cui/ui/percentdialog.ui" &&
+ if (rUIFile != "cui/ui/hyphenate.ui" &&
+ rUIFile != "cui/ui/percentdialog.ui" &&
rUIFile != "sfx/ui/querysavedialog.ui" &&
rUIFile != "svt/ui/javadisableddialog.ui" &&
rUIFile != "modules/smath/ui/fontsizedialog.ui" &&
More information about the Libreoffice-commits
mailing list