LibGfx+WindowServer: Simplify notification window frame theming

Don't require theme clients to provide the frame rect, the theme can
compute that internally based on the window rect.
This commit is contained in:
Andreas Kling 2020-08-23 13:17:34 +02:00
parent 0944f56181
commit 85e818206c
4 changed files with 7 additions and 6 deletions

View file

@ -135,9 +135,11 @@ ClassicWindowTheme::FrameColors ClassicWindowTheme::compute_frame_colors(WindowS
}
}
void ClassicWindowTheme::paint_notification_frame(Painter& painter, const IntRect& outer_rect, const IntRect& window_rect, const Palette& palette, const IntRect& close_button_rect) const
void ClassicWindowTheme::paint_notification_frame(Painter& painter, const IntRect& window_rect, const Palette& palette, const IntRect& close_button_rect) const
{
Gfx::StylePainter::paint_window_frame(painter, outer_rect, palette);
auto frame_rect = frame_rect_for_window(WindowType::Notification, window_rect, palette);
frame_rect.set_location({ 0, 0 });
Gfx::StylePainter::paint_window_frame(painter, frame_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());

View file

@ -37,7 +37,7 @@ public:
virtual ~ClassicWindowTheme() override;
virtual void paint_normal_frame(Painter&, WindowState, 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& outer_rect, const IntRect& window_rect, const Palette&, const IntRect& close_button_rect) const override;
virtual void paint_notification_frame(Painter&, 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;

View file

@ -51,7 +51,7 @@ public:
static WindowTheme& current();
virtual void paint_normal_frame(Painter&, WindowState, 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& outer_rect, const IntRect& window_rect, const Palette&, const IntRect& close_button_rect) const = 0;
virtual void paint_notification_frame(Painter&, 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;

View file

@ -172,8 +172,7 @@ Gfx::WindowTheme::WindowState WindowFrame::window_state_for_theme() const
void WindowFrame::paint_notification_frame(Gfx::Painter& painter)
{
auto palette = WindowManager::the().palette();
Gfx::IntRect outer_rect = { {}, rect().size() };
Gfx::WindowTheme::current().paint_notification_frame(painter, outer_rect, m_window.rect(), palette, m_buttons.last().relative_rect());
Gfx::WindowTheme::current().paint_notification_frame(painter, m_window.rect(), palette, m_buttons.last().relative_rect());
}
void WindowFrame::paint_normal_frame(Gfx::Painter& painter)