summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2015-01-16 21:04:38 -0500
committerDavid Robillard <d@drobilla.net>2015-01-16 21:04:38 -0500
commit8f823388d9bd5aa8e297ab05be8c9fb323518945 (patch)
treebc0b1659c6bb33c7f048c0f67939a81a0f523b1a /libs
parent14a235ca8a21ae46cc211df8250bab42ba42a85f (diff)
Kludgey fix for invisible playhead when scrolled.
The problem this is avoiding makes absolutely no sense. Either I'm dumb, or something is more deeply wrong with scroll group bounding boxes, or both, but I don't care anymore. This works. Viva release mode.
Diffstat (limited to 'libs')
-rw-r--r--libs/canvas/canvas/scroll_group.h5
-rw-r--r--libs/canvas/scroll_group.cc14
2 files changed, 15 insertions, 4 deletions
diff --git a/libs/canvas/canvas/scroll_group.h b/libs/canvas/canvas/scroll_group.h
index fd9b2388d4..86bbf9821b 100644
--- a/libs/canvas/canvas/scroll_group.h
+++ b/libs/canvas/canvas/scroll_group.h
@@ -35,8 +35,8 @@ class LIBCANVAS_API ScrollGroup : public Container
ScrollsHorizontally = 0x2
};
- ScrollGroup (Canvas*, ScrollSensitivity);
- ScrollGroup (Item*, ScrollSensitivity);
+ ScrollGroup (Canvas*, ScrollSensitivity, bool clip=true);
+ ScrollGroup (Item*, ScrollSensitivity, bool clip=true);
void scroll_to (Duple const& d);
Duple scroll_offset() const { return _scroll_offset; }
@@ -51,6 +51,7 @@ class LIBCANVAS_API ScrollGroup : public Container
private:
ScrollSensitivity _scroll_sensitivity;
Duple _scroll_offset;
+ bool _clip;
};
}
diff --git a/libs/canvas/scroll_group.cc b/libs/canvas/scroll_group.cc
index 1562643b4a..ad3731116a 100644
--- a/libs/canvas/scroll_group.cc
+++ b/libs/canvas/scroll_group.cc
@@ -27,15 +27,17 @@
using namespace std;
using namespace ArdourCanvas;
-ScrollGroup::ScrollGroup (Canvas* c, ScrollSensitivity s)
+ScrollGroup::ScrollGroup (Canvas* c, ScrollSensitivity s, bool clip)
: Container (c)
, _scroll_sensitivity (s)
+ , _clip(clip)
{
}
-ScrollGroup::ScrollGroup (Item* parent, ScrollSensitivity s)
+ScrollGroup::ScrollGroup (Item* parent, ScrollSensitivity s, bool clip)
: Container (parent)
, _scroll_sensitivity (s)
+ , _clip(clip)
{
}
@@ -52,6 +54,14 @@ ScrollGroup::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) c
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,