Index: gtk2_ardour/editor_ops.cc
===================================================================
--- gtk2_ardour/editor_ops.cc	(revision 5331)
+++ gtk2_ardour/editor_ops.cc	(working copy)
@@ -1523,7 +1523,18 @@
 }
 
 /* ZOOM */
+void
+Editor::tav_zoom_step (bool coarser)
+{
+	ENSURE_GUI_THREAD (bind (mem_fun (*this, &Editor::temporal_zoom_step), coarser));
 
+	for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
+		TimeAxisView *tv = (static_cast<TimeAxisView*>(*i));
+			tv->step_height (coarser);
+	}  
+}	
+
+
 void
 Editor::temporal_zoom_step (bool coarser)
 {
Index: gtk2_ardour/editor.cc
===================================================================
@@ -2902,19 +2937,19 @@
 	zoom_box.set_border_width (0);
 
 	zoom_in_button.set_name ("EditorTimeButton");
-	zoom_in_button.set_size_request(-1,16);
+	zoom_in_button.set_size_request(-1,20);
 	zoom_in_button.add (*(manage (new Image (::get_icon("zoom_in")))));
 	zoom_in_button.signal_clicked().connect (bind (mem_fun(*this, &Editor::temporal_zoom_step), false));
 	ARDOUR_UI::instance()->tooltips().set_tip (zoom_in_button, _("Zoom In"));
 	
 	zoom_out_button.set_name ("EditorTimeButton");
-	zoom_out_button.set_size_request(-1,16);
+	zoom_out_button.set_size_request(-1,20);
 	zoom_out_button.add (*(manage (new Image (::get_icon("zoom_out")))));
 	zoom_out_button.signal_clicked().connect (bind (mem_fun(*this, &Editor::temporal_zoom_step), true));
 	ARDOUR_UI::instance()->tooltips().set_tip (zoom_out_button, _("Zoom Out"));
 
 	zoom_out_full_button.set_name ("EditorTimeButton");
-	zoom_out_full_button.set_size_request(-1,16);
+	zoom_out_full_button.set_size_request(-1,20);
 	zoom_out_full_button.add (*(manage (new Image (::get_icon("zoom_full")))));
 	zoom_out_full_button.signal_clicked().connect (mem_fun(*this, &Editor::temporal_zoom_session));
 	ARDOUR_UI::instance()->tooltips().set_tip (zoom_out_full_button, _("Zoom to Session"));
@@ -2924,9 +2959,24 @@
 	zoom_focus_selector.signal_changed().connect (mem_fun(*this, &Editor::zoom_focus_selection_done));
 	ARDOUR_UI::instance()->tooltips().set_tip (zoom_focus_selector, _("Zoom focus"));
 
+	tav_expand_button.set_name ("EditorTimeButton");
+	tav_expand_button.set_size_request(-1,20);
+	tav_expand_button.add (*(manage (new Image (::get_icon("tav_exp")))));
+	tav_expand_button.signal_clicked().connect (bind (mem_fun(*this, &Editor::tav_zoom_step), true));
+	ARDOUR_UI::instance()->tooltips().set_tip (tav_expand_button, _("Expand Tracks"));
+	
+	tav_shrink_button.set_name ("EditorTimeButton");
+	tav_shrink_button.set_size_request(-1,20);
+	tav_shrink_button.add (*(manage (new Image (::get_icon("tav_shrink")))));
+	tav_shrink_button.signal_clicked().connect (bind (mem_fun(*this, &Editor::tav_zoom_step), false));
+	ARDOUR_UI::instance()->tooltips().set_tip (tav_shrink_button, _("Shrink Tracks"));
+
+
 	zoom_box.pack_start (zoom_out_button, false, false);
 	zoom_box.pack_start (zoom_in_button, false, false);
 	zoom_box.pack_start (zoom_out_full_button, false, false);
+	zoom_box.pack_start (tav_expand_button, false, false);
+	zoom_box.pack_start (tav_shrink_button, false, false);
 
 	HBox* zbc = manage (new HBox);
 	zbc->pack_start (zoom_focus_selector, PACK_SHRINK);
Index: gtk2_ardour/editor.h
===================================================================
--- gtk2_ardour/editor.h	(revision 5331)
+++ gtk2_ardour/editor.h	(working copy)
@@ -307,8 +307,9 @@
 	void               set_zoom_focus (Editing::ZoomFocus);
 	Editing::ZoomFocus get_zoom_focus () const { return zoom_focus; }
 	double             get_current_zoom () const { return frames_per_unit; }
-
+	
 	void temporal_zoom_step (bool coarser);
+	void tav_zoom_step (bool coarser);
 
 	/* stuff that AudioTimeAxisView and related classes use */
 
@@ -1503,6 +1504,9 @@
 	Gtk::Button              zoom_out_full_button;
 	Gtk::Button              zoom_onetoone_button;
 
+	Gtk::Button              tav_expand_button;
+	Gtk::Button              tav_shrink_button;
+
 	Gtk::VBox                toolbar_clock_vbox;
 	Gtk::VBox                toolbar_selection_clock_vbox; 
 	Gtk::Table               toolbar_selection_clock_table;
@@ -1993,7 +1997,7 @@
 	void select_next_route ();
 	void select_prev_route ();
 
-	void snap_to_internal (nframes64_t& first, int32_t direction = 0, bool for_mark = false);
+	void snap_to_internal (nframes64_t& first, nframes64_t& last, int32_t direction = 0, bool for_mark = false);
 
 	RhythmFerret* rhythm_ferret;
 	BundleManager* _bundle_manager;
