|
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; |