static void update_window_title (ModestMsgViewWindow *window);
-static gboolean set_toolbar_transfer_mode (ModestMsgViewWindow *self);
static void init_window (ModestMsgViewWindow *obj);
static gboolean msg_is_visible (TnyHeader *header, gboolean check_outbox);
}
-
-static gboolean
-set_toolbar_transfer_mode (ModestMsgViewWindow *self)
-{
- ModestMsgViewWindowPrivate *priv = NULL;
-
- g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (self), FALSE);
-
- priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(self);
-
- set_progress_hint (self, TRUE);
-
- return FALSE;
-}
-
static void
update_progress_hint (ModestMsgViewWindow *self)
{
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);
}
tmp = priv->progress_widgets;
source = modest_mail_operation_get_source(mail_op);
if (G_OBJECT (self) == source) {
- if (op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE) {
- set_toolbar_transfer_mode(self);
+ if (op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE ||
+ op_type == MODEST_MAIL_OPERATION_TYPE_OPEN ||
+ op_type == MODEST_MAIL_OPERATION_TYPE_DELETE) {
+ set_progress_hint (self, TRUE);
while (tmp) {
modest_progress_object_add_operation (
MODEST_PROGRESS_OBJECT (tmp->data),
}
}
g_object_unref (source);
+
+ /* Update dimming rules */
+ check_dimming_rules_after_change (self);
}
-static void
+static void
on_mail_operation_finished (ModestMailOperation *mail_op,
gpointer user_data)
{
ModestMailOperationTypeOperation op_type;
GSList *tmp;
ModestMsgViewWindowPrivate *priv;
-
+
self = MODEST_MSG_VIEW_WINDOW (user_data);
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
op_type = modest_mail_operation_get_type_operation (mail_op);
tmp = priv->progress_widgets;
-
- if (op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE) {
+
+ if (op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE ||
+ op_type == MODEST_MAIL_OPERATION_TYPE_OPEN ||
+ op_type == MODEST_MAIL_OPERATION_TYPE_DELETE) {
while (tmp) {
modest_progress_object_remove_operation (MODEST_PROGRESS_OBJECT (tmp->data),
mail_op);
won't let the user delete the message that has been
readed for example */
check_dimming_rules_after_change (self);
-
}
static void