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 ();
+ }
}
}
_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);
}
} 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 ();
}
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) {
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__ */