summaryrefslogtreecommitdiff
path: root/gtk2_ardour/port_matrix_body.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-02-05 12:56:12 +0000
committerCarl Hetherington <carl@carlh.net>2009-02-05 12:56:12 +0000
commit67d545c0809522e8d32b919941f2be56d94c7ba3 (patch)
tree1f97cbe7fc6eea202a7d64de837ddcfa6a7b04dd /gtk2_ardour/port_matrix_body.cc
parentee4e28751edae18bc2c2d3960472f15446b17306 (diff)
Small fixes to port matrix rendering, mostly visible when using the bundle manager.
git-svn-id: svn://localhost/ardour2/branches/3.0@4491 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/port_matrix_body.cc')
-rw-r--r--gtk2_ardour/port_matrix_body.cc21
1 files changed, 18 insertions, 3 deletions
diff --git a/gtk2_ardour/port_matrix_body.cc b/gtk2_ardour/port_matrix_body.cc
index 81c332da86..4d7720207b 100644
--- a/gtk2_ardour/port_matrix_body.cc
+++ b/gtk2_ardour/port_matrix_body.cc
@@ -56,14 +56,19 @@ PortMatrixBody::on_expose_event (GdkEventExpose* event)
);
bool intersects;
+
Gdk::Rectangle r = exposure;
+ /* the get_pixmap call may cause things to be rerendered and sizes to change,
+ so fetch the pixmaps before calculating where to put it */
+ GdkPixmap* p = _column_labels->get_pixmap (get_window()->gobj());
r.intersect (_column_labels->parent_rectangle(), intersects);
if (intersects) {
+
gdk_draw_drawable (
get_window()->gobj(),
get_style()->get_fg_gc (Gtk::STATE_NORMAL)->gobj(),
- _column_labels->get_pixmap (get_window()->gobj()),
+ p,
_column_labels->parent_to_component_x (r.get_x()),
_column_labels->parent_to_component_y (r.get_y()),
r.get_x(),
@@ -74,13 +79,14 @@ PortMatrixBody::on_expose_event (GdkEventExpose* event)
}
r = exposure;
+ p = _row_labels->get_pixmap (get_window()->gobj());
r.intersect (_row_labels->parent_rectangle(), intersects);
if (intersects) {
gdk_draw_drawable (
get_window()->gobj(),
get_style()->get_fg_gc (Gtk::STATE_NORMAL)->gobj(),
- _row_labels->get_pixmap (get_window()->gobj()),
+ p,
_row_labels->parent_to_component_x (r.get_x()),
_row_labels->parent_to_component_y (r.get_y()),
r.get_x(),
@@ -91,13 +97,14 @@ PortMatrixBody::on_expose_event (GdkEventExpose* event)
}
r = exposure;
+ p = _grid->get_pixmap (get_window()->gobj());
r.intersect (_grid->parent_rectangle(), intersects);
if (intersects) {
gdk_draw_drawable (
get_window()->gobj(),
get_style()->get_fg_gc (Gtk::STATE_NORMAL)->gobj(),
- _grid->get_pixmap (get_window()->gobj()),
+ p,
_grid->parent_to_component_x (r.get_x()),
_grid->parent_to_component_y (r.get_y()),
r.get_x(),
@@ -489,3 +496,11 @@ PortMatrixBody::set_cairo_clip (cairo_t* cr, Gdk::Rectangle const & r) const
cairo_rectangle (cr, r.get_x(), r.get_y(), r.get_width(), r.get_height());
cairo_clip (cr);
}
+
+void
+PortMatrixBody::component_size_changed ()
+{
+ compute_rectangles ();
+ _matrix->setup_scrollbars ();
+}
+