Index: gtk2_ardour/ardour_ui.cc
===================================================================
--- gtk2_ardour/ardour_ui.cc	(revision 4277)
+++ gtk2_ardour/ardour_ui.cc	(working copy)
@@ -199,7 +199,6 @@
 	session_loaded = false;
 	last_speed_displayed = -1.0f;
 	ignore_dual_punch = false;
-	_mixer_on_top = false;
 
 	roll_button.unset_flags (Gtk::CAN_FOCUS);
 	stop_button.unset_flags (Gtk::CAN_FOCUS);
Index: gtk2_ardour/ardour_ui.h
===================================================================
--- gtk2_ardour/ardour_ui.h	(revision 4277)
+++ gtk2_ardour/ardour_ui.h	(working copy)
@@ -171,6 +171,8 @@
 	void toggle_route_params_window ();
 	void toggle_editing_space();
 
+	void goto_editor_window ();
+
 	Gtk::Tooltips& tooltips() { return _tooltips; }
 
 	static sigc::signal<void,bool> Blink;
@@ -276,10 +278,8 @@
 
 	Gtk::Tooltips          _tooltips;
 
-	void                goto_editor_window ();
 	void                goto_mixer_window ();
 	void                toggle_editor_mixer_on_top ();
-	bool                _mixer_on_top;
 
 	GlobalClickBox     *online_control_button;
 	vector<string>      online_control_strings;
Index: gtk2_ardour/ardour_ui_dependents.cc
===================================================================
--- gtk2_ardour/ardour_ui_dependents.cc	(revision 4277)
+++ gtk2_ardour/ardour_ui_dependents.cc	(working copy)
@@ -99,7 +99,6 @@
 
 	editor->show_window ();
 	editor->present();
-	_mixer_on_top = false;
 	flush_pending ();
 }
 
@@ -108,18 +107,13 @@
 {
 	mixer->show_window ();
 	mixer->present();
-	_mixer_on_top = true;
 	flush_pending ();
 }
 
 void
 ARDOUR_UI::toggle_editor_mixer_on_top ()
 {
-	if (_mixer_on_top) {
-		goto_editor_window ();
-	} else {
-		goto_mixer_window ();
-	}
+	goto_mixer_window ();
 }
 
 gint
Index: gtk2_ardour/mixer_ui.cc
===================================================================
--- gtk2_ardour/mixer_ui.cc	(revision 4277)
+++ gtk2_ardour/mixer_ui.cc	(working copy)
@@ -200,6 +200,17 @@
 	list_hpane.add1(list_vpacker);
 	list_hpane.add2(global_hpacker);
 
+	/* A hack to make "Toggle Editor Mixer on Top" work better: create an 
+	 * invisible button in the mixer window, with a shortcut key that 
+	 * matches "Toggle Editor Mixer on Top", and make that button bring the
+	 * editor to the top.	 
+	 */	
+	Button *mixer_behind = manage (new Button (_("_M"), true)); 
+	mixer_behind->signal_clicked().connect(mem_fun(ARDOUR_UI::instance(), &ARDOUR_UI::goto_editor_window));
+	mixer_behind->set_size_request(1,1);
+	global_hpacker.pack_end(*mixer_behind, PACK_SHRINK);
+
+
 	rhs_pane1.signal_size_allocate().connect (bind (mem_fun(*this, &Mixer_UI::pane_allocation_handler), 
 							static_cast<Gtk::Paned*> (&rhs_pane1)));
 	list_hpane.signal_size_allocate().connect (bind (mem_fun(*this, &Mixer_UI::pane_allocation_handler), 

