r.intersect ((*i)->parent_rectangle(), intersects);
if (intersects) {
-
+
gdk_draw_drawable (
get_window()->gobj(),
get_style()->get_fg_gc (Gtk::STATE_NORMAL)->gobj(),
if (_matrix->visible_rows()) {
PortGroup::BundleList r = _matrix->visible_rows()->bundles ();
for (PortGroup::BundleList::iterator i = r.begin(); i != r.end(); ++i) {
-
+
(*i)->bundle->Changed.connect (_bundle_connections, invalidator (*this), boost::bind (&PortMatrixBody::rebuild_and_draw_row_labels, this), gui_context());
-
+
}
}
-
+
if (_matrix->visible_columns()) {
PortGroup::BundleList c = _matrix->visible_columns()->bundles ();
for (PortGroup::BundleList::iterator i = c.begin(); i != c.end(); ++i) {
(*i)->bundle->Changed.connect (_bundle_connections, invalidator (*this), boost::bind (&PortMatrixBody::rebuild_and_draw_column_labels, this), gui_context());
}
}
-
+
for (list<PortMatrixComponent*>::iterator i = _components.begin(); i != _components.end(); ++i) {
(*i)->setup ();
}
set_mouseover (PortMatrixNode ());
-
+
_ignore_component_size_changed = true;
compute_rectangles ();
_ignore_component_size_changed = false;
(*i)->button_press (
(*i)->parent_to_component_x (ev->x),
(*i)->parent_to_component_y (ev->y),
- ev->button, ev->time, ev->state
+ ev
);
}
}
(*i)->button_release (
(*i)->parent_to_component_x (ev->x),
(*i)->parent_to_component_y (ev->y),
- ev->button, ev->time, ev->state
+ ev
);
} else {
(*i)->button_release (
-1, -1,
- ev->button, ev->time, ev->state
+ ev
);
}
}
PortMatrixBody::on_motion_notify_event (GdkEventMotion* ev)
{
bool done = false;
-
+
for (list<PortMatrixComponent*>::iterator i = _components.begin(); i != _components.end(); ++i) {
if (Gdk::Region ((*i)->parent_rectangle()).point_in (ev->x, ev->y)) {
(*i)->motion (
done = true;
}
}
-
+
if (!done) {
set_mouseover (PortMatrixNode ());
list<PortMatrixNode> old = _mouseover;
_mouseover = n;
-
+
for (list<PortMatrixComponent*>::iterator i = _components.begin(); i != _components.end(); ++i) {
(*i)->mouseover_changed (old);
}
ARDOUR::BundleChannel bc[2];
bc[dim] = h;
- if (!bc[dim].bundle) {
+ if (!PortMatrix::bundle_with_channels (bc[dim].bundle)) {
return;
}
if (!_matrix->should_show ((*i)->bundle->channel_type(j))) {
continue;
}
-
+
bc[1 - dim] = ARDOUR::BundleChannel ((*i)->bundle, j);
- if (_matrix->get_state (bc) == PortMatrixNode::ASSOCIATED) {
+
+ PortMatrixNode n;
+ n.row = bc[_matrix->row_index()];
+ n.column = bc[_matrix->column_index()];
+
+ if (_matrix->get_association(n) != PortMatrixNode::NOT_ASSOCIATED) {
if (dim == _matrix->column_index()) {
_row_labels->add_channel_highlight (bc[1 - dim]);
} else {
if (_ignore_component_size_changed) {
return;
}
-
+
compute_rectangles ();
_matrix->setup_scrollbars ();
}