diff --git a/gtk2_ardour/port_matrix.cc b/gtk2_ardour/port_matrix.cc index ae2b19075b..d7e2cfd7fa 100644 --- a/gtk2_ardour/port_matrix.cc +++ b/gtk2_ardour/port_matrix.cc @@ -379,11 +379,21 @@ PortMatrix::visible_rows () const return visible_ports (_row_index); } +/** @param column Column; its bundle may be 0 if we are over a row heading. + * @param row Row; its bundle may be 0 if we are over a column heading. + */ void PortMatrix::popup_menu (BundleChannel column, BundleChannel row, uint32_t t) { using namespace Menu_Helpers; + if ((row.bundle && row.bundle->nchannels().n_total() == 0) || (column.bundle && column.bundle->nchannels().n_total() == 0)) { + /* One of the bundles has no channels, which means that it has none of the appropriate type, + and is only being displayed to look pretty. So we don't need to do anything. + */ + return; + } + delete _menu; _menu = new Menu; diff --git a/gtk2_ardour/port_matrix_grid.cc b/gtk2_ardour/port_matrix_grid.cc index fa394de8ef..67fa73c097 100644 --- a/gtk2_ardour/port_matrix_grid.cc +++ b/gtk2_ardour/port_matrix_grid.cc @@ -328,6 +328,13 @@ PortMatrixGrid::button_press (double x, double y, int b, uint32_t t, guint) void PortMatrixGrid::set_association (PortMatrixNode node, bool s) { + if (node.row.bundle->nchannels().n_total() == 0 || node.column.bundle->nchannels().n_total() == 0) { + /* One of the bundles has no channels, which means that it has none of the appropriate type, + and is only being displayed to look pretty. So we don't need to do anything. + */ + return; + } + if (_matrix->show_only_bundles()) { for (uint32_t i = 0; i < node.column.bundle->nchannels().n_total(); ++i) {