CANVAS_DEBUG_NAME (hv_scroll_group, "canvas hv scroll");
_track_canvas->add_scroller (*hsg);
- cursor_scroll_group = cg = new ArdourCanvas::ScrollGroup (_track_canvas->root(), ArdourCanvas::ScrollGroup::ScrollsHorizontally, false);
+ cursor_scroll_group = cg = new ArdourCanvas::ScrollGroup (_track_canvas->root(), ArdourCanvas::ScrollGroup::ScrollsHorizontally);
CANVAS_DEBUG_NAME (cursor_scroll_group, "canvas cursor scroll");
_track_canvas->add_scroller (*cg);
{
Glib::RefPtr<Gdk::Window> win = _track_canvas->get_window();
- if (win && cursor) {
- win->set_cursor (*cursor);
+ if (win && !_cursors->is_invalid (cursor)) {
+ /* glibmm 2.4 doesn't allow null cursor pointer because it uses
+ a Gdk::Cursor& as the argument to Gdk::Window::set_cursor().
+ But a null pointer just means "use parent window cursor",
+ and so should be allowed. Gtkmm 3.x has fixed this API.
+
+ For now, drop down and use C API
+ */
+ gdk_window_set_cursor (win->gobj(), cursor ? cursor->gobj() : 0);
}
}
size_t
Editor::push_canvas_cursor (Gdk::Cursor* cursor)
{
- if (cursor) {
+ if (!_cursors->is_invalid (cursor)) {
_cursor_stack.push_back (cursor);
set_canvas_cursor (cursor);
}
Gdk::Cursor*
Editor::which_mode_cursor () const
{
- Gdk::Cursor* mode_cursor = 0;
+ Gdk::Cursor* mode_cursor = MouseCursors::invalid_cursor ();
switch (mouse_mode) {
case MouseRange:
Gdk::Cursor*
Editor::which_track_cursor () const
{
- Gdk::Cursor* cursor = 0;
+ Gdk::Cursor* cursor = MouseCursors::invalid_cursor();
switch (_join_object_range_state) {
case JOIN_OBJECT_RANGE_NONE:
Gdk::Cursor* cursor = which_canvas_cursor(type);
- if (cursor) {
+ if (!_cursors->is_invalid (cursor)) {
// Push a new enter context
const EnterContext ctx = { type, CursorContext::create(*this, cursor) };
_enter_stack.push_back(ctx);