diff --git a/gtk2_ardour/cue_editor.cc b/gtk2_ardour/cue_editor.cc index 0777e110fb..8928a54117 100644 --- a/gtk2_ardour/cue_editor.cc +++ b/gtk2_ardour/cue_editor.cc @@ -9,6 +9,8 @@ CueEditor::CueEditor (std::string const & name) , HistoryOwner (X_("cue-editor")) { _history.Changed.connect (history_connection, invalidator (*this), std::bind (&CueEditor::history_changed, this), gui_context()); + + set_zoom_focus (Editing::ZoomFocusMouse); } CueEditor::~CueEditor () @@ -143,21 +145,24 @@ CueEditor::get_y_origin () const } void -CueEditor::set_zoom_focus (Editing::ZoomFocus) +CueEditor::set_zoom_focus (Editing::ZoomFocus zf) { -} + using namespace Editing; -Editing::ZoomFocus -CueEditor::get_zoom_focus () const -{ - return Editing::ZoomFocusMouse; + if (zf == ZoomFocusPlayhead) { + return; + } + + if (_zoom_focus != zf) { + _zoom_focus = zf; + ZoomFocusChanged (); /* EMIT SIGNAL */ + } } void CueEditor::set_samples_per_pixel (samplecnt_t n) { samples_per_pixel = n; - std::cerr << "zoom changed to " << samples_per_pixel << std::endl; ZoomChanged(); /* EMIT SIGNAL */ } diff --git a/gtk2_ardour/cue_editor.h b/gtk2_ardour/cue_editor.h index 15e7a12d32..bdbf442df0 100644 --- a/gtk2_ardour/cue_editor.h +++ b/gtk2_ardour/cue_editor.h @@ -71,7 +71,6 @@ class CueEditor : public EditingContext, public PBD::HistoryOwner, public sigc:: double get_y_origin () const; void set_zoom_focus (Editing::ZoomFocus); - Editing::ZoomFocus get_zoom_focus () const; samplecnt_t get_current_zoom () const; void set_samples_per_pixel (samplecnt_t); void reposition_and_zoom (samplepos_t, double); diff --git a/gtk2_ardour/editing_context.cc b/gtk2_ardour/editing_context.cc index c83074876b..472db2145b 100644 --- a/gtk2_ardour/editing_context.cc +++ b/gtk2_ardour/editing_context.cc @@ -135,7 +135,7 @@ EditingContext::EditingContext (std::string const & name) , _selection_memento (new SelectionMemento()) , _verbose_cursor (nullptr) , samples_per_pixel (2048) - , zoom_focus (ZoomFocusPlayhead) + , _zoom_focus (ZoomFocusPlayhead) , bbt_ruler_scale (bbt_show_many) , bbt_bars (0) , bbt_bar_helper_on (0) @@ -2768,7 +2768,7 @@ EditingContext::follow_playhead_clicked () void EditingContext::cycle_zoom_focus () { - switch (zoom_focus) { + switch (_zoom_focus) { case ZoomFocusLeft: set_zoom_focus (ZoomFocusRight); break; @@ -2793,7 +2793,7 @@ EditingContext::cycle_zoom_focus () void EditingContext::temporal_zoom_step_mouse_focus_scale (bool zoom_out, double scale) { - PBD::Unwinder zf (zoom_focus, Editing::ZoomFocusMouse); + PBD::Unwinder zf (_zoom_focus, Editing::ZoomFocusMouse); temporal_zoom_step_scale (zoom_out, scale); } diff --git a/gtk2_ardour/editing_context.h b/gtk2_ardour/editing_context.h index 2e11913d85..c79f264a73 100644 --- a/gtk2_ardour/editing_context.h +++ b/gtk2_ardour/editing_context.h @@ -322,9 +322,10 @@ class EditingContext : public ARDOUR::SessionHandlePtr, public AxisViewProvider void set_samples_per_pixel (samplecnt_t); virtual void on_samples_per_pixel_changed () {} + virtual void cycle_zoom_focus (); virtual void set_zoom_focus (Editing::ZoomFocus) = 0; - virtual Editing::ZoomFocus get_zoom_focus () const = 0; - void cycle_zoom_focus (); + Editing::ZoomFocus zoom_focus () const { return _zoom_focus; } + sigc::signal ZoomFocusChanged; virtual void reposition_and_zoom (samplepos_t, double) = 0; @@ -557,8 +558,8 @@ class EditingContext : public ARDOUR::SessionHandlePtr, public AxisViewProvider VerboseCursor* _verbose_cursor; samplecnt_t samples_per_pixel; - Editing::ZoomFocus zoom_focus; - virtual Editing::ZoomFocus effective_zoom_focus() const { return zoom_focus; } + Editing::ZoomFocus _zoom_focus; + virtual Editing::ZoomFocus effective_zoom_focus() const { return _zoom_focus; } Temporal::timepos_t _snap_to_bbt (Temporal::timepos_t const & start, Temporal::RoundMode direction, diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 5907cca639..b29930d7dc 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -2161,8 +2161,8 @@ Editor::set_state (const XMLNode& node, int version) node.get_property ("mixer-width", editor_mixer_strip_width); - node.get_property ("zoom-focus", zoom_focus); - zoom_focus_selection_done (zoom_focus); + node.get_property ("zoom-focus", _zoom_focus); + zoom_focus_selection_done (_zoom_focus); node.get_property ("marker-click-behavior", marker_click_behavior); marker_click_behavior_selection_done (marker_click_behavior); @@ -2312,7 +2312,7 @@ Editor::get_state () const maybe_add_mixer_strip_width (*node); - node->set_property ("zoom-focus", zoom_focus); + node->set_property ("zoom-focus", _zoom_focus); node->set_property ("edit-point", _edit_point); node->set_property ("visible-track-count", _visible_track_count); @@ -3371,9 +3371,10 @@ Editor::set_zoom_focus (ZoomFocus f) zoom_focus_selector.set_text (str); } - if (zoom_focus != f) { - zoom_focus = f; + if (_zoom_focus != f) { + _zoom_focus = f; instant_save (); + ZoomFocusChanged (); /* EMIT SIGNAL */ } } @@ -3817,7 +3818,7 @@ Editor::current_visual_state (bool with_tracks) vs->y_position = vertical_adjustment.get_value(); vs->samples_per_pixel = samples_per_pixel; vs->_leftmost_sample = _leftmost_sample; - vs->zoom_focus = zoom_focus; + vs->zoom_focus = _zoom_focus; if (with_tracks) { vs->gui_state->set_state (ARDOUR_UI::instance()->gui_object_state->get_state()); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index b095ec90aa..de686d4fb5 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -504,7 +504,6 @@ public: void focus_on_clock(); void set_zoom_focus (Editing::ZoomFocus); - Editing::ZoomFocus get_zoom_focus () const { return zoom_focus; } void temporal_zoom_selection (Editing::ZoomAxis); void temporal_zoom_session (); diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index fbb4ad8c57..162e571880 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -9396,11 +9396,11 @@ Editor::ripple_marks (std::shared_ptr target_playlist, timepos_t at, t Editing::ZoomFocus Editor::effective_zoom_focus() const { - if (zoom_focus == ZoomFocusEdit && _edit_point == EditAtMouse) { + if (_zoom_focus == ZoomFocusEdit && _edit_point == EditAtMouse) { return ZoomFocusMouse; } - return zoom_focus; + return _zoom_focus; } void diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc index 3cc1218674..9c257085e6 100644 --- a/gtk2_ardour/luainstance.cc +++ b/gtk2_ardour/luainstance.cc @@ -910,7 +910,7 @@ LuaInstance::register_classes (lua_State* L, bool sandbox) .addFunction ("get_cut_buffer", &EditingContext::get_cut_buffer) .addFunction ("set_zoom_focus", &EditingContext::set_zoom_focus) - .addFunction ("get_zoom_focus", &EditingContext::get_zoom_focus) + .addFunction ("zoom_focus", &EditingContext::zoom_focus) .addFunction ("get_current_zoom", &EditingContext::get_current_zoom) .addFunction ("reset_zoom", &EditingContext::reset_zoom)