From 4f2a33ea70c79f50449decc679e81ec3154eaecc Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 4 Dec 2023 14:18:35 +0400 Subject: [PATCH] Allow disabling window title shadow on Windows. --- ui/platform/win/ui_window_title_win.cpp | 16 ++++++++++++++-- ui/platform/win/ui_window_title_win.h | 1 + ui/widgets/widgets.style | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ui/platform/win/ui_window_title_win.cpp b/ui/platform/win/ui_window_title_win.cpp index 3433df0..7c66f78 100644 --- a/ui/platform/win/ui_window_title_win.cpp +++ b/ui/platform/win/ui_window_title_win.cpp @@ -104,9 +104,20 @@ void TitleWidget::setText(const QString &text) { void TitleWidget::setStyle(const style::WindowTitle &st) { _controls.setStyle(st); + if (!st.shadow) { + _shadow.destroy(); + } else if (!_shadow) { + _shadow.create(this, st::titleShadow); + updateShadowGeometry(); + } refreshGeometryWithWidth(window()->width()); } +void TitleWidget::updateShadowGeometry() { + const auto thickness = st::lineWidth; + _shadow->setGeometry(0, height() - thickness, width(), thickness); +} + void TitleWidget::refreshGeometryWithWidth(int width) { const auto add = additionalPadding(); setGeometry(0, 0, width, _controls.st()->height + add); @@ -136,8 +147,9 @@ void TitleWidget::paintEvent(QPaintEvent *e) { } void TitleWidget::resizeEvent(QResizeEvent *e) { - const auto thickness = st::lineWidth; - _shadow->setGeometry(0, height() - thickness, width(), thickness); + if (_shadow) { + updateShadowGeometry(); + } } HitTestResult TitleWidget::hitTest( diff --git a/ui/platform/win/ui_window_title_win.h b/ui/platform/win/ui_window_title_win.h index 7cce4dc..b98272e 100644 --- a/ui/platform/win/ui_window_title_win.h +++ b/ui/platform/win/ui_window_title_win.h @@ -61,6 +61,7 @@ private: [[nodiscard]] bool additionalPaddingRequired() const; void refreshGeometryWithWidth(int width); void setAdditionalPadding(int padding); + void updateShadowGeometry(); std::unique_ptr _paddingHelper; TitleControls _controls; diff --git a/ui/widgets/widgets.style b/ui/widgets/widgets.style index 36921c3..d34d504 100644 --- a/ui/widgets/widgets.style +++ b/ui/widgets/widgets.style @@ -558,6 +558,7 @@ WindowTitle { bgActive: color; fg: color; fgActive: color; + shadow: bool; style: TextStyle; minimize: IconButton; minimizeIconActive: icon; @@ -1428,6 +1429,7 @@ defaultWindowTitle: WindowTitle { style: TextStyle(defaultTextStyle) { font: font(semibold 12px); } + shadow: true; minimize: IconButton(windowTitleButton) { icon: icon { { windowTitleButtonSize, titleButtonBg },