X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-msg-view-window.c;h=54f69fc3730207ecd5e0e39d67a74708955cf027;hb=266e59ba330fbca5c32475b5696ec2e28a99ede6;hp=81412f0eececf3340d07226b76158fbaf9214275;hpb=24316ebf63212f185e7f6bf70a0e04f3f52e0fa4;p=modest diff --git a/src/maemo/modest-msg-view-window.c b/src/maemo/modest-msg-view-window.c index 81412f0..54f69fc 100644 --- a/src/maemo/modest-msg-view-window.c +++ b/src/maemo/modest-msg-view-window.c @@ -1326,41 +1326,41 @@ modest_msg_view_window_on_row_reordered (GtkTreeModel *header_model, gpointer arg3, ModestMsgViewWindow *window) { - ModestMsgViewWindowPrivate *priv = NULL; + ModestMsgViewWindowPrivate *priv = NULL; gboolean already_changed = FALSE; priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(window); /* If the current row was reordered select the proper next valid row. The same if the next row reference changes */ - if (priv->row_reference && - gtk_tree_row_reference_valid (priv->row_reference)) { - GtkTreePath *path; - path = gtk_tree_row_reference_get_path (priv->row_reference); - if (gtk_tree_path_compare (path, arg1) == 0) { - if (priv->next_row_reference) { - gtk_tree_row_reference_free (priv->next_row_reference); - } - priv->next_row_reference = gtk_tree_row_reference_copy (priv->row_reference); - select_next_valid_row (header_model, &(priv->next_row_reference), FALSE, priv->is_outbox); - already_changed = TRUE; - } - gtk_tree_path_free (path); - } - if (!already_changed && - priv->next_row_reference && + if (!priv->row_reference || + !gtk_tree_row_reference_valid (priv->row_reference)) + return; + + if (priv->next_row_reference && gtk_tree_row_reference_valid (priv->next_row_reference)) { - GtkTreePath *path; - path = gtk_tree_row_reference_get_path (priv->next_row_reference); - if (gtk_tree_path_compare (path, arg1) == 0) { - if (priv->next_row_reference) { - gtk_tree_row_reference_free (priv->next_row_reference); - } + GtkTreePath *cur, *next; + /* Check that the order is still the correct one */ + cur = gtk_tree_row_reference_get_path (priv->row_reference); + next = gtk_tree_row_reference_get_path (priv->next_row_reference); + gtk_tree_path_next (cur); + if (gtk_tree_path_compare (cur, next) != 0) { + gtk_tree_row_reference_free (priv->next_row_reference); priv->next_row_reference = gtk_tree_row_reference_copy (priv->row_reference); select_next_valid_row (header_model, &(priv->next_row_reference), FALSE, priv->is_outbox); + already_changed = TRUE; } - gtk_tree_path_free (path); + gtk_tree_path_free (cur); + gtk_tree_path_free (next); + } else { + if (priv->next_row_reference) + gtk_tree_row_reference_free (priv->next_row_reference); + /* Update next row reference */ + priv->next_row_reference = gtk_tree_row_reference_copy (priv->row_reference); + select_next_valid_row (header_model, &(priv->next_row_reference), FALSE, priv->is_outbox); + already_changed = TRUE; } + check_dimming_rules_after_change (window); }