Index: gtkcombobox.c
===================================================================
--- gtkcombobox.c	(revision 17599)
+++ gtkcombobox.c	(working copy)
@@ -119,6 +119,7 @@ struct _GtkComboBoxPrivate
   guint editing_canceled : 1;
   guint auto_scroll : 1;
   guint focus_on_click : 1;
+  guint empty_sensitive : 1;
 
   GtkTreeViewRowSeparatorFunc row_separator_func;
   gpointer                    row_separator_data;
@@ -203,7 +204,8 @@ enum {
   PROP_TEAROFF_TITLE,
   PROP_HAS_FRAME,
   PROP_FOCUS_ON_CLICK,
-  PROP_POPUP_SHOWN
+  PROP_POPUP_SHOWN,
+  PROP_EMPTY_SENSITIVE,
 };
 
 static guint combo_box_signals[LAST_SIGNAL] = {0,};
@@ -750,7 +752,23 @@ gtk_combo_box_class_init (GtkComboBoxCla
                                                          P_("Whether the combo's dropdown is shown"),
                                                          FALSE,
                                                          GTK_PARAM_READABLE));
-  
+
+  /**
+   * GtkComboBox:empty-sensitive:
+   *
+   * Whether the dropdown button is sensitive or not
+   * when the model is empty.
+   *
+   * Since: 2.12
+   */
+  g_object_class_install_property (object_class,
+                                   PROP_EMPTY_SENSITIVE,
+                                   g_param_spec_boolean ("empty-sensitive",
+                                                         P_("Empty Sensitive"),
+                                                         P_("Whether the dropdown button is sensitive when the model is empty"),
+                                                         TRUE,
+                                                         GTK_PARAM_READWRITE));
+
   gtk_widget_class_install_style_property (widget_class,
                                            g_param_spec_boolean ("appears-as-list",
                                                                  P_("Appears as list"),
@@ -838,6 +856,7 @@ gtk_combo_box_init (GtkComboBox *combo_b
   combo_box->priv->editing_canceled = FALSE;
   combo_box->priv->auto_scroll = FALSE;
   combo_box->priv->focus_on_click = TRUE;
+  combo_box->priv->empty_sensitive = TRUE;
 
   gtk_combo_box_check_appearance (combo_box);
 }
@@ -900,6 +919,11 @@ gtk_combo_box_set_property (GObject     
           }
         break;
 
+      case PROP_EMPTY_SENSITIVE:
+	gtk_combo_box_set_empty_sensitive (combo_box,
+					   g_value_get_boolean (value));
+	break;
+
       default:
         break;
     }
@@ -955,6 +979,10 @@ gtk_combo_box_get_property (GObject    *
         g_value_set_boolean (value, combo_box->priv->popup_shown);
         break;
 
+      case PROP_EMPTY_SENSITIVE:
+	g_value_set_boolean (value, combo_box->priv->empty_sensitive);
+	break;
+
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
         break;
@@ -3017,6 +3045,19 @@ gtk_combo_box_menu_item_activate (GtkWid
 }
 
 static void
+gtk_combo_box_update_empty_sensitive (GtkComboBox *combo_box)
+{
+  GtkTreeIter iter;
+
+  if (!combo_box->priv->empty_sensitive &&
+      (!combo_box->priv->model ||
+       !gtk_tree_model_get_iter_first (combo_box->priv->model, &iter)))
+    gtk_widget_set_sensitive (combo_box->priv->button, FALSE);
+  else
+    gtk_widget_set_sensitive (combo_box->priv->button, TRUE);
+}
+
+static void
 gtk_combo_box_model_row_inserted (GtkTreeModel     *model,
 				  GtkTreePath      *path,
 				  GtkTreeIter      *iter,
@@ -3028,6 +3069,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_empty_sensitive (combo_box);
 }
 
 static void
@@ -3047,6 +3090,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_empty_sensitive (combo_box);
 }
 
 static void
@@ -5568,6 +5613,54 @@ gtk_combo_box_get_focus_on_click (GtkCom
   return combo_box->priv->focus_on_click;
 }
 
+/**
+ * gtk_combo_box_set_empty_sensitive:
+ * @combo_box: a #GtkComboBox
+ * @empty_sensitive: whether the dropdown button appears
+ *    sensitive when the model is empty
+ *
+ * Sets whether the combo box should set the dropdown button
+ * sensitive or not when there are no items in the model.
+ *
+ * Since: 2.12
+ **/
+void
+gtk_combo_box_set_empty_sensitive (GtkComboBox *combo_box,
+				   gboolean     empty_sensitive)
+{
+  g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
+
+  empty_sensitive = empty_sensitive != FALSE;
+
+  if (combo_box->priv->empty_sensitive != empty_sensitive)
+    {
+      combo_box->priv->empty_sensitive = empty_sensitive;
+      gtk_combo_box_update_empty_sensitive (combo_box);
+
+      g_object_notify (G_OBJECT (combo_box), "empty-sensitive");
+    }
+}
+
+/**
+ * gtk_combo_box_get_empty_sensitive:
+ * @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: %TRUE if the dropdown button is sensitive
+ *    when the model is empty.
+ *
+ * Since: 2.12
+ **/
+gboolean
+gtk_combo_box_get_empty_sensitive (GtkComboBox *combo_box)
+{
+  g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), FALSE);
+
+  return combo_box->priv->empty_sensitive;
+}
+
 
 #define __GTK_COMBO_BOX_C__
 #include "gtkaliasdef.c"
Index: gtk.symbols
===================================================================
--- gtk.symbols	(revision 17599)
+++ gtk.symbols	(working copy)
@@ -791,6 +791,7 @@ gtk_combo_box_get_active_iter
 gtk_combo_box_get_active_text
 gtk_combo_box_get_add_tearoffs
 gtk_combo_box_get_column_span_column
+gtk_combo_box_get_empty_sensitive
 gtk_combo_box_get_focus_on_click
 gtk_combo_box_get_model
 gtk_combo_box_get_popup_accessible
@@ -811,6 +812,7 @@ gtk_combo_box_set_active
 gtk_combo_box_set_active_iter
 gtk_combo_box_set_add_tearoffs
 gtk_combo_box_set_column_span_column
+gtk_combo_box_set_empty_sensitive
 gtk_combo_box_set_focus_on_click
 gtk_combo_box_set_model
 gtk_combo_box_set_row_separator_func
