]> git.llucax.com Git - software/mutt-debian.git/blob - debian/patches/not-applied/patch-1.5.8.hr.sensible_browser_position.3
Import mutt_1.5.11+cvs20060330-1
[software/mutt-debian.git] / debian / patches / not-applied / patch-1.5.8.hr.sensible_browser_position.3
1 Anyway, here's patch-1.5.8.hr.sensible_browser_position.3:
2
3 --- mutt-1.5.8/menu.c.orig      2005-02-12 21:01:55.000000000 +0100
4 +++ mutt-1.5.8/menu.c   2005-03-09 16:39:49.000000000 +0100
5 @@ -841,8 +841,12 @@
6  
7  int mutt_menuLoop (MUTTMENU *menu)
8  {
9 +  static int last_position = -1;
10    int i = OP_NULL;
11  
12 +  if (menu->is_mailbox_list && last_position >= 0)
13 +    menu->current = last_position;
14 +
15    FOREVER
16    {
17      if (option (OPTMENUCALLER))
18 @@ -1068,6 +1072,8 @@
19         break;
20  
21        default:
22 +       if (menu->is_mailbox_list)
23 +         last_position = menu->current;
24         return (i);
25      }
26    }
27 --- mutt-1.5.8/browser.c.orig   2005-02-03 19:47:52.000000000 +0100
28 +++ mutt-1.5.8/browser.c        2005-03-09 16:48:31.000000000 +0100
29 @@ -54,6 +54,7 @@
30    int num;
31  } FOLDER;
32  
33 +static char OldLastDir[_POSIX_PATH_MAX] = "";
34  static char LastDir[_POSIX_PATH_MAX] = "";
35  static char LastDirBackup[_POSIX_PATH_MAX] = "";
36  
37 @@ -498,19 +499,38 @@
38    menu->tagged = 0;
39    
40    if (buffy)
41 +  {
42 +    menu->is_mailbox_list = 1;
43      snprintf (title, titlelen, _("Mailboxes [%d]"), mutt_buffy_check (0));
44 +  }
45    else
46    {
47 +    menu->is_mailbox_list = 0;
48      strfcpy (path, LastDir, sizeof (path));
49      mutt_pretty_mailbox (path);
50  #ifdef USE_IMAP
51 -  if (state->imap_browse && option (OPTIMAPLSUB))
52 -    snprintf (title, titlelen, _("Subscribed [%s], File mask: %s"),
53 -             path, NONULL (Mask.pattern));
54 -  else
55 +    if (state->imap_browse && option (OPTIMAPLSUB))
56 +      snprintf (title, titlelen, _("Subscribed [%s], File mask: %s"),
57 +               path, NONULL (Mask.pattern));
58 +    else
59  #endif
60 -    snprintf (title, titlelen, _("Directory [%s], File mask: %s"),
61 -             path, NONULL(Mask.pattern));
62 +    {
63 +      char *p = strrchr (OldLastDir, '/');
64 +      if (p && p - OldLastDir == mutt_strlen (LastDir) &&
65 +         mutt_strncmp (LastDir, OldLastDir, p - OldLastDir) == 0)
66 +      {
67 +       /* If we get here, it means that LastDir is the parent directory of
68 +        * OldLastDir.  I.e., we're returning from a subdirectory, and we want
69 +        * to position the cursor on the directory we're returning from. */
70 +       int i;
71 +       for (i = 0; i < state->entrymax; i++)
72 +         if (mutt_strcmp (state->entry[i].name, p + 1) == 0)
73 +           menu->current = i;
74 +      }
75 +      snprintf (title, titlelen, _("Directory [%s], File mask: %s"),
76 +               path, NONULL(Mask.pattern));
77 +    }
78 +
79    }
80    menu->redraw = REDRAW_FULL;
81  }
82 @@ -685,7 +705,6 @@
83  #endif
84             )
85           {
86 -           char OldLastDir[_POSIX_PATH_MAX];
87  
88             /* save the old directory */
89             strfcpy (OldLastDir, LastDir, sizeof (OldLastDir));
90 --- mutt-1.5.8/mutt_menu.h.orig 2003-10-04 21:29:27.000000000 +0200
91 +++ mutt-1.5.8/mutt_menu.h      2005-03-09 16:39:49.000000000 +0100
92 @@ -46,6 +46,7 @@
93    int offset;  /* which screen row to start the index */
94    int pagelen; /* number of entries per screen */
95    int tagprefix;
96 +  int is_mailbox_list;
97  
98    /* Setting dialog != NULL overrides normal menu behaviour. 
99     * In dialog mode menubar is hidden and prompt keys are checked before
100