Mercurial > geeqie
comparison src/view_dir.c @ 1413:3bc4967aaa57
Use dynamic allocation for editor key passed to various callbacks.
author | zas_ |
---|---|
date | Wed, 11 Mar 2009 17:38:20 +0000 |
parents | 5a534e1501e1 |
children | cf4029d10d38 |
comparison
equal
deleted
inserted
replaced
1412:5a534e1501e1 | 1413:3bc4967aaa57 |
---|---|
328 vd->drop_list = NULL; | 328 vd->drop_list = NULL; |
329 | 329 |
330 file_util_start_filter_from_filelist(key, list, path, vd->widget); | 330 file_util_start_filter_from_filelist(key, list, path, vd->widget); |
331 } | 331 } |
332 | 332 |
333 | 333 static void vd_drop_menu_edit_item_free(gpointer data) |
334 { | |
335 g_free(data); | |
336 } | |
334 | 337 |
335 GtkWidget *vd_drop_menu(ViewDir *vd, gint active) | 338 GtkWidget *vd_drop_menu(ViewDir *vd, gint active) |
336 { | 339 { |
337 GtkWidget *menu; | 340 GtkWidget *menu; |
338 GList *editors_list = editor_list_get(); | 341 GList *editors_list = editor_list_get(); |
348 | 351 |
349 while (work) | 352 while (work) |
350 { | 353 { |
351 GtkWidget *item; | 354 GtkWidget *item; |
352 const EditorDescription *editor = work->data; | 355 const EditorDescription *editor = work->data; |
356 gchar *key; | |
353 work = work->next; | 357 work = work->next; |
354 | 358 |
355 if (!editor_is_filter(editor->key)) continue; | 359 if (!editor_is_filter(editor->key)) continue; |
360 key = g_strdup(editor->key); | |
356 item = menu_item_add_sensitive(menu, editor->name, active, G_CALLBACK(vd_drop_menu_filter_cb), vd); | 361 item = menu_item_add_sensitive(menu, editor->name, active, G_CALLBACK(vd_drop_menu_filter_cb), vd); |
357 | 362 g_object_set_data_full(G_OBJECT(item), "filter_key", key, vd_drop_menu_edit_item_free); |
358 g_object_set_data(G_OBJECT(item), "filter_key", editor->key); | |
359 } | 363 } |
360 | 364 |
361 g_list_free(editors_list); | 365 g_list_free(editors_list); |
362 | 366 |
363 menu_item_add_divider(menu); | 367 menu_item_add_divider(menu); |