[maemo-commits] [maemo-commits] r9509 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gtk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Feb 1 14:21:27 EET 2007
Author: timj
Date: 2007-02-01 14:21:26 +0200 (Thu, 01 Feb 2007)
New Revision: 9509

Modified:
   projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog
   projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkcombobox.c
Log:
Thu Feb  1 13:19:58 2007  Tim Janik  <timj at imendio.com>

        * gtk/gtkcombobox.c: added ::autodimmed_button style proeprty to 
        atuomatically make a combobox insensitive for empty models.

        * gtk/gtkcombobox.c (gtk_combo_box_list_destroy): remove extra reference
        that gtkcombobox keeps on priv->popup_widget if it's a tree view.




Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog	2007-02-01 12:15:20 UTC (rev 9508)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog	2007-02-01 12:21:26 UTC (rev 9509)
@@ -1,3 +1,11 @@
+Thu Feb  1 13:19:58 2007  Tim Janik  <timj at imendio.com>
+
+        * gtk/gtkcombobox.c: added ::autodimmed_button style proeprty to 
+	atuomatically make a combobox insensitive for empty models.
+
+        * gtk/gtkcombobox.c (gtk_combo_box_list_destroy): remove extra reference
+        that gtkcombobox keeps on priv->popup_widget if it's a tree view.
+
 2007-02-01  Kristian Rietveld  <kris at imendio.com>
 
 	A first patch to get pen dragging going.

Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkcombobox.c
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkcombobox.c	2007-02-01 12:15:20 UTC (rev 9508)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkcombobox.c	2007-02-01 12:21:26 UTC (rev 9509)
@@ -1021,7 +1021,25 @@
     }
 }
 
+#ifdef MAEMO_CHANGES
 static void
+maemo_check_autodim (GtkComboBox *combo_box)
+{
+  if (combo_box->priv->button)
+    {
+      GtkTreeModel *model = combo_box->priv->model;
+      GtkTreeIter iter;
+      gboolean autodimmed_button;
+      gtk_widget_style_get (GTK_WIDGET (combo_box), "autodimmed_button", &autodimmed_button, NULL);
+      if (autodimmed_button && (!model || !gtk_tree_model_get_iter_first (model, &iter)))
+        gtk_widget_set_sensitive (combo_box->priv->button, FALSE);
+      else
+        gtk_widget_set_sensitive (combo_box->priv->button, TRUE);
+    }
+}
+#endif /* MAEMO_CHANGES */
+
+static void
 gtk_combo_box_style_set (GtkWidget *widget,
                          GtkStyle  *previous)
 {
@@ -1032,6 +1050,17 @@
   if (combo_box->priv->tree_view && combo_box->priv->cell_view)
     gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view), 
 					&widget->style->base[GTK_WIDGET_STATE (widget)]);
+
+#ifdef MAEMO_CHANGES
+  /* Handle the dimmed state of the button in regards whether
+   * the list is empty or not. This has to be done here because
+   * in the callback functions of GtkTreeModel the button widget
+   * may have not yet been set. However, we repeat this stuff in
+   * those functions, because later the button will be set and
+   * we want to update our state.
+   */
+  maemo_check_autodim (combo_box);
+#endif /* MAEMO_CHANGES */
 }
 
 static void
@@ -2990,6 +3019,10 @@
     gtk_combo_box_list_popup_resize (combo_box);
   else
     gtk_combo_box_menu_row_inserted (model, path, iter, user_data);
+
+#ifdef MAEMO_CHANGES
+  maemo_check_autodim (combo_box);
+#endif /* MAEMO_CHANGES */
 }
 
 static void
@@ -3008,7 +3041,11 @@
   if (combo_box->priv->tree_view)
     gtk_combo_box_list_popup_resize (combo_box);
   else
-    gtk_combo_box_menu_row_deleted (model, path, user_data);  
+    gtk_combo_box_menu_row_deleted (model, path, user_data);
+
+#ifdef MAEMO_CHANGES
+  maemo_check_autodim (combo_box);
+#endif /* MAEMO_CHANGES */
 }
 
 static void
@@ -3587,7 +3624,11 @@
   gtk_widget_destroy (combo_box->priv->tree_view);
 
   combo_box->priv->tree_view = NULL;
-  combo_box->priv->popup_widget = NULL;
+  if (combo_box->priv->popup_widget)
+    {
+      g_object_unref (combo_box->priv->popup_widget);
+      combo_box->priv->popup_widget = NULL;
+    }
 }
 
 /* callbacks */
@@ -4744,6 +4785,9 @@
   if (!model)
     {
       gtk_combo_box_unset_model (combo_box);
+#ifdef MAEMO_CHANGES
+      maemo_check_autodim (combo_box);
+#endif /* MAEMO_CHANGES */
       return;
     }
 
@@ -4793,6 +4837,9 @@
   if (combo_box->priv->cell_view)
     gtk_cell_view_set_model (GTK_CELL_VIEW (combo_box->priv->cell_view),
                              combo_box->priv->model);
+#ifdef MAEMO_CHANGES
+  maemo_check_autodim (combo_box);
+#endif /* MAEMO_CHANGES */
 }
 
 /**


More information about the maemo-commits mailing list