From daa1dcb5e8612da1aae8eaa146153a25e90dc60f Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 20 Mar 2019 18:12:56 +0100 Subject: [PATCH] FileManager: Use a GTextEditor for the location bar + tweak icons. --- Applications/FileManager/main.cpp | 13 +++++++------ Base/res/icons/16x16/delete.png | Bin 0 -> 448 bytes Base/res/icons/16x16/delete.rgb | Bin 0 -> 1024 bytes Base/res/icons/16x16/mkdir.png | Bin 0 -> 6070 bytes Base/res/icons/16x16/mkdir.rgb | Bin 0 -> 1024 bytes LibGUI/GTextEditor.cpp | 8 +++++++- 6 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 Base/res/icons/16x16/delete.png create mode 100644 Base/res/icons/16x16/delete.rgb create mode 100644 Base/res/icons/16x16/mkdir.png create mode 100644 Base/res/icons/16x16/mkdir.rgb diff --git a/Applications/FileManager/main.cpp b/Applications/FileManager/main.cpp index d7b4ab5c9d..2fa31f2dc2 100644 --- a/Applications/FileManager/main.cpp +++ b/Applications/FileManager/main.cpp @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include #include @@ -36,20 +36,21 @@ int main(int argc, char** argv) auto* main_toolbar = new GToolBar(widget); auto* location_toolbar = new GToolBar(widget); - auto* location_textbox = new GTextBox(location_toolbar); + location_toolbar->set_preferred_size({ 0, 21 }); + auto* location_textbox = new GTextEditor(GTextEditor::SingleLine, 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()); + location_textbox->on_return_pressed = [directory_table_view] (auto& editor) { + directory_table_view->open(editor.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(); }); - auto mkdir_action = GAction::create("New directory...", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/mkdir16.rgb", { 16, 16 }), [] (const GAction&) { + auto mkdir_action = GAction::create("New directory...", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/mkdir.rgb", { 16, 16 }), [] (const GAction&) { dbgprintf("'New directory' action activated!\n"); }); @@ -57,7 +58,7 @@ int main(int argc, char** argv) dbgprintf("'Copy' action activated!\n"); }); - auto delete_action = GAction::create("Delete", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/trash16.rgb", { 16, 16 }), [] (const GAction&) { + auto delete_action = GAction::create("Delete", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/delete.rgb", { 16, 16 }), [] (const GAction&) { dbgprintf("'Delete' action activated!\n"); }); diff --git a/Base/res/icons/16x16/delete.png b/Base/res/icons/16x16/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..f271da46e779862d9f16218737f30b5e80975d3a GIT binary patch literal 448 zcmV;x0YCnUP)1fntBf6^0dJX#pvGu{on-PZ$}YCEz1A$o&NxQW=awTc~Or50000D)bR*VCK|lGcdHOBE(^KBI`qEr#m3j!^{EEAajTX zu<(KDuLp)Nu>jexF#RAJSC}H3i>?>sjyQjWe~{H;VE z1iCDKH`Hn&?M)KQ6b!OaaMv SD8qOV8YC7KMtuH*=mG!$K7h~w literal 0 HcmV?d00001 diff --git a/Base/res/icons/16x16/mkdir.png b/Base/res/icons/16x16/mkdir.png new file mode 100644 index 0000000000000000000000000000000000000000..012fff339ddc67438721beb9b945998f2fa8a537 GIT binary patch literal 6070 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 literal 0 HcmV?d00001 diff --git a/Base/res/icons/16x16/mkdir.rgb b/Base/res/icons/16x16/mkdir.rgb new file mode 100644 index 0000000000000000000000000000000000000000..a32de690b742ec64965a1805428ad04e3714de4f GIT binary patch literal 1024 zcmchV?JI*(7{>iS{s#UA-+fWkm@LCEnZ4PIQK-qtOPiN@8)ja%e4uD*HPONt8#6Pd zX~L#8mvc@|m_4PGQ&)G-{hZ%@UFUgDQPKY{O$Mn#jwPaAd{v=6v`2X4zvEnSnG9UK z$E)_?h0Uit?HSU!J3fa#bI!bd44d}X{YnGy6ixf6`lyQ1iHMxk1cKsg_R z;V}#OOpxVhvK@eak3#voHsa8&#-MdxLbDWxlK3iSPtj&SM(b37@%5wog8q8f^+)Ci zItbfNSh@WKErgZX4xxU^K{DbKzNQQh6TlOF_?+EfrN9Z&2L;y|J14xN4&0K5oqMEQ(eOo{H v(&|1a=7LP}=_53Ac6=Wal37eLiw1U4*}sK~p3QGOzXS9h{8s$m{k6UWjjrLI literal 0 HcmV?d00001 diff --git a/LibGUI/GTextEditor.cpp b/LibGUI/GTextEditor.cpp index 5a4d61584e..06ab76f1a2 100644 --- a/LibGUI/GTextEditor.cpp +++ b/LibGUI/GTextEditor.cpp @@ -26,6 +26,9 @@ GTextEditor::~GTextEditor() void GTextEditor::set_text(const String& text) { + if (is_single_line() && text.length() == m_lines[0]->length() && !memcmp(text.characters(), m_lines[0]->characters(), text.length())) + return; + m_lines.clear(); int start_of_current_line = 0; @@ -44,7 +47,10 @@ void GTextEditor::set_text(const String& text) } add_line(i); update_content_size(); - set_cursor(0, 0); + if (is_single_line()) + set_cursor(0, m_lines[0]->length()); + else + set_cursor(0, 0); update(); }