using namespace std;
using namespace ArdourCanvas;
-ScrollGroup::ScrollGroup (Canvas* c, ScrollSensitivity s, bool clip)
+ScrollGroup::ScrollGroup (Canvas* c, ScrollSensitivity s)
: Container (c)
- , _scroll_sensitivity (s)
- , _clip(clip)
+ , _scroll_sensitivity (s)
{
}
-ScrollGroup::ScrollGroup (Item* parent, ScrollSensitivity s, bool clip)
+ScrollGroup::ScrollGroup (Item* parent, ScrollSensitivity s)
: Container (parent)
- , _scroll_sensitivity (s)
- , _clip(clip)
+ , _scroll_sensitivity (s)
{
}
return;
}
- if (!_clip) {
- /* kludge: clip disabled, because for some reason the cursor scroll
- group requires scroll offsets here to clip correctly yet everything
- else does not. I can't figure this out, so since not clipping a
- single arrow isn't the end of the world, just don't clip. */
- Container::render (area, context);
- }
-
Rect self (_position.x + r.get().x0,
_position.y + r.get().y0,
_position.x + r.get().x1,
context->save ();
context->rectangle (self.x0, self.y0, self.width(), self.height());
context->clip ();
-
+
Container::render (area, context);
context->restore ();
bool
ScrollGroup::covers_canvas (Duple const& d) const
{
- boost::optional<Rect> r = bounding_box ();
+ boost::optional<Rect> r = bounding_box ();
if (!r) {
return false;
}
- return r->contains (d);
+ /* Bounding box is in item coordinates, but we need
+ to consider the position of the bounding box
+ within the canvas.
+ */
+
+ return r->translate (position()).contains (d);
}
bool
return false;
}
- Rect w = r->translate (-_scroll_offset);
+ /* Bounding box is in item coordinates, but we need
+ to consider the position of the bounding box
+ within the canvas.
+ */
- return w.contains (d);
+ return r->translate (position()).contains (d);
}