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
This commit is contained in:
Carl Hetherington 2010-08-24 13:28:27 +00:00
parent 211b57b303
commit 2ba936f0b3
5 changed files with 32 additions and 13 deletions

View File

@ -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 ();
}
}
}

View File

@ -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);
}

View File

@ -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_x (0);
row_rect.set_y (0);
row_rect.set_width (min (_alloc_width, row.first));
row_rect.set_height (std::min (_alloc_height - col_rect.get_height(), row.second));
row_rect.set_x (0);
row_rect.set_y (_alloc_height - row_rect.get_height() - col_rect.get_height());
row_rect.set_width (min (_alloc_width, row.first));
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 ();

View File

@ -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) {

View File

@ -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__ */