{
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);