From 5f311bd9a0489de35106c8c5fc492f743b9aacd8 Mon Sep 17 00:00:00 2001 From: milleniumbug Date: Sat, 9 Apr 2016 21:19:24 +0200 Subject: [PATCH] Made creating files in root directory possible --- src/directories.cc | 33 ++++++++++++++++++++++++++++++--- src/directories.h | 5 ++++- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/directories.cc b/src/directories.cc index e0fd174..6564e14 100644 --- a/src/directories.cc +++ b/src/directories.cc @@ -299,8 +299,8 @@ Directories::Directories() : Gtk::TreeView(), stop_update_thread(false) { }); menu.append(menu_item_delete); - menu_item_create.set_label("Create file"); - menu_item_create.signal_activate().connect([this] { + auto create_file_label = "Create file"; + auto create_file_signal = [this] { if(menu_popup_row_path.empty()) return; EntryBox::get().clear(); @@ -325,11 +325,34 @@ Directories::Directories() : Gtk::TreeView(), stop_update_thread(false) { entry_it->activate(); }); EntryBox::get().show(); - }); + }; + + menu_item_create.set_label(create_file_label); + menu_item_create.signal_activate().connect(create_file_signal); menu.append(menu_item_create); menu.show_all(); menu.accelerate(*this); + + menu_root_item_create.set_label(create_file_label); + menu_root_item_create.signal_activate().connect(create_file_signal); + menu_root.append(menu_root_item_create); + + menu_root.show_all(); + menu_root.accelerate(*this); + + set_headers_clickable(); + forall([this](Gtk::Widget &widget) { + if(widget.get_name()=="GtkButton") { + widget.signal_button_press_event().connect([this](GdkEventButton *event) { + if(event->type==GDK_BUTTON_PRESS && event->button==GDK_BUTTON_SECONDARY && !path.empty()) { + menu_popup_row_path=this->path; + menu_root.popup(event->button, event->time); + } + return true; + }); + } + }); } Directories::~Directories() { @@ -429,6 +452,10 @@ bool Directories::on_button_press_event(GdkEventButton* event) { menu.popup(event->button, event->time); return true; } + else { + menu_popup_row_path=this->path; + menu_root.popup(event->button, event->time); + } } return Gtk::TreeView::on_button_press_event(event); diff --git a/src/directories.h b/src/directories.h index a458ef0..c2d22cd 100644 --- a/src/directories.h +++ b/src/directories.h @@ -68,10 +68,13 @@ private: std::atomic stop_update_thread; Dispatcher dispatcher; + Gtk::Menu menu_root; + Gtk::MenuItem menu_root_item_create; + Gtk::Menu menu; - Gtk::MenuItem menu_item_create; Gtk::MenuItem menu_item_rename; Gtk::MenuItem menu_item_delete; + Gtk::MenuItem menu_item_create; boost::filesystem::path menu_popup_row_path; };