summaryrefslogtreecommitdiff
path: root/libs/canvas
diff options
context:
space:
mode:
Diffstat (limited to 'libs/canvas')
-rw-r--r--libs/canvas/canvas/item.h2
-rw-r--r--libs/canvas/item.cc14
2 files changed, 9 insertions, 7 deletions
diff --git a/libs/canvas/canvas/item.h b/libs/canvas/canvas/item.h
index 308b2437c3..60fadabfbd 100644
--- a/libs/canvas/canvas/item.h
+++ b/libs/canvas/canvas/item.h
@@ -154,7 +154,7 @@ public:
Duple item_to_window (Duple const&, bool rounded = true) const;
Duple window_to_item (Duple const&) const;
- Rect item_to_window (Rect const&) const;
+ Rect item_to_window (Rect const&, bool rounded = true) const;
Rect window_to_item (Rect const&) const;
void raise_to_top ();
diff --git a/libs/canvas/item.cc b/libs/canvas/item.cc
index 9a851891d9..ab8764a97a 100644
--- a/libs/canvas/item.cc
+++ b/libs/canvas/item.cc
@@ -231,14 +231,16 @@ Item::window_to_item (ArdourCanvas::Duple const & d) const
}
ArdourCanvas::Rect
-Item::item_to_window (ArdourCanvas::Rect const & r) const
+Item::item_to_window (ArdourCanvas::Rect const & r, bool rounded) const
{
Rect ret = item_to_canvas (r).translate (-scroll_offset());
- ret.x0 = round (ret.x0);
- ret.x1 = round (ret.x1);
- ret.y0 = round (ret.y0);
- ret.y1 = round (ret.y1);
+ if (rounded) {
+ ret.x0 = round (ret.x0);
+ ret.x1 = round (ret.x1);
+ ret.y0 = round (ret.y0);
+ ret.y1 = round (ret.y1);
+ }
return ret;
}
@@ -766,7 +768,7 @@ Item::render_children (Rect const & area, Cairo::RefPtr<Cairo::Context> context)
continue;
}
- Rect item = (*i)->item_to_window (item_bbox.get());
+ Rect item = (*i)->item_to_window (item_bbox.get(), false);
boost::optional<Rect> d = item.intersection (area);
if (d) {