[Libreoffice-commits] core.git: 2 commits - vcl/inc vcl/source
Tomaž Vajngerl (via logerrit)
logerrit at kemper.freedesktop.org
Tue May 14 12:10:11 UTC 2019
vcl/inc/FileDefinitionWidgetDraw.hxx | 4 +
vcl/source/gdi/FileDefinitionWidgetDraw.cxx | 71 ++++++++++++++++++++--------
vcl/source/gdi/salgdilayout.cxx | 6 ++
3 files changed, 62 insertions(+), 19 deletions(-)
New commits:
commit 5053584e71d98ae6bfba405145c45815ba7ad898
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Tue May 14 16:53:57 2019 +0900
Commit: Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Tue May 14 14:09:17 2019 +0200
Look for "online" theme when running LOOL and "ios" only on IOS
Change-Id: I5ac2c764dd11381d6354a7727700ba1fa4b76a53
Reviewed-on: https://gerrit.libreoffice.org/72269
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 9fb71db7e51e..e5dc455fd9cc 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -90,8 +90,12 @@ FileDefinitionWidgetDraw::FileDefinitionWidgetDraw(SalGraphics& rGraphics)
: m_rGraphics(rGraphics)
, m_bIsActive(false)
{
+ if (comphelper::LibreOfficeKit::isActive())
+ m_pWidgetDefinition = getWidgetDefinitionForTheme("online");
+#ifdef IOS
if (!m_pWidgetDefinition)
m_pWidgetDefinition = getWidgetDefinitionForTheme("ios");
+#endif
if (m_pWidgetDefinition)
{
commit c6bf2562df8ed060b0cf3da39c5641f080c01086
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Tue May 14 16:51:59 2019 +0900
Commit: Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Tue May 14 14:09:08 2019 +0200
Gaceful fallback if the widget theme files can't be found
Change-Id: Ied3831c83ed385f5f28b82eb1ee67a2a4448cd05
Reviewed-on: https://gerrit.libreoffice.org/72268
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/vcl/inc/FileDefinitionWidgetDraw.hxx b/vcl/inc/FileDefinitionWidgetDraw.hxx
index 24b9e0ab8a26..a5b95c8fad6a 100644
--- a/vcl/inc/FileDefinitionWidgetDraw.hxx
+++ b/vcl/inc/FileDefinitionWidgetDraw.hxx
@@ -22,6 +22,8 @@ class FileDefinitionWidgetDraw : public vcl::WidgetDrawInterface
{
private:
SalGraphics& m_rGraphics;
+ bool m_bIsActive;
+
std::shared_ptr<WidgetDefinition> m_pWidgetDefinition;
bool resolveDefinition(ControlType eType, ControlPart ePart, ControlState eState,
@@ -31,6 +33,8 @@ private:
public:
FileDefinitionWidgetDraw(SalGraphics& rGraphics);
+ bool isActive() { return m_bIsActive; }
+
bool isNativeControlSupported(ControlType eType, ControlPart ePart) override;
bool hitTestNativeControl(ControlType eType, ControlPart ePart,
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 3373285b8a92..9fb71db7e51e 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -14,6 +14,7 @@
#include <svdata.hxx>
#include <rtl/bootstrap.hxx>
#include <config_folders.h>
+#include <osl/file.hxx>
#include <basegfx/range/b2drectangle.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
@@ -45,15 +46,40 @@ OUString lcl_getThemeDefinitionPath()
return sPath;
}
-std::shared_ptr<WidgetDefinition> setWidgetDefinition(OUString const& rDefinitionFile,
+bool lcl_directoryExists(OUString const& sDirectory)
+{
+ osl::DirectoryItem aDirectoryItem;
+ osl::FileBase::RC eRes = osl::DirectoryItem::get(sDirectory, aDirectoryItem);
+ return eRes == osl::FileBase::E_None;
+}
+
+bool lcl_fileExists(OUString const& sFilename)
+{
+ osl::File aFile(sFilename);
+ osl::FileBase::RC eRC = aFile.open(osl_File_OpenFlag_Read);
+ return osl::FileBase::E_None == eRC;
+}
+
+std::shared_ptr<WidgetDefinition> getWidgetDefinition(OUString const& rDefinitionFile,
OUString const& rDefinitionResourcesPath)
{
+ auto pWidgetDefinition = std::make_shared<WidgetDefinition>();
+ WidgetDefinitionReader aReader(rDefinitionFile, rDefinitionResourcesPath);
+ if (aReader.read(*pWidgetDefinition))
+ return pWidgetDefinition;
+ return std::shared_ptr<WidgetDefinition>();
+}
+
+std::shared_ptr<WidgetDefinition> getWidgetDefinitionForTheme(OUString const& rThemenName)
+{
static std::shared_ptr<WidgetDefinition> spDefinition;
if (!spDefinition)
{
- spDefinition = std::make_shared<WidgetDefinition>();
- WidgetDefinitionReader aReader(rDefinitionFile, rDefinitionResourcesPath);
- aReader.read(*spDefinition);
+ OUString sSharedDefinitionBasePath = lcl_getThemeDefinitionPath();
+ OUString sThemeFolder = sSharedDefinitionBasePath + rThemenName + "/";
+ OUString sThemeDefinitionFile = sThemeFolder + "definition.xml";
+ if (lcl_directoryExists(sThemeFolder) && lcl_fileExists(sThemeDefinitionFile))
+ spDefinition = getWidgetDefinition(sThemeDefinitionFile, sThemeFolder);
}
return spDefinition;
}
@@ -62,22 +88,25 @@ std::shared_ptr<WidgetDefinition> setWidgetDefinition(OUString const& rDefinitio
FileDefinitionWidgetDraw::FileDefinitionWidgetDraw(SalGraphics& rGraphics)
: m_rGraphics(rGraphics)
+ , m_bIsActive(false)
{
- OUString sDefinitionBasePath = lcl_getThemeDefinitionPath();
- OUString sThemeName = "ios";
- OUString sThemeFolder = sDefinitionBasePath + sThemeName + "/";
-
- m_pWidgetDefinition = setWidgetDefinition(sThemeFolder + "definition.xml", sThemeFolder);
-
- ImplSVData* pSVData = ImplGetSVData();
- pSVData->maNWFData.mbNoFocusRects = true;
- pSVData->maNWFData.mbNoFocusRectsForFlatButtons = true;
- pSVData->maNWFData.mbNoActiveTabTextRaise = true;
- pSVData->maNWFData.mbCenteredTabs = true;
- pSVData->maNWFData.mbProgressNeedsErase = true;
- pSVData->maNWFData.mnStatusBarLowerRightOffset = 10;
- pSVData->maNWFData.mbCanDrawWidgetAnySize = true;
- pSVData->maNWFData.mnListBoxEntryMargin = 20;
+ if (!m_pWidgetDefinition)
+ m_pWidgetDefinition = getWidgetDefinitionForTheme("ios");
+
+ if (m_pWidgetDefinition)
+ {
+ ImplSVData* pSVData = ImplGetSVData();
+ pSVData->maNWFData.mbNoFocusRects = true;
+ pSVData->maNWFData.mbNoFocusRectsForFlatButtons = true;
+ pSVData->maNWFData.mbNoActiveTabTextRaise = true;
+ pSVData->maNWFData.mbCenteredTabs = true;
+ pSVData->maNWFData.mbProgressNeedsErase = true;
+ pSVData->maNWFData.mnStatusBarLowerRightOffset = 10;
+ pSVData->maNWFData.mbCanDrawWidgetAnySize = true;
+ pSVData->maNWFData.mnListBoxEntryMargin = 20;
+
+ m_bIsActive = true;
+ }
}
bool FileDefinitionWidgetDraw::isNativeControlSupported(ControlType eType, ControlPart ePart)
diff --git a/vcl/source/gdi/salgdilayout.cxx b/vcl/source/gdi/salgdilayout.cxx
index 22199c52a712..0ab8bb6ccd75 100644
--- a/vcl/source/gdi/salgdilayout.cxx
+++ b/vcl/source/gdi/salgdilayout.cxx
@@ -70,6 +70,12 @@ bool SalGraphics::initWidgetDrawBackends(bool bForce)
if (bFileDefinitionsWidgetDraw || bForce)
{
m_pWidgetDraw.reset(new vcl::FileDefinitionWidgetDraw(*this));
+ auto pFileDefinitionWidgetDraw = static_cast<vcl::FileDefinitionWidgetDraw*>(m_pWidgetDraw.get());
+ if (!pFileDefinitionWidgetDraw->isActive())
+ {
+ m_pWidgetDraw.reset();
+ return false;
+ }
return true;
}
return false;
More information about the Libreoffice-commits
mailing list