Index: gtk/gtkrecentchoosermenu.c
===================================================================
--- gtk/gtkrecentchoosermenu.c	(revision 21912)
+++ gtk/gtkrecentchoosermenu.c	(working copy)
@@ -796,6 +796,9 @@ gtk_recent_chooser_menu_create_item (Gtk
 
   g_free (text);
 
+  gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item),
+                                             TRUE);
+
   /* ellipsize the menu item label, in case the recent document
    * display name is huge.
    */
Index: gtk/gtkimagemenuitem.c
===================================================================
--- gtk/gtkimagemenuitem.c	(revision 21912)
+++ gtk/gtkimagemenuitem.c	(working copy)
@@ -74,13 +74,15 @@ static void gtk_image_menu_item_recalcul
 typedef struct {
   gchar          *label;
   gboolean        use_stock;
+  gboolean        always_show_image;
 } GtkImageMenuItemPrivate;
 
 enum {
   PROP_0,
   PROP_IMAGE,
   PROP_USE_STOCK,
-  PROP_ACCEL_GROUP
+  PROP_ACCEL_GROUP,
+  PROP_ALWAYS_SHOW_IMAGE
 };
 
 G_DEFINE_TYPE (GtkImageMenuItem, gtk_image_menu_item, GTK_TYPE_MENU_ITEM)
@@ -139,6 +141,22 @@ gtk_image_menu_item_class_init (GtkImage
 							 GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
 
   /**
+   * GtkImageMenuItem:always-show-image:
+   *
+   * If %TRUE, the menu item will ignore the gtk-menu-images setting
+   * and always show the image, if available.
+   *
+   * Since: 2.16
+   **/
+  g_object_class_install_property (gobject_class,
+                                   PROP_ALWAYS_SHOW_IMAGE,
+                                   g_param_spec_boolean ("always-show-image",
+							 P_("Always show image"),
+							 P_("Whether the image will always be shown"),
+							 FALSE,
+							 GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+  /**
    * GtkImageMenuItem:accel-group:
    *
    * The Accel Group to use for stock accelerator keys
@@ -202,6 +220,9 @@ gtk_image_menu_item_set_property (GObjec
     case PROP_USE_STOCK:
       gtk_image_menu_item_set_use_stock (image_menu_item, g_value_get_boolean (value));
       break;
+    case PROP_ALWAYS_SHOW_IMAGE:
+      gtk_image_menu_item_set_always_show_image (image_menu_item, g_value_get_boolean (value));
+      break;
     case PROP_ACCEL_GROUP:
       gtk_image_menu_item_set_accel_group (image_menu_item, g_value_get_object (value));
       break;
@@ -227,6 +248,9 @@ gtk_image_menu_item_get_property (GObjec
     case PROP_USE_STOCK:
       g_value_set_boolean (value, gtk_image_menu_item_get_use_stock (image_menu_item));      
       break;
+    case PROP_ALWAYS_SHOW_IMAGE:
+      g_value_set_boolean (value, gtk_image_menu_item_get_always_show_image (image_menu_item));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -236,10 +260,14 @@ gtk_image_menu_item_get_property (GObjec
 static gboolean
 show_image (GtkImageMenuItem *image_menu_item)
 {
+  GtkImageMenuItemPrivate *priv = GET_PRIVATE (image_menu_item);
   GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (image_menu_item));
   gboolean show;
 
-  g_object_get (settings, "gtk-menu-images", &show, NULL);
+  if (priv->always_show_image)
+    show = TRUE;
+  else
+    g_object_get (settings, "gtk-menu-images", &show, NULL);
 
   return show;
 }
@@ -634,6 +662,64 @@ gtk_image_menu_item_get_use_stock (GtkIm
   return priv->use_stock;
 }
 
+/**
+ * gtk_image_menu_item_set_always_show_image:
+ * @image_menu_item: a #GtkImageMenuItem
+ * @always_show: %TRUE if the menuitem should always show the image
+ *
+ * If %TRUE, the menu item will ignore the gtk-menu-images setting
+ * and always show the image, if available.
+ *
+ * Since: 2.16
+ */
+void
+gtk_image_menu_item_set_always_show_image (GtkImageMenuItem *image_menu_item,
+                                           gboolean          always_show)
+{
+  GtkImageMenuItemPrivate *priv;
+
+  g_return_if_fail (GTK_IS_IMAGE_MENU_ITEM (image_menu_item));
+
+  priv = GET_PRIVATE (image_menu_item);
+
+  if (priv->always_show_image != always_show)
+    {
+      priv->always_show_image = always_show;
+
+      if (image_menu_item->image)
+        {
+          if (show_image (image_menu_item))
+            gtk_widget_show (image_menu_item->image);
+          else
+            gtk_widget_hide (image_menu_item->image);
+        }
+
+      g_object_notify (G_OBJECT (image_menu_item), "always-show-image");
+    }
+}
+
+/**
+ * gtk_image_menu_item_get_always_show_image:
+ * @image_menu_item: a #GtkImageMenuItem
+ * @always_show: %TRUE if the menuitem should always show the image
+ *
+ * Returns: %TRUE if the menu item will ignore the gtk-menu-images setting
+ * and always show the image, if available.
+ *
+ * Since: 2.16
+ */
+gboolean
+gtk_image_menu_item_get_always_show_image (GtkImageMenuItem *image_menu_item)
+{
+  GtkImageMenuItemPrivate *priv;
+
+  g_return_val_if_fail (GTK_IS_IMAGE_MENU_ITEM (image_menu_item), FALSE);
+
+  priv = GET_PRIVATE (image_menu_item);
+
+  return priv->always_show_image;
+}
+
 
 /**
  * gtk_image_menu_item_set_accel_group:
Index: gtk/gtkimagemenuitem.h
===================================================================
--- gtk/gtkimagemenuitem.h	(revision 21912)
+++ gtk/gtkimagemenuitem.h	(working copy)
@@ -69,6 +69,9 @@ GtkWidget* gtk_image_menu_item_new_with_
 GtkWidget* gtk_image_menu_item_new_with_mnemonic (const gchar      *label);
 GtkWidget* gtk_image_menu_item_new_from_stock    (const gchar      *stock_id,
                                                   GtkAccelGroup    *accel_group);
+void       gtk_image_menu_item_set_always_show_image (GtkImageMenuItem *image_menu_item,
+                                                      gboolean          always_show);
+gboolean   gtk_image_menu_item_get_always_show_image (GtkImageMenuItem *image_menu_item);
 void       gtk_image_menu_item_set_image         (GtkImageMenuItem *image_menu_item,
                                                   GtkWidget        *image);
 GtkWidget* gtk_image_menu_item_get_image         (GtkImageMenuItem *image_menu_item);
