From 7e300c93f22ec27f0ee1f4172d7c86e2bfef2062 Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Sat, 26 Aug 2017 23:32:02 -0500 Subject: [PATCH] Editor zooming: right-click on summary -> context menu -> reset to session extents. --- gtk2_ardour/editor_summary.cc | 29 +++++++++++++++++++++++++++++ gtk2_ardour/editor_summary.h | 2 ++ 2 files changed, 31 insertions(+) diff --git a/gtk2_ardour/editor_summary.cc b/gtk2_ardour/editor_summary.cc index 728773e6b7..95b54cdf02 100644 --- a/gtk2_ardour/editor_summary.cc +++ b/gtk2_ardour/editor_summary.cc @@ -21,6 +21,9 @@ #include "canvas/debug.h" +#include +#include + #include "time_axis_view.h" #include "streamview.h" #include "editor_summary.h" @@ -35,6 +38,8 @@ #include "route_time_axis.h" #include "ui_config.h" +#include "pbd/i18n.h" + using namespace std; using namespace ARDOUR; using Gtkmm2ext::Keyboard; @@ -424,6 +429,8 @@ EditorSummary::on_key_release_event (GdkEventKey* key) return false; } +#include "gtkmm2ext/utils.h" + /** Handle a button press. * @param ev GTK event. */ @@ -432,6 +439,16 @@ EditorSummary::on_button_press_event (GdkEventButton* ev) { _old_follow_playhead = _editor->follow_playhead (); + if (ev->button == 3) { //right-click: show the reset menu action + using namespace Gtk::Menu_Helpers; + Gtk::Menu* m = manage (new Gtk::Menu); + MenuList& items = m->items (); + items.push_back(MenuElem(_("Reset Summary to Extents"), + sigc::mem_fun(*this, &EditorSummary::reset_to_extents))); + m->popup (ev->button, ev->time); + return true; + } + if (ev->button != 1) { return true; } @@ -556,6 +573,18 @@ EditorSummary::get_position (double x, double y) const } } +void +EditorSummary::reset_to_extents() +{ + //reset as if the user never went anywhere outside the extents + _leftmost = max_framepos; + _rightmost = 0; + + _editor->temporal_zoom_extents (); + set_background_dirty (); +} + + void EditorSummary::set_cursor (Position p) { diff --git a/gtk2_ardour/editor_summary.h b/gtk2_ardour/editor_summary.h index 3b75909ad1..6639285eea 100644 --- a/gtk2_ardour/editor_summary.h +++ b/gtk2_ardour/editor_summary.h @@ -65,6 +65,8 @@ private: bool on_enter_notify_event (GdkEventCrossing*); bool on_leave_notify_event (GdkEventCrossing*); + void reset_to_extents (); + void centre_on_click (GdkEventButton *); void render (Cairo::RefPtr const&, cairo_rectangle_t*); void render_region (RegionView*, cairo_t*, double) const;