Index: components/editor/gtkhtml-editor.ui
===================================================================
--- components/editor/gtkhtml-editor.ui	(revision 8887)
+++ components/editor/gtkhtml-editor.ui	(working copy)
@@ -69,25 +69,19 @@
         <menuitem action='size-plus-two'/>
         <menuitem action='size-plus-three'/>
         <menuitem action='size-plus-four'/>
+        <separator/>
+        <menuitem action='size-header-1'/>
+        <menuitem action='size-header-2'/>
+        <menuitem action='size-header-3'/>
+        <menuitem action='size-header-4'/>
+        <menuitem action='size-header-5'/>
+        <menuitem action='size-header-6'/>
       </menu>
       <separator/>
       <menu action='paragraph-style-menu'>
-        <menuitem action='style-normal'/>
-        <separator/>
-        <menuitem action='style-h1'/>
-        <menuitem action='style-h2'/>
-        <menuitem action='style-h3'/>
-        <menuitem action='style-h4'/>
-        <menuitem action='style-h5'/>
-        <menuitem action='style-h6'/>
-        <separator/>
-        <menuitem action='style-list-bullet'/>
-        <menuitem action='style-list-roman'/>
-        <menuitem action='style-list-number'/>
-        <menuitem action='style-list-alpha'/>
-        <separator/>
-        <menuitem action='style-address'/>
+        <menuitem action='style-word-wrap'/>
         <menuitem action='style-preformat'/>
+        <menuitem action='style-list'/>
       </menu>
       <menu action='justify-menu'>
         <menuitem action='justify-left'/>
@@ -120,6 +114,8 @@
     <toolitem action='justify-center'/>
     <toolitem action='justify-right'/>
     <separator/>
+    <toolitem action='list-bulleted'/>
+    <toolitem action='list-numbered'/>
     <toolitem action='unindent'/>
     <toolitem action='indent'/>
   </toolbar>
Index: components/editor/gtkhtml-editor-actions.c
===================================================================
--- components/editor/gtkhtml-editor-actions.c	(revision 8887)
+++ components/editor/gtkhtml-editor-actions.c	(working copy)
@@ -57,6 +57,8 @@
  * "justify-center"	(radio)
  * "justify-left"	(radio)
  * "justify-right"	(radio)
+ * "list-bulleted"	(toggle)
+ * "list-numbered"	(toggle)
  * "mode-html"		(radio)
  * "mode-plain"		(radio)
  * "paste"
@@ -66,19 +68,9 @@
  * "show-find"
  * "show-replace"
  * "spell-check"
- * "style-address"	(radio)
- * "style-h1"		(radio)
- * "style-h2"		(radio)
- * "style-h3"		(radio)
- * "style-h4"		(radio)
- * "style-h5"		(radio)
- * "style-h6"		(radio)
- * "style-list-alpha"	(radio)
- * "style-list-bullet"	(radio)
- * "style-list-number"	(radio)
- * "style-list-roman"	(radio)
- * "style-normal"	(radio)
+ * "style-list"		(radio)
  * "style-preformat"	(radio)
+ * "style-word-wrap"	(radio)
  * "test-url"
  * "undo"
  * "unindent"
@@ -94,6 +86,12 @@
  * "italic"		(toggle)
  * "monospaced"		(toggle)
  * "properties-page"
+ * "size-header-1"	(radio)
+ * "size-header-2"	(radio)
+ * "size-header-3"	(radio)
+ * "size-header-4"	(radio)
+ * "size-header-5"	(radio)
+ * "size-header-6"	(radio)
  * "size-minus-one"	(radio)
  * "size-minus-two"	(radio)
  * "size-plus-four"	(radio)
@@ -900,6 +898,101 @@ action_language_cb (GtkToggleAction *act
 }
 
 static void
+action_list_bulleted_cb (GtkToggleAction *action,
+                         GtkhtmlEditor *editor)
+{
+	GtkHTMLParagraphStyle style;
+	GtkRadioAction *radio_action;
+
+	if (gtk_toggle_action_get_active (action))
+		style = GTK_HTML_PARAGRAPH_STYLE_ITEMDOTTED;
+	else
+		style = GTK_HTML_PARAGRAPH_STYLE_NORMAL;
+
+	radio_action = GTK_RADIO_ACTION (ACTION (LIST_STYLE_NONE));
+	gtk_radio_action_set_current_value (radio_action, style);
+}
+
+static void
+action_list_numbered_cb (GtkToggleAction *action,
+                         GtkhtmlEditor *editor)
+{
+	GtkHTMLParagraphStyle style;
+	GtkRadioAction *radio_action;
+
+	if (gtk_toggle_action_get_active (action))
+		style = GTK_HTML_PARAGRAPH_STYLE_ITEMDIGIT;
+	else
+		style = GTK_HTML_PARAGRAPH_STYLE_NORMAL;
+
+	radio_action = GTK_RADIO_ACTION (ACTION (LIST_STYLE_NONE));
+	gtk_radio_action_set_current_value (radio_action, style);
+}
+
+static void
+action_list_style_cb (GtkRadioAction *action,
+                      GtkRadioAction *current,
+                      GtkhtmlEditor *editor)
+{
+	GtkToggleAction *toggle_action;
+	gboolean is_bulleted_list;
+	gboolean is_numbered_list;
+	ParagraphStyle style;
+	const gchar *command;
+
+	switch (gtk_radio_action_get_current_value (current)) {
+		case GTK_HTML_PARAGRAPH_STYLE_NORMAL:
+			style = PARAGRAPH_STYLE_WORD_WRAP;
+			is_bulleted_list = FALSE;
+			is_numbered_list = FALSE;
+			command = "style-normal";
+			break;
+
+		case GTK_HTML_PARAGRAPH_STYLE_ITEMDOTTED:
+			style = PARAGRAPH_STYLE_LIST;
+			is_bulleted_list = TRUE;
+			is_numbered_list = FALSE;
+			command = "style-itemdot";
+			break;
+
+		case GTK_HTML_PARAGRAPH_STYLE_ITEMROMAN:
+			style = PARAGRAPH_STYLE_LIST;
+			is_bulleted_list = FALSE;
+			is_numbered_list = TRUE;
+			command = "style-itemroman";
+			break;
+
+		case GTK_HTML_PARAGRAPH_STYLE_ITEMDIGIT:
+			style = PARAGRAPH_STYLE_LIST;
+			is_bulleted_list = FALSE;
+			is_numbered_list = TRUE;
+			command = "style-itemdigit";
+			break;
+
+		case GTK_HTML_PARAGRAPH_STYLE_ITEMALPHA:
+			style = PARAGRAPH_STYLE_LIST;
+			is_bulleted_list = FALSE;
+			is_numbered_list = TRUE;
+			command = "style-itemalpha";
+			break;
+
+		default:
+			g_return_if_reached ();
+	}
+
+	action = GTK_RADIO_ACTION (ACTION (STYLE_WORD_WRAP));
+	gtk_radio_action_set_current_value (action, style);
+
+	toggle_action = GTK_TOGGLE_ACTION (ACTION (LIST_BULLETED));
+	gtk_toggle_action_set_active (toggle_action, is_bulleted_list);
+
+	toggle_action = GTK_TOGGLE_ACTION (ACTION (LIST_NUMBERED));
+	gtk_toggle_action_set_active (toggle_action, is_numbered_list);
+
+	gtk_html_command (gtkhtml_editor_get_html (editor), command);
+}
+
+static void
 action_mode_cb (GtkRadioAction *action,
                 GtkRadioAction *current,
                 GtkhtmlEditor *editor)
@@ -928,15 +1021,6 @@ action_mode_cb (GtkRadioAction *action,
 	else
 		gtk_widget_hide (editor->priv->html_toolbar);
 
-	/* Certain paragraph styles are HTML-only. */
-	gtk_action_set_sensitive (ACTION (STYLE_H1), html_mode);
-	gtk_action_set_sensitive (ACTION (STYLE_H2), html_mode);
-	gtk_action_set_sensitive (ACTION (STYLE_H3), html_mode);
-	gtk_action_set_sensitive (ACTION (STYLE_H4), html_mode);
-	gtk_action_set_sensitive (ACTION (STYLE_H5), html_mode);
-	gtk_action_set_sensitive (ACTION (STYLE_H6), html_mode);
-	gtk_action_set_sensitive (ACTION (STYLE_ADDRESS), html_mode);
-
 	/* Swap painters. */
 
 	if (html_mode) {
@@ -1072,51 +1156,48 @@ action_style_cb (GtkRadioAction *action,
                  GtkRadioAction *current,
                  GtkhtmlEditor *editor)
 {
-	const gchar *command = NULL;
+	GtkHTML *html;
+	ParagraphStyle para_style;
+	GtkHTMLParagraphStyle list_style;
+	GtkToggleAction *toggle_action;
 
-	switch (gtk_radio_action_get_current_value (current)) {
-		case GTK_HTML_PARAGRAPH_STYLE_NORMAL:
-			command = "style-normal";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_H1:
-			command = "style-header1";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_H2:
-			command = "style-header2";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_H3:
-			command = "style-header3";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_H4:
-			command = "style-header4";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_H5:
-			command = "style-header5";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_H6:
-			command = "style-header6";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_ADDRESS:
-			command = "style-address";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_PRE:
-			command = "style-pre";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_ITEMDOTTED:
-			command = "style-itemdot";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_ITEMROMAN:
-			command = "style-itemroman";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_ITEMDIGIT:
-			command = "style-itemdigit";
-			break;
-		case GTK_HTML_PARAGRAPH_STYLE_ITEMALPHA:
-			command = "style-itemalpha";
-			break;
-	}
+	html = gtkhtml_editor_get_html (editor);
+	action = GTK_RADIO_ACTION (ACTION (LIST_STYLE_NONE));
+	para_style = gtk_radio_action_get_current_value (current);
 
-	gtk_html_command (gtkhtml_editor_get_html (editor), command);
+	if (para_style == PARAGRAPH_STYLE_WORD_WRAP) {
+
+		gtk_html_command (html, "style-normal");
+
+		list_style = GTK_HTML_PARAGRAPH_STYLE_NORMAL;
+		gtk_radio_action_set_current_value (action, list_style);
+
+		toggle_action = GTK_TOGGLE_ACTION (ACTION (LIST_BULLETED));
+		gtk_toggle_action_set_active (toggle_action, FALSE);
+
+		toggle_action = GTK_TOGGLE_ACTION (ACTION (LIST_NUMBERED));
+		gtk_toggle_action_set_active (toggle_action, FALSE);
+
+	} else if (para_style == PARAGRAPH_STYLE_PREFORMAT) {
+
+		gtk_html_command (html, "style-pre");
+
+		list_style = GTK_HTML_PARAGRAPH_STYLE_NORMAL;
+		gtk_radio_action_set_current_value (action, list_style);
+
+		toggle_action = GTK_TOGGLE_ACTION (ACTION (LIST_BULLETED));
+		gtk_toggle_action_set_active (toggle_action, FALSE);
+
+		toggle_action = GTK_TOGGLE_ACTION (ACTION (LIST_NUMBERED));
+		gtk_toggle_action_set_active (toggle_action, FALSE);
+
+	} else if (para_style == PARAGRAPH_STYLE_LIST) {
+
+		list_style = gtk_radio_action_get_current_value (action);
+		if (list_style == GTK_HTML_PARAGRAPH_STYLE_NORMAL)
+			list_style = GTK_HTML_PARAGRAPH_STYLE_ITEMDOTTED;
+		gtk_radio_action_set_current_value (action, list_style);
+	}
 }
 
 static void
@@ -1161,27 +1242,45 @@ action_size_cb (GtkRadioAction *action,
 	const gchar *command = NULL;
 
 	switch (gtk_radio_action_get_current_value (current)) {
-		case GTK_HTML_FONT_STYLE_SIZE_1:
+		case FONT_SIZE_MINUS_TWO:
 			command = "size-minus-2";
 			break;
-		case GTK_HTML_FONT_STYLE_SIZE_2:
+		case FONT_SIZE_MINUS_ONE:
 			command = "size-minus-1";
 			break;
-		case GTK_HTML_FONT_STYLE_SIZE_3:
+		case FONT_SIZE_PLUS_ZERO:
 			command = "size-plus-0";
 			break;
-		case GTK_HTML_FONT_STYLE_SIZE_4:
+		case FONT_SIZE_PLUS_ONE:
 			command = "size-plus-1";
 			break;
-		case GTK_HTML_FONT_STYLE_SIZE_5:
+		case FONT_SIZE_PLUS_TWO:
 			command = "size-plus-2";
 			break;
-		case GTK_HTML_FONT_STYLE_SIZE_6:
+		case FONT_SIZE_PLUS_THREE:
 			command = "size-plus-3";
 			break;
-		case GTK_HTML_FONT_STYLE_SIZE_7:
+		case FONT_SIZE_PLUS_FOUR:
 			command = "size-plus-4";
 			break;
+		case FONT_SIZE_HEADER_1:
+			command = "style-header1";
+			break;
+		case FONT_SIZE_HEADER_2:
+			command = "style-header2";
+			break;
+		case FONT_SIZE_HEADER_3:
+			command = "style-header3";
+			break;
+		case FONT_SIZE_HEADER_4:
+			command = "style-header4";
+			break;
+		case FONT_SIZE_HEADER_5:
+			command = "style-header5";
+			break;
+		case FONT_SIZE_HEADER_6:
+			command = "style-header6";
+			break;
 	}
 
 	gtk_html_command (gtkhtml_editor_get_html (editor), command);
@@ -1610,6 +1709,63 @@ static GtkActionEntry core_entries[] = {
 	  NULL }
 };
 
+static GtkToggleActionEntry core_list_entries[] = {
+
+	{ "list-bulleted",
+	  "stock_list_bullet",
+	  N_("Bulleted List"),
+	  NULL,
+	  N_("Bulleted List"),
+	  G_CALLBACK (action_list_bulleted_cb),
+	  FALSE },
+
+	{ "list-numbered",
+	  "stock_list_enum",
+	  N_("Numbered List"),
+	  NULL,
+	  N_("Numbered List"),
+	  G_CALLBACK (action_list_numbered_cb),
+	  FALSE }
+};
+
+static GtkRadioActionEntry core_list_style_entries[] = {
+
+	{ "list-style-none",
+	  NULL,
+	  NULL,
+	  NULL,
+	  NULL,
+	  GTK_HTML_PARAGRAPH_STYLE_NORMAL },
+
+	{ "list-style-alpha",
+	  NULL,
+	  N_("_Alphabetical List"),
+	  NULL,
+	  NULL,
+	  GTK_HTML_PARAGRAPH_STYLE_ITEMALPHA },
+
+	{ "list-style-bullet",
+	  NULL,
+	  N_("_Bulleted List"),
+	  NULL,
+	  NULL,
+	  GTK_HTML_PARAGRAPH_STYLE_ITEMDOTTED },
+
+	{ "list-style-roman",
+	  NULL,
+	  N_("_Roman Numeral List"),
+	  NULL,
+	  NULL,
+	  GTK_HTML_PARAGRAPH_STYLE_ITEMROMAN },
+
+	{ "list-style-number",
+	  NULL,
+	  N_("Numbered _List"),
+	  NULL,
+	  NULL,
+	  GTK_HTML_PARAGRAPH_STYLE_ITEMDIGIT },
+};
+
 static GtkRadioActionEntry core_justify_entries[] = {
 
 	{ "justify-center",
@@ -1653,96 +1809,26 @@ static GtkRadioActionEntry core_mode_ent
 
 static GtkRadioActionEntry core_style_entries[] = {
 
-	{ "style-normal",
-	  NULL,
-	  N_("_Normal"),
-	  "<Control>0",
-	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_NORMAL },
-
-	{ "style-h1",
-	  NULL,
-	  N_("Header _1"),
-	  "<Control>1",
-	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_H1 },
-
-	{ "style-h2",
-	  NULL,
-	  N_("Header _2"),
-	  "<Control>2",
-	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_H2 },
-
-	{ "style-h3",
-	  NULL,
-	  N_("Header _3"),
-	  "<Control>3",
-	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_H3 },
-
-	{ "style-h4",
-	  NULL,
-	  N_("Header _4"),
-	  "<Control>4",
-	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_H4 },
-
-	{ "style-h5",
-	  NULL,
-	  N_("Header _5"),
-	  "<Control>5",
-	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_H5 },
-
-	{ "style-h6",
-	  NULL,
-	  N_("Header _6"),
-	  "<Control>6",
+	{ "style-word-wrap",
 	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_H6 },
-
-	{ "style-address",
+	  N_("_Word Wrap"),
 	  NULL,
-	  N_("A_ddress"),
-	  "<Control>8",
 	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_ADDRESS },
+	  PARAGRAPH_STYLE_WORD_WRAP },
 
 	{ "style-preformat",
 	  NULL,
-	  N_("_Preformatted"),
-	  "<Control>7",
-	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_PRE },
-
-	{ "style-list-bullet",
-	  NULL,
-	  N_("_Bulleted List"),
-	  NULL,
-	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_ITEMDOTTED },
-
-	{ "style-list-roman",
-	  NULL,
-	  N_("_Roman Numeral List"),
-	  NULL,
-	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_ITEMROMAN },
-
-	{ "style-list-number",
-	  NULL,
-	  N_("Numbered _List"),
+	  N_("_Preformat"),
 	  NULL,
 	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_ITEMDIGIT },
+	  PARAGRAPH_STYLE_PREFORMAT },
 
-	{ "style-list-alpha",
+	{ "style-list",
 	  NULL,
-	  N_("_Alphabetical List"),
+	  N_("_List"),
 	  NULL,
 	  NULL,
-	  GTK_HTML_PARAGRAPH_STYLE_ITEMALPHA }
+	  PARAGRAPH_STYLE_LIST }
 };
 
 /*****************************************************************************
@@ -1887,52 +1973,101 @@ static GtkRadioActionEntry html_size_ent
 
 	{ "size-minus-two",
 	  NULL,
-	  N_("-2"),
+	  N_("Smaller"),
 	  NULL,
 	  NULL,
-	  GTK_HTML_FONT_STYLE_SIZE_1 },
+	  FONT_SIZE_MINUS_TWO },
 
 	{ "size-minus-one",
 	  NULL,
-	  N_("-1"),
+	  N_("Small"),
 	  NULL,
 	  NULL,
-	  GTK_HTML_FONT_STYLE_SIZE_2 },
+	  FONT_SIZE_MINUS_ONE },
 
 	{ "size-plus-zero",
 	  NULL,
-	  N_("+0"),
+	  N_("Medium"),
 	  NULL,
 	  NULL,
-	  GTK_HTML_FONT_STYLE_SIZE_3 },
+	  FONT_SIZE_PLUS_ZERO },
 
 	{ "size-plus-one",
 	  NULL,
-	  N_("+1"),
+	  N_("Large"),
 	  NULL,
 	  NULL,
-	  GTK_HTML_FONT_STYLE_SIZE_4 },
+	  FONT_SIZE_PLUS_ONE },
 
 	{ "size-plus-two",
 	  NULL,
-	  N_("+2"),
+	  N_("X-Large"),
 	  NULL,
 	  NULL,
-	  GTK_HTML_FONT_STYLE_SIZE_5 },
+	  FONT_SIZE_PLUS_TWO },
 
 	{ "size-plus-three",
 	  NULL,
-	  N_("+3"),
+	  N_("XX-Large"),
 	  NULL,
 	  NULL,
-	  GTK_HTML_FONT_STYLE_SIZE_6 },
+	  FONT_SIZE_PLUS_THREE },
 
 	{ "size-plus-four",
 	  NULL,
-	  N_("+4"),
+	  N_("Largest"),
+	  NULL,
+	  NULL,
+	  FONT_SIZE_PLUS_FOUR },
+
+	{ "separator",
+	  NULL,
+	  NULL,
+	  NULL,
+	  NULL,
+	  FONT_SIZE_SEPARATOR },
+
+	{ "size-header-1",
+	  NULL,
+	  N_("Header _1"),
+	  "<Control>1",
+	  NULL,
+	  FONT_SIZE_HEADER_1 },
+
+	{ "size-header-2",
+	  NULL,
+	  N_("Header _2"),
+	  "<Control>2",
+	  NULL,
+	  FONT_SIZE_HEADER_2 },
+
+	{ "size-header-3",
+	  NULL,
+	  N_("Header _3"),
+	  "<Control>3",
+	  NULL,
+	  FONT_SIZE_HEADER_3 },
+
+	{ "size-header-4",
+	  NULL,
+	  N_("Header _4"),
+	  "<Control>4",
+	  NULL,
+	  FONT_SIZE_HEADER_4 },
+
+	{ "size-header-5",
 	  NULL,
+	  N_("Header _5"),
+	  "<Control>5",
+	  NULL,
+	  FONT_SIZE_HEADER_5 },
+
+	{ "size-header-6",
 	  NULL,
-	  GTK_HTML_FONT_STYLE_SIZE_7 }
+	  N_("Header _6"),
+	  "<Control>6",
+	  NULL,
+	  FONT_SIZE_HEADER_6 }
 };
 
 /*****************************************************************************
@@ -2292,6 +2427,14 @@ 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_list_entries,
+		G_N_ELEMENTS (core_list_entries), editor);
+	gtk_action_group_add_radio_actions (
+		action_group, core_list_style_entries,
+		G_N_ELEMENTS (core_list_style_entries),
+		GTK_HTML_PARAGRAPH_STYLE_NORMAL,
+		G_CALLBACK (action_list_style_cb), editor);
 	gtk_action_group_add_radio_actions (
 		action_group, core_justify_entries,
 		G_N_ELEMENTS (core_justify_entries),
@@ -2305,7 +2448,7 @@ gtkhtml_editor_actions_init (GtkhtmlEdit
 	gtk_action_group_add_radio_actions (
 		action_group, core_style_entries,
 		G_N_ELEMENTS (core_style_entries),
-		GTK_HTML_PARAGRAPH_STYLE_NORMAL,
+		PARAGRAPH_STYLE_WORD_WRAP,
 		G_CALLBACK (action_style_cb), editor);
 	gtk_ui_manager_insert_action_group (manager, action_group, 0);
 
@@ -2322,7 +2465,7 @@ gtkhtml_editor_actions_init (GtkhtmlEdit
 	gtk_action_group_add_radio_actions (
 		action_group, html_size_entries,
 		G_N_ELEMENTS (html_size_entries),
-		GTK_HTML_FONT_STYLE_SIZE_3,
+		FONT_SIZE_PLUS_ZERO,
 		G_CALLBACK (action_size_cb), editor);
 	gtk_ui_manager_insert_action_group (manager, action_group, 0);
 
Index: components/editor/gtkhtml-combo-box.c
===================================================================
--- components/editor/gtkhtml-combo-box.c	(revision 8887)
+++ components/editor/gtkhtml-combo-box.c	(working copy)
@@ -33,7 +33,8 @@ enum {
 
 enum {
 	PROP_0,
-	PROP_ACTION
+	PROP_ACTION,
+	PROP_LABELS_VISIBLE
 };
 
 struct _GtkhtmlComboBoxPrivate {
@@ -43,6 +44,7 @@ struct _GtkhtmlComboBoxPrivate {
 	guint changed_handler_id;		/* action::changed */
 	guint group_sensitive_handler_id;	/* action-group::sensitive */
 	guint group_visible_handler_id;		/* action-group::visible */
+	gboolean labels_visible;
 };
 
 static gpointer parent_class;
@@ -83,6 +85,23 @@ combo_box_action_group_notify_cb (GtkAct
 		gtk_action_group_get_visible (action_group), NULL);
 }
 
+static gboolean
+combo_box_is_row_separator (GtkTreeModel *model,
+                            GtkTreeIter *iter)
+{
+	GtkAction *action;
+	const gchar *name;
+
+	/* Dirty trick: Actions whose names begin with the word
+	 * "separator" are rendered as row separators. */
+
+	gtk_tree_model_get (model, iter, COLUMN_ACTION, &action, -1);
+	g_return_val_if_fail (GTK_IS_ACTION (action), FALSE);
+	name = gtk_action_get_name (action);
+
+	return g_str_has_prefix (name, "separator");
+}
+
 static void
 combo_box_render_pixbuf (GtkCellLayout *layout,
                          GtkCellRenderer *renderer,
@@ -95,6 +114,7 @@ combo_box_render_pixbuf (GtkCellLayout *
 	gchar *stock_id;
 	gboolean sensitive;
 	gboolean visible;
+	guint xpad;
 
 	gtk_tree_model_get (model, iter, COLUMN_ACTION, &action, -1);
 
@@ -106,6 +126,10 @@ combo_box_render_pixbuf (GtkCellLayout *
 		"visible", &visible,
 		NULL);
 
+	/* Stretch out a little if we're not showing the label.
+	 * XXX Use a style property instead of a hard-coded value. */
+	xpad = combo_box->priv->labels_visible ? 0 : 3;
+
 	g_object_set (
 		G_OBJECT (renderer),
 		"icon-name", icon_name,
@@ -113,6 +137,7 @@ combo_box_render_pixbuf (GtkCellLayout *
 		"stock-id", stock_id,
 		"stock-size", GTK_ICON_SIZE_MENU,
 		"visible", visible,
+		"xpad", xpad,
 		NULL);
 
 	g_free (icon_name);
@@ -127,7 +152,6 @@ combo_box_render_text (GtkCellLayout *la
                        GtkhtmlComboBox *combo_box)
 {
 	GtkRadioAction *action;
-	gchar **strv;
 	gchar *label;
 	gboolean sensitive;
 	gboolean visible;
@@ -141,11 +165,17 @@ combo_box_render_text (GtkCellLayout *la
 		"visible", &visible,
 		NULL);
 
-	/* Strip out underscores. */
-	strv = g_strsplit (label, "_", -1);
-	g_free (label);
-	label = g_strjoinv (NULL, strv);
-	g_strfreev (strv);
+	if (label != NULL) {
+		gchar **strv;
+
+		/* Strip out underscores. */
+		strv = g_strsplit (label, "_", -1);
+		g_free (label);
+		label = g_strjoinv (NULL, strv);
+		g_strfreev (strv);
+	}
+
+	visible &= combo_box->priv->labels_visible;
 
 	g_object_set (
 		G_OBJECT (renderer),
@@ -224,6 +254,12 @@ combo_box_set_property (GObject *object,
 				GTKHTML_COMBO_BOX (object),
 				g_value_get_object (value));
 			return;
+
+		case PROP_LABELS_VISIBLE:
+			gtkhtml_combo_box_set_labels_visible (
+				GTKHTML_COMBO_BOX (object),
+				g_value_get_boolean (value));
+			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -241,6 +277,12 @@ combo_box_get_property (GObject *object,
 				value, gtkhtml_combo_box_get_action (
 				GTKHTML_COMBO_BOX (object)));
 			return;
+
+		case PROP_LABELS_VISIBLE:
+			g_value_set_boolean (
+				value, gtkhtml_combo_box_get_labels_visible (
+				GTKHTML_COMBO_BOX (object)));
+			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -323,6 +365,18 @@ combo_box_class_init (GtkhtmlComboBoxCla
 			_("Action"),
 			_("A GtkRadioAction"),
 			GTK_TYPE_RADIO_ACTION,
+			G_PARAM_CONSTRUCT |
+			G_PARAM_READWRITE));
+
+	g_object_class_install_property (
+		object_class,
+		PROP_LABELS_VISIBLE,
+		g_param_spec_boolean (
+			"labels-visible",
+			_("Labels visible"),
+			_("Show action labels in the combo box"),
+			TRUE,
+			G_PARAM_CONSTRUCT |
 			G_PARAM_READWRITE));
 }
 
@@ -349,6 +403,10 @@ combo_box_init (GtkhtmlComboBox *combo_b
 		(GtkCellLayoutDataFunc) combo_box_render_text,
 		combo_box, NULL);
 
+	gtk_combo_box_set_row_separator_func (
+		GTK_COMBO_BOX (combo_box), (GtkTreeViewRowSeparatorFunc)
+		combo_box_is_row_separator, NULL, NULL);
+
 	combo_box->priv->index = g_hash_table_new_full (
 		g_direct_hash, g_direct_equal,
 		(GDestroyNotify) NULL,
@@ -476,3 +534,21 @@ gtkhtml_combo_box_set_current_value (Gtk
 	gtk_radio_action_set_current_value (
 		combo_box->priv->action, current_value);
 }
+
+gboolean
+gtkhtml_combo_box_get_labels_visible (GtkhtmlComboBox *combo_box)
+{
+	g_return_val_if_fail (GTKHTML_IS_COMBO_BOX (combo_box), FALSE);
+
+	return combo_box->priv->labels_visible;
+}
+
+void
+gtkhtml_combo_box_set_labels_visible (GtkhtmlComboBox *combo_box,
+                                      gboolean visible)
+{
+	g_return_if_fail (GTKHTML_IS_COMBO_BOX (combo_box));
+
+	combo_box->priv->labels_visible = visible;
+	combo_box_update_model (combo_box);
+}
Index: components/editor/gtkhtml-editor.c
===================================================================
--- components/editor/gtkhtml-editor.c	(revision 8887)
+++ components/editor/gtkhtml-editor.c	(working copy)
@@ -99,7 +99,7 @@ static void
 editor_font_style_changed_cb (GtkhtmlEditor *editor,
                               GtkHTMLFontStyle style)
 {
-	GtkHTMLFontStyle size;
+	FontSize size;
 
 	gtk_toggle_action_set_active (
 		GTK_TOGGLE_ACTION (ACTION (BOLD)),
@@ -121,9 +121,32 @@ editor_font_style_changed_cb (GtkhtmlEdi
 		GTK_TOGGLE_ACTION (ACTION (UNDERLINE)),
 		style & GTK_HTML_FONT_STYLE_UNDERLINE);
 
-	size = style & GTK_HTML_FONT_STYLE_SIZE_MASK;
-	if (size == GTK_HTML_FONT_STYLE_DEFAULT)
-		size = GTK_HTML_FONT_STYLE_SIZE_3;
+	switch (style & GTK_HTML_FONT_STYLE_SIZE_MASK) {
+		case GTK_HTML_FONT_STYLE_SIZE_1:
+			size = FONT_SIZE_MINUS_TWO;
+			break;
+		case GTK_HTML_FONT_STYLE_SIZE_2:
+			size = FONT_SIZE_MINUS_ONE;
+			break;
+		case GTK_HTML_FONT_STYLE_SIZE_3:
+			size = FONT_SIZE_PLUS_ZERO;
+			break;
+		case GTK_HTML_FONT_STYLE_SIZE_4:
+			size = FONT_SIZE_PLUS_ONE;
+			break;
+		case GTK_HTML_FONT_STYLE_SIZE_5:
+			size = FONT_SIZE_PLUS_TWO;
+			break;
+		case GTK_HTML_FONT_STYLE_SIZE_6:
+			size = FONT_SIZE_PLUS_THREE;
+			break;
+		case GTK_HTML_FONT_STYLE_SIZE_7:
+			size = FONT_SIZE_PLUS_FOUR;
+			break;
+		default:
+			size = FONT_SIZE_PLUS_ZERO;
+			break;
+	}
 
 	gtk_radio_action_set_current_value (
 		GTK_RADIO_ACTION (ACTION (SIZE_PLUS_ZERO)), size);
@@ -140,8 +163,28 @@ static void
 editor_paragraph_style_changed_cb (GtkhtmlEditor *editor,
                                    GtkHTMLParagraphStyle style)
 {
-	gtk_radio_action_set_current_value (
-		GTK_RADIO_ACTION (ACTION (STYLE_NORMAL)), style);
+	GtkRadioAction *action;
+	gint value;
+
+	switch (style) {
+		case GTK_HTML_PARAGRAPH_STYLE_PRE:
+			value = PARAGRAPH_STYLE_PREFORMAT;
+			break;
+
+		case GTK_HTML_PARAGRAPH_STYLE_ITEMDOTTED:
+		case GTK_HTML_PARAGRAPH_STYLE_ITEMROMAN:
+		case GTK_HTML_PARAGRAPH_STYLE_ITEMDIGIT:
+		case GTK_HTML_PARAGRAPH_STYLE_ITEMALPHA:
+			value = PARAGRAPH_STYLE_LIST;
+			break;
+
+		default:
+			value = PARAGRAPH_STYLE_WORD_WRAP;
+			break;
+	}
+
+	action = GTK_RADIO_ACTION (ACTION (STYLE_WORD_WRAP));
+	gtk_radio_action_set_current_value (action, value);
 }
 
 static void
@@ -542,7 +585,7 @@ editor_constructor (GType type,
 	/* Initialize various GtkhtmlComboBox instances. */
 	g_object_set (
 		WIDGET (PARAGRAPH_PROPERTIES_STYLE_COMBO_BOX),
-		"action", ACTION (STYLE_NORMAL), NULL);
+		"action", ACTION (STYLE_WORD_WRAP), NULL);
 	g_object_set (
 		WIDGET (TEXT_PROPERTIES_SIZE_COMBO_BOX),
 		"action", ACTION (SIZE_PLUS_ZERO), NULL);
Index: components/editor/gtkhtml-editor-actions.h
===================================================================
--- components/editor/gtkhtml-editor-actions.h	(revision 8887)
+++ components/editor/gtkhtml-editor-actions.h	(working copy)
@@ -106,6 +106,12 @@
 	GTKHTML_EDITOR_ACTION ((editor), "justify-left")
 #define GTKHTML_EDITOR_ACTION_JUSTIFY_RIGHT(editor) \
 	GTKHTML_EDITOR_ACTION ((editor), "justify-right")
+#define GTKHTML_EDITOR_ACTION_LIST_BULLETED(editor) \
+	GTKHTML_EDITOR_ACTION ((editor), "list-bulleted")
+#define GTKHTML_EDITOR_ACTION_LIST_NUMBERED(editor) \
+	GTKHTML_EDITOR_ACTION ((editor), "list-numbered")
+#define GTKHTML_EDITOR_ACTION_LIST_STYLE_NONE(editor) \
+	GTKHTML_EDITOR_ACTION ((editor), "list-style-none")
 #define GTKHTML_EDITOR_ACTION_MODE_HTML(editor) \
 	GTKHTML_EDITOR_ACTION ((editor), "mode-html")
 #define GTKHTML_EDITOR_ACTION_MODE_PLAIN(editor) \
@@ -126,22 +132,12 @@
 	GTKHTML_EDITOR_ACTION ((editor), "spell-check")
 #define GTKHTML_EDITOR_ACTION_STRIKETHROUGH(editor) \
 	GTKHTML_EDITOR_ACTION ((editor), "strikethrough")
-#define GTKHTML_EDITOR_ACTION_STYLE_ADDRESS(editor) \
-	GTKHTML_EDITOR_ACTION ((editor), "style-address")
-#define GTKHTML_EDITOR_ACTION_STYLE_H1(editor) \
-	GTKHTML_EDITOR_ACTION ((editor), "style-h1")
-#define GTKHTML_EDITOR_ACTION_STYLE_H2(editor) \
-	GTKHTML_EDITOR_ACTION ((editor), "style-h2")
-#define GTKHTML_EDITOR_ACTION_STYLE_H3(editor) \
-	GTKHTML_EDITOR_ACTION ((editor), "style-h3")
-#define GTKHTML_EDITOR_ACTION_STYLE_H4(editor) \
-	GTKHTML_EDITOR_ACTION ((editor), "style-h4")
-#define GTKHTML_EDITOR_ACTION_STYLE_H5(editor) \
-	GTKHTML_EDITOR_ACTION ((editor), "style-h5")
-#define GTKHTML_EDITOR_ACTION_STYLE_H6(editor) \
-	GTKHTML_EDITOR_ACTION ((editor), "style-h6")
-#define GTKHTML_EDITOR_ACTION_STYLE_NORMAL(editor) \
-	GTKHTML_EDITOR_ACTION ((editor), "style-normal")
+#define GTKHTML_EDITOR_ACTION_STYLE_LIST(editor) \
+	GTKHTML_EDITOR_ACTION ((editor), "style-list")
+#define GTKHTML_EDITOR_ACTION_STYLE_PREFORMAT(editor) \
+	GTKHTML_EDITOR_ACTION ((editor), "style-preformat")
+#define GTKHTML_EDITOR_ACTION_STYLE_WORD_WRAP(editor) \
+	GTKHTML_EDITOR_ACTION ((editor), "style-word-wrap")
 #define GTKHTML_EDITOR_ACTION_TEST_URL(editor) \
 	GTKHTML_EDITOR_ACTION ((editor), "test-url")
 #define GTKHTML_EDITOR_ACTION_UNDERLINE(editor) \
Index: components/editor/gtkhtml-combo-box.h
===================================================================
--- components/editor/gtkhtml-combo-box.h	(revision 8887)
+++ components/editor/gtkhtml-combo-box.h	(working copy)
@@ -72,6 +72,11 @@ gint		gtkhtml_combo_box_get_current_valu
 void		gtkhtml_combo_box_set_current_value
 						(GtkhtmlComboBox *combo_box,
 						 gint current_value);
+gboolean	gtkhtml_combo_box_get_labels_visible
+						(GtkhtmlComboBox *combo_box);
+void		gtkhtml_combo_box_set_labels_visible
+						(GtkhtmlComboBox *combo_box,
+						 gboolean visible);
 
 G_END_DECLS
 
Index: components/editor/gtkhtml-editor-private.c
===================================================================
--- components/editor/gtkhtml-editor-private.c	(revision 8887)
+++ components/editor/gtkhtml-editor-private.c	(working copy)
@@ -247,7 +247,7 @@ gtkhtml_editor_private_init (GtkhtmlEdit
 
 	tool_item = gtk_tool_item_new ();
 	widget = gtkhtml_combo_box_new_with_action (
-		GTK_RADIO_ACTION (ACTION (STYLE_NORMAL)));
+		GTK_RADIO_ACTION (ACTION (STYLE_WORD_WRAP)));
 	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"));
Index: components/editor/gtkhtml-editor-private.h
===================================================================
--- components/editor/gtkhtml-editor-private.h	(revision 8887)
+++ components/editor/gtkhtml-editor-private.h	(working copy)
@@ -89,6 +89,30 @@ typedef enum {
 } EditorMode;
 
 typedef enum {
+	FONT_SIZE_MINUS_TWO,
+	FONT_SIZE_MINUS_ONE,
+	FONT_SIZE_PLUS_ZERO,
+	FONT_SIZE_PLUS_ONE,
+	FONT_SIZE_PLUS_TWO,
+	FONT_SIZE_PLUS_THREE,
+	FONT_SIZE_PLUS_FOUR,
+	FONT_SIZE_SEPARATOR,  /* do not use */
+	FONT_SIZE_HEADER_1,
+	FONT_SIZE_HEADER_2,
+	FONT_SIZE_HEADER_3,
+	FONT_SIZE_HEADER_4,
+	FONT_SIZE_HEADER_5,
+	FONT_SIZE_HEADER_6,
+	FONT_SIZE_ADDRESS
+} FontSize;
+
+typedef enum {
+	PARAGRAPH_STYLE_WORD_WRAP,
+	PARAGRAPH_STYLE_PREFORMAT,
+	PARAGRAPH_STYLE_LIST
+} ParagraphStyle;
+
+typedef enum {
 	TABLE_CELL_SCOPE_CELL,
 	TABLE_CELL_SCOPE_ROW,
 	TABLE_CELL_SCOPE_COLUMN,
