From b88de8a91fec2fc6115aec7829e0a0dac964a456 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Mon, 29 Mar 2021 13:26:28 -0400 Subject: [PATCH] LibGUI: Add transient option to show dotfiles in FilePicker This is particularly useful when wanting to open files in ~/.config from the Text Editor. The option is currently not persistent, but could be hooked into File Manager's configuration. --- Userland/Libraries/LibGUI/FilePicker.cpp | 13 +++++++++++++ Userland/Libraries/LibGUI/FilePicker.h | 1 + 2 files changed, 14 insertions(+) diff --git a/Userland/Libraries/LibGUI/FilePicker.cpp b/Userland/Libraries/LibGUI/FilePicker.cpp index 88672e9e36..e5f33e203c 100644 --- a/Userland/Libraries/LibGUI/FilePicker.cpp +++ b/Userland/Libraries/LibGUI/FilePicker.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -184,6 +185,18 @@ FilePicker::FilePicker(Window* parent_window, Mode mode, const StringView& file_ m_filename_textbox->set_text(node.name); }; + m_context_menu = GUI::Menu::construct(); + m_context_menu->add_action(GUI::Action::create_checkable("Show dotfiles", [&](auto& action) { + m_model->set_should_show_dotfiles(action.is_checked()); + m_model->update(); + })); + + m_view->on_context_menu_request = [&](const GUI::ModelIndex& index, const GUI::ContextMenuEvent& event) { + if (!index.is_valid()) { + m_context_menu->popup(event.screen_position()); + } + }; + auto& ok_button = *widget.find_descendant_of_type_named("ok_button"); ok_button.set_text(ok_button_name(m_mode)); ok_button.on_click = [this](auto) { diff --git a/Userland/Libraries/LibGUI/FilePicker.h b/Userland/Libraries/LibGUI/FilePicker.h index f2119fc24f..ce1de94f32 100644 --- a/Userland/Libraries/LibGUI/FilePicker.h +++ b/Userland/Libraries/LibGUI/FilePicker.h @@ -83,6 +83,7 @@ private: RefPtr m_filename_textbox; RefPtr m_location_textbox; + RefPtr m_context_menu; Mode m_mode { Mode::Open }; };