From 0d4a84a5fe468d3f4c623501ac1943fc1c9f91f8 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Wed, 3 Nov 2010 11:19:28 +0100 Subject: Bug #632768 - Message list not realized when opening new folder --- mail/message-list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index f46a88e243..3c30fde87a 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -1907,7 +1907,7 @@ static ECell * create_composite_cell (gint col) cell_hbox = e_cell_hbox_new (); /* Exclude the meeting icon. */ - cell_attach = e_cell_toggle_new (attachment_icons, 2); + cell_attach = e_cell_toggle_new (attachment_icons, G_N_ELEMENTS (attachment_icons)); cell_date = e_cell_date_new (NULL, GTK_JUSTIFY_RIGHT); e_cell_date_set_format_component (E_CELL_DATE (cell_date), "mail"); -- cgit v1.2.3 From 992c8b7d58025cf4d04ed3665210f191c8048339 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 16 Jan 2011 13:24:31 -0500 Subject: libetable cleanups. --- mail/message-list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 3c30fde87a..4ce094f42a 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -2871,7 +2871,7 @@ message_list_get_type (void) }; type = g_type_register_static ( - E_TREE_TYPE, "MessageList", &type_info, 0); + E_TYPE_TREE, "MessageList", &type_info, 0); g_type_add_interface_static ( type, E_TYPE_SELECTABLE, &selectable_info); -- cgit v1.2.3 From 753c60fc67a0a56a5f119c14ffa54ea9af95c208 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 9 Nov 2010 08:48:33 -0500 Subject: Drop backward-compatibility cruft. --- mail/message-list.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 4ce094f42a..ef1eac2278 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -68,9 +68,6 @@ #include "mail-tools.h" #include "message-list.h" -/* backward-compatibility cruft */ -#include "e-util/gtk-compat.h" - #if HAVE_CLUTTER #include #include -- cgit v1.2.3 From 0109aa3a92b484ebb85c6481e5a8e39819b1f011 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 30 Jan 2011 11:32:55 -0500 Subject: More whitespace cleanup. --- mail/message-list.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index ef1eac2278..cd72098397 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -4664,8 +4664,8 @@ regen_list_done (struct _regen_list_msg *m) } else build_flat (m->ml, m->summary, m->changes); - if (m->ml->search && m->ml->search != m->search) - g_free (m->ml->search); + if (m->ml->search && m->ml->search != m->search) + g_free (m->ml->search); m->ml->search = m->search; m->search = NULL; -- cgit v1.2.3 From d7a4351101fa05496f84a46b822dbe3d2b1779da Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 11 Feb 2011 10:59:31 +0100 Subject: Bug #637493 - Fails to build with --enable-profiling configure option --- mail/message-list.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index cd72098397..2820d79bf2 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -4486,7 +4486,7 @@ regen_list_exec (struct _regen_list_msg *m, if (cursor) m->last_row = e_tree_table_adapter_row_of_node (e_tree_get_table_adapter (tree), cursor); - e_profile_event_emit("list.getuids", m->folder->full_name, 0); + e_profile_event_emit("list.getuids", camel_folder_get_full_name (m->folder), 0); /* if we have hidedeleted on, use a search to find it out, merge with existing search if set */ if (!camel_folder_has_search_capability (m->folder)) { @@ -4567,7 +4567,7 @@ regen_list_exec (struct _regen_list_msg *m, return; } - e_profile_event_emit("list.threaduids", m->folder->full_name, 0); + e_profile_event_emit("list.threaduids", camel_folder_get_full_name (m->folder), 0); /* camel_folder_summary_prepare_fetch_all (m->folder->summary, NULL); */ if (!g_cancellable_is_cancelled (cancellable)) { @@ -4628,7 +4628,7 @@ regen_list_done (struct _regen_list_msg *m) g_signal_handlers_block_by_func (e_tree_get_table_adapter (tree), ml_tree_sorting_changed, m->ml); - e_profile_event_emit("list.buildtree", m->folder->full_name, 0); + e_profile_event_emit("list.buildtree", camel_folder_get_full_name (m->folder), 0); if (m->dotree) { gboolean forcing_expand_state = m->ml->expand_all || m->ml->collapse_all; @@ -4735,7 +4735,7 @@ regen_list_free (struct _regen_list_msg *m) { gint i; - e_profile_event_emit("list.regenerated", m->folder->full_name, 0); + e_profile_event_emit("list.regenerated", camel_folder_get_full_name (m->folder), 0); if (m->summary) { for (i = 0; i < m->summary->len; i++) @@ -4776,7 +4776,7 @@ static MailMsgInfo regen_list_info = { static gboolean ml_regen_timeout (struct _regen_list_msg *m) { - e_profile_event_emit("list.regenerate", m->folder->full_name, 0); + e_profile_event_emit("list.regenerate", camel_folder_get_full_name (m->folder), 0); g_mutex_lock (m->ml->regen_lock); m->ml->regen = g_list_prepend (m->ml->regen, m); -- cgit v1.2.3 From 4b9ac3879d25d14cbaaab9237626257c3561f7ff Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 14 Feb 2011 19:15:36 +0100 Subject: Fix few memory leaks --- mail/message-list.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 2820d79bf2..3bc5915f14 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -1922,6 +1922,9 @@ static ECell * create_composite_cell (gint col) e_cell_hbox_append (E_CELL_HBOX (cell_hbox), cell_from, show_email ? col : alt_col, 68); e_cell_hbox_append (E_CELL_HBOX (cell_hbox), cell_attach, COL_ATTACHMENT, 5); e_cell_hbox_append (E_CELL_HBOX (cell_hbox), cell_date, COL_SENT, 27); + g_object_unref (cell_from); + g_object_unref (cell_attach); + g_object_unref (cell_date); cell_sub = e_cell_text_new (fixed_name? fixed_name:NULL, GTK_JUSTIFY_LEFT); g_object_set (G_OBJECT (cell_sub), @@ -1931,6 +1934,9 @@ static ECell * create_composite_cell (gint col) cell_tree = e_cell_tree_new (TRUE, cell_sub); e_cell_vbox_append (E_CELL_VBOX (cell_vbox), cell_hbox, COL_FROM); e_cell_vbox_append (E_CELL_VBOX (cell_vbox), cell_tree, COL_SUBJECT); + g_object_unref (cell_sub); + g_object_unref (cell_hbox); + g_object_unref (cell_tree); g_object_set_data (G_OBJECT (cell_vbox), "cell_date", cell_date); g_object_set_data (G_OBJECT (cell_vbox), "cell_sub", cell_sub); @@ -1966,22 +1972,27 @@ message_list_create_extras (void) cell = e_cell_toggle_new ( status_icons, G_N_ELEMENTS (status_icons)); e_table_extras_add_cell (extras, "render_message_status", cell); + g_object_unref (cell); cell = e_cell_toggle_new ( attachment_icons, G_N_ELEMENTS (attachment_icons)); e_table_extras_add_cell (extras, "render_attachment", cell); + g_object_unref (cell); cell = e_cell_toggle_new ( flagged_icons, G_N_ELEMENTS (flagged_icons)); e_table_extras_add_cell (extras, "render_flagged", cell); + g_object_unref (cell); cell = e_cell_toggle_new ( followup_icons, G_N_ELEMENTS (followup_icons)); e_table_extras_add_cell (extras, "render_flag_status", cell); + g_object_unref (cell); cell = e_cell_toggle_new ( score_icons, G_N_ELEMENTS (score_icons)); e_table_extras_add_cell (extras, "render_score", cell); + g_object_unref (cell); /* date cell */ cell = e_cell_date_new (NULL, GTK_JUSTIFY_LEFT); @@ -1991,6 +2002,7 @@ message_list_create_extras (void) "color_column", COL_COLOUR, NULL); e_table_extras_add_cell (extras, "render_date", cell); + g_object_unref (cell); /* text cell */ cell = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT); @@ -1999,9 +2011,11 @@ message_list_create_extras (void) "color_column", COL_COLOUR, NULL); e_table_extras_add_cell (extras, "render_text", cell); + g_object_unref (cell); - e_table_extras_add_cell (extras, "render_tree", - e_cell_tree_new (TRUE, cell)); + cell = e_cell_tree_new (TRUE, cell); + e_table_extras_add_cell (extras, "render_tree", cell); + g_object_unref (cell); /* size cell */ cell = e_cell_size_new (NULL, GTK_JUSTIFY_RIGHT); @@ -2010,13 +2024,16 @@ message_list_create_extras (void) "color_column", COL_COLOUR, NULL); e_table_extras_add_cell (extras, "render_size", cell); + g_object_unref (cell); /* Composite cell for wide view */ cell = create_composite_cell (COL_FROM); e_table_extras_add_cell (extras, "render_composite_from", cell); + g_object_unref (cell); cell = create_composite_cell (COL_TO); e_table_extras_add_cell (extras, "render_composite_to", cell); + g_object_unref (cell); /* set proper format component for a default 'date' cell renderer */ cell = e_table_extras_get_cell (extras, "date"); -- cgit v1.2.3 From 7745ae29860377c3b44b47ed3929b7a881d10fe7 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 22 Feb 2011 09:39:28 +0100 Subject: Bug #434972 - Reply does not detect "RE :" subject prefix --- mail/message-list.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 3bc5915f14..8f38fac7bf 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -486,10 +486,19 @@ get_normalised_string (MessageList *message_list, CamelMessageInfo *info, gint c if (col == COL_SUBJECT_NORM) { const guchar *subject; + gboolean found_re = TRUE; subject = (const guchar *) string; - while (!g_ascii_strncasecmp ((gchar *)subject, "Re:", 3)) { - subject += 3; + while (found_re) { + found_re = FALSE; + + if (g_ascii_strncasecmp ((gchar *) subject, "Re:", 3) == 0) { + found_re = TRUE; + subject += 3; + } else if (g_ascii_strncasecmp ((gchar *) subject, "Re :", 4)) { + found_re = TRUE; + subject += 4; + } /* jump over any spaces */ while (*subject && isspace ((gint) *subject)) @@ -1475,10 +1484,20 @@ get_trimmed_subject (CamelMessageInfo *info) } do { + gboolean found_re = TRUE; + found_mlist = FALSE; - while (!g_ascii_strncasecmp ((gchar *) subject, "Re:", 3)) { - subject += 3; + while (found_re) { + found_re = FALSE; + + if (g_ascii_strncasecmp ((gchar *) subject, "Re:", 3) == 0) { + found_re = TRUE; + subject += 3; + } else if (g_ascii_strncasecmp ((gchar *) subject, "Re :", 4) == 0) { + found_re = TRUE; + subject += 4; + } /* jump over any spaces */ while (*subject && isspace ((gint) *subject)) -- cgit v1.2.3 From 1301cf02efdacd20fb5ce3e2554ae15b8f146e8a Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 25 Feb 2011 16:20:41 +0100 Subject: Bug #614480 - Avoid using G_TYPE_INSTANCE_GET_PRIVATE repeatedly --- mail/message-list.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 8f38fac7bf..148bd616ae 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -97,10 +97,6 @@ #define d(x) #define t(x) -#define MESSAGE_LIST_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), MESSAGE_LIST_TYPE, MessageListPrivate)) - struct _MLSelection { GPtrArray *uids; CamelFolder *folder; @@ -2468,7 +2464,7 @@ message_list_init (MessageList *message_list) GtkTargetList *target_list; GdkAtom matom; - message_list->priv = MESSAGE_LIST_GET_PRIVATE (message_list); + message_list->priv = G_TYPE_INSTANCE_GET_PRIVATE (message_list, MESSAGE_LIST_TYPE, MessageListPrivate); #if HAVE_CLUTTER message_list->priv->timeline = NULL; @@ -2566,7 +2562,7 @@ message_list_dispose (GObject *object) MessageList *message_list = MESSAGE_LIST (object); MessageListPrivate *priv; - priv = MESSAGE_LIST_GET_PRIVATE (message_list); + priv = message_list->priv; if (priv->backend != NULL) { g_object_unref (priv->backend); -- cgit v1.2.3 From c0635e17d9f13c1f923067e6a2a13768ba6944f6 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Wed, 2 Mar 2011 15:25:38 +0100 Subject: Bug #643635 - Typo in the code from commit for bug #434972 --- mail/message-list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 148bd616ae..64b530d798 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -491,7 +491,7 @@ get_normalised_string (MessageList *message_list, CamelMessageInfo *info, gint c if (g_ascii_strncasecmp ((gchar *) subject, "Re:", 3) == 0) { found_re = TRUE; subject += 3; - } else if (g_ascii_strncasecmp ((gchar *) subject, "Re :", 4)) { + } else if (g_ascii_strncasecmp ((gchar *) subject, "Re :", 4) == 0) { found_re = TRUE; subject += 4; } -- cgit v1.2.3 From c6fd77460f5baf88528f5da2ffb99e86a2885ff0 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 5 Mar 2011 12:33:49 -0500 Subject: Coding style and whitespace cleanup. --- mail/message-list.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 64b530d798..7aad12b6c8 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -2464,7 +2464,8 @@ message_list_init (MessageList *message_list) GtkTargetList *target_list; GdkAtom matom; - message_list->priv = G_TYPE_INSTANCE_GET_PRIVATE (message_list, MESSAGE_LIST_TYPE, MessageListPrivate); + message_list->priv = G_TYPE_INSTANCE_GET_PRIVATE ( + message_list, MESSAGE_LIST_TYPE, MessageListPrivate); #if HAVE_CLUTTER message_list->priv->timeline = NULL; -- cgit v1.2.3 From 40346a792f01a9477507fbbdd25a45a661adb4ca Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 15 Mar 2011 12:51:49 +0100 Subject: Workaround for bug #644792 - [mail-notify] Crash when sending D-Bus message --- mail/message-list.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 7aad12b6c8..6306b7238e 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -4310,6 +4310,7 @@ struct sort_message_info_data { struct sort_array_data { MessageList *ml; + CamelFolder *folder; GPtrArray *sort_columns; /* struct sort_column_data in order of sorting */ GHashTable *message_infos; /* uid -> struct sort_message_info_data */ gpointer cmp_cache; @@ -4334,6 +4335,9 @@ cmp_array_uids (gconstpointer a, gconstpointer b, gpointer user_data) g_return_val_if_fail (md2 != NULL, 0); g_return_val_if_fail (md2->mi != NULL, 0); + if (!sort_data->ml || sort_data->folder != sort_data->ml->folder) + return 0; + for (i = 0; res == 0 && i < sort_data->sort_columns->len; i++) { gpointer v1, v2; struct sort_column_data *scol = g_ptr_array_index (sort_data->sort_columns, i); @@ -4363,7 +4367,7 @@ cmp_array_uids (gconstpointer a, gconstpointer b, gpointer user_data) } if (res == 0) - res = camel_folder_cmp_uids (sort_data->ml->folder, uid1, uid2); + res = camel_folder_cmp_uids (sort_data->folder, uid1, uid2); return res; } @@ -4377,7 +4381,7 @@ free_message_info_data (gpointer uid, struct sort_message_info_data *data, struc g_ptr_array_free (data->values, TRUE); } - camel_folder_free_message_info (sort_data->ml->folder, data->mi); + camel_folder_free_message_info (sort_data->folder, data->mi); g_free (data); } @@ -4408,11 +4412,12 @@ ml_sort_uids_by_tree (MessageList *ml, GPtrArray *uids) len = e_table_sort_info_sorting_get_count (sort_info); sort_data.ml = ml; + sort_data.folder = g_object_ref (ml->folder); sort_data.sort_columns = g_ptr_array_sized_new (len); sort_data.message_infos = g_hash_table_new (g_str_hash, g_str_equal); sort_data.cmp_cache = e_table_sorting_utils_create_cmp_cache (); - for (i = 0; i < len; i++) { + for (i = 0; i < len && ml->folder == sort_data.folder; i++) { ETableSortColumn scol; struct sort_column_data *data = g_new0 (struct sort_column_data, 1); @@ -4428,15 +4433,15 @@ ml_sort_uids_by_tree (MessageList *ml, GPtrArray *uids) camel_folder_summary_prepare_fetch_all (ml->folder->summary, NULL); - for (i = 0; i < uids->len; i++) { + for (i = 0; i < uids->len && ml->folder == sort_data.folder; i++) { gchar *uid; CamelMessageInfo *mi; struct sort_message_info_data *md; uid = g_ptr_array_index (uids, i); - mi = camel_folder_get_message_info (ml->folder, uid); + mi = camel_folder_get_message_info (sort_data.folder, uid); if (!mi) { - g_warning ("%s: Cannot find uid '%s' in folder '%s'", G_STRFUNC, uid, camel_folder_get_full_name (ml->folder)); + g_warning ("%s: Cannot find uid '%s' in folder '%s'", G_STRFUNC, uid, camel_folder_get_full_name (sort_data.folder)); continue; } @@ -4447,7 +4452,8 @@ ml_sort_uids_by_tree (MessageList *ml, GPtrArray *uids) g_hash_table_insert (sort_data.message_infos, uid, md); } - g_qsort_with_data (uids->pdata, uids->len, sizeof (gpointer), cmp_array_uids, &sort_data); + if (sort_data.folder == ml->folder) + g_qsort_with_data (uids->pdata, uids->len, sizeof (gpointer), cmp_array_uids, &sort_data); g_hash_table_foreach (sort_data.message_infos, (GHFunc) free_message_info_data, &sort_data); g_hash_table_destroy (sort_data.message_infos); @@ -4456,6 +4462,8 @@ ml_sort_uids_by_tree (MessageList *ml, GPtrArray *uids) g_ptr_array_free (sort_data.sort_columns, TRUE); e_table_sorting_utils_free_cmp_cache (sort_data.cmp_cache); + + g_object_unref (sort_data.folder); } /* ** REGENERATE MESSAGELIST ********************************************** */ -- cgit v1.2.3 From ea8326df3a64c21ddbcacad5941648b1a86bc7e2 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 28 Mar 2011 15:53:39 -0400 Subject: Remove the profiler plugin. This plugin was for developers, but no one uses it anymore. Plus the only profiling hooks left in Evolution were in the MessageList widget, which performs fine. There's better ways to collect profiling data these days anyway (sysprof, systemtap, etc.). --- mail/message-list.c | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 6306b7238e..72c962e937 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -39,7 +39,6 @@ #include "e-util/e-account-utils.h" #include "e-util/e-icon-factory.h" #include "e-util/e-poolv.h" -#include "e-util/e-profile-event.h" #include "e-util/e-util-private.h" #include "e-util/e-util.h" @@ -4527,8 +4526,6 @@ regen_list_exec (struct _regen_list_msg *m, if (cursor) m->last_row = e_tree_table_adapter_row_of_node (e_tree_get_table_adapter (tree), cursor); - e_profile_event_emit("list.getuids", camel_folder_get_full_name (m->folder), 0); - /* if we have hidedeleted on, use a search to find it out, merge with existing search if set */ if (!camel_folder_has_search_capability (m->folder)) { /* if we have no search capability, dont let search or hide deleted work */ @@ -4608,8 +4605,6 @@ regen_list_exec (struct _regen_list_msg *m, return; } - e_profile_event_emit("list.threaduids", camel_folder_get_full_name (m->folder), 0); - /* camel_folder_summary_prepare_fetch_all (m->folder->summary, NULL); */ if (!g_cancellable_is_cancelled (cancellable)) { /* update/build a new tree */ @@ -4669,8 +4664,6 @@ regen_list_done (struct _regen_list_msg *m) g_signal_handlers_block_by_func (e_tree_get_table_adapter (tree), ml_tree_sorting_changed, m->ml); - e_profile_event_emit("list.buildtree", camel_folder_get_full_name (m->folder), 0); - if (m->dotree) { gboolean forcing_expand_state = m->ml->expand_all || m->ml->collapse_all; @@ -4776,8 +4769,6 @@ regen_list_free (struct _regen_list_msg *m) { gint i; - e_profile_event_emit("list.regenerated", camel_folder_get_full_name (m->folder), 0); - if (m->summary) { for (i = 0; i < m->summary->len; i++) camel_folder_free_message_info (m->folder, m->summary->pdata[i]); @@ -4817,8 +4808,6 @@ static MailMsgInfo regen_list_info = { static gboolean ml_regen_timeout (struct _regen_list_msg *m) { - e_profile_event_emit("list.regenerate", camel_folder_get_full_name (m->folder), 0); - g_mutex_lock (m->ml->regen_lock); m->ml->regen = g_list_prepend (m->ml->regen, m); g_mutex_unlock (m->ml->regen_lock); -- cgit v1.2.3 From 1e95563462edb8e4db64889811cfa2abb7107c58 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 2 May 2011 21:41:23 -0400 Subject: MessageList coding style cleanups. --- mail/message-list.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 72c962e937..214740b99c 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -3776,7 +3776,6 @@ message_list_set_folder (MessageList *message_list, CamelFolder *folder, const g ETreeModel *etm = message_list->model; gboolean hide_deleted; GConfClient *client; - CamelStore *folder_store; g_return_if_fail (IS_MESSAGE_LIST (message_list)); @@ -3830,20 +3829,23 @@ message_list_set_folder (MessageList *message_list, CamelFolder *folder, const g g_signal_emit (message_list, message_list_signals[MESSAGE_SELECTED], 0, NULL); } - if (folder) { - gint strikeout_col = -1; + if (CAMEL_IS_FOLDER (folder)) { + CamelStore *store; + gboolean non_trash_folder; + gint strikeout_col; ECell *cell; - g_object_ref (folder); - message_list->folder = folder; + message_list->folder = g_object_ref (folder); message_list->just_set_folder = TRUE; - /* hide deleted messages also when the store has a real trash */ - folder_store = camel_folder_get_parent_store (folder); + store = camel_folder_get_parent_store (folder); + + non_trash_folder = + ((store->flags & CAMEL_STORE_VTRASH) == 0) || + ((folder->folder_flags & CAMEL_FOLDER_IS_TRASH) == 0); /* Setup the strikeout effect for non-trash folders */ - if (!(folder->folder_flags & CAMEL_FOLDER_IS_TRASH) || !(folder_store->flags & CAMEL_STORE_VTRASH)) - strikeout_col = COL_DELETED; + strikeout_col = non_trash_folder ? COL_DELETED : -1; cell = e_table_extras_get_cell (message_list->extras, "render_date"); g_object_set (cell, "strikeout_column", strikeout_col, NULL); @@ -3872,9 +3874,7 @@ message_list_set_folder (MessageList *message_list, CamelFolder *folder, const g g_object_unref (client); message_list->hidedeleted = - hide_deleted && - (!(folder->folder_flags & CAMEL_FOLDER_IS_TRASH) || - !(folder_store->flags & CAMEL_STORE_VTRASH)); + hide_deleted && non_trash_folder; message_list->hidejunk = folder_store_supports_vjunk_folder (message_list->folder) && !(folder->folder_flags & CAMEL_FOLDER_IS_JUNK) && -- cgit v1.2.3 From 0434afb9a5831d93a5c0dd7c842aa3f92efa3dae Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 2 May 2011 21:54:12 -0400 Subject: Drop 'folder_uri' param from message_list_set_folder(). --- mail/message-list.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 214740b99c..ba1808838b 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -3763,7 +3763,6 @@ folder_changed (CamelFolder *folder, * message_list_set_folder: * @message_list: Message List widget * @folder: folder backend to be set - * @uri: uri of @folder. * @outgoing: whether this is an outgoing folder * * Sets @folder to be the backend folder for @message_list. If @@ -3771,7 +3770,9 @@ folder_changed (CamelFolder *folder, * the "Outgoing folder" column view. **/ void -message_list_set_folder (MessageList *message_list, CamelFolder *folder, const gchar *uri, gboolean outgoing) +message_list_set_folder (MessageList *message_list, + CamelFolder *folder, + gboolean outgoing) { ETreeModel *etm = message_list->model; gboolean hide_deleted; @@ -3818,9 +3819,15 @@ message_list_set_folder (MessageList *message_list, CamelFolder *folder, const g message_list->thread_tree = NULL; } - if (message_list->folder_uri != uri) { - g_free (message_list->folder_uri); - message_list->folder_uri = uri ? g_strdup (uri):NULL; + g_free (message_list->folder_uri); + message_list->folder_uri = NULL; + + /* XXX Not sure if MESSAGE_SELECTED signal handlers rely on + * folder_uri being set, so avoid temptation to move this + * logic down until verifying it's safe. */ + if (CAMEL_IS_FOLDER (folder)) { + const gchar *uri = camel_folder_get_uri (folder); + message_list->folder_uri = g_strdup (uri); } if (message_list->cursor_uid) { -- cgit v1.2.3 From 1957378edf2264426c77571bde90c6bfeb7e50ce Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 3 May 2011 11:30:11 -0400 Subject: Change em_folder_tree_model_user_marked_unread() params. Take a CamelFolder instead of a folder URI string. --- mail/message-list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index ba1808838b..6c0b532286 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -4042,7 +4042,7 @@ on_click (ETree *tree, gint row, ETreePath path, gint col, GdkEvent *event, Mess model = em_folder_tree_model_get_default (); em_folder_tree_model_user_marked_unread ( - model, list->folder_uri, 1); + model, list->folder, 1); } if (flag == CAMEL_MESSAGE_SEEN && list->seen_id) { -- cgit v1.2.3 From d05029936cd3245bf611fe7bec3c60ecb2c842cc Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 3 May 2011 14:59:38 -0400 Subject: Drop 'folder_uri' member from MessageList. --- mail/message-list.c | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 6c0b532286..99e83a28b6 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -99,7 +99,6 @@ struct _MLSelection { GPtrArray *uids; CamelFolder *folder; - gchar *folder_uri; }; struct _MessageListPrivate { @@ -527,8 +526,6 @@ clear_selection (MessageList *ml, struct _MLSelection *selection) g_object_unref (selection->folder); selection->folder = NULL; } - g_free (selection->folder_uri); - selection->folder_uri = NULL; } static ETreePath @@ -987,9 +984,7 @@ message_list_copy (MessageList *ml, gboolean cut) } p->clipboard.uids = uids; - p->clipboard.folder = ml->folder; - g_object_ref (p->clipboard.folder); - p->clipboard.folder_uri = g_strdup (ml->folder_uri); + p->clipboard.folder = g_object_ref (ml->folder); gtk_selection_owner_set (p->invisible, GDK_SELECTION_CLIPBOARD, gtk_get_current_event_time ()); } else { em_utils_uids_free (uids); @@ -2147,7 +2142,7 @@ ml_selection_get (GtkWidget *widget, GtkSelectionData *data, guint info, guint t } else { /* x-uid-list */ d(printf("setting x-uid-list selection for uids\n")); - em_utils_selection_set_uidlist (data, selection->folder_uri, selection->uids); + em_utils_selection_set_uidlist (data, selection->folder, selection->uids); } } @@ -2199,7 +2194,7 @@ ml_tree_drag_data_get (ETree *tree, gint row, ETreePath path, gint col, if (uids->len > 0) { switch (info) { case DND_X_UID_LIST: - em_utils_selection_set_uidlist (data, ml->folder_uri, uids); + em_utils_selection_set_uidlist (data, ml->folder, uids); break; case DND_TEXT_URI_LIST: em_utils_selection_set_urilist (data, ml->folder, uids); @@ -2648,9 +2643,6 @@ message_list_finalize (GObject *object) g_mutex_free (message_list->regen_lock); - g_free (message_list->folder_uri); - message_list->folder_uri = NULL; - clear_selection (message_list, &priv->clipboard); /* Chain up to parent's finalize() method. */ @@ -3819,17 +3811,6 @@ message_list_set_folder (MessageList *message_list, message_list->thread_tree = NULL; } - g_free (message_list->folder_uri); - message_list->folder_uri = NULL; - - /* XXX Not sure if MESSAGE_SELECTED signal handlers rely on - * folder_uri being set, so avoid temptation to move this - * logic down until verifying it's safe. */ - if (CAMEL_IS_FOLDER (folder)) { - const gchar *uri = camel_folder_get_uri (folder); - message_list->folder_uri = g_strdup (uri); - } - if (message_list->cursor_uid) { g_free (message_list->cursor_uid); message_list->cursor_uid = NULL; -- cgit v1.2.3 From 1ce5e2fee4ddc4dc5238870a9907340fce53055d Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 3 May 2011 15:24:36 -0400 Subject: MessageList: Simplify the "Location" column. --- mail/message-list.c | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 99e83a28b6..19c7a79c44 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -1687,38 +1687,31 @@ ml_tree_value_at_ex (ETreeModel *etm, case COL_LOCATION: { /* Fixme : freeing memory stuff (mem leaks) */ CamelFolder *folder; - CamelURL *curl; + CamelStore *store; EAccount *account; - gchar *location = NULL; - const gchar *uri; - gchar *euri; + const gchar *store_name; + const gchar *folder_name; + const gchar *uid; - if (CAMEL_IS_VEE_FOLDER (message_list->folder)) { - folder = camel_vee_folder_get_location ((CamelVeeFolder *)message_list->folder, (CamelVeeMessageInfo *)msg_info, NULL); - } else { - folder = message_list->folder; - } + folder = message_list->folder; - uri = camel_folder_get_uri (folder); - euri = em_uri_from_camel (uri); + if (CAMEL_IS_VEE_FOLDER (folder)) + folder = camel_vee_folder_get_location ( + CAMEL_VEE_FOLDER (folder), + (CamelVeeMessageInfo *) msg_info, NULL); - account = e_get_account_by_source_url (uri); + store = camel_folder_get_parent_store (folder); + folder_name = camel_folder_get_full_name (folder); - if (account) { - curl = camel_url_new (uri, NULL); - location = g_strconcat (account->name, ":", curl->path, NULL); - } else { - /* Local account */ - euri = em_uri_from_camel (uri); - curl = camel_url_new (euri, NULL); - if (curl->host && !strcmp(curl->host, "local") && curl->user && !strcmp(curl->user, "local")) - location = g_strconcat (_("On This Computer"), ":",curl->path, NULL); - } + uid = camel_service_get_uid (CAMEL_SERVICE (store)); + account = e_get_account_by_uid (uid); - camel_url_free (curl); - g_free (euri); + if (account != NULL) + store_name = account->name; + else + store_name = _("On This Computer"); - return location; + return g_strdup_printf ("%s : %s", store_name, folder_name); } case COL_MIXED_RECIPIENTS: case COL_RECIPIENTS:{ -- cgit v1.2.3 From 8a186c3588d3598857c36e2122fa68d01eba30fd Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 8 May 2011 13:24:42 -0400 Subject: Coding style cleanups. --- mail/message-list.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 19c7a79c44..811f5e95e4 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -586,7 +586,7 @@ ml_search_path (MessageList *ml, MessageListSelectDirection direction, guint32 f row = e_tree_table_adapter_row_of_node (etta, node); if (row == -1) return NULL; - count = e_table_model_row_count ((ETableModel *)etta); + count = e_table_model_row_count ((ETableModel *) etta); if ((direction & MESSAGE_LIST_SELECT_DIRECTION) == MESSAGE_LIST_SELECT_NEXT) node = ml_search_forward (ml, row + 1, count - 1, flags, mask); @@ -767,7 +767,7 @@ message_list_select_next_thread (MessageList *ml) row = e_tree_table_adapter_row_of_node (etta, node); if (row == -1) return; - count = e_table_model_row_count ((ETableModel *)etta); + count = e_table_model_row_count ((ETableModel *) etta); /* find the next node which has a root parent (i.e. toplevel node) */ for (i=row+1;isent ? camel_message_info_date_sent (info) @@ -1414,9 +1414,9 @@ add_all_labels_foreach (ETreeModel *etm, ETreePath node, gpointer data) const CamelFlag *flag; if (!etm) - msg_info = (CamelMessageInfo *)node; + msg_info = (CamelMessageInfo *) node; else - msg_info = e_tree_memory_node_get_data ((ETreeMemory *)etm, node); + msg_info = e_tree_memory_node_get_data ((ETreeMemory *) etm, node); g_return_val_if_fail (msg_info != NULL, FALSE); for (flag = camel_message_info_user_flags (msg_info); flag; flag = flag->next) @@ -2387,7 +2387,7 @@ ml_tree_drag_motion (ETree *tree, GdkDragContext *context, gint x, gint y, guint d(printf("atom drop '%s'\n", gdk_atom_name(targets->data))); for (i = 0; i < G_N_ELEMENTS (ml_drag_info); i++) - if (targets->data == (gpointer)ml_drag_info[i].atom) + if (targets->data == (gpointer) ml_drag_info[i].atom) actions |= ml_drag_info[i].actions; targets = g_list_next (targets); @@ -2573,7 +2573,7 @@ message_list_dispose (GObject *object) mail_regen_cancel (message_list); if (message_list->uid_nodemap) { - g_hash_table_foreach (message_list->uid_nodemap, (GHFunc)clear_info, message_list); + g_hash_table_foreach (message_list->uid_nodemap, (GHFunc) clear_info, message_list); g_hash_table_destroy (message_list->uid_nodemap); message_list->uid_nodemap = NULL; } @@ -2930,9 +2930,9 @@ clear_info (gchar *key, ETreePath *node, MessageList *ml) { CamelMessageInfo *info; - info = e_tree_memory_node_get_data ((ETreeMemory *)ml->model, node); + info = e_tree_memory_node_get_data ((ETreeMemory *) ml->model, node); camel_folder_free_message_info (ml->folder, info); - e_tree_memory_node_set_data ((ETreeMemory *)ml->model, node, NULL); + e_tree_memory_node_set_data ((ETreeMemory *) ml->model, node, NULL); } static void @@ -2950,7 +2950,7 @@ clear_tree (MessageList *ml, gboolean tfree) /* we also reset the uid_rowmap since it is no longer useful/valid anyway */ if (ml->folder) - g_hash_table_foreach (ml->uid_nodemap, (GHFunc)clear_info, ml); + g_hash_table_foreach (ml->uid_nodemap, (GHFunc) clear_info, ml); g_hash_table_destroy (ml->uid_nodemap); ml->uid_nodemap = g_hash_table_new (g_str_hash, g_str_equal); @@ -3419,7 +3419,7 @@ build_subtree_diff (MessageList *ml, ETreePath parent, ETreePath path, CamelFold gpointer olduid, oldrow; /* if this is a message row, check/update the row id map */ if (g_hash_table_lookup_extended (ml->uid_rowmap, camel_message_info_uid (bp->message), &olduid, &oldrow)) { - if ((gint)oldrow != (*row)) { + if ((gint) oldrow != (*row)) { g_hash_table_insert (ml->uid_rowmap, olduid, (gpointer)(*row)); } } else { @@ -3946,7 +3946,7 @@ on_selection_changed_cmd (ETree *tree, MessageList *ml) if (uids->len == 1) newuid = uids->pdata[0]; else if ((cursor = e_tree_get_cursor (tree))) - newuid = (gchar *)camel_message_info_uid (e_tree_memory_node_get_data ((ETreeMemory *)tree, cursor)); + newuid = (gchar *) camel_message_info_uid (e_tree_memory_node_get_data ((ETreeMemory *) tree, cursor)); else newuid = NULL; @@ -4211,7 +4211,7 @@ message_list_set_search (MessageList *ml, const gchar *search) texture = clutter_texture_new_from_file (gtk_icon_info_get_filename (info), NULL); gtk_icon_info_free (info); } - clutter_container_add_actor ((ClutterContainer *)stage, texture); + clutter_container_add_actor ((ClutterContainer *) stage, texture); ml->priv->search_texture = texture; ml->priv->timeline = clutter_timeline_new (2 * 1000); @@ -4917,6 +4917,6 @@ mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, Ca ml_regen_timeout (m); else { ml->regen_timeout_msg = m; - ml->regen_timeout_id = g_timeout_add (500, (GSourceFunc)ml_regen_timeout, m); + ml->regen_timeout_id = g_timeout_add (500, (GSourceFunc) ml_regen_timeout, m); } } -- cgit v1.2.3 From 45ecbcc593a41e03542150fe4de984a1e9652dae Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 12 May 2011 09:18:34 +0200 Subject: Bug #645476 - Avoid scroll to cursor on folder change in message list --- mail/message-list.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 811f5e95e4..592e8e1370 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -215,7 +215,7 @@ static gchar *filter_size (gint size); /* note: @changes is owned/freed by the caller */ /*static void mail_do_regenerate_messagelist (MessageList *list, const gchar *search, const gchar *hideexpr, CamelFolderChangeInfo *changes);*/ -static void mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, CamelFolderChangeInfo *changes); +static void mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, CamelFolderChangeInfo *changes, gboolean scroll_to_cursor); static void mail_regen_cancel (MessageList *ml); static void clear_info (gchar *key, ETreePath *node, MessageList *ml); @@ -2422,7 +2422,7 @@ ml_tree_sorting_changed (ETreeTableAdapter *adapter, MessageList *ml) ml->thread_tree = NULL; } - mail_regen_list (ml, ml->search, NULL, NULL); + mail_regen_list (ml, ml->search, NULL, NULL, TRUE); return TRUE; } @@ -3741,7 +3741,7 @@ folder_changed (CamelFolder *folder, } /* XXX This apparently eats the ChangeFolderChangeInfo. */ - mail_regen_list (ml, ml->search, NULL, altered_changes); + mail_regen_list (ml, ml->search, NULL, altered_changes, FALSE); } /** @@ -3862,7 +3862,7 @@ message_list_set_folder (MessageList *message_list, !(folder->folder_flags & CAMEL_FOLDER_IS_TRASH); if (message_list->frozen == 0) - mail_regen_list (message_list, message_list->search, NULL, NULL); + mail_regen_list (message_list, message_list->search, NULL, NULL, TRUE); } } @@ -4137,7 +4137,7 @@ message_list_thaw (MessageList *ml) ml->frozen--; if (ml->frozen == 0) { - mail_regen_list (ml, ml->frozen_search?ml->frozen_search:ml->search, NULL, NULL); + mail_regen_list (ml, ml->frozen_search ? ml->frozen_search : ml->search, NULL, NULL, TRUE); g_free (ml->frozen_search); ml->frozen_search = NULL; } @@ -4151,7 +4151,7 @@ message_list_set_threaded_expand_all (MessageList *ml) ml->expand_all = 1; if (ml->frozen == 0) - mail_regen_list (ml, ml->search, NULL, NULL); + mail_regen_list (ml, ml->search, NULL, NULL, TRUE); } } @@ -4162,7 +4162,7 @@ message_list_set_threaded_collapse_all (MessageList *ml) ml->collapse_all = 1; if (ml->frozen == 0) - mail_regen_list (ml, ml->search, NULL, NULL); + mail_regen_list (ml, ml->search, NULL, NULL, TRUE); } } @@ -4173,7 +4173,7 @@ message_list_set_threaded (MessageList *ml, gboolean threaded) ml->threaded = threaded; if (ml->frozen == 0) - mail_regen_list (ml, ml->search, NULL, NULL); + mail_regen_list (ml, ml->search, NULL, NULL, TRUE); } } @@ -4184,7 +4184,7 @@ message_list_set_hidedeleted (MessageList *ml, gboolean hidedeleted) ml->hidedeleted = hidedeleted; if (ml->frozen == 0) - mail_regen_list (ml, ml->search, NULL, NULL); + mail_regen_list (ml, ml->search, NULL, NULL, TRUE); } } @@ -4261,7 +4261,7 @@ message_list_set_search (MessageList *ml, const gchar *search) #endif if (ml->frozen == 0) - mail_regen_list (ml, search, NULL, NULL); + mail_regen_list (ml, search, NULL, NULL, TRUE); else { g_free (ml->frozen_search); ml->frozen_search = g_strdup (search); @@ -4460,6 +4460,7 @@ struct _regen_list_msg { gboolean hidedel; /* we want to/dont want to show deleted messages */ gboolean hidejunk; /* we want to/dont want to show junk messages */ gboolean thread_subject; + gboolean scroll_to_cursor; /* whether ensure scrolling to the cursor after rebuild */ CamelFolderThread *tree; CamelFolder *folder; @@ -4641,7 +4642,8 @@ regen_list_done (struct _regen_list_msg *m) tree = E_TREE (m->ml); - e_tree_show_cursor_after_reflow (tree); + if (m->scroll_to_cursor) + e_tree_show_cursor_after_reflow (tree); g_signal_handlers_block_by_func (e_tree_get_table_adapter (tree), ml_tree_sorting_changed, m->ml); @@ -4835,7 +4837,7 @@ mail_regen_cancel (MessageList *ml) } static void -mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, CamelFolderChangeInfo *changes) +mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, CamelFolderChangeInfo *changes, gboolean scroll_to_cursor) { struct _regen_list_msg *m; GConfClient *client; @@ -4882,6 +4884,7 @@ mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, Ca m->hidedel = ml->hidedeleted; m->hidejunk = ml->hidejunk; m->thread_subject = thread_subject; + m->scroll_to_cursor = scroll_to_cursor; m->folder = g_object_ref (ml->folder); m->last_row = -1; m->expand_state = NULL; -- cgit v1.2.3 From b663d51f1bd01979030b8dff57a2631cd672775e Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 12 May 2011 19:00:09 -0400 Subject: Miscellaneous cleanups. --- mail/message-list.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 592e8e1370..9adf2b4776 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -3937,14 +3937,14 @@ static void on_selection_changed_cmd (ETree *tree, MessageList *ml) { GPtrArray *uids; - gchar *newuid; + const gchar *newuid; ETreePath cursor; /* not sure if we could just ignore this for the cursor, i think sometimes you only get a selection changed when you should also get a cursor activated? */ uids = message_list_get_selected (ml); if (uids->len == 1) - newuid = uids->pdata[0]; + newuid = g_ptr_array_index (uids, 0); else if ((cursor = e_tree_get_cursor (tree))) newuid = (gchar *) camel_message_info_uid (e_tree_memory_node_get_data ((ETreeMemory *) tree, cursor)); else -- cgit v1.2.3 From 756c8abcb840b8da588031f4a0d7e1fc979fab70 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 27 May 2011 15:23:07 +0200 Subject: Bug #646109 - Fix use of include to make sure translations work --- mail/message-list.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 9adf2b4776..5bcef28cfc 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -22,7 +22,9 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif #include #include -- cgit v1.2.3 From efb9a4b7e1d7fa8834be8bfb165cb5b779b555b3 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Wed, 1 Jun 2011 16:13:03 +0200 Subject: Bug #578245 - View settings for threads getting lost --- mail/message-list.c | 47 ++++++++++++++++++----------------------------- 1 file changed, 18 insertions(+), 29 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 5bcef28cfc..be7dda6052 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -2051,10 +2051,10 @@ save_tree_state (MessageList *ml) { gchar *filename; - if (ml->folder == NULL) + if (ml->folder == NULL || (ml->search && *ml->search)) return; - filename = mail_config_folder_to_cachename(ml->folder, "et-expanded-"); + filename = mail_config_folder_to_cachename (ml->folder, "et-expanded-"); e_tree_save_expanded_state (E_TREE (ml), filename); g_free (filename); @@ -2069,7 +2069,8 @@ load_tree_state (MessageList *ml, xmlDoc *expand_state) if (expand_state) { e_tree_load_expanded_state_xml (E_TREE (ml), expand_state); - } else { + } else if (!ml->search || !*ml->search) { + /* only when not searching */ gchar *filename; filename = mail_config_folder_to_cachename (ml->folder, "et-expanded-"); @@ -2092,31 +2093,16 @@ message_list_setup_etree (MessageList *message_list, gboolean outgoing) /* build the spec based on the folder, and possibly from a saved file */ /* otherwise, leave default */ if (message_list->folder) { - CamelStore *parent_store; - gchar *path; - gchar *name; gint data = 1; - struct stat st; ETableItem *item; item = e_tree_get_item (E_TREE (message_list)); g_object_set (message_list, "uniform_row_height", TRUE, NULL); - - parent_store = camel_folder_get_parent_store (message_list->folder); - name = camel_service_get_name (CAMEL_SERVICE (parent_store), TRUE); - d(printf ("folder name is '%s'\n", name)); - - path = mail_config_folder_to_cachename (message_list->folder, "et-expanded-"); g_object_set_data (G_OBJECT (((GnomeCanvasItem *) item)->canvas), "freeze-cursor", &data); - if (path && g_stat (path, &st) == 0 && st.st_size > 0 && S_ISREG (st.st_mode)) { - /* build based on saved file */ - e_tree_load_expanded_state (E_TREE (message_list), path); - } - g_free (path); - - g_free (name); + /* build based on saved file */ + load_tree_state (message_list, NULL); } } @@ -4627,6 +4613,7 @@ regen_list_done (struct _regen_list_msg *m) { ETree *tree; GCancellable *cancellable; + gboolean searching; cancellable = e_activity_get_cancellable (m->base.activity); @@ -4649,6 +4636,13 @@ regen_list_done (struct _regen_list_msg *m) g_signal_handlers_block_by_func (e_tree_get_table_adapter (tree), ml_tree_sorting_changed, m->ml); + if (m->ml->search && m->ml->search != m->search) + g_free (m->ml->search); + m->ml->search = m->search; + m->search = NULL; + + searching = m->ml->search && *m->ml->search; + if (m->dotree) { gboolean forcing_expand_state = m->ml->expand_all || m->ml->collapse_all; @@ -4661,8 +4655,8 @@ regen_list_done (struct _regen_list_msg *m) } } - if (forcing_expand_state) - e_tree_force_expanded_state (tree, m->ml->expand_all ? 1 : -1); + if (forcing_expand_state || searching) + e_tree_force_expanded_state (tree, (m->ml->expand_all || searching) ? 1 : -1); build_tree (m->ml, m->tree, m->changes); if (m->ml->thread_tree) @@ -4670,8 +4664,8 @@ regen_list_done (struct _regen_list_msg *m) m->ml->thread_tree = m->tree; m->tree = NULL; - if (forcing_expand_state) { - if (m->ml->folder != NULL && tree != NULL) + if (forcing_expand_state || searching) { + if (m->ml->folder != NULL && tree != NULL && !searching) save_tree_state (m->ml); /* do not forget to set this back to use the default value... */ e_tree_force_expanded_state (tree, 0); @@ -4683,11 +4677,6 @@ regen_list_done (struct _regen_list_msg *m) } else build_flat (m->ml, m->summary, m->changes); - if (m->ml->search && m->ml->search != m->search) - g_free (m->ml->search); - m->ml->search = m->search; - m->search = NULL; - g_mutex_lock (m->ml->regen_lock); m->ml->regen = g_list_remove (m->ml->regen, m); g_mutex_unlock (m->ml->regen_lock); -- cgit v1.2.3 From 282100c65653293258d0f8471427be1ca54204e6 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 1 Jul 2011 14:05:14 +0200 Subject: Bug #499739 - "Flag for follow-up" should be easier to set --- mail/message-list.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index be7dda6052..3e04fb0f39 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -3969,12 +3969,38 @@ on_click (ETree *tree, gint row, ETreePath path, gint col, GdkEvent *event, Mess flag = CAMEL_MESSAGE_SEEN; else if (col == COL_FLAGGED) flag = CAMEL_MESSAGE_FLAGGED; - else + else if (col != COL_FOLLOWUP_FLAG_STATUS) return FALSE; if (!(info = get_message_info (list, path))) return FALSE; + if (col == COL_FOLLOWUP_FLAG_STATUS) { + const gchar *tag, *cmp; + + tag = camel_message_info_user_tag (info, "follow-up"); + cmp = camel_message_info_user_tag (info, "completed-on"); + if (tag && tag[0]) { + if (cmp && cmp[0]) { + camel_message_info_set_user_tag (info, "follow-up", NULL); + camel_message_info_set_user_tag (info, "due-by", NULL); + camel_message_info_set_user_tag (info, "completed-on", NULL); + } else { + gchar *text; + + text = camel_header_format_date (time (NULL), 0); + camel_message_info_set_user_tag (info, "completed-on", text); + g_free (text); + } + } else { + /* default follow-up flag name to use when clicked in the message list column */ + camel_message_info_set_user_tag (info, "follow-up", _("Follow-up")); + camel_message_info_set_user_tag (info, "completed-on", NULL); + } + + return TRUE; + } + flags = camel_message_info_flags (info); folder_is_trash = -- cgit v1.2.3 From f093504e65eb82178d1335a9c8f748caf4382580 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 28 Jul 2011 12:07:46 +0200 Subject: Bug #635211 - Select-all processed on timeout when not needed --- mail/message-list.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 3e04fb0f39..66432a930f 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -842,14 +842,14 @@ message_list_select_all (MessageList *message_list) { g_return_if_fail (IS_MESSAGE_LIST (message_list)); - if (message_list->threaded) { + if (message_list->threaded && message_list->regen_timeout_id) { /* XXX The timeout below is added so that the execution * thread to expand all conversation threads would * have completed. The timeout 505 is just to ensure * that the value is a small delta more than the * timeout value in mail_regen_list(). */ g_timeout_add ( - 505, (GSourceFunc) + 55, (GSourceFunc) message_list_select_all_timeout_cb, message_list); } else @@ -4937,6 +4937,6 @@ mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, Ca ml_regen_timeout (m); else { ml->regen_timeout_msg = m; - ml->regen_timeout_id = g_timeout_add (500, (GSourceFunc) ml_regen_timeout, m); + ml->regen_timeout_id = g_timeout_add (50, (GSourceFunc) ml_regen_timeout, m); } } -- cgit v1.2.3 From dd57574c0427b4571c1daac42b6ffa636a8c80c1 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 17 Aug 2011 21:21:22 -0400 Subject: Use new CamelService:display-name property. Simplify, simplify... --- mail/message-list.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 66432a930f..70922b8e05 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -1688,12 +1688,11 @@ ml_tree_value_at_ex (ETreeModel *etm, } case COL_LOCATION: { /* Fixme : freeing memory stuff (mem leaks) */ - CamelFolder *folder; CamelStore *store; - EAccount *account; + CamelFolder *folder; + CamelService *service; const gchar *store_name; const gchar *folder_name; - const gchar *uid; folder = message_list->folder; @@ -1705,13 +1704,8 @@ ml_tree_value_at_ex (ETreeModel *etm, store = camel_folder_get_parent_store (folder); folder_name = camel_folder_get_full_name (folder); - uid = camel_service_get_uid (CAMEL_SERVICE (store)); - account = e_get_account_by_uid (uid); - - if (account != NULL) - store_name = account->name; - else - store_name = _("On This Computer"); + service = CAMEL_SERVICE (store); + store_name = camel_service_get_display_name (service); return g_strdup_printf ("%s : %s", store_name, folder_name); } -- cgit v1.2.3 From db5b79ff2cd721e79fe930587cfdc84abd3ce2b7 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 26 Aug 2011 08:36:58 +0200 Subject: Bug #362366 - Dragging selected folder to message pane duplicates messages --- mail/message-list.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 70922b8e05..3f55d2cf0f 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -2363,6 +2363,19 @@ ml_tree_drag_motion (ETree *tree, GdkDragContext *context, gint x, gint y, guint return TRUE; } + if (EM_IS_FOLDER_TREE (gtk_drag_get_source_widget (context))) { + EMFolderTree *folder_tree; + CamelFolder *folder; + + folder_tree = EM_FOLDER_TREE (gtk_drag_get_source_widget (context)); + folder = em_folder_tree_get_selected_folder (folder_tree); + + if (folder == ml->folder) { + gdk_drag_status (context, 0, time); + return TRUE; + } + } + targets = gdk_drag_context_list_targets (context); while (targets != NULL) { gint i; -- cgit v1.2.3 From f67a5f3d42aa9d743e6b78ace26a6ed1dbdc43e7 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 30 Aug 2011 19:05:30 -0400 Subject: Miscellaneous cleanups. Reducing diff noise with the account-mgmt branch. Trying to erode our dependency on EAccount as much as possible, or at least isolate its usage, to make things easier for me on the branch. --- mail/message-list.c | 1 - 1 file changed, 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 3f55d2cf0f..2529e10e7f 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -38,7 +38,6 @@ #include -#include "e-util/e-account-utils.h" #include "e-util/e-icon-factory.h" #include "e-util/e-poolv.h" #include "e-util/e-util-private.h" -- cgit v1.2.3 From fcbbdfbd18e15b4ee8322a0217cf03a689a5e033 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 16 Aug 2011 11:25:56 -0400 Subject: Coding style and whitespace cleanup. --- mail/message-list.c | 467 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 312 insertions(+), 155 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 2529e10e7f..1c634b91b8 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -309,7 +309,8 @@ e_mail_address_free (EMailAddress *addr) } static gint -e_mail_address_compare (gconstpointer address1, gconstpointer address2) +e_mail_address_compare (gconstpointer address1, + gconstpointer address2) { const EMailAddress *addr1 = address1; const EMailAddress *addr2 = address2; @@ -368,7 +369,9 @@ e_mail_address_compare (gconstpointer address1, gconstpointer address2) #endif /* SMART_ADDRESS_COMPARE */ static gint -address_compare (gconstpointer address1, gconstpointer address2, gpointer cmp_cache) +address_compare (gconstpointer address1, + gconstpointer address2, + gpointer cmp_cache) { #ifdef SMART_ADDRESS_COMPARE EMailAddress *addr1, *addr2; @@ -411,7 +414,8 @@ filter_size (gint size) /* Gets the uid of the message displayed at a given view row */ static const gchar * -get_message_uid (MessageList *message_list, ETreePath node) +get_message_uid (MessageList *message_list, + ETreePath node) { CamelMessageInfo *info; @@ -427,7 +431,8 @@ get_message_uid (MessageList *message_list, ETreePath node) * view row. */ static CamelMessageInfo * -get_message_info (MessageList *message_list, ETreePath node) +get_message_info (MessageList *message_list, + ETreePath node) { CamelMessageInfo *info; @@ -439,7 +444,9 @@ get_message_info (MessageList *message_list, ETreePath node) } static const gchar * -get_normalised_string (MessageList *message_list, CamelMessageInfo *info, gint col) +get_normalised_string (MessageList *message_list, + CamelMessageInfo *info, + gint col) { const gchar *string, *str; gchar *normalised; @@ -517,7 +524,8 @@ get_normalised_string (MessageList *message_list, CamelMessageInfo *info, gint c } static void -clear_selection (MessageList *ml, struct _MLSelection *selection) +clear_selection (MessageList *ml, + struct _MLSelection *selection) { if (selection->uids) { em_utils_uids_free (selection->uids); @@ -530,7 +538,11 @@ clear_selection (MessageList *ml, struct _MLSelection *selection) } static ETreePath -ml_search_forward (MessageList *ml, gint start, gint end, guint32 flags, guint32 mask) +ml_search_forward (MessageList *ml, + gint start, + gint end, + guint32 flags, + guint32 mask) { ETreePath path; gint row; @@ -551,7 +563,11 @@ ml_search_forward (MessageList *ml, gint start, gint end, guint32 flags, guint32 } static ETreePath -ml_search_backward (MessageList *ml, gint start, gint end, guint32 flags, guint32 mask) +ml_search_backward (MessageList *ml, + gint start, + gint end, + guint32 flags, + guint32 mask) { ETreePath path; gint row; @@ -572,7 +588,10 @@ ml_search_backward (MessageList *ml, gint start, gint end, guint32 flags, guint3 } static ETreePath -ml_search_path (MessageList *ml, MessageListSelectDirection direction, guint32 flags, guint32 mask) +ml_search_path (MessageList *ml, + MessageListSelectDirection direction, + guint32 flags, + guint32 mask) { ETreePath node; gint row, count; @@ -592,20 +611,21 @@ ml_search_path (MessageList *ml, MessageListSelectDirection direction, guint32 f if ((direction & MESSAGE_LIST_SELECT_DIRECTION) == MESSAGE_LIST_SELECT_NEXT) node = ml_search_forward (ml, row + 1, count - 1, flags, mask); else - node = ml_search_backward (ml, row-1, 0, flags, mask); + node = ml_search_backward (ml, row - 1, 0, flags, mask); if (node == NULL && (direction & MESSAGE_LIST_SELECT_WRAP)) { if ((direction & MESSAGE_LIST_SELECT_DIRECTION) == MESSAGE_LIST_SELECT_NEXT) node = ml_search_forward (ml, 0, row, flags, mask); else - node = ml_search_backward (ml, count-1, row, flags, mask); + node = ml_search_backward (ml, count - 1, row, flags, mask); } return node; } static void -select_path (MessageList *ml, ETreePath path) +select_path (MessageList *ml, + ETreePath path) { ETree *tree; ETreeTableAdapter *etta; @@ -643,7 +663,10 @@ select_path (MessageList *ml, ETreePath path) * Returns %TRUE if a new message has been selected or %FALSE otherwise. **/ gboolean -message_list_select (MessageList *ml, MessageListSelectDirection direction, guint32 flags, guint32 mask) +message_list_select (MessageList *ml, + MessageListSelectDirection direction, + guint32 flags, + guint32 mask) { ETreePath path; @@ -673,7 +696,10 @@ message_list_select (MessageList *ml, MessageListSelectDirection direction, guin * Return value: **/ gboolean -message_list_can_select (MessageList *ml, MessageListSelectDirection direction, guint32 flags, guint32 mask) +message_list_can_select (MessageList *ml, + MessageListSelectDirection direction, + guint32 flags, + guint32 mask) { return ml_search_path (ml, direction, flags, mask) != NULL; } @@ -771,7 +797,7 @@ message_list_select_next_thread (MessageList *ml) count = e_table_model_row_count ((ETableModel *) etta); /* find the next node which has a root parent (i.e. toplevel node) */ - for (i=row+1;imodel, e_tree_model_node_get_parent (ml->model, node))) { @@ -862,16 +888,20 @@ typedef struct thread_select_info { } thread_select_info_t; static gboolean -select_node (ETreeModel *model, ETreePath path, gpointer user_data) +select_node (ETreeModel *model, + ETreePath path, + gpointer user_data) { thread_select_info_t *tsi = (thread_select_info_t *) user_data; g_ptr_array_add (tsi->paths, path); - return FALSE; /*not done yet*/ + return FALSE; /*not done yet */ } static void -select_thread (MessageList *message_list, void (*selector)(ETreePath, gpointer)) +select_thread (MessageList *message_list, + void (*selector) (ETreePath, + gpointer)) { ETree *tree; ETreeSelectionModel *etsm; @@ -891,7 +921,8 @@ select_thread (MessageList *message_list, void (*selector)(ETreePath, gpointer)) } static void -thread_select_foreach (ETreePath path, gpointer user_data) +thread_select_foreach (ETreePath path, + gpointer user_data) { thread_select_info_t *tsi = (thread_select_info_t *) user_data; ETreeModel *model = tsi->ml->model; @@ -922,7 +953,8 @@ message_list_select_thread (MessageList *message_list) } static void -subthread_select_foreach (ETreePath path, gpointer user_data) +subthread_select_foreach (ETreePath path, + gpointer user_data) { thread_select_info_t *tsi = (thread_select_info_t *) user_data; ETreeModel *model = tsi->ml->model; @@ -959,7 +991,8 @@ message_list_invert_selection (MessageList *message_list) } void -message_list_copy (MessageList *ml, gboolean cut) +message_list_copy (MessageList *ml, + gboolean cut) { MessageListPrivate *p = ml->priv; GPtrArray *uids; @@ -973,7 +1006,7 @@ message_list_copy (MessageList *ml, gboolean cut) gint i; camel_folder_freeze (ml->folder); - for (i=0;ilen;i++) + for (i = 0; i < uids->len; i++) camel_folder_set_message_flags ( ml->folder, uids->pdata[i], CAMEL_MESSAGE_SEEN | @@ -1005,7 +1038,8 @@ message_list_paste (MessageList *ml) * SimpleTableModel::col_count */ static gint -ml_column_count (ETreeModel *etm, gpointer data) +ml_column_count (ETreeModel *etm, + gpointer data) { return COL_LAST; } @@ -1014,7 +1048,8 @@ ml_column_count (ETreeModel *etm, gpointer data) * SimpleTableModel::has_save_id */ static gboolean -ml_has_save_id (ETreeModel *etm, gpointer data) +ml_has_save_id (ETreeModel *etm, + gpointer data) { return TRUE; } @@ -1023,7 +1058,9 @@ ml_has_save_id (ETreeModel *etm, gpointer data) * SimpleTableModel::get_save_id */ static gchar * -ml_get_save_id (ETreeModel *etm, ETreePath path, gpointer data) +ml_get_save_id (ETreeModel *etm, + ETreePath path, + gpointer data) { CamelMessageInfo *info; @@ -1031,7 +1068,7 @@ ml_get_save_id (ETreeModel *etm, ETreePath path, gpointer data) return g_strdup("root"); /* Note: etable can ask for the save_id while we're clearing it, - which is the only time data should be null */ + * which is the only time data should be null */ info = e_tree_memory_node_get_data (E_TREE_MEMORY (etm), path); if (info == NULL) return NULL; @@ -1043,7 +1080,8 @@ ml_get_save_id (ETreeModel *etm, ETreePath path, gpointer data) * SimpleTableModel::has_save_id */ static gboolean -ml_has_get_node_by_id (ETreeModel *etm, gpointer data) +ml_has_get_node_by_id (ETreeModel *etm, + gpointer data) { return TRUE; } @@ -1052,7 +1090,9 @@ ml_has_get_node_by_id (ETreeModel *etm, gpointer data) * SimpleTableModel::get_save_id */ static ETreePath -ml_get_node_by_id (ETreeModel *etm, const gchar *save_id, gpointer data) +ml_get_node_by_id (ETreeModel *etm, + const gchar *save_id, + gpointer data) { MessageList *ml; @@ -1065,7 +1105,10 @@ ml_get_node_by_id (ETreeModel *etm, const gchar *save_id, gpointer data) } static gpointer -ml_duplicate_value (ETreeModel *etm, gint col, gconstpointer value, gpointer data) +ml_duplicate_value (ETreeModel *etm, + gint col, + gconstpointer value, + gpointer data) { switch (col) { case COL_MESSAGE_STATUS: @@ -1099,7 +1142,10 @@ ml_duplicate_value (ETreeModel *etm, gint col, gconstpointer value, gpointer dat } static void -ml_free_value (ETreeModel *etm, gint col, gpointer value, gpointer data) +ml_free_value (ETreeModel *etm, + gint col, + gpointer value, + gpointer data) { switch (col) { case COL_MESSAGE_STATUS: @@ -1138,7 +1184,9 @@ ml_free_value (ETreeModel *etm, gint col, gpointer value, gpointer data) } static gpointer -ml_initialize_value (ETreeModel *etm, gint col, gpointer data) +ml_initialize_value (ETreeModel *etm, + gint col, + gpointer data) { switch (col) { case COL_MESSAGE_STATUS: @@ -1173,7 +1221,10 @@ ml_initialize_value (ETreeModel *etm, gint col, gpointer data) } static gboolean -ml_value_is_empty (ETreeModel *etm, gint col, gconstpointer value, gpointer data) +ml_value_is_empty (ETreeModel *etm, + gint col, + gconstpointer value, + gpointer data) { switch (col) { case COL_MESSAGE_STATUS: @@ -1226,7 +1277,10 @@ static const gchar *score_map[] = { }; static gchar * -ml_value_to_string (ETreeModel *etm, gint col, gconstpointer value, gpointer data) +ml_value_to_string (ETreeModel *etm, + gint col, + gconstpointer value, + gpointer data) { guint i; @@ -1276,15 +1330,20 @@ ml_value_to_string (ETreeModel *etm, gint col, gconstpointer value, gpointer dat } static GdkPixbuf * -ml_tree_icon_at (ETreeModel *etm, ETreePath path, gpointer model_data) +ml_tree_icon_at (ETreeModel *etm, + ETreePath path, + gpointer model_data) { /* we dont really need an icon ... */ return NULL; } static void -for_node_and_subtree_if_collapsed (MessageList *ml, ETreePath node, CamelMessageInfo *mi, - ETreePathFunc func, gpointer data) +for_node_and_subtree_if_collapsed (MessageList *ml, + ETreePath node, + CamelMessageInfo *mi, + ETreePathFunc func, + gpointer data) { ETreeModel *etm = ml->model; ETreePath child; @@ -1300,7 +1359,9 @@ for_node_and_subtree_if_collapsed (MessageList *ml, ETreePath node, CamelMessage } static gboolean -unread_foreach (ETreeModel *etm, ETreePath node, gpointer data) +unread_foreach (ETreeModel *etm, + ETreePath node, + gpointer data) { gboolean *saw_unread = data; CamelMessageInfo *info; @@ -1323,7 +1384,9 @@ struct LatestData { }; static gboolean -latest_foreach (ETreeModel *etm, ETreePath node, gpointer data) +latest_foreach (ETreeModel *etm, + ETreePath node, + gpointer data) { struct LatestData *ld = data; CamelMessageInfo *info; @@ -1393,7 +1456,8 @@ struct LabelsData { }; static void -add_label_if_known (struct LabelsData *ld, const gchar *tag) +add_label_if_known (struct LabelsData *ld, + const gchar *tag) { GtkTreeIter label_defn; @@ -1406,7 +1470,9 @@ add_label_if_known (struct LabelsData *ld, const gchar *tag) } static gboolean -add_all_labels_foreach (ETreeModel *etm, ETreePath node, gpointer data) +add_all_labels_foreach (ETreeModel *etm, + ETreePath node, + gpointer data) { struct LabelsData *ld = data; CamelMessageInfo *msg_info; @@ -1554,7 +1620,7 @@ ml_tree_value_at_ex (ETreeModel *etm, const gchar *tag, *cmp; /* FIXME: this all should be methods off of message-tag-followup class, - FIXME: the tag names should be namespaced :( */ + * FIXME: the tag names should be namespaced :( */ tag = camel_message_info_user_tag(msg_info, "follow-up"); cmp = camel_message_info_user_tag(msg_info, "completed-on"); if (tag && tag[0]) { @@ -1768,7 +1834,10 @@ ml_tree_value_at_ex (ETreeModel *etm, } static gpointer -ml_tree_value_at (ETreeModel *etm, ETreePath path, gint col, gpointer model_data) +ml_tree_value_at (ETreeModel *etm, + ETreePath path, + gint col, + gpointer model_data) { MessageList *message_list = model_data; CamelMessageInfo *msg_info; @@ -1784,7 +1853,10 @@ ml_tree_value_at (ETreeModel *etm, ETreePath path, gint col, gpointer model_data } static gpointer -ml_tree_sort_value_at (ETreeModel *etm, ETreePath path, gint col, gpointer model_data) +ml_tree_sort_value_at (ETreeModel *etm, + ETreePath path, + gint col, + gpointer model_data) { MessageList *message_list = model_data; struct LatestData ld; @@ -1806,14 +1878,20 @@ ml_tree_sort_value_at (ETreeModel *etm, ETreePath path, gint col, gpointer model } static void -ml_tree_set_value_at (ETreeModel *etm, ETreePath path, gint col, - gconstpointer val, gpointer model_data) +ml_tree_set_value_at (ETreeModel *etm, + ETreePath path, + gint col, + gconstpointer val, + gpointer model_data) { g_warning ("This shouldn't be reached\n"); } static gboolean -ml_tree_is_cell_editable (ETreeModel *etm, ETreePath path, gint col, gpointer model_data) +ml_tree_is_cell_editable (ETreeModel *etm, + ETreePath path, + gint col, + gpointer model_data) { return FALSE; } @@ -1905,13 +1983,13 @@ static ECell * create_composite_cell (gint col) cell_date = e_cell_date_new (NULL, GTK_JUSTIFY_RIGHT); e_cell_date_set_format_component (E_CELL_DATE (cell_date), "mail"); - g_object_set (G_OBJECT (cell_date), + g_object_set (cell_date, "bold_column", COL_UNREAD, "color_column", COL_COLOUR, NULL); cell_from = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT); - g_object_set (G_OBJECT (cell_from), + g_object_set (cell_from, "bold_column", COL_UNREAD, "color_column", COL_COLOUR, NULL); @@ -1923,9 +2001,8 @@ static ECell * create_composite_cell (gint col) g_object_unref (cell_attach); g_object_unref (cell_date); - cell_sub = e_cell_text_new (fixed_name? fixed_name:NULL, GTK_JUSTIFY_LEFT); - g_object_set (G_OBJECT (cell_sub), -/* "bold_column", COL_UNREAD, */ + cell_sub = e_cell_text_new (fixed_name? fixed_name : NULL, GTK_JUSTIFY_LEFT); + g_object_set (cell_sub, "color_column", COL_COLOUR, NULL); cell_tree = e_cell_tree_new (TRUE, cell_sub); @@ -1945,10 +2022,11 @@ static ECell * create_composite_cell (gint col) } static void -composite_cell_set_strike_col (ECell *cell, gint col) +composite_cell_set_strike_col (ECell *cell, + gint col) { - g_object_set (G_OBJECT (g_object_get_data(G_OBJECT (cell), "cell_date")), "strikeout_column", col, NULL); - g_object_set (G_OBJECT (g_object_get_data(G_OBJECT (cell), "cell_from")), "strikeout_column", col, NULL); + g_object_set (g_object_get_data(G_OBJECT (cell), "cell_date"), "strikeout_column", col, NULL); + g_object_set (g_object_get_data(G_OBJECT (cell), "cell_from"), "strikeout_column", col, NULL); } static ETableExtras * @@ -1994,7 +2072,7 @@ message_list_create_extras (void) /* date cell */ cell = e_cell_date_new (NULL, GTK_JUSTIFY_LEFT); e_cell_date_set_format_component (E_CELL_DATE (cell), "mail"); - g_object_set (G_OBJECT (cell), + g_object_set (cell, "bold_column", COL_UNREAD, "color_column", COL_COLOUR, NULL); @@ -2003,7 +2081,7 @@ message_list_create_extras (void) /* text cell */ cell = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT); - g_object_set (G_OBJECT (cell), + g_object_set (cell, "bold_column", COL_UNREAD, "color_column", COL_COLOUR, NULL); @@ -2016,7 +2094,7 @@ message_list_create_extras (void) /* size cell */ cell = e_cell_size_new (NULL, GTK_JUSTIFY_RIGHT); - g_object_set (G_OBJECT (cell), + g_object_set (cell, "bold_column", COL_UNREAD, "color_column", COL_COLOUR, NULL); @@ -2055,7 +2133,8 @@ save_tree_state (MessageList *ml) } static void -load_tree_state (MessageList *ml, xmlDoc *expand_state) +load_tree_state (MessageList *ml, + xmlDoc *expand_state) { if (ml->folder == NULL) return; @@ -2081,7 +2160,8 @@ message_list_save_state (MessageList *ml) } static void -message_list_setup_etree (MessageList *message_list, gboolean outgoing) +message_list_setup_etree (MessageList *message_list, + gboolean outgoing) { /* build the spec based on the folder, and possibly from a saved file */ /* otherwise, leave default */ @@ -2100,7 +2180,11 @@ message_list_setup_etree (MessageList *message_list, gboolean outgoing) } static void -ml_selection_get (GtkWidget *widget, GtkSelectionData *data, guint info, guint time_stamp, MessageList *ml) +ml_selection_get (GtkWidget *widget, + GtkSelectionData *data, + guint info, + guint time_stamp, + MessageList *ml) { struct _MLSelection *selection; @@ -2121,7 +2205,9 @@ ml_selection_get (GtkWidget *widget, GtkSelectionData *data, guint info, guint t } static gboolean -ml_selection_clear_event (GtkWidget *widget, GdkEventSelection *event, MessageList *ml) +ml_selection_clear_event (GtkWidget *widget, + GdkEventSelection *event, + MessageList *ml) { MessageListPrivate *p = ml->priv; @@ -2157,9 +2243,15 @@ ml_selection_received (GtkWidget *widget, } static void -ml_tree_drag_data_get (ETree *tree, gint row, ETreePath path, gint col, - GdkDragContext *context, GtkSelectionData *data, - guint info, guint time, MessageList *ml) +ml_tree_drag_data_get (ETree *tree, + gint row, + ETreePath path, + gint col, + GdkDragContext *context, + GtkSelectionData *data, + guint info, + guint time, + MessageList *ml) { GPtrArray *uids; @@ -2195,9 +2287,9 @@ struct _drop_msg { guint32 action; guint info; - guint move:1; - guint moved:1; - guint aborted:1; + guint move : 1; + guint moved : 1; + guint aborted : 1; }; static gchar * @@ -2324,7 +2416,8 @@ struct search_child_struct { }; static void -search_child_cb (GtkWidget *widget, gpointer data) +search_child_cb (GtkWidget *widget, + gpointer data) { struct search_child_struct *search = (struct search_child_struct *) data; @@ -2332,7 +2425,8 @@ search_child_cb (GtkWidget *widget, gpointer data) } static gboolean -is_tree_widget_children (ETree *tree, gconstpointer widget) +is_tree_widget_children (ETree *tree, + gconstpointer widget) { struct search_child_struct search; @@ -2345,7 +2439,12 @@ is_tree_widget_children (ETree *tree, gconstpointer widget) } static gboolean -ml_tree_drag_motion (ETree *tree, GdkDragContext *context, gint x, gint y, guint time, MessageList *ml) +ml_tree_drag_motion (ETree *tree, + GdkDragContext *context, + gint x, + gint y, + guint time, + MessageList *ml) { GList *targets; GdkDragAction action, actions = 0; @@ -2399,13 +2498,16 @@ ml_tree_drag_motion (ETree *tree, GdkDragContext *context, gint x, gint y, guint } static void -on_model_row_changed (ETableModel *model, gint row, MessageList *ml) +on_model_row_changed (ETableModel *model, + gint row, + MessageList *ml) { ml->priv->any_row_changed = TRUE; } static gboolean -ml_tree_sorting_changed (ETreeTableAdapter *adapter, MessageList *ml) +ml_tree_sorting_changed (ETreeTableAdapter *adapter, + MessageList *ml) { g_return_val_if_fail (ml != NULL, FALSE); @@ -2479,9 +2581,9 @@ message_list_init (MessageList *message_list) gtk_selection_add_target (p->invisible, GDK_SELECTION_CLIPBOARD, matom, 0); gtk_selection_add_target (p->invisible, GDK_SELECTION_CLIPBOARD, GDK_SELECTION_TYPE_STRING, 2); - g_signal_connect(p->invisible, "selection_get", G_CALLBACK(ml_selection_get), message_list); - g_signal_connect(p->invisible, "selection_clear_event", G_CALLBACK(ml_selection_clear_event), message_list); - g_signal_connect(p->invisible, "selection_received", G_CALLBACK(ml_selection_received), message_list); + g_signal_connect (p->invisible, "selection_get", G_CALLBACK(ml_selection_get), message_list); + g_signal_connect (p->invisible, "selection_clear_event", G_CALLBACK(ml_selection_clear_event), message_list); + g_signal_connect (p->invisible, "selection_received", G_CALLBACK(ml_selection_received), message_list); /* FIXME This is currently unused. */ target_list = gtk_target_list_new (NULL, 0); @@ -2729,7 +2831,9 @@ message_list_selectable_init (ESelectableInterface *interface) } static gboolean -read_boolean_with_default (GConfClient *gconf, const gchar *key, gboolean def_value) +read_boolean_with_default (GConfClient *gconf, + const gchar *key, + gboolean def_value) { GConfValue *value; gboolean res; @@ -2828,7 +2932,7 @@ message_list_construct (MessageList *message_list) e_tree_drag_source_set ( E_TREE (message_list), GDK_BUTTON1_MASK, ml_drag_types, G_N_ELEMENTS (ml_drag_types), - GDK_ACTION_MOVE|GDK_ACTION_COPY); + GDK_ACTION_MOVE | GDK_ACTION_COPY); g_signal_connect ( message_list, "tree_drag_data_get", @@ -2837,7 +2941,7 @@ message_list_construct (MessageList *message_list) e_tree_drag_dest_set ( E_TREE (message_list), GTK_DEST_DEFAULT_ALL, ml_drop_types, G_N_ELEMENTS (ml_drop_types), - GDK_ACTION_MOVE|GDK_ACTION_COPY); + GDK_ACTION_MOVE | GDK_ACTION_COPY); g_signal_connect ( message_list, "tree_drag_data_received", @@ -2920,7 +3024,9 @@ message_list_get_backend (MessageList *message_list) } static void -clear_info (gchar *key, ETreePath *node, MessageList *ml) +clear_info (gchar *key, + ETreePath *node, + MessageList *ml) { CamelMessageInfo *info; @@ -2930,13 +3036,14 @@ clear_info (gchar *key, ETreePath *node, MessageList *ml) } static void -clear_tree (MessageList *ml, gboolean tfree) +clear_tree (MessageList *ml, + gboolean tfree) { ETreeModel *etm = ml->model; #ifdef TIMEIT struct timeval start, end; - unsigned long diff; + gulong diff; printf("Clearing tree\n"); gettimeofday (&start, NULL); @@ -2963,8 +3070,8 @@ clear_tree (MessageList *ml, gboolean tfree) e_tree_model_rebuilt (E_TREE_MODEL (etm)); #ifdef TIMEIT gettimeofday (&end, NULL); - diff = end.tv_sec * 1000 + end.tv_usec/1000; - diff -= start.tv_sec * 1000 + start.tv_usec/1000; + diff = end.tv_sec * 1000 + end.tv_usec / 1000; + diff -= start.tv_sec * 1000 + start.tv_usec / 1000; printf("Clearing tree took %ld.%03ld seconds\n", diff / 1000, diff % 1000); #endif @@ -2987,7 +3094,8 @@ folder_store_supports_vjunk_folder (CamelFolder *folder) /* Check if the given node is selectable in the current message list, * which depends on the type of the folder (normal, junk, trash). */ static gboolean -is_node_selectable (MessageList *ml, CamelMessageInfo *info) +is_node_selectable (MessageList *ml, + CamelMessageInfo *info) { gboolean is_junk_folder; gboolean is_trash_folder; @@ -3073,7 +3181,7 @@ find_next_selectable (MessageList *ml) } /* We didn't find any undeleted entries _below_ the currently selected one - * so let's try to find one _above_ */ + * * so let's try to find one _above_ */ vrow = vrow_orig - 1; while (vrow >= 0) { @@ -3164,7 +3272,9 @@ static void build_subtree (MessageList *ml, ETreePath parent, CamelFolderThreadN static void build_subtree_diff (MessageList *ml, ETreePath parent, ETreePath path, CamelFolderThreadNode *c, gint *row); static void -build_tree (MessageList *ml, CamelFolderThread *thread, CamelFolderChangeInfo *changes) +build_tree (MessageList *ml, + CamelFolderThread *thread, + CamelFolderChangeInfo *changes) { gint row = 0; ETreeModel *etm = ml->model; @@ -3177,7 +3287,7 @@ build_tree (MessageList *ml, CamelFolderThread *thread, CamelFolderChangeInfo *c #endif #ifdef TIMEIT struct timeval start, end; - unsigned long diff; + gulong diff; printf("Building tree\n"); gettimeofday (&start, NULL); @@ -3185,8 +3295,8 @@ build_tree (MessageList *ml, CamelFolderThread *thread, CamelFolderChangeInfo *c #ifdef TIMEIT gettimeofday (&end, NULL); - diff = end.tv_sec * 1000 + end.tv_usec/1000; - diff -= start.tv_sec * 1000 + start.tv_usec/1000; + diff = end.tv_sec * 1000 + end.tv_usec / 1000; + diff -= start.tv_sec * 1000 + start.tv_usec / 1000; printf("Loading tree state took %ld.%03ld seconds\n", diff / 1000, diff % 1000); #endif @@ -3238,18 +3348,21 @@ build_tree (MessageList *ml, CamelFolderThread *thread, CamelFolderChangeInfo *c #ifdef TIMEIT gettimeofday (&end, NULL); - diff = end.tv_sec * 1000 + end.tv_usec/1000; - diff -= start.tv_sec * 1000 + start.tv_usec/1000; + diff = end.tv_sec * 1000 + end.tv_usec / 1000; + diff -= start.tv_sec * 1000 + start.tv_usec / 1000; printf("Building tree took %ld.%03ld seconds\n", diff / 1000, diff % 1000); #endif } /* this is about 20% faster than build_subtree_diff, - entirely because e_tree_model_node_insert (xx, -1 xx) - is faster than inserting to the right row :( */ + * entirely because e_tree_model_node_insert (xx, -1 xx) + * is faster than inserting to the right row :( */ /* Otherwise, this code would probably go as it does the same thing essentially */ static void -build_subtree (MessageList *ml, ETreePath parent, CamelFolderThreadNode *c, gint *row) +build_subtree (MessageList *ml, + ETreePath parent, + CamelFolderThreadNode *c, + gint *row) { ETreePath node; @@ -3272,15 +3385,17 @@ build_subtree (MessageList *ml, ETreePath parent, CamelFolderThreadNode *c, gint } /* compares a thread tree node with the etable tree node to see if they point to - the same object */ + * the same object */ static gint -node_equal (ETreeModel *etm, ETreePath ap, CamelFolderThreadNode *bp) +node_equal (ETreeModel *etm, + ETreePath ap, + CamelFolderThreadNode *bp) { CamelMessageInfo *info; info = e_tree_memory_node_get_data (E_TREE_MEMORY (etm), ap); - if (bp->message && strcmp (camel_message_info_uid (info), camel_message_info_uid (bp->message))==0) + if (bp->message && strcmp (camel_message_info_uid (info), camel_message_info_uid (bp->message)) == 0) return 1; return 0; @@ -3289,7 +3404,9 @@ node_equal (ETreeModel *etm, ETreePath ap, CamelFolderThreadNode *bp) #ifndef BROKEN_ETREE /* debug function - compare the two trees to see if they are the same */ static gint -tree_equal (ETreeModel *etm, ETreePath ap, CamelFolderThreadNode *bp) +tree_equal (ETreeModel *etm, + ETreePath ap, + CamelFolderThreadNode *bp) { CamelMessageInfo *info; @@ -3329,7 +3446,12 @@ tree_equal (ETreeModel *etm, ETreePath ap, CamelFolderThreadNode *bp) /* adds a single node, retains save state, and handles adding children if required */ static void -add_node_diff (MessageList *ml, ETreePath parent, ETreePath path, CamelFolderThreadNode *c, gint *row, gint myrow) +add_node_diff (MessageList *ml, + ETreePath parent, + ETreePath path, + CamelFolderThreadNode *c, + gint *row, + gint myrow) { CamelMessageInfo *info; ETreePath node; @@ -3351,7 +3473,9 @@ add_node_diff (MessageList *ml, ETreePath parent, ETreePath path, CamelFolderThr /* removes node, children recursively and all associated data */ static void -remove_node_diff (MessageList *ml, ETreePath node, gint depth) +remove_node_diff (MessageList *ml, + ETreePath node, + gint depth) { ETreeModel *etm = ml->model; ETreePath cp, cn; @@ -3363,7 +3487,7 @@ remove_node_diff (MessageList *ml, ETreePath node, gint depth) cp = e_tree_model_node_get_first_child (etm, node); while (cp) { cn = e_tree_model_node_get_next (etm, cp); - remove_node_diff (ml, cp, depth+1); + remove_node_diff (ml, cp, depth + 1); cp = cn; } @@ -3379,9 +3503,13 @@ remove_node_diff (MessageList *ml, ETreePath node, gint depth) } /* applies a new tree structure to an existing tree, but only by changing things - that have changed */ + * that have changed */ static void -build_subtree_diff (MessageList *ml, ETreePath parent, ETreePath path, CamelFolderThreadNode *c, gint *row) +build_subtree_diff (MessageList *ml, + ETreePath parent, + ETreePath path, + CamelFolderThreadNode *c, + gint *row) { ETreeModel *etm = ml->model; ETreePath ap, *ai, *at, *tmp; @@ -3435,15 +3563,15 @@ build_subtree_diff (MessageList *ml, ETreePath parent, ETreePath path, CamelFold /* we have to scan each side for a match */ bi = bp->next; ai = e_tree_model_node_get_next (etm, ap); - for (i=1;bi!=NULL;i++,bi=bi->next) { + for (i = 1; bi != NULL; i++,bi = bi->next) { if (node_equal (etm, ap, bi)) break; } - for (j=1;ai!=NULL;j++,ai=e_tree_model_node_get_next (etm, ai)) { + for (j = 1; ai != NULL; j++,ai = e_tree_model_node_get_next (etm, ai)) { if (node_equal (etm, ai, bp)) break; } - if (imodel; gchar *saveuid = NULL; @@ -3504,7 +3634,7 @@ build_flat (MessageList *ml, GPtrArray *summary, CamelFolderChangeInfo *changes) #endif #ifdef TIMEIT struct timeval start, end; - unsigned long diff; + gulong diff; printf("Building flat\n"); gettimeofday (&start, NULL); @@ -3549,15 +3679,16 @@ build_flat (MessageList *ml, GPtrArray *summary, CamelFolderChangeInfo *changes) #ifdef TIMEIT gettimeofday (&end, NULL); - diff = end.tv_sec * 1000 + end.tv_usec/1000; - diff -= start.tv_sec * 1000 + start.tv_usec/1000; + diff = end.tv_sec * 1000 + end.tv_usec / 1000; + diff -= start.tv_sec * 1000 + start.tv_usec / 1000; printf("Building flat took %ld.%03ld seconds\n", diff / 1000, diff % 1000); #endif } static void -message_list_change_first_visible_parent (MessageList *ml, ETreePath node) +message_list_change_first_visible_parent (MessageList *ml, + ETreePath node) { ETreePath first_visible = NULL; @@ -3575,7 +3706,8 @@ message_list_change_first_visible_parent (MessageList *ml, ETreePath node) #ifndef BROKEN_ETREE static void -build_flat_diff (MessageList *ml, CamelFolderChangeInfo *changes) +build_flat_diff (MessageList *ml, + CamelFolderChangeInfo *changes) { gint i; ETreePath node; @@ -3583,7 +3715,7 @@ build_flat_diff (MessageList *ml, CamelFolderChangeInfo *changes) #ifdef TIMEIT struct timeval start, end; - unsigned long diff; + gulong diff; gettimeofday (&start, NULL); #endif @@ -3592,7 +3724,7 @@ build_flat_diff (MessageList *ml, CamelFolderChangeInfo *changes) /* remove individual nodes? */ d(printf("Removing messages from view:\n")); - for (i=0;iuid_removed->len;i++) { + for (i = 0; i < changes->uid_removed->len; i++) { node = g_hash_table_lookup (ml->uid_nodemap, changes->uid_removed->pdata[i]); if (node) { info = e_tree_memory_node_get_data (E_TREE_MEMORY (ml->model), node); @@ -3603,7 +3735,7 @@ build_flat_diff (MessageList *ml, CamelFolderChangeInfo *changes) /* add new nodes? - just append to the end */ d(printf("Adding messages to view:\n")); - for (i=0;iuid_added->len;i++) { + for (i = 0; i < changes->uid_added->len; i++) { info = camel_folder_get_message_info (ml->folder, changes->uid_added->pdata[i]); if (info) { d(printf(" %s\n", (gchar *)changes->uid_added->pdata[i])); @@ -3625,8 +3757,8 @@ build_flat_diff (MessageList *ml, CamelFolderChangeInfo *changes) #ifdef TIMEIT gettimeofday (&end, NULL); - diff = end.tv_sec * 1000 + end.tv_usec/1000; - diff -= start.tv_sec * 1000 + start.tv_usec/1000; + diff = end.tv_sec * 1000 + end.tv_usec / 1000; + diff -= start.tv_sec * 1000 + start.tv_usec / 1000; printf("Inserting changes took %ld.%03ld seconds\n", diff / 1000, diff % 1000); #endif @@ -3898,7 +4030,10 @@ on_cursor_activated_idle (gpointer data) } static void -on_cursor_activated_cmd (ETree *tree, gint row, ETreePath path, gpointer user_data) +on_cursor_activated_cmd (ETree *tree, + gint row, + ETreePath path, + gpointer user_data) { MessageList *message_list = MESSAGE_LIST (user_data); const gchar *new_uid; @@ -3908,11 +4043,12 @@ on_cursor_activated_cmd (ETree *tree, gint row, ETreePath path, gpointer user_da else new_uid = get_message_uid (message_list, path); - /* Do not check the cursor_uid and the new_uid values, because the selected item - (set in on_selection_changed_cmd) can be different from the one with a cursor - (when selecting with Ctrl, for example). This has a little side-effect, when - keeping list it that state, then changing folders forth and back will select - and move cursor to that selected item. Does anybody consider it as a bug? */ + /* Do not check the cursor_uid and the new_uid values, because the + * selected item (set in on_selection_changed_cmd) can be different + * from the one with a cursor (when selecting with Ctrl, for example). + * This has a little side-effect, when keeping list it that state, + * then changing folders forth and back will select and move cursor + * to that selected item. Does anybody consider it as a bug? */ if ((message_list->cursor_uid == NULL && new_uid == NULL) || (message_list->last_sel_single && message_list->cursor_uid != NULL && new_uid != NULL)) return; @@ -3928,14 +4064,15 @@ on_cursor_activated_cmd (ETree *tree, gint row, ETreePath path, gpointer user_da } static void -on_selection_changed_cmd (ETree *tree, MessageList *ml) +on_selection_changed_cmd (ETree *tree, + MessageList *ml) { GPtrArray *uids; const gchar *newuid; ETreePath cursor; /* not sure if we could just ignore this for the cursor, i think sometimes you - only get a selection changed when you should also get a cursor activated? */ + * only get a selection changed when you should also get a cursor activated? */ uids = message_list_get_selected (ml); if (uids->len == 1) newuid = g_ptr_array_index (uids, 0); @@ -3945,8 +4082,8 @@ on_selection_changed_cmd (ETree *tree, MessageList *ml) newuid = NULL; /* If the selection isn't empty, then we ignore the no-uid check, since this event - is also used for other updating. If it is empty, it might just be a setup event - from etree which we do need to ignore */ + * is also used for other updating. If it is empty, it might just be a setup event + * from etree which we do need to ignore */ if ((newuid == NULL && ml->cursor_uid == NULL && uids->len == 0) || (ml->last_sel_single && uids->len == 1 && newuid != NULL && ml->cursor_uid != NULL && !strcmp (ml->cursor_uid, newuid))) { /* noop */ @@ -3963,7 +4100,12 @@ on_selection_changed_cmd (ETree *tree, MessageList *ml) } static gint -on_click (ETree *tree, gint row, ETreePath path, gint col, GdkEvent *event, MessageList *list) +on_click (ETree *tree, + gint row, + ETreePath path, + gint col, + GdkEvent *event, + MessageList *list) { CamelMessageInfo *info; gboolean folder_is_trash; @@ -4053,7 +4195,8 @@ struct _ml_selected_data { }; static void -ml_getselected_cb (ETreePath path, gpointer user_data) +ml_getselected_cb (ETreePath path, + gpointer user_data) { struct _ml_selected_data *data = user_data; const gchar *uid; @@ -4099,7 +4242,8 @@ message_list_get_selected (MessageList *ml) } void -message_list_set_selected (MessageList *ml, GPtrArray *uids) +message_list_set_selected (MessageList *ml, + GPtrArray *uids) { gint i; ETreeSelectionModel *etsm; @@ -4107,7 +4251,7 @@ message_list_set_selected (MessageList *ml, GPtrArray *uids) GPtrArray *paths = g_ptr_array_new (); etsm = (ETreeSelectionModel *) e_tree_get_selection_model (E_TREE (ml)); - for (i=0; ilen; i++) { + for (i = 0; i < uids->len; i++) { node = g_hash_table_lookup (ml->uid_nodemap, uids->pdata[i]); if (node) g_ptr_array_add (paths, node); @@ -4123,7 +4267,8 @@ struct ml_count_data { }; static void -ml_getcount_cb (ETreePath path, gpointer user_data) +ml_getcount_cb (ETreePath path, + gpointer user_data) { struct ml_count_data *data = user_data; @@ -4187,7 +4332,8 @@ message_list_set_threaded_collapse_all (MessageList *ml) } void -message_list_set_threaded (MessageList *ml, gboolean threaded) +message_list_set_threaded (MessageList *ml, + gboolean threaded) { if (ml->threaded != threaded) { ml->threaded = threaded; @@ -4198,7 +4344,8 @@ message_list_set_threaded (MessageList *ml, gboolean threaded) } void -message_list_set_hidedeleted (MessageList *ml, gboolean hidedeleted) +message_list_set_hidedeleted (MessageList *ml, + gboolean hidedeleted) { if (ml->hidedeleted != hidedeleted) { ml->hidedeleted = hidedeleted; @@ -4209,7 +4356,8 @@ message_list_set_hidedeleted (MessageList *ml, gboolean hidedeleted) } void -message_list_set_search (MessageList *ml, const gchar *search) +message_list_set_search (MessageList *ml, + const gchar *search) { #if HAVE_CLUTTER if (ml->priv->timeline == NULL) { @@ -4290,7 +4438,8 @@ message_list_set_search (MessageList *ml, const gchar *search) /* will ensure that the message with UID uid will be in the message list after the next rebuild */ void -message_list_ensure_message (MessageList *ml, const gchar *uid) +message_list_ensure_message (MessageList *ml, + const gchar *uid) { g_return_if_fail (ml != NULL); @@ -4317,7 +4466,9 @@ struct sort_array_data { }; static gint -cmp_array_uids (gconstpointer a, gconstpointer b, gpointer user_data) +cmp_array_uids (gconstpointer a, + gconstpointer b, + gpointer user_data) { const gchar *uid1 = *(const gchar **) a; const gchar *uid2 = *(const gchar **) b; @@ -4373,11 +4524,13 @@ cmp_array_uids (gconstpointer a, gconstpointer b, gpointer user_data) } static void -free_message_info_data (gpointer uid, struct sort_message_info_data *data, struct sort_array_data *sort_data) +free_message_info_data (gpointer uid, + struct sort_message_info_data *data, + struct sort_array_data *sort_data) { if (data->values) { /* values in this array are not newly allocated, even ml_tree_value_at_ex - returns gpointer, not a gconstpointer */ + * returns gpointer, not a gconstpointer */ g_ptr_array_free (data->values, TRUE); } @@ -4386,7 +4539,8 @@ free_message_info_data (gpointer uid, struct sort_message_info_data *data, struc } static void -ml_sort_uids_by_tree (MessageList *ml, GPtrArray *uids) +ml_sort_uids_by_tree (MessageList *ml, + GPtrArray *uids) { ETreeTableAdapter *adapter; ETableSortInfo *sort_info; @@ -4492,13 +4646,12 @@ struct _regen_list_msg { }; /* - maintain copy of summary - - any new messages added - any removed removed, etc. - - use vfolder to implement searches ??? - + * maintain copy of summary + * + * any new messages added + * any removed removed, etc. + * + * use vfolder to implement searches ??? */ static gchar * @@ -4566,8 +4719,8 @@ regen_list_exec (struct _regen_list_msg *m, searchuids = uids = camel_folder_search_by_expression ( m->folder, expr, &local_error); /* If m->changes is not NULL, then it means we are called from folder_changed event, - thus we will keep the selected message to be sure it doesn't disappear because - it no longer belong to our search filter. */ + * thus we will keep the selected message to be sure it doesn't disappear because + * it no longer belong to our search filter. */ if (uids && ((m->changes && m->ml->cursor_uid) || m->ml->ensure_uid)) { const gchar *looking_for = m->ml->cursor_uid; /* ensure_uid has precedence of cursor_uid */ @@ -4588,10 +4741,10 @@ regen_list_exec (struct _regen_list_msg *m, gboolean is_junk = store_has_vjunk && (camel_message_info_flags (looking_info) & CAMEL_MESSAGE_JUNK) != 0; /* I would really like to check for CAMEL_MESSAGE_FOLDER_FLAGGED on a message, - so I would know whether it was changed locally, and then just check the changes - struct whether change came from the server, but with periodical save it doesn't - matter. So here just check whether the file was deleted and we show it based - on the flag whether we can view deleted messages or not. */ + * so I would know whether it was changed locally, and then just check the changes + * struct whether change came from the server, but with periodical save it doesn't + * matter. So here just check whether the file was deleted and we show it based + * on the flag whether we can view deleted messages or not. */ if ((!is_deleted || (is_deleted && !m->hidedel)) && (!is_junk || (is_junk && !m->hidejunk))) g_ptr_array_add (uids, (gpointer) camel_pstring_strdup (looking_for)); @@ -4860,7 +5013,11 @@ mail_regen_cancel (MessageList *ml) } static void -mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, CamelFolderChangeInfo *changes, gboolean scroll_to_cursor) +mail_regen_list (MessageList *ml, + const gchar *search, + const gchar *hideexpr, + CamelFolderChangeInfo *changes, + gboolean scroll_to_cursor) { struct _regen_list_msg *m; GConfClient *client; @@ -4931,7 +5088,7 @@ mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, Ca } } else if (ml->priv->any_row_changed && m->dotree && !ml->just_set_folder && (!ml->search || g_str_equal (ml->search, " "))) { /* there has been some change on any row, if it was an expand state change, - then let it save; if not, then nothing happen. */ + * then let it save; if not, then nothing happen. */ message_list_save_state (ml); } else if (m->dotree && !ml->just_set_folder) { /* remember actual expand state and restore it after regen */ -- cgit v1.2.3 From 4035b6fe61fcc5e4e2f1949f658e9cf7f148d6d9 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 5 Sep 2011 19:06:47 +0200 Subject: Bug #655568 - Cursor lost after Collapse all threads called --- mail/message-list.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 1c634b91b8..d98f860f8c 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -3330,13 +3330,28 @@ build_tree (MessageList *ml, tree_equal (ml->model, top, thread->tree); } #endif + if (!saveuid && ml->cursor_uid && g_hash_table_lookup (ml->uid_nodemap, ml->cursor_uid)) { + /* this makes sure a visible node is selected, like when + collapsing all nodes and a children had been selected + */ + saveuid = g_strdup (ml->cursor_uid); + } + if (saveuid) { - ETreePath *node = g_hash_table_lookup (ml->uid_nodemap, saveuid); + ETreePath node = g_hash_table_lookup (ml->uid_nodemap, saveuid); if (node == NULL) { g_free (ml->cursor_uid); ml->cursor_uid = NULL; g_signal_emit (ml, message_list_signals[MESSAGE_SELECTED], 0, NULL); } else { + ETree *tree = E_TREE (ml); + ETreePath parent = node; + + while (parent = e_tree_model_node_get_parent (etm, parent), parent) { + if (!e_tree_node_is_expanded (tree, parent)) + node = parent; + } + e_tree_set_cursor (E_TREE (ml), node); } g_free (saveuid); -- cgit v1.2.3 From e0548d25707ad8c4713e2e74c622a92bf4988545 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 26 Sep 2011 11:45:59 +0200 Subject: Bug #351025 - Make the order of the mail accounts configurable --- mail/message-list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index d98f860f8c..cd44b9506a 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -4191,7 +4191,7 @@ on_click (ETree *tree, if (col == COL_MESSAGE_STATUS && (flags & CAMEL_MESSAGE_SEEN)) { EMFolderTreeModel *model; - model = em_folder_tree_model_get_default (); + model = em_folder_tree_model_get_default (list->priv->backend); em_folder_tree_model_user_marked_unread ( model, list->folder, 1); } -- cgit v1.2.3 From f615000f6c1f549db7ea29ff8a3a011b1bd850cc Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 26 Sep 2011 11:45:11 -0400 Subject: EMFolderTreeModel: Don't use parameters in "get_default" functions. Drop EMFolderTreeModel's "session" property now that it has a "backend" property and call em_folder_tree_model_set_backend() where we used to call em_folder_tree_model_set_session(). The session can still be obtained through e_mail_backend_get_session(). --- mail/message-list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index cd44b9506a..d98f860f8c 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -4191,7 +4191,7 @@ on_click (ETree *tree, if (col == COL_MESSAGE_STATUS && (flags & CAMEL_MESSAGE_SEEN)) { EMFolderTreeModel *model; - model = em_folder_tree_model_get_default (list->priv->backend); + model = em_folder_tree_model_get_default (); em_folder_tree_model_user_marked_unread ( model, list->folder, 1); } -- cgit v1.2.3 From e2b6ff7a6c1e1580c26ee0719b349151e8dad6fd Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 27 Sep 2011 01:13:42 -0400 Subject: Miscellaneous cleanups from the account-mgmt branch. Reducing diff noise so I can see important changes easier when comparing branches. A few API changes, but nothing that affects functionality. --- mail/message-list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index d98f860f8c..602bdfa4dd 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -3332,7 +3332,7 @@ build_tree (MessageList *ml, #endif if (!saveuid && ml->cursor_uid && g_hash_table_lookup (ml->uid_nodemap, ml->cursor_uid)) { /* this makes sure a visible node is selected, like when - collapsing all nodes and a children had been selected + * collapsing all nodes and a children had been selected */ saveuid = g_strdup (ml->cursor_uid); } -- cgit v1.2.3 From 4c56856e05c6ab1468fe8ace4b73ac31b333990b Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 30 Sep 2011 15:39:57 +0200 Subject: Fix few 'may be used uninitialized' compiler warnings --- mail/message-list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index 602bdfa4dd..1e903a3f48 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -4125,7 +4125,7 @@ on_click (ETree *tree, CamelMessageInfo *info; gboolean folder_is_trash; const gchar *uid; - gint flag; + gint flag = 0; guint32 flags; if (col == COL_MESSAGE_STATUS) -- cgit v1.2.3