View | Details | Raw Unified | Return to bug 343447
Collapse All | Expand All

(-)mail/em-folder-tree.c (-26 lines)
Lines 162-168 Link Here
162
162
163
static void emft_update_model_expanded_state (struct _EMFolderTreePrivate *priv, GtkTreeIter *iter, gboolean expanded);
163
static void emft_update_model_expanded_state (struct _EMFolderTreePrivate *priv, GtkTreeIter *iter, gboolean expanded);
164
164
165
static void emft_model_row_changed (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, EMFolderTree *emft);
166
static void emft_tree_row_activated (GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, EMFolderTree *emft);
165
static void emft_tree_row_activated (GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, EMFolderTree *emft);
167
static gboolean emft_tree_test_collapse_row (GtkTreeView *treeview, GtkTreeIter *root, GtkTreePath *path, EMFolderTree *emft);
166
static gboolean emft_tree_test_collapse_row (GtkTreeView *treeview, GtkTreeIter *root, GtkTreePath *path, EMFolderTree *emft);
168
static void emft_tree_row_expanded (GtkTreeView *treeview, GtkTreeIter *root, GtkTreePath *path, EMFolderTree *emft);
167
static void emft_tree_row_expanded (GtkTreeView *treeview, GtkTreeIter *root, GtkTreePath *path, EMFolderTree *emft);
Lines 546-552 Link Here
546
	priv->treeview = folder_tree_new (emft, model);
545
	priv->treeview = folder_tree_new (emft, model);
547
	gtk_widget_show ((GtkWidget *) priv->treeview);
546
	gtk_widget_show ((GtkWidget *) priv->treeview);
548
547
549
	g_signal_connect (priv->model, "row-changed", G_CALLBACK (emft_model_row_changed), emft);
550
	g_signal_connect (priv->treeview, "row-expanded", G_CALLBACK (emft_tree_row_expanded), emft);
548
	g_signal_connect (priv->treeview, "row-expanded", G_CALLBACK (emft_tree_row_expanded), emft);
551
	g_signal_connect (priv->treeview, "test-collapse-row", G_CALLBACK (emft_tree_test_collapse_row), emft);
549
	g_signal_connect (priv->treeview, "test-collapse-row", G_CALLBACK (emft_tree_test_collapse_row), emft);
552
	g_signal_connect (priv->treeview, "row-activated", G_CALLBACK (emft_tree_row_activated), emft);
550
	g_signal_connect (priv->treeview, "row-activated", G_CALLBACK (emft_tree_row_activated), emft);
Lines 1859-1888 Link Here
1859
}
1857
}
1860
1858
1861
static void
1859
static void
1862
emft_model_row_changed (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, EMFolderTree *emft)
1863
{
1864
	GtkTreeIter parent_iter;
1865
	GtkTreeIter child_iter = *iter;
1866
1867
	g_signal_handlers_block_by_func (model, emft_model_row_changed, emft);
1868
1869
	/* Folders are displayed with a bold weight to indicate that
1870
	   they contain unread messages.  We signal that parent rows
1871
	   have changed here to update them. */
1872
1873
	while (gtk_tree_model_iter_parent (model, &parent_iter, &child_iter)) {
1874
		GtkTreePath *parent_path;
1875
1876
		parent_path = gtk_tree_model_get_path (model, &parent_iter);
1877
		gtk_tree_model_row_changed (model, parent_path, &parent_iter);
1878
		gtk_tree_path_free (parent_path);
1879
		child_iter = parent_iter;
1880
	}
1881
1882
	g_signal_handlers_unblock_by_func (model, emft_model_row_changed, emft);
1883
}
1884
1885
static void
1886
emft_tree_row_expanded (GtkTreeView *treeview, GtkTreeIter *root, GtkTreePath *tree_path, EMFolderTree *emft)
1860
emft_tree_row_expanded (GtkTreeView *treeview, GtkTreeIter *root, GtkTreePath *tree_path, EMFolderTree *emft)
1887
{
1861
{
1888
	struct _EMFolderTreePrivate *priv = emft->priv;
1862
	struct _EMFolderTreePrivate *priv = emft->priv;
(-)mail/em-folder-tree-model.c (+28 lines)
Lines 251-256 Link Here
251
}
251
}
252
252
253
static void
253
static void
254
emft_model_unread_count_changed (GtkTreeModel *model, GtkTreeIter *iter)
255
{
256
	GtkTreeIter parent_iter;
257
	GtkTreeIter child_iter = *iter;
258
259
	g_signal_handler_block (model, emft_model_unread_count_changed);
260
261
	/* Folders are displayed with a bold weight to indicate that
262
	   they contain unread messages.  We signal that parent rows
263
	   have changed here to update them. */
264
265
	while (gtk_tree_model_iter_parent (model, &parent_iter, &child_iter)) {
266
		GtkTreePath *parent_path;
267
268
		parent_path = gtk_tree_model_get_path (model, &parent_iter);
269
		gtk_tree_model_row_changed (model, parent_path, &parent_iter);
270
		gtk_tree_path_free (parent_path);
271
		child_iter = parent_iter;
272
	}
273
274
	g_signal_handler_unblock (model, emft_model_unread_count_changed);
275
}
276
277
static void
254
em_folder_tree_model_init (EMFolderTreeModel *model)
278
em_folder_tree_model_init (EMFolderTreeModel *model)
255
{
279
{
256
	model->store_hash = g_hash_table_new_full (
280
	model->store_hash = g_hash_table_new_full (
Lines 269-274 Link Here
269
	model->account_hash = g_hash_table_new (g_direct_hash, g_direct_equal);
293
	model->account_hash = g_hash_table_new (g_direct_hash, g_direct_equal);
270
	model->account_changed_id = g_signal_connect (model->accounts, "account-changed", G_CALLBACK (account_changed), model);
294
	model->account_changed_id = g_signal_connect (model->accounts, "account-changed", G_CALLBACK (account_changed), model);
271
	model->account_removed_id = g_signal_connect (model->accounts, "account-removed", G_CALLBACK (account_removed), model);
295
	model->account_removed_id = g_signal_connect (model->accounts, "account-removed", G_CALLBACK (account_removed), model);
296
	//g_signal_connect (model, "row-changed", G_CALLBACK (emft_model_unread_count_changed), NULL);
272
}
297
}
273
298
274
static void
299
static void
Lines 1255-1260 Link Here
1255
	gtk_tree_path_free (tree_path);
1280
	gtk_tree_path_free (tree_path);
1256
1281
1257
	gtk_tree_store_set ((GtkTreeStore *) model, &iter, COL_UINT_UNREAD, unread, -1);
1282
	gtk_tree_store_set ((GtkTreeStore *) model, &iter, COL_UINT_UNREAD, unread, -1);
1283
1284
	/* May be this is from where we should probagate unread count to parents etc. */
1285
	emft_model_unread_count_changed (model, &iter);
1258
}
1286
}
1259
1287
1260
1288

Return to bug 343447