[evolution] Bug #667119 - Hard to change Attendee role in meeting editor



commit dd49067b2acfb72419f97a0348dc2524c3bbf56e
Author: Milan Crha <mcrha redhat com>
Date:   Tue Jan 10 22:22:22 2012 +0100

    Bug #667119 - Hard to change Attendee role in meeting editor

 calendar/gui/e-meeting-list-view.c   |   44 +++-
 widgets/misc/Makefile.am             |    4 -
 widgets/misc/e-cell-renderer-combo.c |  202 ----------------
 widgets/misc/e-cell-renderer-combo.h |   59 -----
 widgets/misc/e-combo-cell-editable.c |  435 ----------------------------------
 widgets/misc/e-combo-cell-editable.h |   68 ------
 6 files changed, 35 insertions(+), 777 deletions(-)
---
diff --git a/calendar/gui/e-meeting-list-view.c b/calendar/gui/e-meeting-list-view.c
index c27697b..cd2e7fb 100644
--- a/calendar/gui/e-meeting-list-view.c
+++ b/calendar/gui/e-meeting-list-view.c
@@ -37,7 +37,6 @@
 #include "calendar-config.h"
 #include "e-meeting-list-view.h"
 #include "itip-utils.h"
-#include <misc/e-cell-renderer-combo.h>
 #include <libebook/e-destination.h>
 #include "e-select-names-renderer.h"
 
@@ -557,6 +556,37 @@ editing_started_cb (GtkCellRenderer *renderer,
 		g_signal_connect (editable, "updated", G_CALLBACK(ense_update), NULL);
 }
 
+static GtkCellRenderer *
+create_combo_cell_renderer (GList *strings)
+{
+	GList *li;
+	GtkTreeIter iter;
+	GtkListStore *store;
+	GtkCellRenderer *renderer;
+
+	store = gtk_list_store_new (1, G_TYPE_STRING);
+	for (li = strings; li; li = li->next) {
+		const gchar *str = li->data;
+
+		gtk_list_store_append (store, &iter);
+		gtk_list_store_set (store, &iter, 0, str, -1);
+	}
+
+	renderer = gtk_cell_renderer_combo_new ();
+
+	g_object_set (G_OBJECT (renderer),
+		"has-entry", FALSE,
+		"editable", TRUE,
+		"model", GTK_TREE_MODEL (store),
+		"text-column", 0,
+		NULL);
+
+	g_object_unref (store);
+	g_list_free (strings);
+
+	return renderer;
+}
+
 static void
 build_table (EMeetingListView *lview)
 {
@@ -593,8 +623,7 @@ build_table (EMeetingListView *lview)
 
 	g_hash_table_insert (edit_table, GINT_TO_POINTER (E_MEETING_STORE_ATTENDEE_COL), renderer);
 
-	renderer = e_cell_renderer_combo_new ();
-	g_object_set (G_OBJECT (renderer), "list", get_type_strings (), "editable", TRUE, NULL);
+	renderer = create_combo_cell_renderer (get_type_strings ());
 	pos = gtk_tree_view_insert_column_with_attributes (view, -1, _("Type"), renderer,
 						     "text", E_MEETING_STORE_TYPE_COL,
 						     NULL);
@@ -605,8 +634,7 @@ build_table (EMeetingListView *lview)
 	g_signal_connect (renderer, "edited", G_CALLBACK (type_edited_cb), view);
 	g_hash_table_insert (edit_table, GINT_TO_POINTER (E_MEETING_STORE_TYPE_COL), renderer);
 
-	renderer = e_cell_renderer_combo_new ();
-	g_object_set (G_OBJECT (renderer), "list", get_role_strings (), "editable", TRUE, NULL);
+	renderer = create_combo_cell_renderer (get_role_strings ());
 	pos = gtk_tree_view_insert_column_with_attributes (view, -1, _("Role"), renderer,
 						     "text", E_MEETING_STORE_ROLE_COL,
 						     NULL);
@@ -617,8 +645,7 @@ build_table (EMeetingListView *lview)
 	g_signal_connect (renderer, "edited", G_CALLBACK (role_edited_cb), view);
 	g_hash_table_insert (edit_table, GINT_TO_POINTER (E_MEETING_STORE_ROLE_COL), renderer);
 
-	renderer = e_cell_renderer_combo_new ();
-	g_object_set (G_OBJECT (renderer), "list", get_rsvp_strings (), "editable", TRUE, NULL);
+	renderer = create_combo_cell_renderer (get_rsvp_strings ());
 	/* To translators: RSVP means "please reply" */
 	pos = gtk_tree_view_insert_column_with_attributes (view, -1, _("RSVP"), renderer,
 						     "text", E_MEETING_STORE_RSVP_COL,
@@ -630,8 +657,7 @@ build_table (EMeetingListView *lview)
 	g_signal_connect (renderer, "edited", G_CALLBACK (rsvp_edited_cb), view);
 	g_hash_table_insert (edit_table, GINT_TO_POINTER (E_MEETING_STORE_RSVP_COL), renderer);
 
-	renderer = e_cell_renderer_combo_new ();
-	g_object_set (G_OBJECT (renderer), "list", get_status_strings (), "editable", TRUE, NULL);
+	renderer = create_combo_cell_renderer (get_status_strings ());
 	pos = gtk_tree_view_insert_column_with_attributes (view, -1, _("Status"), renderer,
 						     "text", E_MEETING_STORE_STATUS_COL,
 						     NULL);
diff --git a/widgets/misc/Makefile.am b/widgets/misc/Makefile.am
index 71194d1..24495ed 100644
--- a/widgets/misc/Makefile.am
+++ b/widgets/misc/Makefile.am
@@ -29,9 +29,7 @@ widgetsinclude_HEADERS =			\
 	e-canvas-background.h			\
 	e-canvas-utils.h			\
 	e-canvas-vbox.h				\
-	e-cell-renderer-combo.h			\
 	e-charset-combo-box.h			\
-	e-combo-cell-editable.h			\
 	e-contact-map.h				\
 	e-contact-map-window.h			\
 	e-contact-marker.h			\
@@ -112,9 +110,7 @@ libemiscwidgets_la_SOURCES =			\
 	e-canvas-background.c			\
 	e-canvas-utils.c			\
 	e-canvas-vbox.c				\
-	e-cell-renderer-combo.c			\
 	e-charset-combo-box.c			\
-	e-combo-cell-editable.c			\
 	e-contact-map.c				\
 	e-contact-map-window.c			\
 	e-contact-marker.c			\



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]