diff options
Diffstat (limited to 'libs/canvas')
-rw-r--r-- | libs/canvas/canvas/item.h | 2 | ||||
-rw-r--r-- | libs/canvas/item.cc | 14 |
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) { |