diff --git a/Libraries/LibGfx/ClassicWindowTheme.cpp b/Libraries/LibGfx/ClassicWindowTheme.cpp index ccf9c9a5c2..69ef688787 100644 --- a/Libraries/LibGfx/ClassicWindowTheme.cpp +++ b/Libraries/LibGfx/ClassicWindowTheme.cpp @@ -132,8 +132,21 @@ ClassicWindowTheme::FrameColors ClassicWindowTheme::compute_frame_colors(WindowS } } -void ClassicWindowTheme::paint_notification_frame(Painter&, const IntRect&, const Palette&) const +void ClassicWindowTheme::paint_notification_frame(Painter& painter, const IntRect& outer_rect, const IntRect& window_rect, const Palette& palette, const IntRect& close_button_rect) const { + Gfx::StylePainter::paint_window_frame(painter, outer_rect, palette); + + auto titlebar_rect = title_bar_rect(WindowType::Notification, window_rect, palette); + painter.fill_rect_with_gradient(Gfx::Orientation::Vertical, titlebar_rect, palette.active_window_border1(), palette.active_window_border2()); + + int stripe_top = close_button_rect.bottom() + 4; + int stripe_bottom = window_rect.height() - 3; + if (stripe_top && stripe_bottom && stripe_top < stripe_bottom) { + for (int i = 2; i <= palette.window_title_height() - 2; i += 2) { + painter.draw_line({ titlebar_rect.x() + i, stripe_top }, { titlebar_rect.x() + i, stripe_bottom }, palette.active_window_title_stripes()); + } + } + } } diff --git a/Libraries/LibGfx/ClassicWindowTheme.h b/Libraries/LibGfx/ClassicWindowTheme.h index f425bcfcac..c561d42901 100644 --- a/Libraries/LibGfx/ClassicWindowTheme.h +++ b/Libraries/LibGfx/ClassicWindowTheme.h @@ -37,7 +37,7 @@ public: virtual ~ClassicWindowTheme() override; virtual void paint_normal_frame(Painter&, WindowState, const IntRect& outer_rect, const IntRect& window_rect, const StringView& title, const Bitmap& icon, const Palette&, const IntRect& leftmost_button_rect) const override; - virtual void paint_notification_frame(Painter&, const IntRect&, const Palette&) const override; + virtual void paint_notification_frame(Painter&, const IntRect& outer_rect, const IntRect& window_rect, const Palette&, const IntRect& close_button_rect) const override; virtual IntRect title_bar_rect(WindowType, const IntRect& window_rect, const Palette&) const override; virtual IntRect title_bar_icon_rect(WindowType, const IntRect& window_rect, const Palette&) const override; diff --git a/Libraries/LibGfx/WindowTheme.h b/Libraries/LibGfx/WindowTheme.h index 62e774e35d..40aff8cea5 100644 --- a/Libraries/LibGfx/WindowTheme.h +++ b/Libraries/LibGfx/WindowTheme.h @@ -50,7 +50,7 @@ public: static WindowTheme& current(); virtual void paint_normal_frame(Painter&, WindowState, const IntRect& outer_rect, const IntRect& window_rect, const StringView& title, const Bitmap& icon, const Palette&, const IntRect& leftmost_button_rect) const = 0; - virtual void paint_notification_frame(Painter&, const IntRect&, const Palette&) const = 0; + virtual void paint_notification_frame(Painter&, const IntRect& outer_rect, const IntRect& window_rect, const Palette&, const IntRect& close_button_rect) const = 0; virtual IntRect title_bar_rect(WindowType, const IntRect& window_rect, const Palette&) const = 0; virtual IntRect title_bar_icon_rect(WindowType, const IntRect& window_rect, const Palette&) const = 0; diff --git a/Services/WindowServer/WindowFrame.cpp b/Services/WindowServer/WindowFrame.cpp index 21728051bb..2715d3dec0 100644 --- a/Services/WindowServer/WindowFrame.cpp +++ b/Services/WindowServer/WindowFrame.cpp @@ -161,19 +161,7 @@ void WindowFrame::paint_notification_frame(Gfx::Painter& painter) { auto palette = WindowManager::the().palette(); Gfx::IntRect outer_rect = { {}, rect().size() }; - - Gfx::StylePainter::paint_window_frame(painter, outer_rect, palette); - - auto titlebar_rect = title_bar_rect(); - painter.fill_rect_with_gradient(Gfx::Orientation::Vertical, titlebar_rect, palette.active_window_border1(), palette.active_window_border2()); - - int stripe_top = m_buttons.last().relative_rect().bottom() + 4; - int stripe_bottom = m_window.height() - 3; - if (stripe_top && stripe_bottom && stripe_top < stripe_bottom) { - for (int i = 2; i <= palette.window_title_height() - 2; i += 2) { - painter.draw_line({ titlebar_rect.x() + i, stripe_top }, { titlebar_rect.x() + i, stripe_bottom }, palette.active_window_title_stripes()); - } - } + Gfx::WindowTheme::current().paint_notification_frame(painter, outer_rect, m_window.rect(), palette, m_buttons.last().relative_rect()); } void WindowFrame::paint_normal_frame(Gfx::Painter& painter)