summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_summary.cc29
-rw-r--r--gtk2_ardour/editor_summary.h2
2 files changed, 31 insertions, 0 deletions
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 <gtkmm/menu.h>
+#include <gtkmm/menuitem.h>
+
#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;
}
@@ -557,6 +574,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)
{
switch (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<Cairo::Context> const&, cairo_rectangle_t*);
void render_region (RegionView*, cairo_t*, double) const;