- }
- CurBuffy++;
- break;
- } /* the fall-through is intentional */
- case OP_SIDEBAR_NEXT_NEW:
- if ((i = exist_next_new ()) < 0) {
- mutt_error (_("No next mailboxes with new mail."));
- return;
- }
- else
- CurBuffy = i;
- break;
- case OP_SIDEBAR_PREV:
- if (!option (OPTSIDEBARNEWMAILONLY)) {
- if (CurBuffy == 0) {
- mutt_error (_("You are on the first mailbox."));
+
+ switch (op) {
+ case OP_SIDEBAR_NEXT:
+ if (!option(OPTSIDEBARNEWMAILONLY)) {
+ CurBuffy = (CurBuffy + 1) % Incoming.len;
+ break;
+ }
+ /* FALLTHROUGH */
+ case OP_SIDEBAR_NEXT_NEW:
+ for (int i = 1; i < Incoming.len; i++) {
+ if (Incoming.arr[(CurBuffy + i) % Incoming.len]->new > 0) {
+ CurBuffy = (CurBuffy + i) % Incoming.len;
+ break;
+ }
+ }
+ break;
+
+ case OP_SIDEBAR_PREV:
+ if (!option(OPTSIDEBARNEWMAILONLY)) {
+ if (!CurBuffy) {
+ CurBuffy = Incoming.len;
+ }
+ CurBuffy--;
+ break;
+ }
+ /* FALLTHROUGH */
+ case OP_SIDEBAR_PREV_NEW:
+ for (int i = Incoming.len - 1; i > 0; i--) {
+ if (Incoming.arr[(CurBuffy + i) % Incoming.len]->new > 0) {
+ CurBuffy = (CurBuffy + i) % Incoming.len;
+ break;
+ }
+ }
+ break;
+
+ case OP_SIDEBAR_SCROLL_UP:
+ CurBuffy -= LINES - 3;
+ if (CurBuffy < 0)
+ CurBuffy = 0;
+ break;
+ case OP_SIDEBAR_SCROLL_DOWN:
+ CurBuffy += LINES - 3;
+ if (CurBuffy >= Incoming.len)
+ CurBuffy = Incoming.len - 1;
+ break;
+ default: