fix scrolling behaviour in track headers (event was stolen by rulers because event...
[ardour.git] / gtk2_ardour / public_editor.h
index 8e673a782484d9a0f4ed1f6ab5218ea63692a50c..af66415a6589fecdae0221183557f2680e5d9105 100644 (file)
@@ -32,7 +32,6 @@
 #include <gtkmm/box.h>
 #include <gtkmm/window.h>
 #include <gtkmm/actiongroup.h>
-#include <jack/types.h>
 #include <sigc++/signal.h>
 
 #include "evoral/types.hpp"
@@ -267,9 +266,14 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
        virtual framecnt_t current_page_samples() const = 0;
        virtual double visible_canvas_height () const = 0;
        virtual void temporal_zoom_step (bool coarser) = 0;
-       virtual void ensure_time_axis_view_is_visible (const TimeAxisView& tav) = 0;
+        virtual void ensure_time_axis_view_is_visible (const TimeAxisView& tav, bool at_top = false) { 
+           _ensure_time_axis_view_is_visible (tav, at_top);
+       }
+        virtual void override_visible_track_count () = 0;
        virtual void scroll_tracks_down_line () = 0;
        virtual void scroll_tracks_up_line () = 0;
+        virtual bool scroll_down_one_track () = 0;
+        virtual bool scroll_up_one_track () = 0;
        virtual void prepare_for_cleanup () = 0;
        virtual void finish_cleanup () = 0;
        virtual void reset_x_origin (framepos_t frame) = 0;
@@ -303,8 +307,6 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
        virtual void get_equivalent_regions (RegionView* rv, std::vector<RegionView*>&, PBD::PropertyID) const = 0;
 
        sigc::signal<void> ZoomChanged;
-       /** Emitted when the horizontal position of the editor view changes */
-       sigc::signal<void> HorizontalPositionChanged;
        sigc::signal<void> Realized;
        sigc::signal<void,framepos_t> UpdateAllTransportClocks;
 
@@ -316,6 +318,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
 
        virtual void reset_focus () = 0;
 
+       virtual bool canvas_scroll_event (GdkEventScroll* event, bool from_canvas) = 0;
        virtual bool canvas_control_point_event (GdkEvent* event, ArdourCanvas::Item*, ControlPoint*) = 0;
        virtual bool canvas_line_event (GdkEvent* event, ArdourCanvas::Item*, AutomationLine*) = 0;
        virtual bool canvas_selection_rect_event (GdkEvent* event, ArdourCanvas::Item*, SelectionRect*) = 0;
@@ -324,9 +327,9 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
        virtual bool canvas_start_xfade_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
        virtual bool canvas_end_xfade_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
        virtual bool canvas_fade_in_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
-       virtual bool canvas_fade_in_handle_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
+       virtual bool canvas_fade_in_handle_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*, bool) = 0;
        virtual bool canvas_fade_out_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
-       virtual bool canvas_fade_out_handle_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
+       virtual bool canvas_fade_out_handle_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*, bool) = 0;
        virtual bool canvas_region_view_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0;
        virtual bool canvas_frame_handle_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0;
        virtual bool canvas_region_view_name_highlight_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0;
@@ -362,10 +365,10 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
 #endif
 
        virtual ArdourCanvas::Group* get_trackview_group () const = 0;
-       virtual ArdourCanvas::Group* get_time_bars_group () const = 0;
-       virtual ArdourCanvas::Group* get_track_canvas_group () const = 0;
+       virtual ArdourCanvas::Group* get_hscroll_group () const = 0;
+       virtual ArdourCanvas::Group* get_vscroll_group () const = 0;
+       virtual ArdourCanvas::Group* get_hvscroll_group () const = 0;
 
-        virtual ArdourCanvas::GtkCanvasViewport* get_time_bars_canvas() const = 0;
         virtual ArdourCanvas::GtkCanvasViewport* get_track_canvas() const = 0;
 
        virtual TimeAxisView* axis_view_from_route (boost::shared_ptr<ARDOUR::Route>) const = 0;
@@ -382,8 +385,9 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
        virtual Gtkmm2ext::TearOff* tools_tearoff () const = 0;
 
        virtual DragManager* drags () const = 0;
-       virtual void maybe_autoscroll (bool, bool, bool, bool) = 0;
+        virtual void maybe_autoscroll (bool, bool, bool from_headers) = 0;
        virtual void stop_canvas_autoscroll () = 0;
+        virtual bool autoscroll_active() const = 0;
 
        virtual MouseCursors const * cursors () const = 0;
        virtual VerboseCursor * verbose_cursor () const = 0;
@@ -408,6 +412,9 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
 
        PBD::Signal0<void> SnapChanged;
        PBD::Signal0<void> MouseModeChanged;
+
+  protected:
+       virtual void _ensure_time_axis_view_is_visible (const TimeAxisView& tav, bool at_top) = 0;
 };
 
 #endif // __gtk_ardour_public_editor_h__