void itemview_update_item (itemPtr item) { /* Always update the GtkTreeView (bail-out done in ui_itemlist_update_item() */ if (ITEMVIEW_ALL_ITEMS != itemview->priv->mode) item_list_view_update_item (itemview->priv->itemListView, item); /* Bail if we do internal browsing, and no item is shown */ if (itemview->priv->browsing) return; /* Bail out if no HTML update necessary */ switch (itemview->priv->mode) { case ITEMVIEW_ALL_ITEMS: /* No HTML update needed if 2 pane mode and item not in item set */ if (!item_list_view_contains_id (itemview->priv->itemListView, item->id)) return; break; case ITEMVIEW_SINGLE_ITEM: /* No HTML update needed if 3 pane mode and item not displayed */ if (item->id != itemlist_get_selected_id ()) return; break; default: /* Return in all other display modes */ return; break; } itemview->priv->needsHTMLViewUpdate = TRUE; htmlview_update_item (item); }
static void item_list_view_update_item_foreach (gpointer key, gpointer value, gpointer user_data) { itemPtr item; item = item_load (GPOINTER_TO_UINT (key) /* id */); if (!item) return; item_list_view_update_item (ITEM_LIST_VIEW (user_data), item); item_unload (item); }
void item_list_view_add_item (ItemListView *ilv, itemPtr item) { GtkTreeStore *itemstore; if (ilv->priv->batch_mode) { /* either merge to new unattached GtkTreeStore */ item_list_view_add_item_to_tree_store (ilv, ilv->priv->batch_itemstore, item); } else { /* or merge to visible item store */ itemstore = GTK_TREE_STORE (gtk_tree_view_get_model (ilv->priv->treeview)); item_list_view_add_item_to_tree_store (ilv, itemstore, item); } item_list_view_update_item (ilv, item); }