gtk_signal_connect(GTK_OBJECT(ctree), "tree_select_row",
GTK_SIGNAL_FUNC(folderview_selected), folderview);
-
gtk_signal_connect_after(GTK_OBJECT(ctree), "tree_expand",
GTK_SIGNAL_FUNC(folderview_tree_expanded),
folderview);
name = " (News)"; break;
default:
name = "";
- break;
}
name = g_strconcat(item->name, name, NULL);
} else
name = g_strdup(item->name);
- break;
}
if (!GTK_CTREE_ROW(node)->expanded &&
BREAK_ON_MODIFIER_KEY();
summary_pass_key_press_event(folderview->summaryview, event);
default:
- break;
}
}
prefs_common.folder_col_total = width;
break;
default:
- break;
}
}
if (item->folder->remove_folder(item->folder, item) < 0) {
alertpanel_error(_("Can't remove the folder `%s'."),
item->path);
+ if (folderview->opened == folderview->selected)
+ summary_show(folderview->summaryview,
+ folderview->summaryview->folder_item,
+ FALSE);
return;
}
acceptable = TRUE;
break;
default:
- break;
}
}
}
const gchar *ref,
const gchar *mailbox,
GPtrArray *argbuf);
+static gint imap_cmd_do_select (SockInfo *sock,
+ const gchar *folder,
+ gboolean examine,
+ gint *exists,
+ gint *recent,
+ gint *unseen,
+ guint32 *uid_validity);
static gint imap_cmd_select (SockInfo *sock,
const gchar *folder,
gint *exists,
gint *recent,
gint *unseen,
guint32 *uid_validity);
+static gint imap_cmd_examine (SockInfo *sock,
+ const gchar *folder,
+ gint *exists,
+ gint *recent,
+ gint *unseen,
+ guint32 *uid_validity);
static gint imap_cmd_create (SockInfo *sock,
const gchar *folder);
static gint imap_cmd_delete (SockInfo *sock,
gint ok;
IMAPSession *session;
gchar *path;
+ gint exists, recent, unseen;
+ guint32 uid_validity;
g_return_val_if_fail(folder != NULL, -1);
g_return_val_if_fail(item != NULL, -1);
if (!session) return -1;
path = imap_get_real_path(IMAP_FOLDER(folder), item->path);
+
+ ok = imap_cmd_examine(SESSION(session)->sock, "INBOX",
+ &exists, &recent, &unseen, &uid_validity);
+ statusbar_pop_all();
+ if (ok != IMAP_SUCCESS) {
+ g_free(path);
+ return -1;
+ }
+
ok = imap_cmd_delete(SESSION(session)->sock, path);
statusbar_pop_all();
if (ok != IMAP_SUCCESS) {
#define THROW goto catch
-static gint imap_cmd_select(SockInfo *sock, const gchar *folder,
- gint *exists, gint *recent, gint *unseen,
- guint32 *uid_validity)
+static gint imap_cmd_do_select(SockInfo *sock, const gchar *folder,
+ gboolean examine,
+ gint *exists, gint *recent, gint *unseen,
+ guint32 *uid_validity)
{
gint ok;
gchar *resp_str;
GPtrArray *argbuf;
+ gchar *select_cmd;
*exists = *recent = *unseen = *uid_validity = 0;
argbuf = g_ptr_array_new();
+ if (examine)
+ select_cmd = "EXAMINE";
+ else
+ select_cmd = "SELECT";
+
if (strchr(folder, ' ') != NULL)
- imap_cmd_gen_send(sock, "SELECT \"%s\"", folder);
+ imap_cmd_gen_send(sock, "%s \"%s\"", select_cmd, folder);
else
- imap_cmd_gen_send(sock, "SELECT %s", folder);
+ imap_cmd_gen_send(sock, "%s %s", select_cmd, folder);
if ((ok = imap_cmd_ok(sock, argbuf)) != IMAP_SUCCESS) THROW;
return ok;
}
+static gint imap_cmd_select(SockInfo *sock, const gchar *folder,
+ gint *exists, gint *recent, gint *unseen,
+ guint32 *uid_validity)
+{
+ return imap_cmd_do_select(sock, folder, FALSE,
+ exists, recent, unseen, uid_validity);
+}
+
+static gint imap_cmd_examine(SockInfo *sock, const gchar *folder,
+ gint *exists, gint *recent, gint *unseen,
+ guint32 *uid_validity)
+{
+ return imap_cmd_do_select(sock, folder, TRUE,
+ exists, recent, unseen, uid_validity);
+}
+
#undef THROW
static gint imap_cmd_create(SockInfo *sock, const gchar *folder)