Fix type
[claws.git] / src / gtk / quicksearch.c
index 92bb496008fddb2b0bf22368f3a53979147ae94b..eadaef152b7073046fb2ae2f8cb6e1da0b1812c9 100644 (file)
@@ -77,7 +77,7 @@ struct _QuickSearch
        gboolean                         running;
        gboolean                         has_focus;
        gboolean                         in_typing;
-       guint                            press_timeout_id;
+       gint                             press_timeout_id;
 
        GList                           *normal_search_strings;
        GList                           *extended_search_strings;
@@ -167,10 +167,19 @@ static void quicksearch_invoke_execute(QuickSearch *quicksearch, gboolean run_on
 gboolean quicksearch_run_on_folder(QuickSearch* quicksearch, FolderItem *folderItem, MsgInfoList **result)
 {
        if (quicksearch_has_sat_predicate(quicksearch)) {
+               gboolean was_running = quicksearch_is_running(quicksearch);
                gboolean searchres;
+
+               if (!was_running)
+                       quicksearch_set_running(quicksearch, TRUE);
+
                main_window_cursor_wait(mainwindow_get_mainwindow());
                searchres = advsearch_search_msgs_in_folders(quicksearch->asearch, result, folderItem, FALSE);
                main_window_cursor_normal(mainwindow_get_mainwindow());
+
+               if (!was_running)
+                       quicksearch_set_running(quicksearch, FALSE);
+
                if (quicksearch->want_reexec) {
                        advsearch_set(quicksearch->asearch, quicksearch->request.type, "");
                }
@@ -505,7 +514,7 @@ static DescriptionWindow search_descr = {
 
 static void search_description_cb(GtkWidget *widget)
 {
-       search_descr.parent = mainwindow_get_mainwindow()->window;
+       search_descr.parent = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "description_window");
        description_window_create(&search_descr);
 };
 
@@ -1066,25 +1075,23 @@ void quicksearch_set_search_strings(QuickSearch *quicksearch)
                                        g_list_append(
                                                quicksearch->normal_search_strings,
                                                g_strdup(strings->data));
-                               g_free(newstr);
-                               continue;
-                       }
-                       
-                       matcher_list = matcher_parser_get_cond(newstr, FALSE);
-                       g_free(newstr);
+                       } else {
+                               matcher_list = matcher_parser_get_cond(newstr, FALSE);
                        
-                       if (matcher_list) {
-                               quicksearch->extended_search_strings =
-                                       g_list_prepend(
-                                               quicksearch->extended_search_strings,
-                                               g_strdup(strings->data));
-                               matcherlist_free(matcher_list);
-                       } else
-                               quicksearch->normal_search_strings =
-                                       g_list_prepend(
-                                               quicksearch->normal_search_strings,
-                                               g_strdup(strings->data));
+                               if (matcher_list) {
+                                       quicksearch->extended_search_strings =
+                                               g_list_prepend(
+                                                       quicksearch->extended_search_strings,
+                                                       g_strdup(strings->data));
+                                       matcherlist_free(matcher_list);
+                               } else
+                                       quicksearch->normal_search_strings =
+                                               g_list_prepend(
+                                                       quicksearch->normal_search_strings,
+                                                       g_strdup(strings->data));
+                       }
                }
+               g_free(newstr);
        
        } while ((strings = g_list_next(strings)) != NULL);