if (!ew) return;
advanced_exif_window_get_geometry(ew);
+ file_data_unref(ew->fd);
gtk_widget_destroy(ew->window);
+
+ g_free(ew);
}
-static void advanced_exif_delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
+static gboolean advanced_exif_delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
{
ExifWin *ew = data;
- advanced_exif_window_get_geometry(ew);
+ if (!ew) return FALSE;
+ advanced_exif_window_get_geometry(ew);
file_data_unref(ew->fd);
+
g_free(ew);
+
+ return FALSE;
}
static gint advanced_exif_sort_cb(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data)
g_list_free(cols);
g_free(value);
+
+ gtk_tree_view_set_search_column(GTK_TREE_VIEW(ew->listview), gtk_tree_view_column_get_sort_column_id(column));
}
return TRUE;
return stop_signal;
} // static gboolean advanced_exif_...
+static gboolean search_function_cb(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer data)
+{
+ gboolean ret = TRUE;
+ gchar *field_contents;
+ gchar *field_contents_nocase;
+ gchar *key_nocase;
+
+ gtk_tree_model_get(model, iter, column, &field_contents, -1);
+
+ field_contents_nocase = g_utf8_casefold(field_contents, -1);
+ key_nocase = g_utf8_casefold(key, -1);
+
+ if (g_strstr_len(field_contents_nocase, -1, key_nocase))
+ {
+ ret = FALSE;
+ }
+
+ g_free(field_contents);
+ g_free(field_contents_nocase);
+ g_free(key_nocase);
+
+ return ret;
+}
+
GtkWidget *advanced_exif_new(LayoutWindow *lw)
{
ExifWin *ew;
advanced_exif_add_column(ew->listview, _("Format"), EXIF_ADVCOL_FORMAT, FALSE);
advanced_exif_add_column(ew->listview, _("Elements"), EXIF_ADVCOL_ELEMENTS, FALSE);
+ gtk_tree_view_set_enable_search(GTK_TREE_VIEW(ew->listview), TRUE);
+ gtk_tree_view_set_search_column(GTK_TREE_VIEW(ew->listview), EXIF_ADVCOL_DESCRIPTION);
+ gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(ew->listview), search_function_cb, ew, NULL);
gtk_drag_source_set(ew->listview,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,