418 |
method private remove_item_while_idle () = |
method private remove_item_while_idle () = |
419 |
ignore (Glib.Idle.add (fun _ -> |
ignore (Glib.Idle.add (fun _ -> |
420 |
try |
try |
421 |
let it = Queue.take queue_remove in |
let (key, it) = Queue.take queue_remove in |
422 |
Gaux.may ~f:(fun p -> |
Gaux.may ~f:(fun p -> |
423 |
ignore (store#remove p.path_tree_iter)) it.item_tree_path; |
ignore (store#remove p.path_tree_iter); |
424 |
|
Hashtbl.remove table key; |
425 |
|
) it.item_tree_path; |
426 |
true |
true |
427 |
with Queue.Empty -> false)) |
with Queue.Empty -> false)) |
428 |
|
|
435 |
let is_empty = Queue.is_empty queue_remove in |
let is_empty = Queue.is_empty queue_remove in |
436 |
it.item_tree_removed <- true; |
it.item_tree_removed <- true; |
437 |
Gaux.may ~f:(fun p -> |
Gaux.may ~f:(fun p -> |
438 |
store#set ~row:p.path_tree_iter ~column:filter_col (filter_func key)) it.item_tree_path; |
store#set ~row:p.path_tree_iter ~column:filter_col (filter_func key); |
439 |
Queue.add it queue_remove; |
nitems <- nitems - 1; |
440 |
Hashtbl.remove table key; |
) it.item_tree_path; |
441 |
nitems <- nitems - 1; |
Queue.add (key, it) queue_remove; |
442 |
if is_empty then self#remove_item_while_idle () |
if is_empty then self#remove_item_while_idle () |
443 |
end |
end |
444 |
with _ -> () |
with _ -> () |