summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/source')
-rw-r--r--vcl/source/gdi/FileDefinitionWidgetDraw.cxx12
-rw-r--r--vcl/source/gdi/WidgetDefinition.cxx2
-rw-r--r--vcl/source/gdi/WidgetDefinitionReader.cxx30
3 files changed, 42 insertions, 2 deletions
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 4b913fa495d4..34707ea751cc 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -86,6 +86,15 @@ std::shared_ptr<WidgetDefinition> getWidgetDefinitionForTheme(OUString const& rT
return spDefinition;
}
+bool getSettingValueBool(OString const& rValue, bool bDefault)
+{
+ if (rValue.isEmpty())
+ return bDefault;
+ if (rValue == "true" || rValue == "false")
+ return rValue == "true";
+ return bDefault;
+}
+
} // end anonymous namespace
FileDefinitionWidgetDraw::FileDefinitionWidgetDraw(SalGraphics& rGraphics)
@@ -105,7 +114,8 @@ FileDefinitionWidgetDraw::FileDefinitionWidgetDraw(SalGraphics& rGraphics)
pSVData->maNWFData.mbNoFocusRects = true;
pSVData->maNWFData.mbNoFocusRectsForFlatButtons = true;
pSVData->maNWFData.mbNoActiveTabTextRaise = true;
- pSVData->maNWFData.mbCenteredTabs = true;
+ pSVData->maNWFData.mbCenteredTabs
+ = getSettingValueBool(m_pWidgetDefinition->mpSettings->msCenteredTabs, true);
pSVData->maNWFData.mbProgressNeedsErase = true;
pSVData->maNWFData.mnStatusBarLowerRightOffset = 10;
pSVData->maNWFData.mbCanDrawWidgetAnySize = true;
diff --git a/vcl/source/gdi/WidgetDefinition.cxx b/vcl/source/gdi/WidgetDefinition.cxx
index 2a8ae5025020..c16b1b6cf657 100644
--- a/vcl/source/gdi/WidgetDefinition.cxx
+++ b/vcl/source/gdi/WidgetDefinition.cxx
@@ -64,7 +64,7 @@ WidgetDefinitionPart::getStates(ControlType eType, ControlPart ePart, ControlSta
if (state->msButtonValue != "any"
&& !((state->msButtonValue == "true" && eButtonValue == ButtonValue::On)
- || (state->msButtonValue == "false" && eButtonValue != ButtonValue::On)))
+ || (state->msButtonValue == "false" && eButtonValue == ButtonValue::Off)))
{
bAdd = false;
}
diff --git a/vcl/source/gdi/WidgetDefinitionReader.cxx b/vcl/source/gdi/WidgetDefinitionReader.cxx
index 50c6d7b3de98..c9c38aefc1b5 100644
--- a/vcl/source/gdi/WidgetDefinitionReader.cxx
+++ b/vcl/source/gdi/WidgetDefinitionReader.cxx
@@ -55,6 +55,13 @@ bool readColor(OString const& rString, Color& rColor)
return true;
}
+bool readSetting(OString const& rInputString, OString& rOutputString)
+{
+ if (!rInputString.isEmpty())
+ rOutputString = rInputString;
+ return true;
+}
+
OString getValueOrAny(OString const& rInputString)
{
if (rInputString.isEmpty())
@@ -412,8 +419,17 @@ bool WidgetDefinitionReader::read(WidgetDefinition& rWidgetDefinition)
{ "toolTextColor", &pStyle->maToolTextColor },
{ "fontColor", &pStyle->maFontColor },
};
+
rWidgetDefinition.mpStyle = pStyle;
+ auto pSettings = std::make_shared<WidgetDefinitionSettings>();
+
+ std::unordered_map<OString, OString*> aSettingMap = {
+ { "centeredTabs", &pSettings->msCenteredTabs },
+ };
+
+ rWidgetDefinition.mpSettings = pSettings;
+
SvFileStream aFileStream(m_rDefinitionFile, StreamMode::READ);
tools::XmlWalker aWalker;
@@ -441,6 +457,20 @@ bool WidgetDefinitionReader::read(WidgetDefinition& rWidgetDefinition)
}
aWalker.parent();
}
+ if (aWalker.name() == "settings")
+ {
+ aWalker.children();
+ while (aWalker.isValid())
+ {
+ auto pair = aSettingMap.find(aWalker.name());
+ if (pair != aSettingMap.end())
+ {
+ readSetting(aWalker.attribute("value"), *pair->second);
+ }
+ aWalker.next();
+ }
+ aWalker.parent();
+ }
else if (getControlTypeForXmlString(aWalker.name(), eType))
{
readDefinition(aWalker, rWidgetDefinition, eType);