Index: gtk/gtkcombobox.c
===================================================================
--- gtk/gtkcombobox.c	(Revision 20318)
+++ gtk/gtkcombobox.c	(Arbeitskopie)
@@ -121,6 +121,7 @@ struct _GtkComboBoxPrivate
   guint editing_canceled : 1;
   guint auto_scroll : 1;
   guint focus_on_click : 1;
+  guint sensitivity : 2;
 
   GtkTreeViewRowSeparatorFunc row_separator_func;
   gpointer                    row_separator_data;
@@ -202,7 +203,8 @@ enum {
   PROP_TEAROFF_TITLE,
   PROP_HAS_FRAME,
   PROP_FOCUS_ON_CLICK,
-  PROP_POPUP_SHOWN
+  PROP_POPUP_SHOWN,
+  PROP_SENSITIVITY
 };
 
 static guint combo_box_signals[LAST_SIGNAL] = {0,};
@@ -823,6 +825,24 @@ gtk_combo_box_class_init (GtkComboBoxCla
                                                          FALSE,
                                                          GTK_PARAM_READABLE));
 
+
+   /**
+    * GtkComboBox:sensitivity:
+    *
+    * Whether the dropdown button is sensitive when
+    * the model is empty.
+    *
+    * Since: 2.14
+    */
+   g_object_class_install_property (object_class,
+                                    PROP_SENSITIVITY,
+                                    g_param_spec_enum ("sensitivity",
+                                                       P_("Sensitivity"),
+                                                       P_("Whether the dropdown button is sensitive when the model is empty"),
+                                                       GTK_TYPE_SENSITIVITY_TYPE,
+                                                       GTK_SENSITIVITY_ON,
+                                                       GTK_PARAM_READWRITE));
+
   gtk_widget_class_install_style_property (widget_class,
                                            g_param_spec_boolean ("appears-as-list",
                                                                  P_("Appears as list"),
@@ -920,6 +940,7 @@ gtk_combo_box_init (GtkComboBox *combo_b
   priv->editing_canceled = FALSE;
   priv->auto_scroll = FALSE;
   priv->focus_on_click = TRUE;
+  priv->sensitivity = GTK_SENSITIVITY_AUTO;
 
   combo_box->priv = priv;
 
@@ -980,6 +1001,11 @@ gtk_combo_box_set_property (GObject     
           gtk_combo_box_popdown (combo_box);
         break;
 
+      case PROP_SENSITIVITY:
+        gtk_combo_box_set_sensitivity (combo_box,
+                                       g_value_get_enum (value));
+        break;
+
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
         break;
@@ -1036,6 +1062,10 @@ gtk_combo_box_get_property (GObject    *
         g_value_set_boolean (value, combo_box->priv->popup_shown);
         break;
 
+      case PROP_SENSITIVITY:
+        g_value_set_enum (value, combo_box->priv->sensitivity);
+        break;
+
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
         break;
@@ -3120,6 +3150,32 @@ gtk_combo_box_menu_item_activate (GtkWid
 }
 
 static void
+gtk_combo_box_update_sensitivity (GtkComboBox *combo_box)
+{
+  GtkTreeIter iter;
+  gboolean sensitive = TRUE; /* fool code checkers */
+
+  switch (combo_box->priv->sensitivity)
+    {
+      case GTK_SENSITIVITY_ON:
+        sensitive = TRUE;
+        break;
+      case GTK_SENSITIVITY_OFF:
+        sensitive = FALSE;
+        break;
+      case GTK_SENSITIVITY_AUTO:
+        sensitive = combo_box->priv->model &&
+                    gtk_tree_model_get_iter_first (combo_box->priv->model, &iter);
+        break;
+      default:
+        g_assert_not_reached ();
+        break;
+    }
+
+  gtk_widget_set_sensitive (combo_box->priv->button, sensitive);
+}
+
+static void
 gtk_combo_box_model_row_inserted (GtkTreeModel     *model,
 				  GtkTreePath      *path,
 				  GtkTreeIter      *iter,
@@ -3131,6 +3187,8 @@ gtk_combo_box_model_row_inserted (GtkTre
     gtk_combo_box_list_popup_resize (combo_box);
   else
     gtk_combo_box_menu_row_inserted (model, path, iter, user_data);
+
+  gtk_combo_box_update_sensitivity (combo_box);
 }
 
 static void
@@ -3152,6 +3210,8 @@ gtk_combo_box_model_row_deleted (GtkTree
     gtk_combo_box_list_popup_resize (combo_box);
   else
     gtk_combo_box_menu_row_deleted (model, path, user_data);  
+
+  gtk_combo_box_update_sensitivity (combo_box);
 }
 
 static void
@@ -4943,6 +5003,8 @@ gtk_combo_box_set_model (GtkComboBox  *c
                              combo_box->priv->model);
 
 out:
+  gtk_combo_box_update_sensitivity (combo_box);
+
   g_object_notify (G_OBJECT (combo_box), "model");
 }
 
@@ -5658,6 +5720,55 @@ gtk_combo_box_set_row_separator_func (Gt
   gtk_widget_queue_draw (GTK_WIDGET (combo_box));
 }
 
+/**
+ * gtk_combo_box_set_sensitivity:
+ * @combo_box: a #GtkComboBox
+ * @sensitivity: specify the sensitivity of the dropdown button
+ *
+ * Sets whether the dropdown button of the combo box should be
+ * always sensitive (%GTK_SENSITIVITY_ON), never sensitive (%GTK_SENSITIVITY_OFF)
+ * or only if there is at least one item to display (%GTK_SENSITIVITY_AUTO).
+ *
+ * Since: 2.14
+ **/
+void
+gtk_combo_box_set_sensitivity (GtkComboBox        *combo_box,
+                               GtkSensitivityType  sensitivity)
+{
+  g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
+
+  if (combo_box->priv->sensitivity != sensitivity)
+    {
+      combo_box->priv->sensitivity = sensitivity;
+      gtk_combo_box_update_sensitivity (combo_box);
+
+      g_object_notify (G_OBJECT (combo_box), "sensitivity");
+    }
+}
+
+/**
+ * gtk_combo_box_get_sensitivity:
+ * @combo_box: a #GtkComboBox
+ *
+ * Returns whether the combo box sets the dropdown button
+ * sensitive or not when there are no items in the model.
+ *
+ * Return Value: %GTK_SENSITIVITY_ON if the dropdown button
+ *    is sensitive when the model is empty, %GTK_SENSITIVITY_OFF
+ *    if the button is always insensitive or
+ *    %GTK_SENSITIVITY_AUTO if it is only sensitive as long as
+ *    the model has one item to be selected.
+ *
+ * Since: 2.14
+ **/
+GtkSensitivityType
+gtk_combo_box_get_sensitivity (GtkComboBox *combo_box)
+{
+  g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), FALSE);
+
+  return combo_box->priv->sensitivity;
+}
+
 
 /**
  * gtk_combo_box_set_focus_on_click:
Index: gtk/gtkcombobox.h
===================================================================
--- gtk/gtkcombobox.h	(Revision 20318)
+++ gtk/gtkcombobox.h	(Arbeitskopie)
@@ -114,6 +114,10 @@ void                        gtk_combo_bo
 								  gpointer                    data,
 								  GtkDestroyNotify            destroy);
 
+void               gtk_combo_box_set_sensitivity (GtkComboBox        *combo_box,
+						  GtkSensitivityType  sensitivity);
+GtkSensitivityType gtk_combo_box_get_sensitivity (GtkComboBox        *combo_box);
+
 /* convenience -- text */
 GtkWidget    *gtk_combo_box_new_text         (void);
 void          gtk_combo_box_append_text      (GtkComboBox     *combo_box,
Index: gtk/gtk.symbols
===================================================================
--- gtk/gtk.symbols	(Revision 20318)
+++ gtk/gtk.symbols	(Arbeitskopie)
@@ -843,6 +843,7 @@ gtk_combo_box_get_model
 gtk_combo_box_get_popup_accessible
 gtk_combo_box_get_row_separator_func
 gtk_combo_box_get_row_span_column
+gtk_combo_box_get_sensitivity
 gtk_combo_box_get_title
 gtk_combo_box_get_type G_GNUC_CONST
 gtk_combo_box_get_wrap_width
@@ -862,6 +863,7 @@ gtk_combo_box_set_focus_on_click
 gtk_combo_box_set_model
 gtk_combo_box_set_row_separator_func
 gtk_combo_box_set_row_span_column
+gtk_combo_box_set_sensitivity
 gtk_combo_box_set_title
 gtk_combo_box_set_wrap_width
 #endif
