comparison src/view_file_list.c @ 800:a25b228978a0

various notification improvements
author nadvornik
date Sat, 07 Jun 2008 15:08:33 +0000
parents 99ea3d973ad3
children 9b676bb76a2e
comparison
equal deleted inserted replaced
799:278962ba162a 800:a25b228978a0
724 FILE_COLUMN_SIDECARS, sidecars, 724 FILE_COLUMN_SIDECARS, sidecars,
725 FILE_COLUMN_SIZE, size, 725 FILE_COLUMN_SIZE, size,
726 FILE_COLUMN_DATE, text_from_time(fd->date), 726 FILE_COLUMN_DATE, text_from_time(fd->date),
727 FILE_COLUMN_COLOR, FALSE, -1); 727 FILE_COLUMN_COLOR, FALSE, -1);
728 for (i = 0; i < FILEDATA_MARKS_SIZE; i++) 728 for (i = 0; i < FILEDATA_MARKS_SIZE; i++)
729 gtk_tree_store_set(store, iter, FILE_COLUMN_MARKS + i, fd->marks[i], -1); 729 gtk_tree_store_set(store, iter, FILE_COLUMN_MARKS + i, file_data_get_mark(fd, i), -1);
730 730
731 g_free(size); 731 g_free(size);
732 if (sidecars) 732 if (sidecars)
733 g_free(sidecars); 733 g_free(sidecars);
734 } 734 }
1403 { 1403 {
1404 FileData *fd; 1404 FileData *fd;
1405 gboolean mark_val, selected; 1405 gboolean mark_val, selected;
1406 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &fd, -1); 1406 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &fd, -1);
1407 1407
1408 mark_val = fd->marks[n]; 1408 mark_val = file_data_get_mark(fd, n);
1409 selected = gtk_tree_selection_iter_is_selected(selection, &iter); 1409 selected = gtk_tree_selection_iter_is_selected(selection, &iter);
1410 1410
1411 switch (mode) 1411 switch (mode)
1412 { 1412 {
1413 case MTS_MODE_SET: selected = mark_val; 1413 case MTS_MODE_SET: selected = mark_val;
1449 GtkTreeIter iter; 1449 GtkTreeIter iter;
1450 1450
1451 gtk_tree_model_get_iter(store, &iter, tpath); 1451 gtk_tree_model_get_iter(store, &iter, tpath);
1452 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1); 1452 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
1453 1453
1454 file_data_unregister_notify_func(vflist_notify_cb, vf); /* we don't need the notification */
1455
1454 switch (mode) 1456 switch (mode)
1455 { 1457 {
1456 case STM_MODE_SET: fd->marks[n] = 1; 1458 case STM_MODE_SET: file_data_set_mark(fd, n, 1);
1457 break; 1459 break;
1458 case STM_MODE_RESET: fd->marks[n] = 0; 1460 case STM_MODE_RESET: file_data_set_mark(fd, n, 0);
1459 break; 1461 break;
1460 case STM_MODE_TOGGLE: fd->marks[n] = !fd->marks[n]; 1462 case STM_MODE_TOGGLE: file_data_set_mark(fd, n, !file_data_get_mark(fd, n));
1461 break; 1463 break;
1462 } 1464 }
1463 1465
1464 file_data_unregister_notify_func(vflist_notify_cb, vf); /* we don't need the notification */
1465 file_data_increment_version(fd);
1466 file_data_register_notify_func(vflist_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM); 1466 file_data_register_notify_func(vflist_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
1467 1467
1468 gtk_tree_store_set(GTK_TREE_STORE(store), &iter, FILE_COLUMN_MARKS + n, fd->marks[n], -1); 1468 gtk_tree_store_set(GTK_TREE_STORE(store), &iter, FILE_COLUMN_MARKS + n, file_data_get_mark(fd, n), -1);
1469 1469
1470 work = work->next; 1470 work = work->next;
1471 } 1471 }
1472 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL); 1472 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
1473 g_list_free(slist); 1473 g_list_free(slist);
1706 1706
1707 g_assert(col_idx >= FILE_COLUMN_MARKS && col_idx <= FILE_COLUMN_MARKS_LAST); 1707 g_assert(col_idx >= FILE_COLUMN_MARKS && col_idx <= FILE_COLUMN_MARKS_LAST);
1708 1708
1709 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &fd, col_idx, &mark, -1); 1709 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &fd, col_idx, &mark, -1);
1710 mark = !mark; 1710 mark = !mark;
1711 fd->marks[col_idx - FILE_COLUMN_MARKS] = mark;
1712 file_data_unregister_notify_func(vflist_notify_cb, vf); /* we don't need the notification */ 1711 file_data_unregister_notify_func(vflist_notify_cb, vf); /* we don't need the notification */
1713 file_data_increment_version(fd); 1712 file_data_set_mark(fd, col_idx - FILE_COLUMN_MARKS, mark);
1714 file_data_register_notify_func(vflist_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM); 1713 file_data_register_notify_func(vflist_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
1715 1714
1716 gtk_tree_store_set(store, &iter, col_idx, mark, -1); 1715 gtk_tree_store_set(store, &iter, col_idx, mark, -1);
1717 gtk_tree_path_free(path); 1716 gtk_tree_path_free(path);
1718 } 1717 }