diff options
author | Carl Hetherington <carl@carlh.net> | 2010-08-24 13:28:27 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-08-24 13:28:27 +0000 |
commit | 2ba936f0b3ae0472653c1d47c11819c8c5c70cce (patch) | |
tree | 942396cd21490d625aadcce749829a1ef2fcea22 | |
parent | 211b57b3038ccb01d3b852e43940ba24f8ba5463 (diff) |
Fix port matrix menu checkbox when the window is closed. Make the port matrix origin the bottom left when tabs are on left and bottom. Don't shrink the port matrix when auto-resizing it.
git-svn-id: svn://localhost/ardour2/branches/3.0@7673 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/ardour_ui_ed.cc | 16 | ||||
-rw-r--r-- | gtk2_ardour/port_matrix.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/port_matrix_body.cc | 8 | ||||
-rw-r--r-- | libs/gtkmm2ext/actions.cc | 4 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/actions.h | 2 |
5 files changed, 30 insertions, 11 deletions
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 4f1f980751..e493de0be2 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -751,14 +751,22 @@ ARDOUR_UI::save_ardour_state () void ARDOUR_UI::toggle_global_port_matrix (ARDOUR::DataType t) { + std::string const action = string_compose ("toggle-%1-connection-manager", t.to_string ()); + if (_global_port_matrix[t]->get() == 0) { _global_port_matrix[t]->set (new GlobalPortMatrixWindow (_session, t)); + _global_port_matrix[t]->get()->signal_unmap().connect(sigc::bind (sigc::ptr_fun (&ActionManager::uncheck_toggleaction), string_compose (X_("<Actions>/Common/%1"), action))); } - if (_global_port_matrix[t]->get()->is_visible ()) { - _global_port_matrix[t]->get()->hide (); - } else { - _global_port_matrix[t]->get()->present (); + RefPtr<Action> act = ActionManager::get_action (X_("Common"), action.c_str()); + if (act) { + RefPtr<ToggleAction> tact = RefPtr<ToggleAction>::cast_dynamic (act); + + if (tact->get_active()) { + _global_port_matrix[t]->get()->present (); + } else { + _global_port_matrix[t]->get()->hide (); + } } } diff --git a/gtk2_ardour/port_matrix.cc b/gtk2_ardour/port_matrix.cc index f3559cbb21..3be5458973 100644 --- a/gtk2_ardour/port_matrix.cc +++ b/gtk2_ardour/port_matrix.cc @@ -787,7 +787,16 @@ PortMatrix::body_dimensions_changed () _vspacer.hide (); } - pair<uint32_t, uint32_t> const m = max_size (); + int curr_width; + int curr_height; + _parent->get_size (curr_width, curr_height); + + pair<uint32_t, uint32_t> m = max_size (); + + /* Don't shrink the window */ + m.first = max (int (m.first), curr_width); + m.second = max (int (m.second), curr_height); + resize_window_to_proportion_of_monitor (_parent, m.first, m.second); } diff --git a/gtk2_ardour/port_matrix_body.cc b/gtk2_ardour/port_matrix_body.cc index 73eae929b9..009c63fa2a 100644 --- a/gtk2_ardour/port_matrix_body.cc +++ b/gtk2_ardour/port_matrix_body.cc @@ -223,21 +223,21 @@ PortMatrixBody::compute_rectangles () } else if (_matrix->arrangement() == PortMatrix::LEFT_TO_BOTTOM) { col_rect.set_height (min (_alloc_height, col.second)); + row_rect.set_height (std::min (_alloc_height - col_rect.get_height(), row.second)); row_rect.set_x (0); - row_rect.set_y (0); + row_rect.set_y (_alloc_height - row_rect.get_height() - col_rect.get_height()); row_rect.set_width (min (_alloc_width, row.first)); - row_rect.set_height (std::min (_alloc_height - col_rect.get_height(), row.second)); grid_rect.set_x (row_rect.get_width()); - grid_rect.set_y (0); + grid_rect.set_y (_alloc_height - row_rect.get_height() - col_rect.get_height()); grid_rect.set_width (std::min (_alloc_width - row_rect.get_width(), grid.first)); grid_rect.set_height (row_rect.get_height ()); col_rect.set_width (grid_rect.get_width () + col_overhang); col_rect.set_x (row_rect.get_width() + grid_rect.get_width() - col_rect.get_width()); _column_labels_border_x = col_rect.get_x () >= 0 ? col_rect.get_x () : 0; - col_rect.set_y (row_rect.get_height()); + col_rect.set_y (_alloc_height - col_rect.get_height()); } _column_labels_height = col_rect.get_height (); diff --git a/libs/gtkmm2ext/actions.cc b/libs/gtkmm2ext/actions.cc index bff718e9b7..e9ff15fa46 100644 --- a/libs/gtkmm2ext/actions.cc +++ b/libs/gtkmm2ext/actions.cc @@ -268,8 +268,10 @@ ActionManager::set_sensitive (vector<RefPtr<Action> >& actions, bool state) } void -ActionManager::uncheck_toggleaction (const char * name) +ActionManager::uncheck_toggleaction (string n) { + char const * name = n.c_str (); + const char *last_slash = strrchr (name, '/'); if (last_slash == 0) { diff --git a/libs/gtkmm2ext/gtkmm2ext/actions.h b/libs/gtkmm2ext/gtkmm2ext/actions.h index 5616bbb302..da19015313 100644 --- a/libs/gtkmm2ext/gtkmm2ext/actions.h +++ b/libs/gtkmm2ext/gtkmm2ext/actions.h @@ -77,7 +77,7 @@ namespace ActionManager { std::vector<std::string>& paths, std::vector<Gtk::AccelKey>& bindings); - extern void uncheck_toggleaction (const char * actionname); + extern void uncheck_toggleaction (std::string); }; #endif /* __libgtkmm2ext_actions_h__ */ |