diff options
-rw-r--r-- | calendar/gui/dialogs/comp-editor.c | 26 | ||||
-rw-r--r-- | calendar/gui/dialogs/event-page.c | 9 | ||||
-rw-r--r-- | calendar/gui/dialogs/memo-page.c | 9 | ||||
-rw-r--r-- | calendar/gui/dialogs/task-page.c | 9 | ||||
-rw-r--r-- | calendar/gui/dialogs/task-page.ui | 3 | ||||
-rw-r--r-- | e-util/e-dialog-widgets.c | 22 | ||||
-rw-r--r-- | e-util/e-dialog-widgets.h | 4 | ||||
-rw-r--r-- | widgets/misc/e-dateedit.c | 1 |
8 files changed, 70 insertions, 13 deletions
diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c index b62e5f2aa8..0115f85a0e 100644 --- a/calendar/gui/dialogs/comp-editor.c +++ b/calendar/gui/dialogs/comp-editor.c @@ -1419,6 +1419,27 @@ comp_editor_get_property (GObject *object, } static void +unref_page_cb (gpointer editor_page, gpointer comp_editor) +{ + if (IS_COMP_EDITOR_PAGE (editor_page)) { + GtkWidget *page_widget; + CompEditorPage *page = COMP_EDITOR_PAGE (editor_page); + CompEditor *editor = COMP_EDITOR (comp_editor); + + g_return_if_fail (page != NULL); + g_return_if_fail (editor != NULL); + + page_widget = comp_editor_page_get_widget (page); + g_signal_handlers_disconnect_matched ( + page_widget, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, page); + } + + g_signal_handlers_disconnect_matched ( + editor_page, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, comp_editor); + g_object_unref (editor_page); +} + +static void comp_editor_dispose (GObject *object) { CompEditorPrivate *priv; @@ -1464,7 +1485,7 @@ comp_editor_dispose (GObject *object) /* We want to destroy the pages after the widgets get destroyed, since they have lots of signal handlers connected to the widgets with the pages as the data. */ - g_list_foreach (priv->pages, (GFunc) g_object_unref, NULL); + g_list_foreach (priv->pages, (GFunc) unref_page_cb, object); g_list_free (priv->pages); priv->pages = NULL; @@ -2589,8 +2610,7 @@ page_unmapped_cb (GtkWidget *page_widget, return; if (page->accel_group) { - gtk_window_remove_accel_group (GTK_WINDOW (toplevel), - page->accel_group); + gtk_window_remove_accel_group (GTK_WINDOW (toplevel), page->accel_group); } } diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c index 7595f50915..5bf870e512 100644 --- a/calendar/gui/dialogs/event-page.c +++ b/calendar/gui/dialogs/event-page.c @@ -1107,8 +1107,10 @@ event_page_fill_widgets (CompEditorPage *page, ECalComponent *comp) g_signal_handlers_block_by_func (gtk_bin_get_child (GTK_BIN (priv->organizer)), organizer_changed_cb, epage); if (!priv->user_org) { - gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (priv->organizer)))); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (priv->organizer), string); + GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->organizer)); + + gtk_list_store_clear (GTK_LIST_STORE (model)); + e_dialog_append_list_store_text (model, 0, string); gtk_combo_box_set_active (GTK_COMBO_BOX (priv->organizer), 0); gtk_editable_set_editable (GTK_EDITABLE (gtk_bin_get_child (GTK_BIN (priv->organizer))), FALSE); } else { @@ -3206,9 +3208,10 @@ event_page_construct (EventPage *epage, if (priv->address_strings) { GList *l; + GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->organizer)); for (l = priv->address_strings; l; l = l->next) - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (priv->organizer), l->data); + e_dialog_append_list_store_text (model, 0, l->data); gtk_combo_box_set_active (GTK_COMBO_BOX (priv->organizer), 0); diff --git a/calendar/gui/dialogs/memo-page.c b/calendar/gui/dialogs/memo-page.c index 996a4de8a5..414b644d0c 100644 --- a/calendar/gui/dialogs/memo-page.c +++ b/calendar/gui/dialogs/memo-page.c @@ -270,8 +270,10 @@ memo_page_fill_widgets (CompEditorPage *page, if (itip_organizer_is_user (comp, client) || itip_sentby_is_user (comp, client)) { gtk_entry_set_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (priv->org_combo))), string); } else { - gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (priv->org_combo)))); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (priv->org_combo), string); + GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->org_combo)); + + gtk_list_store_clear (GTK_LIST_STORE (model)); + e_dialog_append_list_store_text (model, 0, string); gtk_combo_box_set_active (GTK_COMBO_BOX (priv->org_combo), 0); gtk_editable_set_editable (GTK_EDITABLE (gtk_bin_get_child (GTK_BIN (priv->org_combo))), FALSE); } @@ -1189,9 +1191,10 @@ memo_page_construct (MemoPage *mpage) if (priv->address_strings) { GList *l; + GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->org_combo)); for (l = priv->address_strings; l; l = l->next) - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (priv->org_combo), l->data); + e_dialog_append_list_store_text (model, 0, l->data); gtk_combo_box_set_active (GTK_COMBO_BOX (priv->org_combo), 0); } else diff --git a/calendar/gui/dialogs/task-page.c b/calendar/gui/dialogs/task-page.c index 7956b1b5d7..6df7afc9aa 100644 --- a/calendar/gui/dialogs/task-page.c +++ b/calendar/gui/dialogs/task-page.c @@ -729,8 +729,10 @@ task_page_fill_widgets (CompEditorPage *page, ECalComponent *comp) g_signal_handlers_block_by_func (gtk_bin_get_child (GTK_BIN (priv->organizer)), organizer_changed_cb, tpage); if (!priv->user_org) { - gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (priv->organizer)))); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (priv->organizer), string); + GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->organizer)); + + gtk_list_store_clear (GTK_LIST_STORE (model)); + e_dialog_append_list_store_text (model, 0, string); gtk_combo_box_set_active (GTK_COMBO_BOX (priv->organizer), 0); gtk_editable_set_editable (GTK_EDITABLE (gtk_bin_get_child (GTK_BIN (priv->organizer))), FALSE); } else { @@ -2086,9 +2088,10 @@ task_page_construct (TaskPage *tpage, EMeetingStore *model, ECal *client) if (priv->address_strings) { GList *l; + GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->organizer)); for (l = priv->address_strings; l; l = l->next) - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (priv->organizer), l->data); + e_dialog_append_list_store_text (model, 0, l->data); gtk_combo_box_set_active (GTK_COMBO_BOX (priv->organizer), 0); diff --git a/calendar/gui/dialogs/task-page.ui b/calendar/gui/dialogs/task-page.ui index 664caadf68..1ca36a12bc 100644 --- a/calendar/gui/dialogs/task-page.ui +++ b/calendar/gui/dialogs/task-page.ui @@ -411,7 +411,8 @@ <object class="GtkComboBox" id="organizer"> <property name="visible">True</property> <property name="model">model1</property> - <property name="has-entry">TRUE</property> + <property name="has-entry">True</property> + <property name="entry-text-column">0</property> </object> <packing> <property name="position">0</property> diff --git a/e-util/e-dialog-widgets.c b/e-util/e-dialog-widgets.c index a847960eb2..87821acd71 100644 --- a/e-util/e-dialog-widgets.c +++ b/e-util/e-dialog-widgets.c @@ -161,3 +161,25 @@ e_dialog_combo_box_get (GtkWidget *widget, const gint *value_map) } return i; } + +/** + * e_dialog_append_list_store_text: + * @list_store: A #GtkListStore + * @text_column: A string column ID, where to write @text_value + * @text_value: A string to be added to the @list_store + **/ +void +e_dialog_append_list_store_text (GtkTreeModel *list_store, gint text_column, const gchar *text_value) +{ + GtkTreeIter iter; + GtkListStore *store; + + g_return_if_fail (list_store != NULL); + g_return_if_fail (GTK_IS_LIST_STORE (list_store)); + g_return_if_fail (text_column >= 0); + g_return_if_fail (text_value != NULL); + + store = GTK_LIST_STORE (list_store); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, text_column, text_value, -1); +} diff --git a/e-util/e-dialog-widgets.h b/e-util/e-dialog-widgets.h index 6e9f798db7..5b2585c62a 100644 --- a/e-util/e-dialog-widgets.h +++ b/e-util/e-dialog-widgets.h @@ -25,10 +25,14 @@ #ifndef E_DIALOG_WIDGETS_H #define E_DIALOG_WIDGETS_H +#include <gtk/gtk.h> + void e_dialog_editable_set (GtkWidget *widget, const gchar *value); gchar *e_dialog_editable_get (GtkWidget *widget); void e_dialog_combo_box_set (GtkWidget *widget, gint value, const gint *value_map); gint e_dialog_combo_box_get (GtkWidget *widget, const gint *value_map); +void e_dialog_append_list_store_text (GtkTreeModel *list_store, gint text_column, const gchar *text_value); + #endif diff --git a/widgets/misc/e-dateedit.c b/widgets/misc/e-dateedit.c index 8aa048cb28..0a2b744372 100644 --- a/widgets/misc/e-dateedit.c +++ b/widgets/misc/e-dateedit.c @@ -570,6 +570,7 @@ create_children (EDateEdit *dedit) time_store = gtk_list_store_new (1, G_TYPE_STRING); priv->time_combo = gtk_combo_box_new_with_model_and_entry ( GTK_TREE_MODEL (time_store)); + gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (priv->time_combo), 0); g_object_unref (time_store); child = gtk_bin_get_child (GTK_BIN (priv->time_combo)); |