diff --git a/src/DirectoryView.cpp b/src/DirectoryView.cpp index fe1b904..120084f 100644 --- a/src/DirectoryView.cpp +++ b/src/DirectoryView.cpp @@ -15,11 +15,14 @@ void DirectoryView::set_current_path(std::filesystem::path path) { window()->queue_microtask([this]() { target()->clear_children(); for (const auto &entry : std::filesystem::directory_iterator(m_current_path)) { + std::string filename = entry.path().filename(); auto button = m_target->add( entry.path().filename(), - entry.is_directory() ? FileButton::ButtonType::Directory : FileButton::ButtonType::File, - this + entry.is_directory() ? FileButton::ButtonType::Directory : FileButton::ButtonType::File ); + button->on_click = [this, filename]() { + navigate_relative(filename); + }; } }); } diff --git a/src/FileButton.cpp b/src/FileButton.cpp index b111686..67b96df 100644 --- a/src/FileButton.cpp +++ b/src/FileButton.cpp @@ -32,9 +32,3 @@ void FileButton::on_init() { label->rect().set_max_height(24); set_did_init(true); } - -void FileButton::on_activation_update(Raven::ActivationUpdateEvent &event) { - if (event.activation_status() == false && m_directory_view) { - m_directory_view->navigate_relative(m_name); - } -} diff --git a/src/FileButton.hpp b/src/FileButton.hpp index cf43842..18fb0ca 100644 --- a/src/FileButton.hpp +++ b/src/FileButton.hpp @@ -18,18 +18,15 @@ public: File }; public: - FileButton(std::string name, ButtonType button_type, DirectoryView* directory_view) + FileButton(std::string name, ButtonType button_type) : Raven::Widget() - , m_directory_view(directory_view) , m_button_type(button_type) , m_name(name) {} std::string &name() { return m_name; } protected: void on_init(); - void on_activation_update(Raven::ActivationUpdateEvent &event); private: - DirectoryView* m_directory_view; ButtonType m_button_type; std::string m_name; };