From 9a2177437bd197fc53cb1296a52f13afb5c64475 Mon Sep 17 00:00:00 2001 From: FalseHonesty Date: Fri, 29 May 2020 16:00:18 -0400 Subject: [PATCH] Browser: Add clear output button to the console --- Applications/Browser/ConsoleWidget.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/Applications/Browser/ConsoleWidget.cpp b/Applications/Browser/ConsoleWidget.cpp index d67178a824..497ea3e497 100644 --- a/Applications/Browser/ConsoleWidget.cpp +++ b/Applications/Browser/ConsoleWidget.cpp @@ -27,6 +27,7 @@ #include "ConsoleWidget.h" #include #include +#include #include #include #include @@ -59,10 +60,13 @@ ConsoleWidget::ConsoleWidget() m_output_view = add(); m_output_view->set_document(base_document); - m_input = add(); + auto& bottom_container = add(); + bottom_container.set_layout(); + bottom_container.set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed); + bottom_container.set_preferred_size(0, 22); + + m_input = bottom_container.add(); m_input->set_syntax_highlighter(make()); - m_input->set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed); - m_input->set_preferred_size(0, 22); // FIXME: Syntax Highlighting breaks the cursor's position on non fixed-width fonts. m_input->set_font(Gfx::Font::default_fixed_width_font()); m_input->set_history_enabled(true); @@ -104,6 +108,15 @@ ConsoleWidget::ConsoleWidget() print_html(JS::MarkupGenerator::html_from_value(m_interpreter->last_value())); }; + + auto& clear_button = bottom_container.add(); + clear_button.set_size_policy(GUI::SizePolicy::Fixed, GUI::SizePolicy::Fixed); + clear_button.set_preferred_size(22, 22); + clear_button.set_icon(Gfx::Bitmap::load_from_file("/res/icons/16x16/delete.png")); + clear_button.set_tooltip("Clear the console output"); + clear_button.on_click = [this](auto) { + clear_output(); + }; } ConsoleWidget::~ConsoleWidget() @@ -148,7 +161,8 @@ void ConsoleWidget::print_html(const StringView& line) void ConsoleWidget::clear_output() { - const_cast(m_output_view->document()->body())->remove_all_children(); + m_output_container->remove_all_children(); + m_output_view->update(); } }