Index: gtk2_ardour/editor_ops.cc
===================================================================
--- gtk2_ardour/editor_ops.cc	(revision 5424)
+++ gtk2_ardour/editor_ops.cc	(working copy)
@@ -1523,7 +1523,22 @@
 }
 
 /* ZOOM */
+void
+Editor::tav_zoom_step (bool coarser)
+{
+	ENSURE_GUI_THREAD (bind (mem_fun (*this, &Editor::temporal_zoom_step), coarser));
+	
+	_routes->suspend_redisplay ();
 
+	for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
+		TimeAxisView *tv = (static_cast<TimeAxisView*>(*i));
+			tv->step_height (coarser);
+	}
+
+	_routes->resume_redisplay ();
+}	
+
+
 void
 Editor::temporal_zoom_step (bool coarser)
 {
Index: gtk2_ardour/editor.cc
===================================================================
--- gtk2_ardour/editor.cc	(revision 5424)
+++ gtk2_ardour/editor.cc	(working copy)
@@ -2932,11 +2967,32 @@
 	zoom_box.pack_start (zoom_in_button, false, false);
 	zoom_box.pack_start (zoom_out_full_button, false, false);
 
+	/* Track zoom buttons */
+	tav_expand_button.set_name ("TrackHeightButton");
+	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 ("TrackHeightButton");
+	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"));
+
+	track_zoom_box.set_spacing (1);
+	track_zoom_box.set_border_width (0);
+
+	track_zoom_box.pack_start (tav_shrink_button, false, false);	
+	track_zoom_box.pack_start (tav_expand_button, false, false);
+	
 	HBox* zbc = manage (new HBox);
-	zbc->pack_start (zoom_focus_selector, PACK_SHRINK);
+	zbc->pack_start (zoom_focus_selector, PACK_SHRINK);	
+	
 	zoom_vbox.pack_start (*zbc, PACK_SHRINK);
 	zoom_vbox.pack_start (zoom_box, PACK_SHRINK);
-
+	zoom_vbox.pack_start (track_zoom_box, PACK_SHRINK);
+	
 	snap_box.set_spacing (1);
 	snap_box.set_border_width (2);
Index: gtk2_ardour/time_axis_view.cc
===================================================================
--- gtk2_ardour/time_axis_view.cc	(revision 5424)
+++ gtk2_ardour/time_axis_view.cc	(working copy)
@@ -133,6 +133,7 @@
 
 	name_hbox.show ();
 
+	controls_table.set_size_request(200);
 	controls_table.set_border_width (2);
 	controls_table.set_row_spacings (0);
 	controls_table.set_col_spacings (0);
Index: gtk2_ardour/editor.h
===================================================================
--- gtk2_ardour/editor.h	(revision 5424)
+++ 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 */
 
@@ -1506,6 +1507,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;
@@ -1563,6 +1567,7 @@
 	Glib::RefPtr<Gtk::RadioAction> zoom_focus_action (Editing::ZoomFocus);
 
 	Gtk::HBox           zoom_box;
+	Gtk::HBox           track_zoom_box;
 	Gtk::VBox           zoom_vbox;
 
 	void                zoom_adjustment_changed();
