diff --git a/LibGUI/GLabel.cpp b/LibGUI/GLabel.cpp index dea72b00f34..6b4769dd5e7 100644 --- a/LibGUI/GLabel.cpp +++ b/LibGUI/GLabel.cpp @@ -34,11 +34,16 @@ void GLabel::paint_event(GPaintEvent& event) { Painter painter(*this); painter.set_clip_rect(event.rect()); + if (fill_with_background_color()) painter.fill_rect({ 0, 0, width(), height() }, background_color()); if (m_icon) { - auto icon_location = rect().center().translated(-(m_icon->width() / 2), -(m_icon->height() / 2)); - painter.blit(icon_location, *m_icon, m_icon->rect()); + if (m_should_stretch_icon) { + painter.draw_scaled_bitmap(rect(), *m_icon, m_icon->rect()); + } else { + auto icon_location = rect().center().translated(-(m_icon->width() / 2), -(m_icon->height() / 2)); + painter.blit(icon_location, *m_icon, m_icon->rect()); + } } if (!text().is_empty()) painter.draw_text({ 0, 0, width(), height() }, text(), m_text_alignment, foreground_color()); diff --git a/LibGUI/GLabel.h b/LibGUI/GLabel.h index ff65ded4b16..bb8c43ddd18 100644 --- a/LibGUI/GLabel.h +++ b/LibGUI/GLabel.h @@ -22,6 +22,9 @@ public: TextAlignment text_alignment() const { return m_text_alignment; } void set_text_alignment(TextAlignment text_alignment) { m_text_alignment = text_alignment; } + bool should_stretch_icon() const { return m_should_stretch_icon; } + void set_should_stretch_icon(bool b) { m_should_stretch_icon = b; } + void size_to_fit(); virtual const char* class_name() const override { return "GLabel"; } @@ -32,5 +35,6 @@ private: String m_text; RetainPtr m_icon; TextAlignment m_text_alignment { TextAlignment::Center }; + bool m_should_stretch_icon { false }; }; diff --git a/Userland/qs.cpp b/Userland/qs.cpp index 5e0832d6027..9a6cb040d60 100644 --- a/Userland/qs.cpp +++ b/Userland/qs.cpp @@ -2,12 +2,36 @@ #include #include #include +#include +#include +#include +#include #include int main(int argc, char** argv) { GApplication app(argc, argv); + auto menubar = make(); + + auto app_menu = make("QuickShow"); + app_menu->add_action(GAction::create("Quit", { Mod_Alt, Key_F4 }, [] (const GAction&) { + GApplication::the().quit(0); + return; + })); + menubar->add_menu(move(app_menu)); + + auto file_menu = make("File"); + menubar->add_menu(move(file_menu)); + + auto help_menu = make("Help"); + help_menu->add_action(GAction::create("About", [] (const GAction&) { + dbgprintf("FIXME: Implement Help/About\n"); + })); + menubar->add_menu(move(help_menu)); + + app.set_menubar(move(menubar)); + #if 0 if (argc != 2) { printf("usage: qs \n"); @@ -32,12 +56,13 @@ int main(int argc, char** argv) window->set_rect(200, 200, bitmap->width(), bitmap->height()); auto* widget = new GWidget; - widget->set_fill_with_background_color(true); window->set_main_widget(widget); + widget->set_layout(make(Orientation::Vertical)); + auto* label = new GLabel(widget); - label->set_relative_rect({ 0, 0, bitmap->width(), bitmap->height() }); label->set_icon(move(bitmap)); + label->set_should_stretch_icon(true); window->set_should_exit_event_loop_on_close(true); window->show();