evolution r36562 - trunk/mail



Author: psankar
Date: Sun Oct  5 12:42:44 2008
New Revision: 36562
URL: http://svn.gnome.org/viewvc/evolution?rev=36562&view=rev

Log:
2008-10-05  Sankar P  <psankar novell com>

	** Fix for bug #554349

	* mail/em-folder-browser.c:
	Expand threads and select messages,
	if user has given select-all.

Modified:
   trunk/mail/ChangeLog
   trunk/mail/em-folder-browser.c

Modified: trunk/mail/em-folder-browser.c
==============================================================================
--- trunk/mail/em-folder-browser.c	(original)
+++ trunk/mail/em-folder-browser.c	Sun Oct  5 12:42:44 2008
@@ -149,6 +149,8 @@
 static int emfb_list_key_press(ETree *tree, int row, ETreePath path, int col, GdkEvent *ev, EMFolderBrowser *emfb);
 static void emfb_list_message_selected (MessageList *ml, const char *uid, EMFolderBrowser *emfb);
 
+static void emfb_expand_all_threads(BonoboUIComponent *uid, void *data, const char *path);
+
 static const EMFolderViewEnable emfb_enable_map[] = {
 	{ "EditInvertSelection", EM_POPUP_SELECT_FOLDER },
 	{ "EditSelectAll", EM_POPUP_SELECT_FOLDER },
@@ -1432,13 +1434,35 @@
 	message_list_invert_selection(emfv->list);
 }
 
+static gboolean
+emfb_select_all_daemon (MessageList *ml)
+{
+		message_list_select_all(ml);
+		gtk_widget_grab_focus ((GtkWidget *)ml);
+		return FALSE;
+}
+
 static void
 emfb_edit_select_all(BonoboUIComponent *uid, void *data, const char *path)
 {
-	EMFolderView *emfv = data;
+		EMFolderView *emfv = data;
 
-	message_list_select_all(emfv->list);
-	gtk_widget_grab_focus ((GtkWidget *)emfv->list);
+		if (emfv->list->threaded) {
+
+				emfb_expand_all_threads (uid, data, path);
+
+				/* The time out below is added so that the execution thread to 
+				   expand all conversations threads would've completed. 
+
+				   The timeout 505 is just to ensure that the value is a small delta
+				   more than the timeout value in expand_all_threads thread. */
+
+				g_timeout_add (505, (GSourceFunc) emfb_select_all_daemon, emfv->list);
+
+		} else {
+				/* If there is no threading, just select-all immediately */
+				emfb_select_all_daemon (emfv->list);
+		}
 }
 
 static void



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