summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sfx2/viewsh.hxx2
-rw-r--r--sc/source/ui/inc/tabvwsh.hxx2
-rw-r--r--sc/source/ui/view/tabvwshc.cxx5
-rw-r--r--sd/source/ui/inc/ViewShellBase.hxx2
-rw-r--r--sd/source/ui/view/ViewShellBase.cxx12
-rw-r--r--sfx2/source/appl/appserv.cxx20
-rw-r--r--sfx2/source/view/viewsh.cxx6
-rw-r--r--sw/inc/view.hxx2
-rw-r--r--sw/inc/viewopt.hxx2
-rw-r--r--sw/source/core/view/vnew.cxx17
-rw-r--r--sw/source/uibase/uiview/viewprt.cxx14
11 files changed, 80 insertions, 4 deletions
diff --git a/include/sfx2/viewsh.hxx b/include/sfx2/viewsh.hxx
index 08bc6cecc8cb..4adf62a196c4 100644
--- a/include/sfx2/viewsh.hxx
+++ b/include/sfx2/viewsh.hxx
@@ -431,6 +431,8 @@ public:
virtual vcl::Window* GetEditWindowForActiveOLEObj() const override;
/// Get a color config color from this view
virtual ::Color GetColorConfigColor(svtools::ColorConfigEntry nColorType) const;
+ /// Get the color scheme name of this view
+ virtual OUString GetColorConfigName() const;
/// Set the LibreOfficeKit language of this view.
void SetLOKLanguageTag(const OUString& rBcp47LanguageTag);
diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
index d8434af53bc6..06e9f31e19cb 100644
--- a/sc/source/ui/inc/tabvwsh.hxx
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -397,6 +397,8 @@ public:
void NotifyCursor(SfxViewShell* pViewShell) const override;
/// See SfxViewShell::GetColorConfigColor().
::Color GetColorConfigColor(svtools::ColorConfigEntry nColorType) const override;
+ /// See SfxViewShell::GetColorConfigName().
+ OUString GetColorConfigName() const override;
/// Emits a LOK_CALLBACK_INVALIDATE_HEADER for all views whose current tab is equal to nCurrentTabIndex
static void notifyAllViewsHeaderInvalidation(const SfxViewShell* pForViewShell, HeaderType eHeaderType, SCTAB nCurrentTabIndex);
static bool isAnyEditViewInRange(const SfxViewShell* pForViewShell, bool bColumns, SCCOLROW nStart, SCCOLROW nEnd);
diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx
index 5397d9f4383e..997e710e18e9 100644
--- a/sc/source/ui/view/tabvwshc.cxx
+++ b/sc/source/ui/view/tabvwshc.cxx
@@ -511,6 +511,11 @@ void ScTabViewShell::NotifyCursor(SfxViewShell* pOtherShell) const
}
}
+OUString ScTabViewShell::GetColorConfigName() const
+{
+ return GetViewData().GetOptions().GetColorSchemeName();
+}
+
css::uno::Reference<css::datatransfer::XTransferable2> ScTabViewShell::GetClipData(vcl::Window* pWin)
{
SfxViewFrame* pViewFrame = nullptr;
diff --git a/sd/source/ui/inc/ViewShellBase.hxx b/sd/source/ui/inc/ViewShellBase.hxx
index e31429f6e41a..3f40123405f3 100644
--- a/sd/source/ui/inc/ViewShellBase.hxx
+++ b/sd/source/ui/inc/ViewShellBase.hxx
@@ -223,6 +223,8 @@ public:
void NotifyCursor(SfxViewShell* pViewShell) const override;
/// See SfxViewShell::GetColorConfigColor().
::Color GetColorConfigColor(svtools::ColorConfigEntry nColorType) const override;
+ /// See SfxViewShell::GetColorConfigName().
+ OUString GetColorConfigName() const override;
void setLOKVisibleArea(const ::tools::Rectangle& rArea) { maLOKVisibleArea = rArea; }
virtual ::tools::Rectangle getLOKVisibleArea() const override { return maLOKVisibleArea; }
diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx
index 55ade0226213..460e102e7796 100644
--- a/sd/source/ui/view/ViewShellBase.cxx
+++ b/sd/source/ui/view/ViewShellBase.cxx
@@ -1084,6 +1084,18 @@ void ViewShellBase::NotifyCursor(SfxViewShell* pOtherShell) const
return {};
}
+OUString ViewShellBase::GetColorConfigName() const
+{
+ if (DrawViewShell* pCurrentDrawShell = dynamic_cast<DrawViewShell*>(GetMainViewShell().get()))
+ {
+ const SdViewOptions& rViewOptions = pCurrentDrawShell->GetViewOptions();
+ return rViewOptions.msColorSchemeName;
+ }
+
+ SAL_WARN("sd", "dynamic_cast to DrawViewShell failed");
+ return {};
+}
+
//===== ViewShellBase::Implementation =========================================
ViewShellBase::Implementation::Implementation (ViewShellBase& rBase)
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index 2d57c7e562dc..cab9f16c5b8a 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -583,10 +583,26 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq )
SAL_WARN("sfx.appl", "FN_CHANGE_THEME: no theme name");
break;
}
+
const OUString& rSchemeName = pNewThemeArg->GetValue();
svtools::EditableColorConfig aEditableConfig;
- if (aEditableConfig.GetCurrentSchemeName() != rSchemeName)
- aEditableConfig.LoadScheme(rSchemeName);
+
+ if (comphelper::LibreOfficeKit::isActive())
+ {
+ SfxViewShell* pCurrentShell = SfxViewShell::Current();
+ if (pCurrentShell && pCurrentShell->GetColorConfigName() != rSchemeName)
+ {
+ aEditableConfig.LoadScheme(rSchemeName);
+ }
+ }
+ else
+ {
+ if (aEditableConfig.GetCurrentSchemeName() != rSchemeName)
+ {
+ aEditableConfig.LoadScheme(rSchemeName);
+ }
+ }
+
break;
}
diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx
index 0d7d7f14ff99..1a6cc15fc3fc 100644
--- a/sfx2/source/view/viewsh.cxx
+++ b/sfx2/source/view/viewsh.cxx
@@ -2323,6 +2323,12 @@ vcl::Window* SfxViewShell::GetEditWindowForActiveOLEObj() const
return {};
}
+OUString SfxViewShell::GetColorConfigName() const
+{
+ SAL_WARN("sfx.view", "SfxViewShell::GetColorConfigName not overriden!");
+ return {};
+}
+
void SfxViewShell::SetLOKLanguageTag(const OUString& rBcp47LanguageTag)
{
LanguageTag aTag(rBcp47LanguageTag, true);
diff --git a/sw/inc/view.hxx b/sw/inc/view.hxx
index b1d2ea5b9e90..dee2363dedd9 100644
--- a/sw/inc/view.hxx
+++ b/sw/inc/view.hxx
@@ -676,6 +676,8 @@ public:
void NotifyCursor(SfxViewShell* pViewShell) const override;
/// See SfxViewShell::GetColorConfigColor().
::Color GetColorConfigColor(svtools::ColorConfigEntry nColorType) const override;
+ /// See SfxViewShell::GetColorConfigName().
+ OUString GetColorConfigName() const override;
void ShowUIElement(const OUString& sElementURL) const;
diff --git a/sw/inc/viewopt.hxx b/sw/inc/viewopt.hxx
index 4ff2d1a43956..b82b970cb540 100644
--- a/sw/inc/viewopt.hxx
+++ b/sw/inc/viewopt.hxx
@@ -854,7 +854,7 @@ public:
inline bool SwViewOption::operator==( const SwViewOption &rOpt ) const
{
- return IsEqualFlags( rOpt ) && m_nZoom == rOpt.GetZoom() && m_aColorConfig == rOpt.m_aColorConfig;
+ return IsEqualFlags( rOpt ) && m_nZoom == rOpt.GetZoom() && m_aColorConfig == rOpt.m_aColorConfig && m_sThemeName == rOpt.m_sThemeName;
}
inline void SwViewOption::SetUIOptions( const SwViewOption& rVOpt )
diff --git a/sw/source/core/view/vnew.cxx b/sw/source/core/view/vnew.cxx
index 613a15df633b..e6d8675d6ce6 100644
--- a/sw/source/core/view/vnew.cxx
+++ b/sw/source/core/view/vnew.cxx
@@ -42,6 +42,7 @@
#include <ndgrf.hxx>
#include <ndindex.hxx>
#include <accessibilityoptions.hxx>
+#include <comphelper/lok.hxx>
void SwViewShell::Init( const SwViewOption *pNewOpt )
{
@@ -248,7 +249,21 @@ SwViewShell::SwViewShell( SwViewShell& rShell, vcl::Window *pWindow,
bool bModified = mxDoc->getIDocumentState().IsModified();
OutputDevice* pOrigOut = mpOut;
- Init( rShell.GetViewOptions() ); // might change Outdev (InitPrt())
+
+ SwViewOption aNewOpt;
+
+ if ( rShell.GetViewOptions() )
+ {
+ aNewOpt = *rShell.GetViewOptions();
+ }
+
+ if ( comphelper::LibreOfficeKit::isActive() )
+ {
+ // Do not copy the color config in tiled rendering
+ aNewOpt.SetThemeName("Default");
+ }
+
+ Init( &aNewOpt ); // might change Outdev (InitPrt())
mpOut = pOrigOut;
if ( mbPreview )
diff --git a/sw/source/uibase/uiview/viewprt.cxx b/sw/source/uibase/uiview/viewprt.cxx
index bc9c5e19b840..92ae55feb08a 100644
--- a/sw/source/uibase/uiview/viewprt.cxx
+++ b/sw/source/uibase/uiview/viewprt.cxx
@@ -316,6 +316,20 @@ void SwView::NotifyCursor(SfxViewShell* pViewShell) const
return {};
}
+OUString SwView::GetColorConfigName() const
+{
+ if (const SwViewOption* pViewOptions = GetWrtShell().GetViewOptions())
+ {
+ return pViewOptions->GetThemeName();
+ }
+ else
+ {
+ SAL_WARN("sw", "GetViewOptions() returned nullptr");
+ }
+
+ return {};
+}
+
// Create page printer/additions for SwView and SwPagePreview
std::unique_ptr<SfxTabPage> CreatePrintOptionsPage(weld::Container* pPage, weld::DialogController* pController,