Fix #753: Various cleanups based on gcc warnings
[geeqie.git] / src / search.c
index d4f084d..c929440 100644 (file)
@@ -322,6 +322,8 @@ static gint search_result_count(SearchData *sd, gint64 *bytes);
 static void search_window_close(SearchData *sd);
 
 static void search_notify_cb(FileData *fd, NotifyType type, gpointer data);
+static void search_start_cb(GtkWidget *widget, gpointer data);
+void mfd_list_free(GList *list);
 
 /*
  *-------------------------------------------------------------------
@@ -1042,20 +1044,6 @@ static void sr_menu_copy_path_unquoted_cb(GtkWidget *widget, gpointer data)
        file_util_copy_path_list_to_clipboard(search_result_selection_list(sd), FALSE);
 }
 
-static void sr_menu_remove_cb(GtkWidget *widget, gpointer data)
-{
-       SearchData *sd = data;
-
-       search_result_remove_selection(sd);
-}
-
-static void sr_menu_clear_cb(GtkWidget *widget, gpointer data)
-{
-       SearchData *sd = data;
-
-       search_result_clear(sd);
-}
-
 static void sr_menu_play_cb(GtkWidget *widget, gpointer data)
 {
        SearchData *sd = data;
@@ -1094,7 +1082,6 @@ static GtkWidget *search_result_menu(SearchData *sd, gboolean on_row, gboolean e
        GtkWidget *menu;
        GtkWidget *item;
        GList *editmenu_fd_list;
-       GtkWidget *submenu;
        gboolean video;
 
        menu = popup_menu_short_lived();
@@ -1443,6 +1430,9 @@ static gboolean search_window_keypress_cb(GtkWidget *widget, GdkEventKey *event,
                        case 'W': case 'w':
                                search_window_close(sd);
                                break;
+                       case GDK_KEY_Return: case GDK_KEY_KP_Enter:
+                               search_start_cb(NULL, sd);
+                               break;
                        default:
                                stop_signal = FALSE;
                                break;
@@ -2189,6 +2179,11 @@ static gboolean search_file_next(SearchData *sd)
                        {
                        search_class = FORMAT_CLASS_VIDEO;
                        }
+               else if (g_strcmp0(gtk_combo_box_text_get_active_text(
+                                               GTK_COMBO_BOX_TEXT(sd->class_type)), _("Document")) == 0)
+                       {
+                       search_class = FORMAT_CLASS_DOCUMENT;
+                       }
                else if (g_strcmp0(gtk_combo_box_text_get_active_text(
                                                GTK_COMBO_BOX_TEXT(sd->class_type)), _("Metadata")) == 0)
                        {
@@ -3069,7 +3064,7 @@ static void search_window_destroy_cb(GtkWidget *widget, gpointer data)
 
        search_result_update_idle_cancel(sd);
 
-       filelist_free(sd->search_buffer_list);
+       mfd_list_free(sd->search_buffer_list);
        sd->search_buffer_list = NULL;
 
        search_stop(sd);
@@ -3078,9 +3073,15 @@ static void search_window_destroy_cb(GtkWidget *widget, gpointer data)
        file_data_unref(sd->search_dir_fd);
 
        g_free(sd->search_name);
-       g_regex_unref(sd->search_name_regex);
+       if(sd->search_name_regex)
+               {
+               g_regex_unref(sd->search_name_regex);
+               }
        g_free(sd->search_comment);
-       g_regex_unref(sd->search_comment_regex);
+       if(sd->search_comment_regex)
+               {
+               g_regex_unref(sd->search_comment_regex);
+               }
        g_free(sd->search_similarity_path);
        string_list_free(sd->search_keyword_list);
 
@@ -3141,6 +3142,7 @@ void search_new(FileData *dir_fd, FileData *example_file)
                }
 
        sd->window = window_new(GTK_WINDOW_TOPLEVEL, "search", NULL, NULL, _("Image search"));
+       DEBUG_NAME(sd->window);
 
        gtk_window_set_resizable(GTK_WINDOW(sd->window), TRUE);
 
@@ -3363,6 +3365,7 @@ void search_new(FileData *dir_fd, FileData *example_file)
        gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(sd->class_type), _("Image"));
        gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(sd->class_type), _("Raw Image"));
        gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(sd->class_type), _("Video"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(sd->class_type), _("Document"));
        gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(sd->class_type), _("Metadata"));
        gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(sd->class_type), _("Unknown"));
        gtk_box_pack_start(GTK_BOX(hbox), sd->class_type, FALSE, FALSE, 0);
@@ -3467,6 +3470,7 @@ void search_new(FileData *dir_fd, FileData *example_file)
                                              G_CALLBACK(search_thumb_toggle_cb), sd);
 
        frame = gtk_frame_new(NULL);
+       DEBUG_NAME(frame);
        gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
        gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, PREF_PAD_SPACE);
        gtk_widget_show(frame);
@@ -3566,4 +3570,20 @@ static void search_notify_cb(FileData *fd, NotifyType type, gpointer data)
                        break;
                }
 }
+
+void mfd_list_free(GList *list)
+{
+       GList *work;
+
+       work = list;
+       while (work)
+               {
+               MatchFileData *mfd = work->data;
+               file_data_unref((FileData *)mfd->fd);
+               work = work->next;
+               }
+
+       g_list_free(list);
+}
+
 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */