diff --git a/cui/source/options/optaccessibility.cxx b/cui/source/options/optaccessibility.cxx index 1f85254dae22..d0a3694a3c73 100644 --- a/cui/source/options/optaccessibility.cxx +++ b/cui/source/options/optaccessibility.cxx @@ -29,6 +29,7 @@ SvxAccessibilityOptionsTabPage::SvxAccessibilityOptionsTabPage(weld::Container* , m_xTextSelectionInReadonly(m_xBuilder->weld_check_button("textselinreadonly")) , m_xAnimatedGraphics(m_xBuilder->weld_check_button("animatedgraphics")) , m_xAnimatedTexts(m_xBuilder->weld_check_button("animatedtext")) + , m_xHighContrast(m_xBuilder->weld_combo_box("highcontrast")) , m_xAutomaticFontColor(m_xBuilder->weld_check_button("autofontcolor")) , m_xPagePreviews(m_xBuilder->weld_check_button("systempagepreviewcolor")) { @@ -60,6 +61,8 @@ bool SvxAccessibilityOptionsTabPage::FillItemSet( SfxItemSet* ) officecfg::Office::Common::Accessibility::IsAutomaticFontColor::set(m_xAutomaticFontColor->get_active(), batch); if ( !officecfg::Office::Common::Accessibility::IsSelectionInReadonly::isReadOnly() ) officecfg::Office::Common::Accessibility::IsSelectionInReadonly::set(m_xTextSelectionInReadonly->get_active(), batch); + if ( !officecfg::Office::Common::Accessibility::HighContrast::isReadOnly() ) + officecfg::Office::Common::Accessibility::HighContrast::set(m_xHighContrast->get_active(), batch); batch->commit(); AllSettings aAllSettings = Application::GetSettings(); @@ -96,6 +99,10 @@ void SvxAccessibilityOptionsTabPage::Reset( const SfxItemSet* ) if( officecfg::Office::Common::Accessibility::IsSelectionInReadonly::isReadOnly() ) m_xTextSelectionInReadonly->set_sensitive(false); + m_xHighContrast->set_active( officecfg::Office::Common::Accessibility::HighContrast::get() ); + if( officecfg::Office::Common::Accessibility::HighContrast::isReadOnly() ) + m_xHighContrast->set_sensitive(false); + AllSettings aAllSettings = Application::GetSettings(); const MiscSettings& aMiscSettings = aAllSettings.GetMiscSettings(); m_xAccessibilityTool->set_active(aMiscSettings.GetEnableATToolSupport()); diff --git a/cui/source/options/optaccessibility.hxx b/cui/source/options/optaccessibility.hxx index c53c17be1158..504e18327c7f 100644 --- a/cui/source/options/optaccessibility.hxx +++ b/cui/source/options/optaccessibility.hxx @@ -26,6 +26,7 @@ class SvxAccessibilityOptionsTabPage : public SfxTabPage std::unique_ptr m_xTextSelectionInReadonly; std::unique_ptr m_xAnimatedGraphics; std::unique_ptr m_xAnimatedTexts; + std::unique_ptr m_xHighContrast; std::unique_ptr m_xAutomaticFontColor; std::unique_ptr m_xPagePreviews; diff --git a/cui/uiconfig/ui/optaccessibilitypage.ui b/cui/uiconfig/ui/optaccessibilitypage.ui index 2643000fd246..07d89dcac65e 100644 --- a/cui/uiconfig/ui/optaccessibilitypage.ui +++ b/cui/uiconfig/ui/optaccessibilitypage.ui @@ -135,6 +135,56 @@ 6 vertical 6 + + + + True + False + True + 6 + + + True + False + High Contrast: + True + highcontrast + 0 + + + 0 + 0 + + + + + True + False + start + 0 + + Automatic + Disable + Enable + + + + Controls if high contrast mode is used. Select from "Automatic", "Disable" and "Enable". "Automatic" uses high contrast according to system settings. + + + + + 1 + 0 + + + + + False + True + 0 + + Use automatic font _color for screen display @@ -152,7 +202,7 @@ False True - 0 + 1 @@ -172,7 +222,7 @@ False True - 1 + 2 diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs index 89adf15bd234..91d4c9351f8c 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs @@ -6188,6 +6188,31 @@ Specifies settings for the accessibility options. + + + + Indicates whether High Contrast accessibility mode should be active. + + + + + + Use the default setting for the current platform. + + + + + Disable + + + + + Enable + + + + 0 + Enables the use of high contrast colors, instead of displaying diff --git a/vcl/source/window/settings.cxx b/vcl/source/window/settings.cxx index 0f36ca84f852..cc0341aff24f 100644 --- a/vcl/source/window/settings.cxx +++ b/vcl/source/window/settings.cxx @@ -25,6 +25,8 @@ #include #include +#include + #include #include @@ -219,17 +221,22 @@ void Window::ImplUpdateGlobalSettings( AllSettings& rSettings, bool bCallHdl ) c aFont.SetFontHeight( defFontheight ); aStyleSettings.SetGroupFont( aFont ); - rSettings.SetStyleSettings( aStyleSettings ); - static const char* pEnvHC = getenv( "SAL_FORCE_HC" ); const bool bForceHCMode = pEnvHC && *pEnvHC; - if( bForceHCMode ) - { - aStyleSettings = rSettings.GetStyleSettings(); + if (bForceHCMode) aStyleSettings.SetHighContrastMode( true ); - rSettings.SetStyleSettings( aStyleSettings ); + else + { + short nHighContrastMode = officecfg::Office::Common::Accessibility::HighContrast::get(); + if (nHighContrastMode != 0) // 0 Automatic, 1 Disable, 2 Enable + { + const bool bEnable = nHighContrastMode == 2; + aStyleSettings.SetHighContrastMode(bEnable); + } } + rSettings.SetStyleSettings( aStyleSettings ); + if ( bCallHdl ) GetpApp()->OverrideSystemSettings( rSettings ); }