Index: components/editor/gtkhtml-editor.ui
===================================================================
--- components/editor/gtkhtml-editor.ui	(revision 8876)
+++ components/editor/gtkhtml-editor.ui	(working copy)
@@ -50,7 +50,8 @@
     <placeholder name='pre-format-menu'/>
     <menu action='format-menu'>
       <placeholder name='format-menu-top'/>
-      <menuitem action='html-mode'/>
+      <menuitem action='mode-html'/>
+      <menuitem action='mode-text'/>
       <separator/>
       <menu action='font-style-menu'>
         <menuitem action='monospaced'/>
@@ -112,18 +113,10 @@
     <separator/>
     <toolitem action='show-find'/>
     <toolitem action='show-replace'/>
-    <separator/>
-    <toolitem action='insert-image'/>
-    <toolitem action='insert-link'/>
-    <toolitem action='insert-rule'/>
-    <toolitem action='insert-table'/>
   </toolbar>
   <toolbar name='edit-toolbar'>
-    <toolitem action='monospaced'/>
-    <toolitem action='bold'/>
-    <toolitem action='italic'/>
-    <toolitem action='underline'/>
-    <toolitem action='strikethrough'/>
+    <toolitem action='mode-html'/>
+    <toolitem action='mode-text'/>
     <separator/>
     <toolitem action='justify-left'/>
     <toolitem action='justify-center'/>
@@ -132,6 +125,19 @@
     <toolitem action='unindent'/>
     <toolitem action='indent'/>
   </toolbar>
+  <toolbar name='html-toolbar'>
+    <separator/>
+    <toolitem action='monospaced'/>
+    <toolitem action='bold'/>
+    <toolitem action='italic'/>
+    <toolitem action='underline'/>
+    <toolitem action='strikethrough'/>
+    <separator/>
+    <toolitem action='insert-image'/>
+    <toolitem action='insert-link'/>
+    <toolitem action='insert-rule'/>
+    <toolitem action='insert-table'/>
+  </toolbar>
   <popup name='context-menu'>
     <menuitem action='undo'/>
     <menuitem action='redo'/>
Index: components/editor/gtkhtml-editor-actions.c
===================================================================
--- components/editor/gtkhtml-editor-actions.c	(revision 8876)
+++ components/editor/gtkhtml-editor-actions.c	(working copy)
@@ -39,7 +39,7 @@
  * "find"
  * "find-again"
  * "find-and-replace"
- * "html-mode"		(toggle)
+ * "html-mode"		(radio)
  * "indent"
  * "insert-html-file"
  * "insert-smiley-1"
@@ -79,6 +79,7 @@
  * "style-normal"	(radio)
  * "style-preformat"	(radio)
  * "test-url"
+ * "text-mode"		(radio)
  * "undo"
  * "unindent"
  * "wrap-lines"
@@ -618,69 +619,6 @@ action_find_and_replace_cb (GtkAction *a
 }
 
 static void
-action_html_mode_cb (GtkToggleAction *action,
-                     GtkhtmlEditor *editor)
-{
-	GtkActionGroup *action_group;
-	HTMLPainter *new_painter;
-	HTMLPainter *old_painter;
-	GtkHTML *html;
-	gboolean active;
-
-	html = gtkhtml_editor_get_html (editor);
-	active = gtk_toggle_action_get_active (action);
-
-	action_group = editor->priv->html_actions;
-	gtk_action_group_set_sensitive (action_group, active);
-
-	action_group = editor->priv->html_context_actions;
-	gtk_action_group_set_visible (action_group, active);
-
-        gtk_widget_set_sensitive (editor->priv->color_combo_box, active);
-
-	/* Certain paragraph styles are HTML-only. */
-	gtk_action_set_sensitive (ACTION (STYLE_H1), active);
-	gtk_action_set_sensitive (ACTION (STYLE_H2), active);
-	gtk_action_set_sensitive (ACTION (STYLE_H3), active);
-	gtk_action_set_sensitive (ACTION (STYLE_H4), active);
-	gtk_action_set_sensitive (ACTION (STYLE_H5), active);
-	gtk_action_set_sensitive (ACTION (STYLE_H6), active);
-	gtk_action_set_sensitive (ACTION (STYLE_ADDRESS), active);
-
-	/* Swap painters. */
-
-	if (active) {
-		new_painter = editor->priv->html_painter;
-		old_painter = editor->priv->plain_painter;
-	} else {
-		new_painter = editor->priv->plain_painter;
-		old_painter = editor->priv->html_painter;
-	}
-
-	/* Might be true during initialization. */
-	if (html->engine->painter == new_painter)
-		return;
-
-	html_gdk_painter_unrealize (HTML_GDK_PAINTER (old_painter));
-	if (html->engine->window != NULL)
-		html_gdk_painter_realize (
-			HTML_GDK_PAINTER (new_painter),
-			html->engine->window);
-
-	html_font_manager_set_default (
-		&new_painter->font_manager,
-		old_painter->font_manager.variable.face,
-		old_painter->font_manager.fixed.face,
-		old_painter->font_manager.var_size,
-		old_painter->font_manager.var_points,
-		old_painter->font_manager.fix_size,
-		old_painter->font_manager.fix_points);
-
-	html_engine_set_painter (html->engine, new_painter);
-	html_engine_schedule_redraw (html->engine);
-}
-
-static void
 action_indent_cb (GtkAction *action,
                   GtkhtmlEditor *editor)
 {
@@ -962,6 +900,75 @@ action_language_cb (GtkToggleAction *act
 }
 
 static void
+action_mode_cb (GtkRadioAction *action,
+                GtkRadioAction *current,
+                GtkhtmlEditor *editor)
+{
+	GtkActionGroup *action_group;
+	HTMLPainter *new_painter;
+	HTMLPainter *old_painter;
+	GtkHTML *html;
+	gboolean active;
+
+	html = gtkhtml_editor_get_html (editor);
+	active = (gtk_radio_action_get_current_value (current) != 0);
+
+	action_group = editor->priv->html_actions;
+	gtk_action_group_set_sensitive (action_group, active);
+
+	action_group = editor->priv->html_context_actions;
+	gtk_action_group_set_visible (action_group, active);
+
+        gtk_widget_set_sensitive (editor->priv->color_combo_box, active);
+
+	if (active)
+		gtk_widget_show (editor->priv->html_toolbar);
+	else
+		gtk_widget_hide (editor->priv->html_toolbar);
+
+	/* Certain paragraph styles are HTML-only. */
+	gtk_action_set_sensitive (ACTION (STYLE_H1), active);
+	gtk_action_set_sensitive (ACTION (STYLE_H2), active);
+	gtk_action_set_sensitive (ACTION (STYLE_H3), active);
+	gtk_action_set_sensitive (ACTION (STYLE_H4), active);
+	gtk_action_set_sensitive (ACTION (STYLE_H5), active);
+	gtk_action_set_sensitive (ACTION (STYLE_H6), active);
+	gtk_action_set_sensitive (ACTION (STYLE_ADDRESS), active);
+
+	/* Swap painters. */
+
+	if (active) {
+		new_painter = editor->priv->html_painter;
+		old_painter = editor->priv->plain_painter;
+	} else {
+		new_painter = editor->priv->plain_painter;
+		old_painter = editor->priv->html_painter;
+	}
+
+	/* Might be true during initialization. */
+	if (html->engine->painter == new_painter)
+		return;
+
+	html_gdk_painter_unrealize (HTML_GDK_PAINTER (old_painter));
+	if (html->engine->window != NULL)
+		html_gdk_painter_realize (
+			HTML_GDK_PAINTER (new_painter),
+			html->engine->window);
+
+	html_font_manager_set_default (
+		&new_painter->font_manager,
+		old_painter->font_manager.variable.face,
+		old_painter->font_manager.fixed.face,
+		old_painter->font_manager.var_size,
+		old_painter->font_manager.var_points,
+		old_painter->font_manager.fix_size,
+		old_painter->font_manager.fix_points);
+
+	html_engine_set_painter (html->engine, new_painter);
+	html_engine_schedule_redraw (html->engine);
+}
+
+static void
 action_monospaced_cb (GtkToggleAction *action,
                       GtkhtmlEditor *editor)
 {
@@ -1601,15 +1608,21 @@ static GtkActionEntry core_entries[] = {
 	  NULL }
 };
 
-static GtkToggleActionEntry core_toggle_entries[] = {
+static GtkRadioActionEntry core_mode_entries[] = {
+
+	{ "mode-html",
+	  NULL,
+	  N_("_HTML"),
+	  NULL,
+	  N_("HTML editing mode"),
+          1 },
 
-	{ "html-mode",
+	{ "mode-text",
 	  NULL,
-	  N_("_HTML Mode"),
+	  N_("Plain _Text"),
 	  NULL,
-	  N_("Toggle between HTML and plain text mode"),
-	  G_CALLBACK (action_html_mode_cb),
-	  TRUE },
+	  N_("Plain text editing mode"),
+	  0 }
 };
 
 static GtkRadioActionEntry core_justify_entries[] = {
@@ -2277,9 +2290,10 @@ gtkhtml_editor_actions_init (GtkhtmlEdit
 	gtk_action_group_add_actions (
 		action_group, core_entries,
 		G_N_ELEMENTS (core_entries), editor);
-	gtk_action_group_add_toggle_actions (
-		action_group, core_toggle_entries,
-		G_N_ELEMENTS (core_toggle_entries), editor);
+	gtk_action_group_add_radio_actions (
+		action_group, core_mode_entries,
+		G_N_ELEMENTS (core_mode_entries), 1,
+		G_CALLBACK (action_mode_cb), editor);
 	gtk_action_group_add_radio_actions (
 		action_group, core_justify_entries,
 		G_N_ELEMENTS (core_justify_entries),
Index: components/editor/gtkhtml-editor.c
===================================================================
--- components/editor/gtkhtml-editor.c	(revision 8876)
+++ components/editor/gtkhtml-editor.c	(working copy)
@@ -1077,25 +1077,25 @@ gtkhtml_editor_set_filename (GtkhtmlEdit
 gboolean
 gtkhtml_editor_get_html_mode (GtkhtmlEditor *editor)
 {
-	GtkToggleAction *action;
+	GtkRadioAction *action;
 
 	g_return_val_if_fail (GTKHTML_IS_EDITOR (editor), FALSE);
 
-	action = GTK_TOGGLE_ACTION (ACTION (HTML_MODE));
+	action = GTK_RADIO_ACTION (ACTION (MODE_HTML));
 
-	return gtk_toggle_action_get_active (action);
+	return (gtk_radio_action_get_current_value (action) != 0);
 }
 
 void
 gtkhtml_editor_set_html_mode (GtkhtmlEditor *editor,
                               gboolean html_mode)
 {
-	GtkToggleAction *action;
+	GtkRadioAction *action;
 
 	g_return_if_fail (GTKHTML_IS_EDITOR (editor));
 
-	action = GTK_TOGGLE_ACTION (ACTION (HTML_MODE));
-	gtk_toggle_action_set_active (action, html_mode);
+	action = GTK_RADIO_ACTION (ACTION (MODE_HTML));
+	gtk_radio_action_set_current_value (action, html_mode ? 1 : 0);
 
 	g_object_notify (G_OBJECT (editor), "html-mode");
 }
Index: components/editor/gtkhtml-editor-actions.h
===================================================================
--- components/editor/gtkhtml-editor-actions.h	(revision 8876)
+++ components/editor/gtkhtml-editor-actions.h	(working copy)
@@ -88,8 +88,6 @@
 	GTKHTML_EDITOR_ACTION ((editor), "format-menu")
 #define GTKHTML_EDITOR_ACTION_FORMAT_TEXT(editor) \
 	GTKHTML_EDITOR_ACTION ((editor), "format-text")
-#define GTKHTML_EDITOR_ACTION_HTML_MODE(editor) \
-	GTKHTML_EDITOR_ACTION ((editor), "html-mode")
 #define GTKHTML_EDITOR_ACTION_INSERT_IMAGE(editor) \
 	GTKHTML_EDITOR_ACTION ((editor), "insert-image")
 #define GTKHTML_EDITOR_ACTION_INSERT_LINK(editor) \
@@ -108,6 +106,10 @@
 	GTKHTML_EDITOR_ACTION ((editor), "justify-left")
 #define GTKHTML_EDITOR_ACTION_JUSTIFY_RIGHT(editor) \
 	GTKHTML_EDITOR_ACTION ((editor), "justify-right")
+#define GTKHTML_EDITOR_ACTION_MODE_HTML(editor) \
+	GTKHTML_EDITOR_ACTION ((editor), "mode-html")
+#define GTKHTML_EDITOR_ACTION_MODE_TEXT(editor) \
+	GTKHTML_EDITOR_ACTION ((editor), "mode-text")
 #define GTKHTML_EDITOR_ACTION_MONOSPACED(editor) \
 	GTKHTML_EDITOR_ACTION ((editor), "monospaced")
 #define GTKHTML_EDITOR_ACTION_PROPERTIES_RULE(editor) \
Index: components/editor/gtkhtml-editor-private.c
===================================================================
--- components/editor/gtkhtml-editor-private.c	(revision 8876)
+++ components/editor/gtkhtml-editor-private.c	(working copy)
@@ -219,6 +219,20 @@ gtkhtml_editor_private_init (GtkhtmlEdit
 	priv->edit_toolbar = g_object_ref (widget);
 	gtk_widget_show (widget);
 
+	widget = gtkhtml_editor_get_managed_widget (editor, "/html-toolbar");
+	gtk_toolbar_set_style (GTK_TOOLBAR (widget), GTK_TOOLBAR_ICONS);
+	gtk_box_pack_start (GTK_BOX (editor->vbox), widget, FALSE, FALSE, 0);
+	priv->html_toolbar = g_object_ref (widget);
+	gtk_widget_show (widget);
+
+	widget = gtkhtml_editor_get_managed_widget (
+		editor, "/edit-toolbar/mode-html");
+	gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
+
+	widget = gtkhtml_editor_get_managed_widget (
+		editor, "/edit-toolbar/mode-text");
+	gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
+
 	widget = gtk_scrolled_window_new (NULL, NULL);
 	gtk_scrolled_window_set_policy (
 		GTK_SCROLLED_WINDOW (widget),
@@ -236,22 +250,28 @@ gtkhtml_editor_private_init (GtkhtmlEdit
 
 	/* Add some combo boxes to the "edit" toolbar. */
 
-	tool_item = gtk_separator_tool_item_new ();
-	gtk_toolbar_insert (GTK_TOOLBAR (priv->edit_toolbar), tool_item, 0);
-	gtk_widget_show_all (GTK_WIDGET (tool_item));
-
 	tool_item = gtk_tool_item_new ();
 	widget = gtkhtml_combo_box_new_with_action (
 		GTK_RADIO_ACTION (ACTION (STYLE_NORMAL)));
 	gtk_combo_box_set_focus_on_click (GTK_COMBO_BOX (widget), FALSE);
 	gtk_container_add (GTK_CONTAINER (tool_item), widget);
 	gtk_widget_set_tooltip_text (widget, _("Paragraph Style"));
-	gtk_toolbar_insert (GTK_TOOLBAR (priv->edit_toolbar), tool_item, 0);
+	gtk_toolbar_insert (GTK_TOOLBAR (priv->edit_toolbar), tool_item, 2);
 	priv->style_combo_box = g_object_ref (widget);
 	gtk_widget_show_all (GTK_WIDGET (tool_item));
 
 	tool_item = gtk_separator_tool_item_new ();
-	gtk_toolbar_insert (GTK_TOOLBAR (priv->edit_toolbar), tool_item, 0);
+	gtk_toolbar_insert (GTK_TOOLBAR (priv->edit_toolbar), tool_item, 2);
+	gtk_widget_show_all (GTK_WIDGET (tool_item));
+
+	/* Add some combo boxes to the "html" toolbar. */
+
+	tool_item = gtk_tool_item_new ();
+	widget = gtkhtml_color_combo_new ();
+	gtk_container_add (GTK_CONTAINER (tool_item), widget);
+	gtk_widget_set_tooltip_text (widget, _("Font Color"));
+	gtk_toolbar_insert (GTK_TOOLBAR (priv->html_toolbar), tool_item, 0);
+	priv->color_combo_box = g_object_ref (widget);
 	gtk_widget_show_all (GTK_WIDGET (tool_item));
 
 	tool_item = gtk_tool_item_new ();
@@ -260,22 +280,10 @@ gtkhtml_editor_private_init (GtkhtmlEdit
 	gtk_combo_box_set_focus_on_click (GTK_COMBO_BOX (widget), FALSE);
 	gtk_container_add (GTK_CONTAINER (tool_item), widget);
 	gtk_widget_set_tooltip_text (widget, _("Font Size"));
-	gtk_toolbar_insert (GTK_TOOLBAR (priv->edit_toolbar), tool_item, 0);
+	gtk_toolbar_insert (GTK_TOOLBAR (priv->html_toolbar), tool_item, 0);
 	priv->size_combo_box = g_object_ref (widget);
 	gtk_widget_show_all (GTK_WIDGET (tool_item));
 
-	tool_item = gtk_separator_tool_item_new ();
-	gtk_toolbar_insert (GTK_TOOLBAR (priv->edit_toolbar), tool_item, -1);
-	gtk_widget_show_all (GTK_WIDGET (tool_item));
-
-	tool_item = gtk_tool_item_new ();
-	widget = gtkhtml_color_combo_new ();
-	gtk_container_add (GTK_CONTAINER (tool_item), widget);
-	gtk_widget_set_tooltip_text (widget, _("Font Color"));
-	gtk_toolbar_insert (GTK_TOOLBAR (priv->edit_toolbar), tool_item, -1);
-	priv->color_combo_box = g_object_ref (widget);
-	gtk_widget_show_all (GTK_WIDGET (tool_item));
-
 	/* Initialize painters (requires "edit_area"). */
 
 	html = gtkhtml_editor_get_html (editor);
@@ -368,6 +376,7 @@ gtkhtml_editor_private_dispose (GtkhtmlE
 	DISPOSE (priv->main_menu);
 	DISPOSE (priv->main_toolbar);
 	DISPOSE (priv->edit_toolbar);
+	DISPOSE (priv->html_toolbar);
 	DISPOSE (priv->edit_area);
 
 	DISPOSE (priv->color_combo_box);
Index: components/editor/gtkhtml-editor-private.h
===================================================================
--- components/editor/gtkhtml-editor-private.h	(revision 8876)
+++ components/editor/gtkhtml-editor-private.h	(working copy)
@@ -121,6 +121,7 @@ struct _GtkhtmlEditorPrivate {
 	GtkWidget *main_menu;
 	GtkWidget *main_toolbar;
 	GtkWidget *edit_toolbar;
+	GtkWidget *html_toolbar;
 	GtkWidget *edit_area;
 
 	GtkWidget *color_combo_box;
