From 2a341d99593851ce147b9aa63677d54575b56339 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 27 Jan 2009 18:56:06 +0000 Subject: Draw mouseover lines only between the target and the labels. git-svn-id: svn://localhost/ardour2/branches/3.0@4449 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/port_matrix_grid.cc | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'gtk2_ardour/port_matrix_grid.cc') diff --git a/gtk2_ardour/port_matrix_grid.cc b/gtk2_ardour/port_matrix_grid.cc index 2343cb4c08..eae8823af8 100644 --- a/gtk2_ardour/port_matrix_grid.cc +++ b/gtk2_ardour/port_matrix_grid.cc @@ -252,25 +252,33 @@ PortMatrixGrid::draw_extra (cairo_t* cr) set_source_rgba (cr, mouseover_line_colour(), 0.3); cairo_set_line_width (cr, mouseover_line_width()); + double const x = component_to_parent_x ( + channel_position (_body->mouseover().column, _body->column_ports().bundles(), column_width()) + column_width() / 2 + ); + + double const y = component_to_parent_y ( + channel_position (_body->mouseover().row, _body->row_ports().bundles(), row_height()) + row_height() / 2 + ); + if (_body->mouseover().row.bundle) { - double const y = component_to_parent_y ( - channel_position (_body->mouseover().row, _body->row_ports().bundles(), row_height()) + row_height() / 2 - ); - - cairo_move_to (cr, _parent_rectangle.get_x(), y); - cairo_line_to (cr, _parent_rectangle.get_x() + _parent_rectangle.get_width(), y); + cairo_move_to (cr, x, y); + if (_body->arrangement() == PortMatrixBody::BOTTOM_AND_LEFT) { + cairo_line_to (cr, component_to_parent_x (0), y); + } else if (_body->arrangement() == PortMatrixBody::TOP_AND_RIGHT) { + cairo_line_to (cr, _parent_rectangle.get_x() + _parent_rectangle.get_width(), y); + } cairo_stroke (cr); } if (_body->mouseover().column.bundle) { - double const x = component_to_parent_x ( - channel_position (_body->mouseover().column, _body->column_ports().bundles(), column_width()) + column_width() / 2 - ); - - cairo_move_to (cr, x, _parent_rectangle.get_y()); - cairo_line_to (cr, x, _parent_rectangle.get_y() + _parent_rectangle.get_height()); + cairo_move_to (cr, x, y); + if (_body->arrangement() == PortMatrixBody::BOTTOM_AND_LEFT) { + cairo_line_to (cr, x, _parent_rectangle.get_y() + _parent_rectangle.get_height()); + } else if (_body->arrangement() == PortMatrixBody::TOP_AND_RIGHT) { + cairo_line_to (cr, x, component_to_parent_y (0)); + } cairo_stroke (cr); } } -- cgit v1.2.3