-+ if (menu->is_mailbox_list && last_position >= 0)
-+ menu->current = last_position;
++ if ( menu->max && menu->is_mailbox_list ) {
++ if ( last_position > (menu->max-1) ) {
++ last_position = -1;
++ } else if (last_position >= 0) {
++ menu->current = last_position;
++ }
++ }
{
+ menu->is_mailbox_list = 0;
strfcpy (path, LastDir, sizeof (path));
{
+ menu->is_mailbox_list = 0;
strfcpy (path, LastDir, sizeof (path));
-- if (state->imap_browse && option (OPTIMAPLSUB))
-- snprintf (title, titlelen, _("Subscribed [%s], File mask: %s"),
-- path, NONULL (Mask.pattern));
-- else
-+ if (state->imap_browse && option (OPTIMAPLSUB))
-+ snprintf (title, titlelen, _("Subscribed [%s], File mask: %s"),
-+ path, NONULL (Mask.pattern));
-+ else
+@@ -537,8 +542,22 @@
+ path, NONULL (Mask.pattern));
+ else
#endif
- snprintf (title, titlelen, _("Directory [%s], File mask: %s"),
- path, NONULL(Mask.pattern));
#endif
- snprintf (title, titlelen, _("Directory [%s], File mask: %s"),
- path, NONULL(Mask.pattern));
-+ {
-+ char *p = strrchr (OldLastDir, '/');
-+ if (p && p - OldLastDir == mutt_strlen (LastDir) &&
-+ mutt_strncmp (LastDir, OldLastDir, p - OldLastDir) == 0)
-+ {
-+ /* If we get here, it means that LastDir is the parent directory of
-+ * OldLastDir. I.e., we're returning from a subdirectory, and we want
-+ * to position the cursor on the directory we're returning from. */
-+ int i;
-+ for (i = 0; i < state->entrymax; i++)
-+ if (mutt_strcmp (state->entry[i].name, p + 1) == 0)
-+ menu->current = i;
-+ }
-+ snprintf (title, titlelen, _("Directory [%s], File mask: %s"),
-+ path, NONULL(Mask.pattern));
-+ }
-+
++ {
++ char *p = strrchr (OldLastDir, '/');
++ if (p && p - OldLastDir == mutt_strlen (LastDir) &&
++ mutt_strncmp (LastDir, OldLastDir, p - OldLastDir) == 0)
++ {
++ /* If we get here, it means that LastDir is the parent directory of
++ * OldLastDir. I.e., we're returning from a subdirectory, and we want
++ * to position the cursor on the directory we're returning from. */
++ int i;
++ for (i = 0; i < state->entrymax; i++)
++ if (mutt_strcmp (state->entry[i].name, p + 1) == 0)
++ menu->current = i;
++ }
++ snprintf (title, titlelen, _("Directory [%s], File mask: %s"),
++ path, NONULL(Mask.pattern));
++ }
int offset; /* which screen row to start the index */
int pagelen; /* number of entries per screen */
int tagprefix;
int offset; /* which screen row to start the index */
int pagelen; /* number of entries per screen */
int tagprefix;
/* Setting dialog != NULL overrides normal menu behaviour.
* In dialog mode menubar is hidden and prompt keys are checked before
/* Setting dialog != NULL overrides normal menu behaviour.
* In dialog mode menubar is hidden and prompt keys are checked before