diff --git a/Applications/FileManager/main.cpp b/Applications/FileManager/main.cpp index 2cf086ded4..3e166b0661 100644 --- a/Applications/FileManager/main.cpp +++ b/Applications/FileManager/main.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -33,10 +34,17 @@ int main(int argc, char** argv) auto* widget = new GWidget; widget->set_layout(make(Orientation::Vertical)); - auto* toolbar = new GToolBar(widget); + auto* main_toolbar = new GToolBar(widget); + auto* location_toolbar = new GToolBar(widget); + auto* location_textbox = new GTextBox(location_toolbar); + auto* directory_table_view = new DirectoryTableView(widget); auto* statusbar = new GStatusBar(widget); + location_textbox->on_return_pressed = [directory_table_view] (GTextBox& textbox) { + directory_table_view->open(textbox.text()); + }; + auto open_parent_directory_action = GAction::create("Open parent directory", { Mod_Alt, Key_Up }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/parentdirectory16.rgb", { 16, 16 }), [directory_table_view] (const GAction&) { directory_table_view->open_parent_directory(); }); @@ -77,13 +85,14 @@ int main(int argc, char** argv) app.set_menubar(move(menubar)); - toolbar->add_action(open_parent_directory_action.copy_ref()); - toolbar->add_action(mkdir_action.copy_ref()); - toolbar->add_action(copy_action.copy_ref()); - toolbar->add_action(delete_action.copy_ref()); + main_toolbar->add_action(open_parent_directory_action.copy_ref()); + main_toolbar->add_action(mkdir_action.copy_ref()); + main_toolbar->add_action(copy_action.copy_ref()); + main_toolbar->add_action(delete_action.copy_ref()); - directory_table_view->on_path_change = [window] (const String& new_path) { + directory_table_view->on_path_change = [window, location_textbox] (const String& new_path) { window->set_title(String::format("FileManager: %s", new_path.characters())); + location_textbox->set_text(new_path); }; directory_table_view->on_status_message = [statusbar] (String message) { diff --git a/LibGUI/GBoxLayout.cpp b/LibGUI/GBoxLayout.cpp index 86e8d43ac7..0f4e5265dd 100644 --- a/LibGUI/GBoxLayout.cpp +++ b/LibGUI/GBoxLayout.cpp @@ -66,7 +66,6 @@ void GBoxLayout::run(GWidget& widget) dbgprintf("GBoxLayout: automatic_size=%s\n", automatic_size.to_string().characters()); #endif - // FIXME: We should also respect the bottom and right margins. int current_x = margins().left(); int current_y = margins().top(); @@ -77,7 +76,7 @@ void GBoxLayout::run(GWidget& widget) ASSERT_NOT_REACHED(); } ASSERT(entry.widget); - rect.set_size(automatic_size); + rect.set_size({ automatic_size.width() - margins().left() - margins().right(), automatic_size.height() - margins().top() - margins().bottom() }); if (entry.widget->size_policy(Orientation::Vertical) == SizePolicy::Fixed) rect.set_height(entry.widget->preferred_size().height()); if (entry.widget->size_policy(Orientation::Horizontal) == SizePolicy::Fixed) diff --git a/LibGUI/GTextBox.cpp b/LibGUI/GTextBox.cpp index 64c792c8e1..b0c0422b0a 100644 --- a/LibGUI/GTextBox.cpp +++ b/LibGUI/GTextBox.cpp @@ -15,9 +15,11 @@ GTextBox::~GTextBox() { } -void GTextBox::set_text(String&& text) +void GTextBox::set_text(const String& text) { - m_text = move(text); + if (m_text == text) + return; + m_text = text; m_cursor_position = m_text.length(); update(); } diff --git a/LibGUI/GTextBox.h b/LibGUI/GTextBox.h index ed14745b93..f195b28030 100644 --- a/LibGUI/GTextBox.h +++ b/LibGUI/GTextBox.h @@ -9,7 +9,7 @@ public: virtual ~GTextBox() override; String text() const { return m_text; } - void set_text(String&&); + void set_text(const String&); Function on_return_pressed; Function on_change; diff --git a/LibGUI/GToolBar.cpp b/LibGUI/GToolBar.cpp index 8e30c44e53..e8d6365493 100644 --- a/LibGUI/GToolBar.cpp +++ b/LibGUI/GToolBar.cpp @@ -8,10 +8,10 @@ GToolBar::GToolBar(GWidget* parent) : GWidget(parent) { set_size_policy(SizePolicy::Fill, SizePolicy::Fixed); - set_preferred_size({ 0, 29 }); + set_preferred_size({ 0, 30 }); set_layout(make(Orientation::Horizontal)); layout()->set_spacing(0); - layout()->set_margins({1, 1, 1, 1}); + layout()->set_margins({ 2, 2, 2, 2 }); } GToolBar::~GToolBar()