GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer user_data)
{
TnyMsgHeaderFlags flags;
- GdkPixbuf *pixbuf;
+ GdkPixbuf *pixbuf = NULL;
gtk_tree_model_get (tree_model, iter, TNY_MSG_HEADER_LIST_MODEL_FLAGS_COLUMN,
&flags, -1);
pixbuf = modest_icon_factory_get_icon (MODEST_HEADER_ICON_READ);
else
pixbuf = modest_icon_factory_get_icon (MODEST_HEADER_ICON_UNREAD);
- if (pixbuf)
- g_object_set (G_OBJECT (renderer), "pixbuf", pixbuf, NULL);
+
+ g_object_set (G_OBJECT (renderer), "pixbuf", pixbuf, NULL);
}
static void
gtk_tree_model_get (tree_model, iter, TNY_MSG_HEADER_LIST_MODEL_FLAGS_COLUMN,
&flags, -1);
- if (flags & TNY_MSG_HEADER_FLAG_ATTACHMENTS) {
+ if (flags & TNY_MSG_HEADER_FLAG_ATTACHMENTS)
pixbuf = modest_icon_factory_get_icon (MODEST_HEADER_ICON_ATTACH);
- if (pixbuf)
- g_object_set (G_OBJECT (renderer), "pixbuf", pixbuf, NULL);
- }
-}
+ g_object_set (G_OBJECT (renderer), "pixbuf", pixbuf, NULL);
+}
static void
/* get the length of any prefix that should be ignored for sorting */
-static int
+static inline int
get_prefix_len (const gchar *sub)
{
- int i = 0;
- const static gchar* prefix[] = {"Re:", "RE:", "Fwd:", "FWD:", "FW:", NULL};
+ gint i = 0;
+ const static gchar* prefix[] = {"Re:", "RE:", "Fwd:", "FWD:", "FW:", "AW:", NULL};
if (sub[0] != 'R' && sub[0] != 'F') /* optimization */
return 0;
}
-static gint
+static inline gint
cmp_normalized_subject (const gchar* s1, const gchar *s2)
{
- /* FIXME: utf8 */
- return strcmp (s1 + get_prefix_len(s1),
- s2 + get_prefix_len(s2));
+ gint result = 0;
+ register gchar *n1, *n2;
+
+ n1 = g_utf8_collate_key (s1 + get_prefix_len(s1), -1);
+ n2 = g_utf8_collate_key (s2 + get_prefix_len(s2), -1);
+
+ result = strcmp (n1, n2);
+ g_free (n1);
+ g_free (n2);
+
+ return result;
}
else { /* it's a new one or a refresh */
GSList *col;
- #warning Looks like a memory leak.
priv->headers = TNY_LIST_IFACE(tny_msg_header_list_model_new ());
- tny_msg_folder_iface_get_headers (folder, priv->headers,
- FALSE);
+ tny_msg_folder_iface_get_headers (folder, priv->headers, FALSE);
tny_msg_header_list_model_set_folder (TNY_MSG_HEADER_LIST_MODEL(priv->headers),
folder, TRUE); /* async */
/* install our special sorting functions */
col = priv->columns;
while (col) {
- int col_id = GPOINTER_TO_INT (col->data);
+ gint col_id = GPOINTER_TO_INT (col->data);
gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE(sortable), col_id,
(GtkTreeIterCompareFunc)cmp_rows,
GINT_TO_POINTER(col_id), NULL);
gtk_tree_view_set_model (GTK_TREE_VIEW (self), sortable);
gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW(self), TRUE);
/* no need to unref sortable */
-
}
}
modest_tny_header_tree_view_set_folder (ModestTnyHeaderTreeView *self,
TnyMsgFolderIface *folder)
{
+ ModestTnyHeaderTreeViewPrivate *priv;
- if (!folder) /* when there is no folder */
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(self), FALSE);
+ g_return_val_if_fail (MODEST_IS_TNY_HEADER_TREE_VIEW (self), FALSE);
+
+ priv = MODEST_TNY_HEADER_TREE_VIEW_GET_PRIVATE(self);
+
+ if (!folder) {/* when there is no folder */
+ GtkTreeModel *model;
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW(self));
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(self), FALSE);
+ gtk_tree_view_set_model (GTK_TREE_VIEW (self), NULL);
+ if (model)
+ g_object_unref (model);
+ }
else { /* it's a new one or a refresh */
tny_msg_folder_iface_refresh_async (folder,
refresh_folder,