diff --git a/docs/reference/gtk/tmpl/.gitignore b/docs/reference/gtk/tmpl/.gitignore
new file mode 100644
index 0000000000..1f9678b717
--- /dev/null
+++ b/docs/reference/gtk/tmpl/.gitignore
@@ -0,0 +1 @@
+gtkmessagedialog.sgml
diff --git a/docs/reference/gtk/tmpl/gtkmessagedialog.sgml b/docs/reference/gtk/tmpl/gtkmessagedialog.sgml
deleted file mode 100644
index f2122cbd09..0000000000
--- a/docs/reference/gtk/tmpl/gtkmessagedialog.sgml
+++ /dev/null
@@ -1,213 +0,0 @@
-
-GtkMessageDialog
-
-
-A convenient message window
-
-
-
-#GtkMessageDialog presents a dialog with an image representing the type of 
-message (Error, Question, etc.) alongside some message text. It's simply a 
-convenience widget; you could construct the equivalent of #GtkMessageDialog 
-from #GtkDialog without too much effort, but #GtkMessageDialog saves typing.
-
-
-
-The easiest way to do a modal message dialog is to use gtk_dialog_run(), though
-you can also pass in the %GTK_DIALOG_MODAL flag, gtk_dialog_run() automatically
-makes the dialog modal and waits for the user to respond to it. gtk_dialog_run()
-returns when any dialog button is clicked.
-
-A modal dialog.
-
- dialog = gtk_message_dialog_new (main_application_window,
-                                  GTK_DIALOG_DESTROY_WITH_PARENT,
-                                  GTK_MESSAGE_ERROR,
-                                  GTK_BUTTONS_CLOSE,
-                                  "Error loading file '%s': %s",
-                                  filename, g_strerror (errno));
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
-
-
-
-
-
-You might do a non-modal #GtkMessageDialog as follows:
-
-A non-modal dialog.
-
- dialog = gtk_message_dialog_new (main_application_window,
-                                  GTK_DIALOG_DESTROY_WITH_PARENT,
-                                  GTK_MESSAGE_ERROR,
-                                  GTK_BUTTONS_CLOSE,
-                                  "Error loading file '%s': %s",
-                                  filename, g_strerror (errno));
-
- /* Destroy the dialog when the user responds to it (e.g. clicks a button) */
- g_signal_connect_swapped (dialog, "response",
-                           G_CALLBACK (gtk_widget_destroy),
-                           dialog);
-
-
-
-
-
-
-#GtkDialog
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-The type of message being displayed in the dialog.
-
-
-@GTK_MESSAGE_INFO: Informational message
-@GTK_MESSAGE_WARNING: Nonfatal warning message
-@GTK_MESSAGE_QUESTION: Question requiring a choice
-@GTK_MESSAGE_ERROR: Fatal error message
-@GTK_MESSAGE_OTHER: None of the above, doesn't get an icon
-
-
-
-Prebuilt sets of buttons for the dialog. If 
-none of these choices are appropriate, simply use %GTK_BUTTONS_NONE
-then call gtk_dialog_add_buttons().
-
-
-@GTK_BUTTONS_NONE: no buttons at all
-@GTK_BUTTONS_OK: an OK button
-@GTK_BUTTONS_CLOSE: a Close button
-@GTK_BUTTONS_CANCEL: a Cancel button
-@GTK_BUTTONS_YES_NO: Yes and No buttons
-@GTK_BUTTONS_OK_CANCEL: OK and Cancel buttons
-
-
-
-
-
-
-@parent: 
-@flags: 
-@type: 
-@buttons: 
-@message_format: 
-@Varargs: 
-@Returns: 
-
-
-
-
-
-
-
-@parent: 
-@flags: 
-@type: 
-@buttons: 
-@message_format: 
-@Varargs: 
-@Returns: 
-
-
-
-
-
-
-
-@message_dialog: 
-@str: 
-
-
-
-
-
-
-
-@dialog: 
-@image: 
-
-
-
-
-
-
-
-@dialog: 
-@Returns: 
-
-
-
-
-
-
-
-@message_dialog: 
-@message_format: 
-@Varargs: 
-
-
-
-
-
-
-
-@message_dialog: 
-@message_format: 
-@Varargs: 
-
-
diff --git a/gtk/gtkenums.h b/gtk/gtkenums.h
index b8b5e33594..7c577c70b7 100644
--- a/gtk/gtkenums.h
+++ b/gtk/gtkenums.h
@@ -208,6 +208,16 @@ typedef enum
   GTK_MENU_DIR_PREV
 } GtkMenuDirectionType;
 
+/**
+ * GtkMessageType:
+ * @GTK_MESSAGE_INFO: Informational message
+ * @GTK_MESSAGE_WARNING: Nonfatal warning message
+ * @GTK_MESSAGE_QUESTION: Question requiring a choice
+ * @GTK_MESSAGE_ERROR: Fatal error message
+ * @GTK_MESSAGE_OTHER: None of the above, doesn't get an icon
+ *
+ * The type of message being displayed in the dialog.
+ */
 typedef enum
 {
   GTK_MESSAGE_INFO,
diff --git a/gtk/gtkmessagedialog.c b/gtk/gtkmessagedialog.c
index 71a4098b54..18adeea2a0 100644
--- a/gtk/gtkmessagedialog.c
+++ b/gtk/gtkmessagedialog.c
@@ -40,6 +40,53 @@
 #include "gtkprivate.h"
 #include "gtkalias.h"
 
+/**
+ * SECTION:gtkmessagedialog
+ * @Short_description: A convenient message window
+ * @Title: GtkMessageDialog
+ * @See_also:#GtkDialog
+ *
+ * #GtkMessageDialog presents a dialog with an image representing the type of
+ * message (Error, Question, etc.) alongside some message text. It's simply a
+ * convenience widget; you could construct the equivalent of #GtkMessageDialog
+ * from #GtkDialog without too much effort, but #GtkMessageDialog saves typing.
+ *
+ * The easiest way to do a modal message dialog is to use gtk_dialog_run(), though
+ * you can also pass in the %GTK_DIALOG_MODAL flag, gtk_dialog_run() automatically
+ * makes the dialog modal and waits for the user to respond to it. gtk_dialog_run()
+ * returns when any dialog button is clicked.
+ * 
+ * A modal dialog.
+ * 
+ *  dialog = gtk_message_dialog_new (main_application_window,
+ *                                   GTK_DIALOG_DESTROY_WITH_PARENT,
+ *                                   GTK_MESSAGE_ERROR,
+ *                                   GTK_BUTTONS_CLOSE,
+ *                                   "Error loading file '%s': %s",
+ *                                   filename, g_strerror (errno));
+ *  gtk_dialog_run (GTK_DIALOG (dialog));
+ *  gtk_widget_destroy (dialog);
+ * 
+ * 
+ * You might do a non-modal #GtkMessageDialog as follows:
+ * 
+ * A non-modal dialog.
+ * 
+ *  dialog = gtk_message_dialog_new (main_application_window,
+ *                                   GTK_DIALOG_DESTROY_WITH_PARENT,
+ *                                   GTK_MESSAGE_ERROR,
+ *                                   GTK_BUTTONS_CLOSE,
+ *                                   "Error loading file '%s': %s",
+ *                                   filename, g_strerror (errno));
+ *
+ *  /* Destroy the dialog when the user responds to it (e.g. clicks a button) */
+ *  g_signal_connect_swapped (dialog, "response",
+ *                            G_CALLBACK (gtk_widget_destroy),
+ *                            dialog);
+ * 
+ * 
+ */
+
 #define GTK_MESSAGE_DIALOG_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_MESSAGE_DIALOG, GtkMessageDialogPrivate))
 
 typedef struct _GtkMessageDialogPrivate GtkMessageDialogPrivate;
diff --git a/gtk/gtkmessagedialog.h b/gtk/gtkmessagedialog.h
index 1bb1ec5fc2..c46c7b3db7 100644
--- a/gtk/gtkmessagedialog.h
+++ b/gtk/gtkmessagedialog.h
@@ -36,15 +36,6 @@
 
 G_BEGIN_DECLS
 
-typedef enum
-{
-  GTK_BUTTONS_NONE,
-  GTK_BUTTONS_OK,
-  GTK_BUTTONS_CLOSE,
-  GTK_BUTTONS_CANCEL,
-  GTK_BUTTONS_YES_NO,
-  GTK_BUTTONS_OK_CANCEL
-} GtkButtonsType;
 
 #define GTK_TYPE_MESSAGE_DIALOG                  (gtk_message_dialog_get_type ())
 #define GTK_MESSAGE_DIALOG(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MESSAGE_DIALOG, GtkMessageDialog))
@@ -77,6 +68,34 @@ struct _GtkMessageDialogClass
   void (*_gtk_reserved4) (void);
 };
 
+/**
+ * GtkButtonsType:
+ * @GTK_BUTTONS_NONE: no buttons at all
+ * @GTK_BUTTONS_OK: an OK button
+ * @GTK_BUTTONS_CLOSE: a Close button
+ * @GTK_BUTTONS_CANCEL: a Cancel button
+ * @GTK_BUTTONS_YES_NO: Yes and No buttons
+ * @GTK_BUTTONS_OK_CANCEL: OK and Cancel buttons
+ *
+ * Prebuilt sets of buttons for the dialog. If
+ * none of these choices are appropriate, simply use %GTK_BUTTONS_NONE
+ * then call gtk_dialog_add_buttons().
+ * 
+ *  Please note that %GTK_BUTTONS_OK, %GTK_BUTTONS_YES_NO
+ *  and %GTK_BUTTONS_OK_CANCEL are discouraged by the
+ *  GNOME HIG.
+ * 
+ */
+typedef enum
+{
+  GTK_BUTTONS_NONE,
+  GTK_BUTTONS_OK,
+  GTK_BUTTONS_CLOSE,
+  GTK_BUTTONS_CANCEL,
+  GTK_BUTTONS_YES_NO,
+  GTK_BUTTONS_OK_CANCEL
+} GtkButtonsType;
+
 GType      gtk_message_dialog_get_type (void) G_GNUC_CONST;
 
 GtkWidget* gtk_message_dialog_new      (GtkWindow      *parent,