]>
Commit | Line | Data |
---|---|---|
a328bbc4 AG |
1 | To: vim-dev@vim.org |
2 | Subject: Patch 7.0.062 | |
3 | Fcc: outbox | |
4 | From: Bram Moolenaar <Bram@moolenaar.net> | |
5 | Mime-Version: 1.0 | |
6 | Content-Type: text/plain; charset=ISO-8859-1 | |
7 | Content-Transfer-Encoding: 8bit | |
8 | ------------ | |
9 | ||
10 | Patch 7.0.062 | |
11 | Problem: Mac: Crash when using the popup menu for spell correction. The | |
12 | popup menu appears twice when letting go of the right mouse button | |
13 | early. | |
14 | Solution: Don't show the popup menu on the release of the right mouse | |
15 | button. Also check that a menu pointer is actually valid. | |
16 | Files: src/proto/menu.pro, src/menu.c, src/normal.c, src/term.c | |
17 | ||
18 | ||
19 | *** ../vim-7.0.061/src/proto/menu.pro Fri Mar 24 23:37:59 2006 | |
20 | --- src/proto/menu.pro Wed Aug 16 20:25:57 2006 | |
21 | *************** | |
22 | *** 10,15 **** | |
23 | --- 10,16 ---- | |
24 | extern int menu_is_child_of_popup __ARGS((vimmenu_T *menu)); | |
25 | extern int menu_is_toolbar __ARGS((char_u *name)); | |
26 | extern int menu_is_separator __ARGS((char_u *name)); | |
27 | + extern int check_menu_pointer __ARGS((vimmenu_T *root, vimmenu_T *menu_to_check)); | |
28 | extern void gui_create_initial_menus __ARGS((vimmenu_T *menu)); | |
29 | extern void gui_update_menus __ARGS((int modes)); | |
30 | extern int gui_is_menu_shortcut __ARGS((int key)); | |
31 | *** ../vim-7.0.061/src/menu.c Wed Aug 16 15:56:58 2006 | |
32 | --- src/menu.c Wed Aug 16 20:35:09 2006 | |
33 | *************** | |
34 | *** 1778,1783 **** | |
35 | --- 1778,1804 ---- | |
36 | } | |
37 | ||
38 | /* | |
39 | + * Check that a pointer appears in the menu tree. Used to protect from using | |
40 | + * a menu that was deleted after it was selected but before the event was | |
41 | + * handled. | |
42 | + * Return OK or FAIL. Used recursively. | |
43 | + */ | |
44 | + int | |
45 | + check_menu_pointer(root, menu_to_check) | |
46 | + vimmenu_T *root; | |
47 | + vimmenu_T *menu_to_check; | |
48 | + { | |
49 | + vimmenu_T *p; | |
50 | + | |
51 | + for (p = root; p != NULL; p = p->next) | |
52 | + if (p == menu_to_check | |
53 | + || (p->children != NULL | |
54 | + && check_menu_pointer(p->children, menu_to_check) == OK)) | |
55 | + return OK; | |
56 | + return FAIL; | |
57 | + } | |
58 | + | |
59 | + /* | |
60 | * After we have started the GUI, then we can create any menus that have been | |
61 | * defined. This is done once here. add_menu_path() may have already been | |
62 | * called to define these menus, and may be called again. This function calls | |
63 | *** ../vim-7.0.061/src/normal.c Sat Apr 29 23:53:55 2006 | |
64 | --- src/normal.c Wed Aug 16 19:54:04 2006 | |
65 | *************** | |
66 | *** 2504,2510 **** | |
67 | * NOTE: Ignore right button down and drag mouse events. | |
68 | * Windows only shows the popup menu on the button up event. | |
69 | */ | |
70 | ! #if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) | |
71 | if (!is_click) | |
72 | return FALSE; | |
73 | #endif | |
74 | --- 2504,2511 ---- | |
75 | * NOTE: Ignore right button down and drag mouse events. | |
76 | * Windows only shows the popup menu on the button up event. | |
77 | */ | |
78 | ! #if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_GTK) \ | |
79 | ! || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC) | |
80 | if (!is_click) | |
81 | return FALSE; | |
82 | #endif | |
83 | *** ../vim-7.0.061/src/term.c Wed May 3 23:26:49 2006 | |
84 | --- src/term.c Wed Aug 16 21:24:21 2006 | |
85 | *************** | |
86 | *** 4783,4788 **** | |
87 | --- 4783,4796 ---- | |
88 | return -1; | |
89 | current_menu = (vimmenu_T *)val; | |
90 | slen += num_bytes; | |
91 | + | |
92 | + /* The menu may have been deleted right after it was used, check | |
93 | + * for that. */ | |
94 | + if (check_menu_pointer(root_menu, current_menu) == FAIL) | |
95 | + { | |
96 | + key_name[0] = KS_EXTRA; | |
97 | + key_name[1] = (int)KE_IGNORE; | |
98 | + } | |
99 | } | |
100 | # endif | |
101 | # ifdef FEAT_GUI_TABLINE | |
102 | *** ../vim-7.0.061/src/version.c Wed Aug 16 21:26:19 2006 | |
103 | --- src/version.c Wed Aug 16 21:40:37 2006 | |
104 | *************** | |
105 | *** 668,669 **** | |
106 | --- 668,671 ---- | |
107 | { /* Add new patch number below this line */ | |
108 | + /**/ | |
109 | + 62, | |
110 | /**/ | |
111 | ||
112 | -- | |
113 | hundred-and-one symptoms of being an internet addict: | |
114 | 166. You have been on your computer soo long that you didn't realize | |
115 | you had grandchildren. | |
116 | ||
117 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | |
118 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | |
119 | \\\ download, build and distribute -- http://www.A-A-P.org /// | |
120 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |