[maemo-commits] [maemo-commits] r15328 - in projects/haf/trunk/gtk+: . gtk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Mar 31 21:22:15 EEST 2008
Author: kris
Date: 2008-03-31 21:22:10 +0300 (Mon, 31 Mar 2008)
New Revision: 15328

Modified:
   projects/haf/trunk/gtk+/ChangeLog
   projects/haf/trunk/gtk+/gtk/gtkcellrenderercombo.c
   projects/haf/trunk/gtk+/gtk/gtkmarshalers.list
Log:
2008-03-31  Kristian Rietveld  <kris at imendio.com>

	Introduce a changed signal for GtkCellRendererCombo to be
	able to fix NB#80708.

	* gtk/gtkmarshalers.list: add VOID:STRING,BOXED marshaler.

	* gtk/gtkcellrenderercombo.c (gtk_cell_renderer_combo_class_init):
	add changed signal,
	(gtk_cell_renderer_combo_editing_done),
	(gtk_cell_renderer_combo_changed): emit the changed signal after
	the embedded combo box has emitted changed.



Modified: projects/haf/trunk/gtk+/ChangeLog
===================================================================
--- projects/haf/trunk/gtk+/ChangeLog	2008-03-31 13:51:51 UTC (rev 15327)
+++ projects/haf/trunk/gtk+/ChangeLog	2008-03-31 18:22:10 UTC (rev 15328)
@@ -1,3 +1,16 @@
+2008-03-31  Kristian Rietveld  <kris at imendio.com>
+
+	Introduce a changed signal for GtkCellRendererCombo to be
+	able to fix NB#80708.
+
+	* gtk/gtkmarshalers.list: add VOID:STRING,BOXED marshaler.
+
+	* gtk/gtkcellrenderercombo.c (gtk_cell_renderer_combo_class_init):
+	add changed signal,
+	(gtk_cell_renderer_combo_editing_done),
+	(gtk_cell_renderer_combo_changed): emit the changed signal after
+	the embedded combo box has emitted changed.
+	
 2008-03-05  Kristian Rietveld  <kris at imendio.com>
 
 	Introduce CellDataFunc hint functionality for NB#78800.

Modified: projects/haf/trunk/gtk+/gtk/gtkcellrenderercombo.c
===================================================================
--- projects/haf/trunk/gtk+/gtk/gtkcellrenderercombo.c	2008-03-31 13:51:51 UTC (rev 15327)
+++ projects/haf/trunk/gtk+/gtk/gtkcellrenderercombo.c	2008-03-31 18:22:10 UTC (rev 15328)
@@ -28,6 +28,7 @@
 #include "gtkcellrenderertext.h"
 #include "gtkcombobox.h"
 #include "gtkcomboboxentry.h"
+#include "gtkmarshalers.h"
 #include "gtkprivate.h"
 #include "gtkalias.h"
 
@@ -59,6 +60,13 @@
   PROP_HAS_ENTRY
 };
 
+enum {
+  CHANGED,
+  LAST_SIGNAL
+};
+
+static guint cell_renderer_combo_signals[LAST_SIGNAL] = { 0, };
+
 #define GTK_CELL_RENDERER_COMBO_PATH "gtk-cell-renderer-combo-path"
 
 G_DEFINE_TYPE (GtkCellRendererCombo, gtk_cell_renderer_combo, GTK_TYPE_CELL_RENDERER_TEXT)
@@ -130,6 +138,40 @@
 							 TRUE,
 							 GTK_PARAM_READWRITE));
 
+
+  /**
+   * GtkCellRendererCombo::changed:
+   * @combo: the object on which the signal is emitted
+   * @path_string: a string of the path identifying the edited cell
+   *               (relative to the tree view model)
+   * @new_iter: the new iter selected in the combo box
+   *            (relative to the combo box model)
+   *
+   * This signal is emitted each time after the user selected an item in
+   * the combo box, either by using the mouse or the arrow keys.  Contrary
+   * to GtkComboBox, GtkCellRendererCombo::changed is not emitted for
+   * changes made to a selected item in the entry.  The argument @new_iter
+   * corresponds to the newly selected item in the combo box and it is relative
+   * to the GtkTreeModel set via the model property on GtkCellRendererCombo.
+   *
+   * You most probably want to refrain changing the model displayed by
+   * the view this cell renderer is contained in until this cell renderer
+   * emits the edited or editing_canceled signal in case you want to
+   * work around the default value acceptance behavior.
+   *
+   * Since: maemo 4.0
+   * Stability: Unstable
+   */
+  cell_renderer_combo_signals[CHANGED] =
+    g_signal_new (I_("changed"),
+		  G_TYPE_FROM_CLASS (object_class),
+		  G_SIGNAL_RUN_LAST,
+		  0,
+		  NULL, NULL,
+		  _gtk_marshal_VOID__STRING_BOXED,
+		  G_TYPE_NONE, 2,
+		  G_TYPE_STRING,
+		  GTK_TYPE_TREE_ITER);
 }
 
 static void
@@ -246,6 +288,25 @@
 }
 
 static void
+gtk_cell_renderer_combo_changed (GtkComboBox *combo,
+				 gpointer     data)
+{
+  GtkTreeIter iter;
+  GtkCellRendererCombo *cell;
+
+  cell = GTK_CELL_RENDERER_COMBO (data);
+
+  if (gtk_combo_box_get_active_iter (combo, &iter))
+    {
+      const char *path;
+
+      path = g_object_get_data (G_OBJECT (combo), GTK_CELL_RENDERER_COMBO_PATH);
+      g_signal_emit (cell, cell_renderer_combo_signals[CHANGED], 0,
+		     path, &iter);
+    }
+}
+
+static void
 gtk_cell_renderer_combo_editing_done (GtkCellEditable *combo,
 				      gpointer         data)
 {
@@ -386,6 +447,9 @@
   g_signal_connect (GTK_CELL_EDITABLE (combo), "editing_done",
 		    G_CALLBACK (gtk_cell_renderer_combo_editing_done),
 		    cell_combo);
+  g_signal_connect (GTK_CELL_EDITABLE (combo), "changed",
+		    G_CALLBACK (gtk_cell_renderer_combo_changed),
+		    cell_combo);
   cell_combo->focus_out_id = 
     g_signal_connect (combo, "focus_out_event",
 		      G_CALLBACK (gtk_cell_renderer_combo_focus_out_event),

Modified: projects/haf/trunk/gtk+/gtk/gtkmarshalers.list
===================================================================
--- projects/haf/trunk/gtk+/gtk/gtkmarshalers.list	2008-03-31 13:51:51 UTC (rev 15327)
+++ projects/haf/trunk/gtk+/gtk/gtkmarshalers.list	2008-03-31 18:22:10 UTC (rev 15328)
@@ -99,6 +99,7 @@
 VOID:POINTER,POINTER,POINTER
 VOID:POINTER,UINT
 VOID:STRING
+VOID:STRING,BOXED
 VOID:STRING,STRING
 VOID:STRING,INT,POINTER
 VOID:STRING,UINT,FLAGS


More information about the maemo-commits mailing list