[Libreoffice-commits] core.git: vcl/inc vcl/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Sun Mar 10 07:40:41 UTC 2019
vcl/inc/FileDefinitionWidgetDraw.hxx | 2 -
vcl/source/gdi/FileDefinitionWidgetDraw.cxx | 34 +++++++++++++++++++---------
2 files changed, 25 insertions(+), 11 deletions(-)
New commits:
commit e9393e392e95ec8fcab77662790482aa0adf0f78
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat Mar 9 14:50:57 2019 +0100
Commit: Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Sun Mar 10 08:40:20 2019 +0100
only read and parse widget definition once from the file
Change-Id: I71c095e5e5dd21650663e6fb717bcb22958a597f
Reviewed-on: https://gerrit.libreoffice.org/68976
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/vcl/inc/FileDefinitionWidgetDraw.hxx b/vcl/inc/FileDefinitionWidgetDraw.hxx
index dc3ee7f8967c..24b9e0ab8a26 100644
--- a/vcl/inc/FileDefinitionWidgetDraw.hxx
+++ b/vcl/inc/FileDefinitionWidgetDraw.hxx
@@ -22,7 +22,7 @@ class FileDefinitionWidgetDraw : public vcl::WidgetDrawInterface
{
private:
SalGraphics& m_rGraphics;
- WidgetDefinition m_aWidgetDefinition;
+ std::shared_ptr<WidgetDefinition> m_pWidgetDefinition;
bool resolveDefinition(ControlType eType, ControlPart ePart, ControlState eState,
const ImplControlValue& rValue, long nX, long nY, long nWidth,
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index bc2636491829..17b7c2c833db 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -44,14 +44,28 @@ OUString lcl_getThemeDefinitionPath()
return sPath;
}
+std::shared_ptr<WidgetDefinition> setWidgetDefinition(OUString const& rDefinitionFile,
+ OUString const& rDefinitionResourcesPath)
+{
+ static std::shared_ptr<WidgetDefinition> spDefinition;
+ if (!spDefinition)
+ {
+ spDefinition = std::make_shared<WidgetDefinition>();
+ WidgetDefinitionReader aReader(rDefinitionFile, rDefinitionResourcesPath);
+ aReader.read(*spDefinition);
+ }
+ return spDefinition;
+}
+
} // end anonymous namespace
FileDefinitionWidgetDraw::FileDefinitionWidgetDraw(SalGraphics& rGraphics)
: m_rGraphics(rGraphics)
{
OUString sDefinitionBasePath = lcl_getThemeDefinitionPath();
- WidgetDefinitionReader aReader(sDefinitionBasePath + "definition.xml", sDefinitionBasePath);
- aReader.read(m_aWidgetDefinition);
+
+ m_pWidgetDefinition
+ = setWidgetDefinition(sDefinitionBasePath + "definition.xml", sDefinitionBasePath);
ImplSVData* pSVData = ImplGetSVData();
pSVData->maNWFData.mbNoFocusRects = true;
@@ -385,7 +399,7 @@ bool FileDefinitionWidgetDraw::resolveDefinition(ControlType eType, ControlPart
long nWidth, long nHeight)
{
bool bOK = false;
- auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ePart);
+ auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ePart);
if (pPart)
{
auto const& aStates = pPart->getStates(eType, eState, rValue);
@@ -588,13 +602,13 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
case ControlType::Spinbox:
{
auto const& pButtonUpPart
- = m_aWidgetDefinition.getDefinition(eType, ControlPart::ButtonUp);
+ = m_pWidgetDefinition->getDefinition(eType, ControlPart::ButtonUp);
if (!pButtonUpPart)
return false;
Size aButtonSizeUp(pButtonUpPart->mnWidth, pButtonUpPart->mnHeight);
auto const& pButtonDownPart
- = m_aWidgetDefinition.getDefinition(eType, ControlPart::ButtonDown);
+ = m_pWidgetDefinition->getDefinition(eType, ControlPart::ButtonDown);
if (!pButtonDownPart)
return false;
Size aButtonSizeDown(pButtonDownPart->mnWidth, pButtonDownPart->mnHeight);
@@ -679,7 +693,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
break;
case ControlType::Checkbox:
{
- auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ControlPart::Entire);
+ auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ControlPart::Entire);
if (!pPart)
return false;
@@ -689,7 +703,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
}
case ControlType::Radiobutton:
{
- auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ControlPart::Entire);
+ auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ControlPart::Entire);
if (!pPart)
return false;
@@ -699,7 +713,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
}
case ControlType::TabItem:
{
- auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ControlPart::Entire);
+ auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ControlPart::Entire);
if (!pPart)
return false;
@@ -743,7 +757,7 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
case ControlType::Combobox:
case ControlType::Listbox:
{
- auto const& pPart = m_aWidgetDefinition.getDefinition(eType, ControlPart::ButtonDown);
+ auto const& pPart = m_pWidgetDefinition->getDefinition(eType, ControlPart::ButtonDown);
Size aComboButtonSize(pPart->mnWidth, pPart->mnHeight);
if (ePart == ControlPart::ButtonDown)
@@ -786,7 +800,7 @@ bool FileDefinitionWidgetDraw::updateSettings(AllSettings& rSettings)
{
StyleSettings aStyleSet = rSettings.GetStyleSettings();
- auto pDefinitionStyle = m_aWidgetDefinition.mpStyle;
+ auto pDefinitionStyle = m_pWidgetDefinition->mpStyle;
aStyleSet.SetFaceColor(pDefinitionStyle->maFaceColor);
aStyleSet.SetCheckedColor(pDefinitionStyle->maCheckedColor);
More information about the Libreoffice-commits
mailing list