[Summary] Added autoscroll support during track headers DnD operation

This commit is contained in:
GZharun 2014-09-09 17:20:44 +03:00
parent 410bd658e3
commit 73709d1a04
4 changed files with 29 additions and 9 deletions

View file

@ -423,8 +423,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
return _drags; return _drags;
} }
void maybe_autoscroll (bool, bool, bool); void maybe_autoscroll (bool, bool, bool);
bool autoscroll_active() const; void start_autoscroll_for_headers ();
bool autoscroll_active() const;
Gdk::Cursor* get_canvas_cursor () const { return current_canvas_cursor; } Gdk::Cursor* get_canvas_cursor () const { return current_canvas_cursor; }
void set_canvas_cursor (Gdk::Cursor*, bool save=false); void set_canvas_cursor (Gdk::Cursor*, bool save=false);
@ -1800,7 +1801,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
ArdourCanvas::Rect autoscroll_boundary; ArdourCanvas::Rect autoscroll_boundary;
bool autoscroll_canvas (); bool autoscroll_canvas ();
void start_canvas_autoscroll (bool allow_horiz, bool allow_vert, const ArdourCanvas::Rect& boundary); void start_canvas_autoscroll (bool allow_horiz, bool allow_vert, const ArdourCanvas::Rect& boundary);
void stop_canvas_autoscroll (); void stop_canvas_autoscroll ();
/* trimming */ /* trimming */

View file

@ -575,6 +575,19 @@ Editor::maybe_autoscroll (bool allow_horiz, bool allow_vert, bool from_headers)
} }
} }
void
Editor::start_autoscroll_for_headers ()
{
if (autoscroll_active () ) {
return;
}
Gtk::Allocation alloc = controls_layout.get_allocation ();
ArdourCanvas::Rect scrolling_boundary = ArdourCanvas::Rect (alloc.get_x(), alloc.get_y(), alloc.get_x() + alloc.get_width(), alloc.get_y() + alloc.get_height());
start_canvas_autoscroll (false/*horizontal disabled*/, true/*vertical enabled*/, scrolling_boundary);
}
bool bool
Editor::autoscroll_active () const Editor::autoscroll_active () const
{ {

View file

@ -373,12 +373,12 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
virtual ArdourCanvas::ScrollGroup* get_vscroll_group () const = 0; virtual ArdourCanvas::ScrollGroup* get_vscroll_group () const = 0;
virtual ArdourCanvas::ScrollGroup* get_hvscroll_group () const = 0; virtual ArdourCanvas::ScrollGroup* get_hvscroll_group () const = 0;
virtual ArdourCanvas::GtkCanvasViewport* get_track_canvas() const = 0; virtual ArdourCanvas::GtkCanvasViewport* get_track_canvas() const = 0;
virtual TimeAxisView* axis_view_from_route (boost::shared_ptr<ARDOUR::Route>) const = 0; virtual TimeAxisView* axis_view_from_route (boost::shared_ptr<ARDOUR::Route>) const = 0;
virtual void set_current_trimmable (boost::shared_ptr<ARDOUR::Trimmable>) = 0; virtual void set_current_trimmable (boost::shared_ptr<ARDOUR::Trimmable>) = 0;
virtual void set_current_movable (boost::shared_ptr<ARDOUR::Movable>) = 0; virtual void set_current_movable (boost::shared_ptr<ARDOUR::Movable>) = 0;
virtual void center_screen (framepos_t) = 0; virtual void center_screen (framepos_t) = 0;
@ -389,9 +389,10 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
virtual Gtkmm2ext::TearOff* tools_tearoff () const = 0; virtual Gtkmm2ext::TearOff* tools_tearoff () const = 0;
virtual DragManager* drags () const = 0; virtual DragManager* drags () const = 0;
virtual void maybe_autoscroll (bool, bool, bool from_headers) = 0; virtual void maybe_autoscroll (bool, bool, bool from_headers) = 0;
virtual void start_autoscroll_for_headers () = 0;
virtual void stop_canvas_autoscroll () = 0; virtual void stop_canvas_autoscroll () = 0;
virtual bool autoscroll_active() const = 0; virtual bool autoscroll_active() const = 0;
virtual MouseCursors const * cursors () const = 0; virtual MouseCursors const * cursors () const = 0;
virtual VerboseCursor * verbose_cursor () const = 0; virtual VerboseCursor * verbose_cursor () const = 0;

View file

@ -1134,7 +1134,7 @@ RouteTimeAxisView::handle_route_drag_motion(const Glib::RefPtr<Gdk::DragContext>
lower_drop_indicator.show(); lower_drop_indicator.show();
upper_drop_indicator.hide(); upper_drop_indicator.hide();
} }
return true; return true;
} }
} }
@ -1161,12 +1161,17 @@ RouteTimeAxisView::handle_route_drag_begin (const Glib::RefPtr<Gdk::DragContext>
_editor.get_selection().add(this); _editor.get_selection().add(this);
} }
// enable autoscroll
_editor.start_autoscroll_for_headers ();
//GZ TO-DO: Draw DnD icon for track header //GZ TO-DO: Draw DnD icon for track header
} }
void void
RouteTimeAxisView::handle_route_drag_end(const Glib::RefPtr<Gdk::DragContext>& context) RouteTimeAxisView::handle_route_drag_end(const Glib::RefPtr<Gdk::DragContext>& context)
{ {
// disable autoscroll
_editor.stop_canvas_autoscroll ();
} }
void void