From fc24b2b57dfae7c0474b88920fb0a8db0b83ef1a Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sun, 16 Feb 2020 07:03:23 +0100 Subject: [PATCH] LibGUI: Make ResizeCorner theme-aware --- Base/res/icons/resize-corner.png | Bin 127 -> 0 bytes Libraries/LibGUI/ResizeCorner.cpp | 57 +++++++++++++++++++++++++++--- Libraries/LibGUI/ResizeCorner.h | 3 -- 3 files changed, 53 insertions(+), 7 deletions(-) delete mode 100644 Base/res/icons/resize-corner.png diff --git a/Base/res/icons/resize-corner.png b/Base/res/icons/resize-corner.png deleted file mode 100644 index 408b88b7da2a32fd2b57f28296b07738a0a449ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7+&o +#include #include #include #include @@ -32,14 +32,55 @@ namespace GUI { +static const char* s_resize_corner_shadows_data = { + " " + " ## " + " # " + " " + " ## ## " + " # # " + " " + " ## ## ## " + " # # # " + " " + " ## ## ## ## " + " # # # # " + " " + " ## ## ## ## ## " + " # # # # # " + " " +}; + +static const char* s_resize_corner_highlights_data = { + " " + " " + " # " + " " + " " + " # # " + " " + " " + " # # # " + " " + " " + " # # # # " + " " + " " + " # # # # # " + " " +}; + +static Gfx::CharacterBitmap* s_resize_corner_shadows_bitmap; +static Gfx::CharacterBitmap* s_resize_corner_highlights_bitmap; +static const int s_resize_corner_bitmap_width = 16; +static const int s_resize_corner_bitmap_height = 16; + ResizeCorner::ResizeCorner(Widget* parent) : Widget(parent) { set_background_role(ColorRole::Button); set_size_policy(SizePolicy::Fixed, SizePolicy::Fixed); set_preferred_size(16, 16); - m_bitmap = Gfx::Bitmap::load_from_file("/res/icons/resize-corner.png"); - ASSERT(m_bitmap); } ResizeCorner::~ResizeCorner() @@ -51,7 +92,15 @@ void ResizeCorner::paint_event(PaintEvent& event) Painter painter(*this); painter.add_clip_rect(event.rect()); painter.fill_rect(rect(), palette().color(background_role())); - painter.blit({ 0, 0 }, *m_bitmap, m_bitmap->rect()); + + if (!s_resize_corner_shadows_bitmap) + s_resize_corner_shadows_bitmap = &Gfx::CharacterBitmap::create_from_ascii(s_resize_corner_shadows_data, s_resize_corner_bitmap_width, s_resize_corner_bitmap_height).leak_ref(); + painter.draw_bitmap({ 0, 0 }, *s_resize_corner_shadows_bitmap, palette().threed_shadow1()); + + if (!s_resize_corner_highlights_bitmap) + s_resize_corner_highlights_bitmap = &Gfx::CharacterBitmap::create_from_ascii(s_resize_corner_highlights_data, s_resize_corner_bitmap_width, s_resize_corner_bitmap_height).leak_ref(); + painter.draw_bitmap({ 0, 0 }, *s_resize_corner_highlights_bitmap, palette().threed_highlight()); + Widget::paint_event(event); } diff --git a/Libraries/LibGUI/ResizeCorner.h b/Libraries/LibGUI/ResizeCorner.h index ff4778ac07..2a16d2574b 100644 --- a/Libraries/LibGUI/ResizeCorner.h +++ b/Libraries/LibGUI/ResizeCorner.h @@ -40,9 +40,6 @@ protected: virtual void mousedown_event(MouseEvent&) override; virtual void enter_event(Core::Event&) override; virtual void leave_event(Core::Event&) override; - -private: - RefPtr m_bitmap; }; }