+ return cursor;
+}
+
+void
+Editor::choose_canvas_cursor_on_entry (ItemType type)
+{
+ if (_drags->active()) {
+ return;
+ }
+
+ Gdk::Cursor* cursor = which_canvas_cursor(type);
+
+ if (!_cursors->is_invalid (cursor)) {
+ // Push a new enter context
+ const EnterContext ctx = { type, CursorContext::create(*this, cursor) };
+ _enter_stack.push_back(ctx);
+ }
+}
+
+void
+Editor::update_all_enter_cursors ()
+{
+ for (std::vector<EnterContext>::iterator i = _enter_stack.begin(); i != _enter_stack.end(); ++i) {
+ i->cursor_ctx->change(which_canvas_cursor(i->item_type));
+ }
+}
+
+double
+Editor::trackviews_height() const
+{
+ if (!_trackview_group) {
+ return 0;