Fix assertion failure on clicking on bundles whose channels are all of the wrong type.

git-svn-id: svn://localhost/ardour2/branches/3.0@10147 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2011-09-27 20:15:49 +00:00
parent 20dc91d0ad
commit 89543bf4db
2 changed files with 17 additions and 0 deletions

View File

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

View File

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