From 0a6cbe8cddc41513fcd01e5638dab191784cf3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= Date: Fri, 10 Mar 2023 11:50:23 +0000 Subject: [PATCH] Use sifr/sifr_dark for gnome see https://pagure.io/fedora-workstation/issue/361 --- 0001-Use-sifr-and-sifr_dark-for-gnome.patch | 178 ++++++++++++++++++++ libreoffice.spec | 11 +- 2 files changed, 186 insertions(+), 3 deletions(-) create mode 100644 0001-Use-sifr-and-sifr_dark-for-gnome.patch diff --git a/0001-Use-sifr-and-sifr_dark-for-gnome.patch b/0001-Use-sifr-and-sifr_dark-for-gnome.patch new file mode 100644 index 0000000..1ad8bbb --- /dev/null +++ b/0001-Use-sifr-and-sifr_dark-for-gnome.patch @@ -0,0 +1,178 @@ +From e1464f8601289630d3fd4aed2f4163c07163a52d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Fri, 10 Mar 2023 11:41:45 +0000 +Subject: [PATCH] Use sifr and sifr_dark for gnome + +explicitly use: + breeze/breeze_dark for plasma + sukapura/sukapura_dark for macOS + colibre/colibre_dark for win + +originally we only had one dark theme so in a dark theme there was only +one option available, but there's now a bunch to choose from. + +https://pagure.io/fedora-workstation/issue/361 + +"Fedora Workstation currently uses the rather outdated-looking +Elementary icon theme for LibreOffice, instead of the Sifr icon theme +which was designed to fit in with GNOME's icons. The Sifr theme saw a +nice update with LibreOffice 7.5, the version being shipped in Fedora +Linux 38, which makes the icons fit better with the current GNOME design +language. + +Also, in Fedora Workstation 38, if you change GNOME to dark mode, +LibreOffice's icons change from the colourful Elementary icon set to the +monochrome Breeze Dark set, which is a jarring change. The Sifr icons +have both a light and dark theme, so it would be much more conistent to +use them. It's also worth noting that the Breeze icons were designed for +KDE Plasma, not GNOME, so they look even more out of place than the +Elementary icons." + +Change-Id: Ic37bbe8e7ad754ab070ead06dc0b006c6ccf3adb +--- + vcl/inc/IconThemeSelector.hxx | 8 ++-- + vcl/qa/cppunit/app/test_IconThemeSelector.cxx | 6 +-- + vcl/source/app/IconThemeSelector.cxx | 42 +++++++++++++------ + 3 files changed, 36 insertions(+), 20 deletions(-) + +diff --git a/vcl/inc/IconThemeSelector.hxx b/vcl/inc/IconThemeSelector.hxx +index 8dab03d3a8d2..0bfbf2034858 100644 +--- a/vcl/inc/IconThemeSelector.hxx ++++ b/vcl/inc/IconThemeSelector.hxx +@@ -77,12 +77,12 @@ private: + static OUString + ReturnFallback(const std::vector& installedThemes); + +- /** The name of the icon theme which is used as fallback */ +- static constexpr OUStringLiteral FALLBACK_ICON_THEME_ID = u"colibre"; +- ++ /** The name of the icon themes which are used as fallbacks */ ++ static constexpr OUStringLiteral FALLBACK_LIGHT_ICON_THEME_ID = u"colibre"; ++ static constexpr OUStringLiteral FALLBACK_DARK_ICON_THEME_ID = u"colibre_dark"; + + static OUString +- GetIconThemeForDesktopEnvironment(const OUString& desktopEnvironment); ++ GetIconThemeForDesktopEnvironment(const OUString& desktopEnvironment, bool bPreferDarkIconTheme); + + OUString mPreferredIconTheme; + bool mUseHighContrastTheme; +diff --git a/vcl/qa/cppunit/app/test_IconThemeSelector.cxx b/vcl/qa/cppunit/app/test_IconThemeSelector.cxx +index 94d53b43d309..8d1aea0c3889 100644 +--- a/vcl/qa/cppunit/app/test_IconThemeSelector.cxx ++++ b/vcl/qa/cppunit/app/test_IconThemeSelector.cxx +@@ -85,7 +85,7 @@ IconThemeSelectorTest::ElementaryIsReturnedForGnomeDesktop() + std::vector themes = GetFakeInstalledThemes(); + vcl::IconThemeSelector s; + OUString r = s.SelectIconThemeForDesktopEnvironment(themes, "gnome"); +- CPPUNIT_ASSERT_EQUAL_MESSAGE("'elementary' theme is returned for gnome desktop", OUString("elementary"), r); ++ CPPUNIT_ASSERT_EQUAL_MESSAGE("'sifr' theme is returned for gnome desktop", OUString("sifr"), r); + } + + void +@@ -96,7 +96,7 @@ IconThemeSelectorTest::ThemeIsOverriddenByPreferredTheme() + s.SetPreferredIconTheme(preferred, false); + std::vector themes = GetFakeInstalledThemes(); + OUString selected = s.SelectIconThemeForDesktopEnvironment(themes, "gnome"); +- CPPUNIT_ASSERT_EQUAL_MESSAGE("'elementary' theme is overridden by breeze", preferred, selected); ++ CPPUNIT_ASSERT_EQUAL_MESSAGE("'sifr' theme is overridden by breeze", preferred, selected); + } + + void +@@ -148,7 +148,7 @@ IconThemeSelectorTest::FallbackThemeIsReturnedForEmptyInput() + vcl::IconThemeSelector s; + OUString selected = s.SelectIconTheme(std::vector(), "colibre"); + CPPUNIT_ASSERT_EQUAL_MESSAGE("fallback is returned for empty input", +- OUString(vcl::IconThemeSelector::FALLBACK_ICON_THEME_ID), selected); ++ OUString(vcl::IconThemeSelector::FALLBACK_LIGHT_ICON_THEME_ID), selected); + } + + void +diff --git a/vcl/source/app/IconThemeSelector.cxx b/vcl/source/app/IconThemeSelector.cxx +index fd32008d9414..ee30e577f3f5 100644 +--- a/vcl/source/app/IconThemeSelector.cxx ++++ b/vcl/source/app/IconThemeSelector.cxx +@@ -51,30 +51,50 @@ IconThemeSelector::IconThemeSelector() + } + + /*static*/ OUString +-IconThemeSelector::GetIconThemeForDesktopEnvironment(const OUString& desktopEnvironment) ++IconThemeSelector::GetIconThemeForDesktopEnvironment(const OUString& desktopEnvironment, bool bPreferDarkIconTheme) + { + if (comphelper::LibreOfficeKit::isActive()) +- return "colibre"; ++ { ++ if (!bPreferDarkIconTheme) ++ return "colibre"; ++ else ++ return "colibre_dark"; ++ } + + #ifdef _WIN32 + (void)desktopEnvironment; +- return "colibre"; ++ if (!bPreferDarkIconTheme) ++ return "colibre"; ++ else ++ return "colibre_dark"; + #else + OUString r; + if ( desktopEnvironment.equalsIgnoreAsciiCase("plasma5") || + desktopEnvironment.equalsIgnoreAsciiCase("lxqt") ) { +- r = "breeze"; ++ if (!bPreferDarkIconTheme) ++ r = "breeze"; ++ else ++ r = "breeze_dark"; + } + else if ( desktopEnvironment.equalsIgnoreAsciiCase("macosx") ) { +- r = "sukapura"; ++ if (!bPreferDarkIconTheme) ++ r = "sukapura"; ++ else ++ r = "sukapura_dark"; + } + else if ( desktopEnvironment.equalsIgnoreAsciiCase("gnome") || + desktopEnvironment.equalsIgnoreAsciiCase("mate") || + desktopEnvironment.equalsIgnoreAsciiCase("unity") ) { +- r = "elementary"; ++ if (!bPreferDarkIconTheme) ++ r = "sifr"; ++ else ++ r = "sifr_dark"; + } else + { +- r = FALLBACK_ICON_THEME_ID; ++ if (!bPreferDarkIconTheme) ++ r = FALLBACK_LIGHT_ICON_THEME_ID; ++ else ++ r = FALLBACK_DARK_ICON_THEME_ID; + } + return r; + #endif // _WIN32 +@@ -89,13 +109,9 @@ IconThemeSelector::SelectIconThemeForDesktopEnvironment( + if (icon_theme_is_in_installed_themes(mPreferredIconTheme, installedThemes)) { + return mPreferredIconTheme; + } +- //if a dark variant is preferred, and we didn't have an exact match, then try our one and only dark theme +- if (mPreferDarkIconTheme && icon_theme_is_in_installed_themes("breeze_dark", installedThemes)) { +- return "breeze_dark"; +- } + } + +- OUString themeForDesktop = GetIconThemeForDesktopEnvironment(desktopEnvironment); ++ OUString themeForDesktop = GetIconThemeForDesktopEnvironment(desktopEnvironment, mPreferDarkIconTheme); + if (icon_theme_is_in_installed_themes(themeForDesktop, installedThemes)) { + return themeForDesktop; + } +@@ -177,7 +193,7 @@ IconThemeSelector::ReturnFallback(const std::vector& installedThe + return installedThemes.front().GetThemeId(); + } + else { +- return FALLBACK_ICON_THEME_ID; ++ return FALLBACK_LIGHT_ICON_THEME_ID; + } + } + +-- +2.39.2 + diff --git a/libreoffice.spec b/libreoffice.spec index 7173ed0..3c330d3 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -55,7 +55,7 @@ Summary: Free Software Productivity Suite Name: libreoffice Epoch: 1 Version: %{libo_version}.2 -Release: 2%{?libo_prerelease}%{?dist} +Release: 3%{?libo_prerelease}%{?dist} # default new files are: MPLv2 # older files are typically: MPLv2 incorporating work under ASLv2 # nlpsolver is: LGPLv3 @@ -267,9 +267,10 @@ Patch2: 0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch Patch3: 0001-Revert-tdf-101630-gdrive-support-w-oAuth-and-Drive-A.patch Patch4: 0001-don-t-crash-with-disable-pdfium.patch Patch5: 0001-tdf-152073-tdf-153895-basicide-Set-bg-color-for-bord.patch +Patch6: 0001-Use-sifr-and-sifr_dark-for-gnome.patch # TODO investigate these -Patch6: 0001-aarch64-failing-here.patch -Patch7: 0001-include-filename-if-the-test-fails.patch +Patch7: 0001-aarch64-failing-here.patch +Patch8: 0001-include-filename-if-the-test-fails.patch # not upstreamed Patch500: 0001-disable-libe-book-support.patch @@ -2273,6 +2274,10 @@ gtk-update-icon-cache -q %{_datadir}/icons/hicolor &>/dev/null || : %{_includedir}/LibreOfficeKit %changelog +* Fri Mar 10 2023 Caolán McNamara - 1:7.5.1.2-3 +- Use sifr/sifr_dark for gnome, + https://pagure.io/fedora-workstation/issue/361 + * Thu Mar 09 2023 Caolán McNamara - 1:7.5.1.2-2 - fix gray background in kf5 print preview