Fixes NB#116869, adding extra padding at the top of the main views
[modest] / src / widgets / modest-folder-view.c
index c659540..398342d 100644 (file)
@@ -247,7 +247,7 @@ struct _ModestFolderViewPrivate {
        GtkCellRenderer *messages_renderer;
 
        GSList   *signal_handlers;
-       GdkColor *active_color;
+       GdkColor active_color;
 };
 #define MODEST_FOLDER_VIEW_GET_PRIVATE(o)                      \
        (G_TYPE_INSTANCE_GET_PRIVATE((o),                       \
@@ -571,20 +571,10 @@ format_compact_style (gchar **item_name,
                /* Remove mailbox prefix if any */
                gchar *prefix = g_strconcat (mailbox, MODEST_FOLDER_PATH_SEPARATOR, NULL);
                if (g_str_has_prefix (*item_name, prefix)) {
-                       gchar *new_item_name;
-
-                       new_item_name = g_strdup (*item_name + strlen (prefix));
-                       if (!g_ascii_strcasecmp (new_item_name, "Inbox")) {
-                               g_free (new_item_name);
-                               new_item_name = g_strdup (_("mcen_me_folder_inbox"));
-                       }
+                       gchar *new_item_name = g_strdup (*item_name + strlen (prefix));
                        g_free (*item_name);
                        *item_name = new_item_name;
                }
-       } else if (!g_ascii_strcasecmp (*item_name, "Inbox")) {
-
-               g_free (*item_name);
-               *item_name = g_strdup (_("mcen_me_folder_inbox"));
        }
 
        if (!is_special || multiaccount) {
@@ -729,6 +719,13 @@ text_cell_data  (GtkTreeViewColumn *column,
                }
        }
 
+       /* Convert INBOX */
+       if (type == TNY_FOLDER_TYPE_INBOX &&
+           !g_ascii_strcasecmp (fname, "Inbox")) {
+               g_free (item_name);
+               item_name = g_strdup (_("mcen_me_folder_inbox"));
+       }
+
        if (!item_name)
                item_name = g_strdup ("unknown");
 
@@ -744,12 +741,13 @@ text_cell_data  (GtkTreeViewColumn *column,
 
        if (item_name && item_weight) {
                /* Set the name in the treeview cell: */
-               if (priv->cell_style == MODEST_FOLDER_VIEW_CELL_STYLE_COMPACT && item_weight == 800 && priv->active_color) {
+               if (priv->cell_style == MODEST_FOLDER_VIEW_CELL_STYLE_COMPACT && item_weight == 800 && 
+                   (priv->active_color.red != 0 || priv->active_color.blue != 0 || priv->active_color.green != 0)) {
                        g_object_set (rendobj, 
                                      "text", item_name, 
                                      "weight-set", FALSE,
                                      "foreground-set", TRUE,
-                                     "foreground-gdk", priv->active_color,
+                                     "foreground-gdk", &(priv->active_color),
                                      NULL);
                } else {
                        g_object_set (rendobj, 
@@ -1237,7 +1235,7 @@ add_columns (GtkWidget *treeview)
        priv->messages_renderer = gtk_cell_renderer_text_new ();
        g_object_set (priv->messages_renderer, 
 #ifdef MODEST_TOOLKIT_HILDON2
-                     "yalign", 0.0,
+                     "yalign", 0.5,
                      "ypad", MODEST_MARGIN_DEFAULT,
                      "xpad", MODEST_MARGIN_DOUBLE,
 #else
@@ -1328,7 +1326,7 @@ modest_folder_view_init (ModestFolderView *obj)
                                                           G_CALLBACK(on_configuration_key_changed),
                                                           obj);
 
-       priv->active_color = NULL;
+       gdk_color_parse ("000", &priv->active_color);
 
        update_style (obj);
        priv->signal_handlers = modest_signal_mgr_connect (priv->signal_handlers,
@@ -1344,17 +1342,27 @@ tny_account_store_view_init (gpointer g, gpointer iface_data)
        klass->set_account_store = modest_folder_view_set_account_store;
 }
 
+static gboolean
+match_all (TnyList *list, GObject *item, gpointer match_data)
+{
+       return TRUE;
+}
+
 static void
 modest_folder_view_dispose (GObject *obj)
 {
        static gboolean disposed = FALSE;
        ModestFolderViewPrivate *priv;
+       GtkTreeModel *model;
 
        if (disposed)
                return;
 
        priv =  MODEST_FOLDER_VIEW_GET_PRIVATE (obj);
 
+       model = gtk_tree_view_get_model (GTK_TREE_VIEW (obj));
+       tny_list_remove_matches (TNY_LIST (model), match_all, NULL);
+
 #ifdef MODEST_TOOLKIT_HILDON2
        modest_signal_mgr_disconnect_all_and_destroy (priv->signal_handlers);
 #endif
@@ -1395,11 +1403,6 @@ modest_folder_view_finalize (GObject *obj)
 
        priv =  MODEST_FOLDER_VIEW_GET_PRIVATE(obj);
 
-       if (priv->active_color) {
-               gdk_color_free (priv->active_color);
-               priv->active_color = NULL;
-       }
-
        if (priv->timer_expander != 0) {
                g_source_remove (priv->timer_expander);
                priv->timer_expander = 0;
@@ -1412,6 +1415,8 @@ modest_folder_view_finalize (GObject *obj)
        /* Clear hidding array created by cut operation */
        _clear_hidding_filter (MODEST_FOLDER_VIEW (obj));
 
+       gdk_color_parse ("000", &priv->active_color);
+
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
 
@@ -2274,8 +2279,10 @@ modest_folder_view_update_model (ModestFolderView *self,
 #ifdef MODEST_TOOLKIT_HILDON2
        TnyGtkFolderListStoreFlags flags;
        flags = TNY_GTK_FOLDER_LIST_STORE_FLAG_SHOW_PATH;
-       if (!priv->do_refresh)
-               flags &= TNY_GTK_FOLDER_LIST_STORE_FLAG_NO_REFRESH;
+       if (priv->do_refresh)
+               flags |= TNY_GTK_FOLDER_LIST_STORE_FLAG_DELAYED_REFRESH;
+       else
+               flags |= TNY_GTK_FOLDER_LIST_STORE_FLAG_NO_REFRESH;
        model = tny_gtk_folder_list_store_new_with_flags (NULL, 
                                                          flags);
        tny_gtk_folder_list_store_set_path_separator (TNY_GTK_FOLDER_LIST_STORE (model),
@@ -3894,10 +3901,10 @@ modest_folder_view_copy_model (ModestFolderView *folder_view_src,
        /* Set copied model */
        gtk_tree_view_set_model (GTK_TREE_VIEW (folder_view_dst), new_filter_model);
 #ifndef MODEST_TOOLKIT_HILDON2
-       priv->signal_handlers = modest_signal_mgr_connect (priv->signal_handlers,
-                                                          G_OBJECT(new_filter_model), "row-inserted",
-                                                          (GCallback) on_row_inserted_maybe_select_folder,
-                                                          folder_view_dst);
+       dst_priv->signal_handlers = modest_signal_mgr_connect (dst_priv->signal_handlers,
+                                                              G_OBJECT(new_filter_model), "row-inserted",
+                                                              (GCallback) on_row_inserted_maybe_select_folder,
+                                                              folder_view_dst);
 #endif
 #ifdef MODEST_TOOLKIT_HILDON2
        if (new_tny_model) {
@@ -4072,11 +4079,11 @@ update_style (ModestFolderView *self)
                              NULL);
                pango_attr_list_unref (attr_list);
        }
-       if (priv->active_color)
-               gdk_color_free (priv->active_color);
 
        if (gtk_style_lookup_color (GTK_WIDGET (self)->style, "ActiveTextColor", &style_active_color)) {
-               priv->active_color = gdk_color_copy (&style_active_color);
+               priv->active_color = style_active_color;
+       } else {
+               gdk_color_parse ("000", &(priv->active_color));
        }
 }