summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-08-24 13:28:27 +0000
committerCarl Hetherington <carl@carlh.net>2010-08-24 13:28:27 +0000
commit2ba936f0b3ae0472653c1d47c11819c8c5c70cce (patch)
tree942396cd21490d625aadcce749829a1ef2fcea22
parent211b57b3038ccb01d3b852e43940ba24f8ba5463 (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.cc16
-rw-r--r--gtk2_ardour/port_matrix.cc11
-rw-r--r--gtk2_ardour/port_matrix_body.cc8
-rw-r--r--libs/gtkmm2ext/actions.cc4
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/actions.h2
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__ */