Make expander behave nicely
+19 −1 · 3 files changed
-
actions.cc+15 −0 -
actions.h+3 −0 -
gui.glade+1 −1
@@ -185,6 +185,7 @@ const char *type_info_to_name(const std::type_info *info) { Actions::Actions() : apps_view(0), + vpaned_position(-1), editing_new(false), editing(false), action_list(actions.get_root()) @@ -205,6 +206,7 @@ Actions::Actions() : widgets->get_widget("button_reset_actions", button_reset_actions); widgets->get_widget("check_show_deleted", check_show_deleted); widgets->get_widget("expander_apps", expander_apps); + widgets->get_widget("vpaned_apps", vpaned_apps); button_record->signal_clicked().connect(sigc::mem_fun(*this, &Actions::on_button_record)); button_delete->signal_clicked().connect(sigc::mem_fun(*this, &Actions::on_button_delete)); button_add->signal_clicked().connect(sigc::mem_fun(*this, &Actions::on_button_new)); @@ -276,6 +278,7 @@ Actions::Actions() : check_show_deleted->signal_toggled().connect(sigc::mem_fun(*this, &Actions::update_action_list)); expander_apps->property_expanded().signal_changed().connect(sigc::mem_fun(*this, &Actions::on_apps_selection_changed)); + expander_apps->property_expanded().signal_changed().connect(sigc::mem_fun(*this, &Actions::on_expanded)); apps_view->get_selection()->signal_changed().connect(sigc::mem_fun(*this, &Actions::on_apps_selection_changed)); apps_model = AppsStore::create(ca, this); @@ -678,6 +681,18 @@ void Actions::on_group_name_edited(const Glib::ustring& path, const Glib::ustrin update_actions(); } +void Actions::on_expanded() { + if (expander_apps->get_expanded()) { + vpaned_apps->set_position(vpaned_position); + } else { + if(vpaned_apps->property_position_set().get_value()) + vpaned_position = vpaned_apps->get_position(); + else + vpaned_position = -1; + vpaned_apps->property_position_set().set_value(false); + } +} + void Actions::on_apps_selection_changed() { ActionListDiff *new_action_list = actions.get_root(); if (expander_apps->property_expanded().get_value()) { @@ -65,6 +65,7 @@ private: void on_add_group(); void on_group_name_edited(const Glib::ustring& path, const Glib::ustring& new_text); void on_apps_selection_changed(); + void on_expanded(); void load_app_list(const Gtk::TreeNodeChildren &ch, ActionListDiff *actions); void on_cell_data_apps(Gtk::CellRenderer* cell, const Gtk::TreeModel::iterator& iter); void update_action_list(); @@ -139,7 +140,9 @@ private: Gtk::Button *button_record, *button_delete, *button_remove_app, *button_reset_actions; Gtk::CheckButton *check_show_deleted; Gtk::Expander *expander_apps; + Gtk::VPaned *vpaned_apps; + int vpaned_position; bool editing_new; bool editing; @@ -570,7 +570,7 @@ Van Diep Duong (Vietnamese)</property> <property name="border_width">6</property> <property name="spacing">6</property> <child> - <object class="GtkVPaned" id="vpaned1"> + <object class="GtkVPaned" id="vpaned_apps"> <property name="visible">True</property> <property name="can_focus">True</property> <child>