summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMacDue <macdue@dueutil.tech>2022-04-28 20:40:41 +0100
committerAndreas Kling <kling@serenityos.org>2022-04-28 22:14:18 +0200
commitac0d708634e79f554a97b9e92e6ddecdc0b4d39b (patch)
tree2813331e16563a489c80a02816af4b6ec6e46306
parent332574608c49a42e1b0d26e4abac0bcf18e5bf73 (diff)
downloadserenity-ac0d708634e79f554a97b9e92e6ddecdc0b4d39b.zip
ThemeEditor: Add preview window with 'Highlighted' window state
This state has been occasionally missed in themes, adding it to the preview may help avoid that.
-rw-r--r--Userland/Applications/ThemeEditor/PreviewWidget.cpp17
-rw-r--r--Userland/Applications/ThemeEditor/PreviewWidget.h2
2 files changed, 19 insertions, 0 deletions
diff --git a/Userland/Applications/ThemeEditor/PreviewWidget.cpp b/Userland/Applications/ThemeEditor/PreviewWidget.cpp
index 4793a627fe..af2eea8a61 100644
--- a/Userland/Applications/ThemeEditor/PreviewWidget.cpp
+++ b/Userland/Applications/ThemeEditor/PreviewWidget.cpp
@@ -105,6 +105,8 @@ void PreviewWidget::update_preview_window_locations()
constexpr int inactive_offset_x = -20;
constexpr int inactive_offset_y = -20;
+ constexpr int hightlight_offset_x = 140;
+ constexpr int hightlight_offset_y = 60;
m_active_window_rect = Gfx::IntRect(0, 0, 320, 220);
m_inactive_window_rect = m_active_window_rect.translated(inactive_offset_x, inactive_offset_y);
@@ -119,6 +121,10 @@ void PreviewWidget::update_preview_window_locations()
m_inactive_window_rect.set_y(combind_frame_rect.y() + y_delta);
m_active_window_rect.set_x(m_inactive_window_rect.x() - inactive_offset_x);
m_active_window_rect.set_y(m_inactive_window_rect.y() - inactive_offset_y);
+ m_highlight_window_rect = Gfx::IntRect(0, 0, 160, 70)
+ .translated(m_active_window_rect.x(), m_active_window_rect.y())
+ .translated(hightlight_offset_x, hightlight_offset_y)
+ .translated(x_delta, y_delta);
m_gallery->set_relative_rect(m_active_window_rect);
}
@@ -129,10 +135,21 @@ void PreviewWidget::paint_preview(GUI::PaintEvent&)
paint_window("Active window", m_active_window_rect, Gfx::WindowTheme::WindowState::Active, inactive_window_icon());
}
+void PreviewWidget::paint_hightlight_window()
+{
+ GUI::Painter painter(*this);
+ paint_window("Highlight window", m_highlight_window_rect, Gfx::WindowTheme::WindowState::Highlighted, inactive_window_icon(), 1);
+ auto button_rect = Gfx::IntRect(0, 0, 80, 22).centered_within(m_highlight_window_rect);
+ Gfx::StylePainter::paint_button(painter, button_rect, preview_palette(), Gfx::ButtonStyle::Normal, false, false, false, true, false, false);
+ painter.draw_text(button_rect, ":^)", Gfx::TextAlignment::Center, preview_palette().color(foreground_role()), Gfx::TextElision::Right, Gfx::TextWrapping::DontWrap);
+}
+
void PreviewWidget::second_paint_event(GUI::PaintEvent&)
{
GUI::Painter painter(*this);
+ paint_hightlight_window();
+
if (!m_color_filter)
return;
diff --git a/Userland/Applications/ThemeEditor/PreviewWidget.h b/Userland/Applications/ThemeEditor/PreviewWidget.h
index 200ac76a09..0e11f433db 100644
--- a/Userland/Applications/ThemeEditor/PreviewWidget.h
+++ b/Userland/Applications/ThemeEditor/PreviewWidget.h
@@ -35,10 +35,12 @@ private:
virtual void resize_event(GUI::ResizeEvent&) override;
virtual void drop_event(GUI::DropEvent&) override;
+ void paint_hightlight_window();
void update_preview_window_locations();
Gfx::IntRect m_active_window_rect;
Gfx::IntRect m_inactive_window_rect;
+ Gfx::IntRect m_highlight_window_rect;
OwnPtr<Gfx::ColorBlindnessFilter> m_color_filter = nullptr;
RefPtr<MiniWidgetGallery> m_gallery;