Changeset 20d74d2d39c7a89098ba9370bfdc4dcf5b346f64

Show
Ignore:
Timestamp:
12/19/09 20:13:59 (3 years ago)
Author:
Armin Burgmeier <armin@…>
Parents:
6be10906ddf9cf186955992f11500607ea1437af
Children:
0d8716240dd215dea4ff8d4ac10d163dce9ce044
git-committer:
Armin Burgmeier <armin@arbur.net> / 2009-12-19T20:13:59Z+0100
Message:

Sort top-level browser items by name

2009-12-19 Armin Burgmeier <armin@…>

  • code/core/browser.cpp: Sort top-level items by name.
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • ChangeLog

    r6be1090 r20d74d2  
     12009-12-19  Armin Burgmeier  <armin@arbur.net> 
     2 
     3        * code/core/browser.cpp: Sort top-level items by name. 
     4 
    152009-12-18  Armin Burgmeier  <armin@arbur.net> 
    26 
  • code/core/browser.cpp

    r9a905ee r20d74d2  
    3434gint compare_func(GtkTreeModel* model, GtkTreeIter* first, GtkTreeIter* second, gpointer user_data) 
    3535{ 
    36         gint result = 0; 
     36        gint result; 
    3737        InfcBrowser* br_one; 
    3838        InfcBrowser* br_two; 
     
    4141        GtkTreeIter parent; 
    4242 
    43         /* Don't sort top level */ 
    44         if(!gtk_tree_model_iter_parent(model, &parent, first)) 
    45         { 
    46                 g_assert(!gtk_tree_model_iter_parent(model, &parent, second)); 
    47                 return 0; 
    48         } 
    49  
    50         gtk_tree_model_get(model, first,  INF_GTK_BROWSER_MODEL_COL_BROWSER, &br_one, INF_GTK_BROWSER_MODEL_COL_NODE, &bri_one, -1); 
    51         gtk_tree_model_get(model, second, INF_GTK_BROWSER_MODEL_COL_BROWSER, &br_two, INF_GTK_BROWSER_MODEL_COL_NODE, &bri_two, -1); 
    52  
    53         if (infc_browser_iter_is_subdirectory(br_one, bri_one) && !infc_browser_iter_is_subdirectory(br_two, bri_two)) 
    54                 result = -1; 
    55         else if (!infc_browser_iter_is_subdirectory(br_one, bri_one) && infc_browser_iter_is_subdirectory(br_two, bri_two)) 
    56                 result = 1; 
    57         else 
     43        if(gtk_tree_model_iter_parent(model, &parent, first)) 
     44        { 
     45                g_assert(gtk_tree_model_iter_parent(model, &parent, second)); 
     46 
     47                gtk_tree_model_get( 
     48                        model, first, 
     49                        INF_GTK_BROWSER_MODEL_COL_BROWSER, &br_one, 
     50                        INF_GTK_BROWSER_MODEL_COL_NODE, &bri_one, 
     51                        -1); 
     52                gtk_tree_model_get( 
     53                        model, second, 
     54                        INF_GTK_BROWSER_MODEL_COL_BROWSER, &br_two, 
     55                        INF_GTK_BROWSER_MODEL_COL_NODE, &bri_two, 
     56                        -1); 
     57 
     58                if(infc_browser_iter_is_subdirectory(br_one, bri_one) && 
     59                   !infc_browser_iter_is_subdirectory(br_two, bri_two)) 
     60                { 
     61                        result = -1; 
     62                } 
     63                else if(!infc_browser_iter_is_subdirectory(br_one, bri_one) && 
     64                        infc_browser_iter_is_subdirectory(br_two, bri_two)) 
     65                { 
     66                        result = 1; 
     67                } 
     68                else 
     69                { 
     70                        result = 0; 
     71                } 
     72 
     73                g_object_unref(br_one); 
     74                g_object_unref(br_two); 
     75                infc_browser_iter_free(bri_one); 
     76                infc_browser_iter_free(bri_two); 
     77        } 
     78 
     79        if(!result) 
    5880        { 
    5981                gchar* name_one; 
    6082                gchar* name_two; 
    61                  
    62                 gtk_tree_model_get(model, first,  INF_GTK_BROWSER_MODEL_COL_NAME, &name_one, -1); 
    63                 gtk_tree_model_get(model, second, INF_GTK_BROWSER_MODEL_COL_NAME, &name_two, -1); 
    64                  
     83 
     84                gtk_tree_model_get( 
     85                        model, first, 
     86                        INF_GTK_BROWSER_MODEL_COL_NAME, &name_one, 
     87                        -1); 
     88                gtk_tree_model_get( 
     89                        model, second, 
     90                        INF_GTK_BROWSER_MODEL_COL_NAME, &name_two, 
     91                        -1); 
     92 
    6593                gchar* one = g_utf8_casefold(name_one, -1); 
    6694                gchar* two = g_utf8_casefold(name_two, -1); 
    67                  
     95 
    6896                result = g_utf8_collate(one, two); 
    69                  
     97 
    7098                g_free(name_one); 
    7199                g_free(name_two); 
     
    73101                g_free(two); 
    74102        } 
    75          
    76         g_object_unref(br_one); 
    77         g_object_unref(br_two); 
    78         infc_browser_iter_free(bri_one); 
    79         infc_browser_iter_free(bri_two); 
    80          
     103 
    81104        return result; 
    82105}