On Sat, 2005-04-16 at 02:58 -0400, Lee Revell wrote:
> I have found the bug that has been causing severe performance problems
> with vfolders, "Unread Mail" in particular.
> 

This patch fixes the problem by only searching the message list if the
user has typed something in the search bar.  I'm not sure it's the right
fix, but it drastically improves performance for me.

Index: evolution/mail/em-folder-browser.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-folder-browser.c,v
retrieving revision 1.59
diff -u -r1.59 em-folder-browser.c
--- evolution/mail/em-folder-browser.c  28 Feb 2005 04:31:50 -0000      1.59
+++ evolution/mail/em-folder-browser.c  17 Apr 2005 05:26:31 -0000
@@ -435,13 +435,19 @@
 emfb_search_search_activated(ESearchBar *esb, EMFolderBrowser *emfb)
 {
        EMFolderView *emfv = (EMFolderView *) emfb;
-       char *search_word, *search_state;
+       char *search_word, *search_state, *text;
        
        if (emfv->list == NULL || emfv->folder == NULL)
                return;
        
        g_object_get (esb, "query", &search_word, NULL);
-       message_list_set_search(emfb->view.list, search_word);
+       g_object_get (esb, "text", &text, NULL);
+       printf ("emfb_search_search_activated: search is %s\n", search_word);
+       printf ("emfb_search_search_activated: text is %s\n", text);
+       if (text == NULL || text[0] == '\0')
+               message_list_set_search(emfb->view.list, NULL);
+       else
+               message_list_set_search(emfb->view.list, search_word);
        g_free (search_word);
        
        g_object_get (esb, "state", &search_state, NULL);
@@ -937,7 +943,7 @@
           before the folder is open and need to override the
           defaults */
        if (folder) {
-               char *sstate;
+               char *sstate, *text;
                int state;
                GConfClient *gconf = mail_config_get_gconf_client();
 
@@ -974,7 +980,13 @@
                
                /* set the query manually, so we dont pop up advanced or saved 
search stuff */
                g_object_get(emfb->search, "query", &sstate, NULL);
-               message_list_set_search(emfb->view.list, sstate);
+               g_object_get (emfb->search, "text", &text, NULL);
+               printf ("emfb_set_folder: search is %s\n", sstate);
+               printf ("emfb_set_folder: text is %s\n", text);
+               if (text == NULL || text[0] == '\0')
+                       message_list_set_search(emfb->view.list, NULL);
+               else
+                       message_list_set_search(emfb->view.list, sstate);
                g_free(sstate);
 
                if ((sstate = camel_object_meta_get (folder, 
"evolution:selected_uid"))) {



_______________________________________________
evolution-hackers maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/evolution-hackers

Reply via email to