diff options
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/gdi/FileDefinitionWidgetDraw.cxx | 12 | ||||
-rw-r--r-- | vcl/source/gdi/WidgetDefinition.cxx | 2 | ||||
-rw-r--r-- | vcl/source/gdi/WidgetDefinitionReader.cxx | 30 |
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); |