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 /gtk2_ardour | |
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
Diffstat (limited to 'gtk2_ardour')
-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 |
3 files changed, 26 insertions, 9 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 (); |