From 7187c09f4641f0d48aa89f0beb55d5e10c8a5dfa Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Thu, 26 Aug 2021 08:19:15 +0200 Subject: [PATCH] Add missing patches Resolves: bz#1968290 --- ...ort-for-highcontrast-adwaita-variant.patch | 205 ++++++++++++++++++ ...use-more-updated-window-states-value.patch | 49 +++++ 2 files changed, 254 insertions(+) create mode 100644 qgnomeplatform-add-some-additional-support-for-highcontrast-adwaita-variant.patch create mode 100644 qgnomeplatform-use-more-updated-window-states-value.patch diff --git a/qgnomeplatform-add-some-additional-support-for-highcontrast-adwaita-variant.patch b/qgnomeplatform-add-some-additional-support-for-highcontrast-adwaita-variant.patch new file mode 100644 index 0000000..c0eba2b --- /dev/null +++ b/qgnomeplatform-add-some-additional-support-for-highcontrast-adwaita-variant.patch @@ -0,0 +1,205 @@ +From 221995e661a19053d6288ef5279bd5502d0f4c17 Mon Sep 17 00:00:00 2001 +From: Jan Grulich +Date: Tue, 24 Aug 2021 13:30:26 +0200 +Subject: [PATCH] Add some additional support for HighContrast variants of + Adwaita theme + +--- + CMakeLists.txt | 2 +- + src/common/gnomesettings.cpp | 28 ++++++++++++++++++--- + src/common/gnomesettings.h | 1 + + src/common/gnomesettings_p.h | 2 ++ + src/decoration/qgnomeplatformdecoration.cpp | 14 +++++++---- + src/decoration/qgnomeplatformdecoration.h | 4 +++ + 6 files changed, 42 insertions(+), 9 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a2f9452..e6a9486 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -20,7 +20,7 @@ find_package(Qt5Gui ${QT_MIN_VERSION} CONFIG REQUIRED Private) + find_package(Qt5ThemeSupport REQUIRED) + + find_package(GSettingSchemas REQUIRED) +-find_package(AdwaitaQt "1.3.0" REQUIRED) ++find_package(AdwaitaQt "1.4.0" REQUIRED) + + find_package(PkgConfig REQUIRED) + pkg_check_modules(GTK+3 REQUIRED IMPORTED_TARGET gtk+-3.0) +diff --git a/src/common/gnomesettings.cpp b/src/common/gnomesettings.cpp +index e35fb85..717cc9b 100644 +--- a/src/common/gnomesettings.cpp ++++ b/src/common/gnomesettings.cpp +@@ -102,6 +102,11 @@ bool GnomeSettings::isGtkThemeDarkVariant() + return gnomeSettingsGlobal->isGtkThemeDarkVariant(); + } + ++bool GnomeSettings::isGtkThemeHighContrastVariant() ++{ ++ return gnomeSettingsGlobal->isGtkThemeHighContrastVariant(); ++} ++ + QString GnomeSettings::gtkTheme() + { + return gnomeSettingsGlobal->gtkTheme(); +@@ -210,7 +215,11 @@ GnomeSettingsPrivate::GnomeSettingsPrivate(QObject *parent) + loadTheme(); + loadTitlebar(); + +- m_palette = new QPalette(Adwaita::Colors::palette(m_gtkThemeDarkVariant ? Adwaita::ColorVariant::AdwaitaDark : Adwaita::ColorVariant::Adwaita)); ++ if (m_gtkThemeHighContrastVariant) { ++ m_palette = new QPalette(Adwaita::Colors::palette(m_gtkThemeDarkVariant ? Adwaita::ColorVariant::AdwaitaHighcontrastInverse : Adwaita::ColorVariant::AdwaitaHighcontrast)); ++ } else { ++ m_palette = new QPalette(Adwaita::Colors::palette(m_gtkThemeDarkVariant ? Adwaita::ColorVariant::AdwaitaDark : Adwaita::ColorVariant::Adwaita)); ++ } + + if (m_canUseFileChooserPortal) { + QTimer::singleShot(0, this, [this] () { +@@ -290,6 +299,11 @@ bool GnomeSettingsPrivate::isGtkThemeDarkVariant() const + return m_gtkThemeDarkVariant; + } + ++bool GnomeSettingsPrivate::isGtkThemeHighContrastVariant() const ++{ ++ return m_gtkThemeHighContrastVariant; ++} ++ + QString GnomeSettingsPrivate::gtkTheme() const + { + return QString(m_gtkTheme); +@@ -472,7 +486,11 @@ void GnomeSettingsPrivate::loadTheme() + } else { + qCDebug(QGnomePlatform) << "Theme name: " << m_gtkTheme; + +- if (m_gtkTheme.toLower().contains("-dark")) { ++ if (m_gtkTheme.toLower().startsWith("highcontrast")) { ++ m_gtkThemeHighContrastVariant = true; ++ } ++ ++ if (m_gtkTheme.toLower().contains("-dark") || m_gtkTheme.toLower().endsWith("inverse")) { + m_gtkThemeDarkVariant = true; + } + +@@ -481,7 +499,11 @@ void GnomeSettingsPrivate::loadTheme() + } else { + qCDebug(QGnomePlatform) << "Theme name: " << styleOverride; + +- if (styleOverride.toLower().contains("-dark")) { ++ if (styleOverride.toLower().startsWith("highcontrast")) { ++ m_gtkThemeHighContrastVariant = true; ++ } ++ ++ if (styleOverride.toLower().contains("-dark") || styleOverride.toLower().endsWith("inverse")) { + m_gtkThemeDarkVariant = true; + } + +diff --git a/src/common/gnomesettings.h b/src/common/gnomesettings.h +index 1719e8b..c186eae 100644 +--- a/src/common/gnomesettings.h ++++ b/src/common/gnomesettings.h +@@ -54,6 +54,7 @@ public: + static QVariant hint(QPlatformTheme::ThemeHint hint); + static bool canUseFileChooserPortal(); + static bool isGtkThemeDarkVariant(); ++ static bool isGtkThemeHighContrastVariant(); + static QString gtkTheme(); + static TitlebarButtons titlebarButtons(); + static TitlebarButtonsPlacement titlebarButtonPlacement(); +diff --git a/src/common/gnomesettings_p.h b/src/common/gnomesettings_p.h +index b5c1ebc..b268398 100644 +--- a/src/common/gnomesettings_p.h ++++ b/src/common/gnomesettings_p.h +@@ -50,6 +50,7 @@ public: + QPalette *palette() const; + bool canUseFileChooserPortal() const; + bool isGtkThemeDarkVariant() const; ++ bool isGtkThemeHighContrastVariant() const; + QString gtkTheme() const; + QVariant hint(QPlatformTheme::ThemeHint hint) const; + TitlebarButtons titlebarButtons() const; +@@ -80,6 +81,7 @@ private: + bool m_usePortal; + bool m_canUseFileChooserPortal = false; + bool m_gtkThemeDarkVariant = false; ++ bool m_gtkThemeHighContrastVariant = false; + TitlebarButtons m_titlebarButtons = TitlebarButton::CloseButton; + TitlebarButtonsPlacement m_titlebarButtonPlacement = TitlebarButtonsPlacement::RightPlacement; + QString m_gtkTheme = nullptr; +diff --git a/src/decoration/qgnomeplatformdecoration.cpp b/src/decoration/qgnomeplatformdecoration.cpp +index 1129b4f..f6c95bb 100644 +--- a/src/decoration/qgnomeplatformdecoration.cpp ++++ b/src/decoration/qgnomeplatformdecoration.cpp +@@ -43,7 +43,6 @@ + + #include "gnomesettings.h" + +-#include + #include + + #include +@@ -87,7 +86,12 @@ QGnomePlatformDecoration::QGnomePlatformDecoration() + // Colors + // TODO: move colors used for decorations to Adwaita-qt + const bool darkVariant = GnomeSettings::isGtkThemeDarkVariant(); +- const QPalette &palette(Adwaita::Colors::palette(darkVariant ? Adwaita::ColorVariant::AdwaitaDark : Adwaita::ColorVariant::Adwaita)); ++ const bool highContrastVariant = GnomeSettings::isGtkThemeHighContrastVariant(); ++ ++ m_adwaitaVariant = darkVariant ? highContrastVariant ? Adwaita::ColorVariant::AdwaitaHighcontrastInverse : Adwaita::ColorVariant::AdwaitaDark : ++ highContrastVariant ? Adwaita::ColorVariant::AdwaitaHighcontrast : Adwaita::ColorVariant::Adwaita; ++ ++ const QPalette &palette(Adwaita::Colors::palette(m_adwaitaVariant)); + + m_foregroundColor = palette.color(QPalette::Active, QPalette::Foreground); + m_foregroundInactiveColor = palette.color(QPalette::Inactive, QPalette::Foreground); +@@ -500,7 +504,7 @@ void QGnomePlatformDecoration::paint(QPaintDevice *device) + Adwaita::StyleOptions styleOptions(&p, buttonRect); + styleOptions.setMouseOver(true); + styleOptions.setSunken(m_clicking == Button::Close); +- styleOptions.setColorVariant(GnomeSettings::isGtkThemeDarkVariant() ? Adwaita::ColorVariant::AdwaitaDark : Adwaita::ColorVariant::Adwaita); ++ styleOptions.setColorVariant(m_adwaitaVariant); + styleOptions.setColor(Adwaita::Colors::buttonBackgroundColor(styleOptions)); + styleOptions.setOutlineColor(Adwaita::Colors::buttonOutlineColor(styleOptions)); + Adwaita::Renderer::renderFlatRoundedButtonFrame(styleOptions); +@@ -516,7 +520,7 @@ void QGnomePlatformDecoration::paint(QPaintDevice *device) + Adwaita::StyleOptions styleOptions(&p, buttonRect); + styleOptions.setMouseOver(true); + styleOptions.setSunken(m_clicking == Button::Maximize || m_clicking == Button::Restore); +- styleOptions.setColorVariant(GnomeSettings::isGtkThemeDarkVariant() ? Adwaita::ColorVariant::AdwaitaDark : Adwaita::ColorVariant::Adwaita); ++ styleOptions.setColorVariant(m_adwaitaVariant); + styleOptions.setColor(Adwaita::Colors::buttonBackgroundColor(styleOptions)); + styleOptions.setOutlineColor(Adwaita::Colors::buttonOutlineColor(styleOptions)); + Adwaita::Renderer::renderFlatRoundedButtonFrame(styleOptions); +@@ -534,7 +538,7 @@ void QGnomePlatformDecoration::paint(QPaintDevice *device) + Adwaita::StyleOptions styleOptions(&p, buttonRect); + styleOptions.setMouseOver(true); + styleOptions.setSunken(m_clicking == Button::Minimize); +- styleOptions.setColorVariant(GnomeSettings::isGtkThemeDarkVariant() ? Adwaita::ColorVariant::AdwaitaDark : Adwaita::ColorVariant::Adwaita); ++ styleOptions.setColorVariant(m_adwaitaVariant); + styleOptions.setColor(Adwaita::Colors::buttonBackgroundColor(styleOptions)); + styleOptions.setOutlineColor(Adwaita::Colors::buttonOutlineColor(styleOptions)); + Adwaita::Renderer::renderFlatRoundedButtonFrame(styleOptions); +diff --git a/src/decoration/qgnomeplatformdecoration.h b/src/decoration/qgnomeplatformdecoration.h +index 4fdcdae..f95e313 100644 +--- a/src/decoration/qgnomeplatformdecoration.h ++++ b/src/decoration/qgnomeplatformdecoration.h +@@ -22,6 +22,8 @@ + + #include + ++#include ++ + #include + + #include +@@ -92,6 +94,8 @@ private: + + // Shadows + QPixmap m_shadowPixmap; ++ ++ Adwaita::ColorVariant m_adwaitaVariant; + }; + + +-- +2.31.1 + diff --git a/qgnomeplatform-use-more-updated-window-states-value.patch b/qgnomeplatform-use-more-updated-window-states-value.patch new file mode 100644 index 0000000..d0870bb --- /dev/null +++ b/qgnomeplatform-use-more-updated-window-states-value.patch @@ -0,0 +1,49 @@ +diff --git a/src/decoration/qgnomeplatformdecoration.cpp b/src/decoration/qgnomeplatformdecoration.cpp +index 1129b4f..be4ac21 100644 +--- a/src/decoration/qgnomeplatformdecoration.cpp ++++ b/src/decoration/qgnomeplatformdecoration.cpp +@@ -178,7 +178,7 @@ QMargins QGnomePlatformDecoration::margins(MarginsType marginsType) const + #else + QMargins QGnomePlatformDecoration::margins() const + { +- if ((window()->windowStates() & Qt::WindowMaximized)) { ++ if ((waylandWindow()->windowStates() & Qt::WindowMaximized)) { + return QMargins(0, TITLEBAR_HEIGHT, 0, 0); + } + +@@ -371,7 +371,7 @@ void QGnomePlatformDecoration::paint(QPaintDevice *device) + // * * + // ******************************** + QPainterPath borderRect; +- if (!(window()->windowStates() & Qt::WindowMaximized)) { ++ if (!(waylandWindow()->windowStates() & Qt::WindowMaximized)) { + borderRect.addRoundedRect(0, 0, surfaceRect.width(), margins().top() + 8, 10, 10); + p.fillPath(borderRect.simplified(), borderColor); + } +@@ -389,7 +389,7 @@ void QGnomePlatformDecoration::paint(QPaintDevice *device) + // * * + // ******************************** + QPainterPath roundedRect; +- if ((window()->windowStates() & Qt::WindowMaximized)) { ++ if ((waylandWindow()->windowStates() & Qt::WindowMaximized)) { + roundedRect.addRect(0, 0, surfaceRect.width(), margins().top() + 8); + } else { + roundedRect.addRoundedRect(WINDOW_BORDER_WIDTH, WINDOW_BORDER_WIDTH, surfaceRect.width() - margins().left() - margins().right(), margins().top() + 8, 8, 8); +@@ -412,7 +412,7 @@ void QGnomePlatformDecoration::paint(QPaintDevice *device) + // *| |* + // *------------------------------* + // ******************************** +- if (!(window()->windowStates() & Qt::WindowMaximized)) { ++ if (!(waylandWindow()->windowStates() & Qt::WindowMaximized)) { + QPainterPath borderPath; + // Left + borderPath.addRect(0, margins().top(), margins().left(), surfaceRect.height() - margins().top() - WINDOW_BORDER_WIDTH); +@@ -522,7 +522,7 @@ void QGnomePlatformDecoration::paint(QPaintDevice *device) + Adwaita::Renderer::renderFlatRoundedButtonFrame(styleOptions); + } + decorationButtonStyle.setRect(QRect(static_cast(rect.x()) + (BUTTON_WIDTH / 4), static_cast(rect.y()) + (BUTTON_WIDTH / 4), BUTTON_WIDTH / 2, BUTTON_WIDTH / 2)); +- const Adwaita::ButtonType buttonType = (window()->windowStates() & Qt::WindowMaximized) ? Adwaita::ButtonType::ButtonRestore : Adwaita::ButtonType::ButtonMaximize; ++ const Adwaita::ButtonType buttonType = (waylandWindow()->windowStates() & Qt::WindowMaximized) ? Adwaita::ButtonType::ButtonRestore : Adwaita::ButtonType::ButtonMaximize; + Adwaita::Renderer::renderDecorationButton(decorationButtonStyle, buttonType); + } +