Changeset 2918

Show
Ignore:
Timestamp:
11/07/07 19:27:36
Author:
pvanhoof
Message:
        • Minor corrections when creating and moving folders
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r2915 r2918  
    33        * Some problems fixed in TnyGtkFolderStoreTreeModel when moving 
    44        folders around into newly created folders 
     5        * Minor corrections when creating and moving folders 
    56 
    672007-11-06  Philip Van Hoof  <pvanhoof@gnome.org> 
  • trunk/libtinymail-camel/tny-camel-folder.c

    r2917 r2918  
    45904590        TnyFolderStoreChange *change; 
    45914591        CamelException subex = CAMEL_EXCEPTION_INITIALISER; 
     4592        TnyCamelFolderPriv *rpriv = NULL; 
    45924593 
    45934594        if (!_tny_session_check_operation (TNY_FOLDER_PRIV_GET_SESSION(priv),  
     
    46474648        folder = _tny_camel_folder_new (); 
    46484649        _tny_camel_folder_set_folder_info (self, TNY_CAMEL_FOLDER (folder), info); 
     4650        rpriv = TNY_CAMEL_FOLDER_GET_PRIVATE (folder); 
     4651        _tny_camel_folder_set_parent (TNY_CAMEL_FOLDER (folder), TNY_FOLDER_STORE (self)); 
     4652        rpriv->folder = NULL; /* This might be a leak */ 
     4653        rpriv->loaded = 0; 
     4654        load_folder_no_lock (rpriv); 
    46494655 
    46504656        /* So that the next call to get_folders includes the newly 
  • trunk/libtinymailui-gtk/tny-gtk-folder-store-tree-model.c

    r2917 r2918  
    146146                        { 
    147147                                TnyFolder *folder = TNY_FOLDER (instance); 
    148                                  
    149                                 gtk_tree_store_set (model, &tree_iter, 
     148 
     149                                gtk_tree_store_set (model, &tree_iter, 
    150150                                        TNY_GTK_FOLDER_STORE_TREE_MODEL_NAME_COLUMN,  
    151151                                        tny_folder_get_name (TNY_FOLDER (folder)), 
     
    823823 
    824824static gboolean  
    825 do_nothinger (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data) 
    826 { 
    827         TnyFolderStoreChange *change = (TnyFolderStoreChange *) user_data; 
    828         TnyFolderStore *parent_store = tny_folder_store_change_get_folder_store (change); 
    829         TnyFolderStore *folder = NULL; 
    830  
    831         gtk_tree_model_get (model, iter,  
    832                 TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN,  
    833                 &folder, -1); 
    834  
    835         if (folder && folder == parent_store && TNY_IS_FOLDER (folder))  
    836         { 
    837  
    838                 gtk_tree_store_set (GTK_TREE_STORE (model), iter, 
    839                                 TNY_GTK_FOLDER_STORE_TREE_MODEL_NAME_COLUMN,  
    840                                 tny_folder_get_name (TNY_FOLDER (folder)), 
    841                                 TNY_GTK_FOLDER_STORE_TREE_MODEL_UNREAD_COLUMN,  
    842                                 tny_folder_get_unread_count (TNY_FOLDER (folder)), 
    843                                 TNY_GTK_FOLDER_STORE_TREE_MODEL_ALL_COLUMN,  
    844                                 tny_folder_get_all_count (TNY_FOLDER (folder)), 
    845                                 TNY_GTK_FOLDER_STORE_TREE_MODEL_TYPE_COLUMN, 
    846                                 tny_folder_get_folder_type (TNY_FOLDER (folder)), 
    847                                 TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN, 
    848                                 folder, -1); 
    849         } 
    850  
    851         if (parent_store) 
    852                 g_object_unref (parent_store); 
    853  
    854         if (folder) 
    855                 g_object_unref (folder); 
    856  
    857         return FALSE; 
    858 } 
    859  
    860 static gboolean  
    861825deleter (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data1) 
    862826{ 
     
    894858 
    895859static gboolean 
    896 foreach_if_store_add_created (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *in_iter, gpointer user_data) 
     860creater (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *in_iter, gpointer user_data) 
    897861{ 
    898862        TnyGtkFolderStoreTreeModel *me = (TnyGtkFolderStoreTreeModel*) model; 
     863        TnyGtkFolderStoreTreeModel *self = (TnyGtkFolderStoreTreeModel*) model; 
    899864        TnyFolderStore *fol = NULL; 
    900865        gboolean found = FALSE; 
     
    903868        TnyFolderStore *parent_store; 
    904869        GtkTreeIter iter; 
     870 
     871        /* This creater will get the store out of the model, compare with  
     872         * the change's store pointer, and if there's a match it will add the 
     873         * the created folders to the model at that location. */ 
    905874 
    906875        if (!gtk_tree_model_get_iter (model, &iter, path)) { 
     
    942911                        me->store_observables = g_list_prepend (me->store_observables, folder); 
    943912 
    944                         gtk_tree_store_append (GTK_TREE_STORE (model), &newiter, &iter); 
    945  
    946913                        /* This adds a reference count to folder_store too. When it gets  
    947914                           removed, that reference count is decreased automatically by  
    948915                           the gtktreestore infrastructure. */ 
     916 
     917                        gtk_tree_store_prepend (GTK_TREE_STORE (model), &newiter, in_iter); 
    949918 
    950919                        gtk_tree_store_set (GTK_TREE_STORE (model), &newiter, 
     
    960929                                folder, -1); 
    961930 
     931                                tny_folder_add_observer (TNY_FOLDER (folder), TNY_FOLDER_OBSERVER (self)); 
     932                                tny_folder_store_add_observer (TNY_FOLDER_STORE (folder), TNY_FOLDER_STORE_OBSERVER (self)); 
     933 
    962934                        g_object_unref (folder); 
    963935                        tny_iterator_next (miter); 
     
    1003975 
    1004976        if (changed & TNY_FOLDER_STORE_CHANGE_CHANGED_CREATED_FOLDERS) 
    1005         { 
    1006                 TnyList *created = tny_simple_list_new (); 
    1007                 TnyIterator *miter; 
    1008  
    1009                 tny_folder_store_change_get_created_folders (change, created); 
    1010                 miter = tny_list_create_iterator (created); 
    1011  
    1012                 while (!tny_iterator_is_done (miter)) 
    1013                 { 
    1014                         TnyFolder *folder = TNY_FOLDER (tny_iterator_get_current (miter)); 
    1015                         tny_folder_add_observer (TNY_FOLDER (folder), TNY_FOLDER_OBSERVER (self)); 
    1016                         tny_folder_store_add_observer (TNY_FOLDER_STORE (folder), TNY_FOLDER_STORE_OBSERVER (self)); 
    1017                         g_object_unref (folder); 
    1018                         tny_iterator_next (miter); 
    1019                 } 
    1020                 g_object_unref (miter); 
    1021                 g_object_unref (created); 
    1022         } 
    1023  
    1024         if (changed & TNY_FOLDER_STORE_CHANGE_CHANGED_CREATED_FOLDERS) { 
    1025                 gtk_tree_model_foreach (model, do_nothinger, change); 
    1026                 gtk_tree_model_foreach (model, foreach_if_store_add_created, change); 
    1027                 gtk_tree_model_foreach (model, do_nothinger, change); 
    1028         } 
     977                gtk_tree_model_foreach (model, creater, change); 
    1029978 
    1030979        if (changed & TNY_FOLDER_STORE_CHANGE_CHANGED_REMOVED_FOLDERS) 
     
    1046995                g_object_unref (removed); 
    1047996        } 
    1048  
    1049997 
    1050998        return;