comparison src/menubar-msw.c @ 867:804517e16990

[xemacs-hg @ 2002-06-05 09:54:39 by ben] Textual renaming: text/char names abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, callint.c, casefiddle.c, casetab.c, charset.h, chartab.c, chartab.h, cmds.c, console-gtk.h, console-msw.c, console-msw.h, console-stream.c, console-tty.c, console-x.c, console-x.h, console.h, data.c, device-msw.c, device-x.c, dialog-msw.c, dired-msw.c, dired.c, doc.c, doprnt.c, editfns.c, eldap.c, emodules.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-unixoid.c, events.c, events.h, file-coding.c, file-coding.h, fileio.c, filelock.c, fns.c, font-lock.c, frame-gtk.c, frame-msw.c, frame-x.c, frame.c, glyphs-eimage.c, glyphs-msw.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gui-x.c, gui-x.h, gui.c, gui.h, hpplay.c, indent.c, insdel.c, insdel.h, intl-win32.c, keymap.c, line-number.c, line-number.h, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, md5.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-ccl.c, mule-charset.c, mule-coding.c, mule-wnnfns.c, ndir.h, nt.c, objects-gtk.c, objects-gtk.h, objects-msw.c, objects-tty.c, objects-x.c, objects.c, objects.h, postgresql.c, print.c, process-nt.c, process-unix.c, process.c, procimpl.h, realpath.c, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, redisplay.h, regex.c, search.c, select-common.h, select-gtk.c, select-x.c, sound.h, symbols.c, syntax.c, syntax.h, sysdep.c, sysdep.h, sysdir.h, sysfile.h, sysproc.h, syspwd.h, systime.h, syswindows.h, termcap.c, tests.c, text.c, text.h, toolbar-common.c, tooltalk.c, ui-gtk.c, unexnt.c, unicode.c, win32.c: Text/char naming rationalization. [a] distinguish between "charptr" when it refers to operations on the pointer itself and when it refers to operations on text; and [b] use consistent naming for everything referring to internal format, i.e. Itext == text in internal format Ibyte == a byte in such text Ichar == a char as represented in internal character format thus e.g. set_charptr_emchar -> set_itext_ichar The pre and post tags on either side of this change are: pre-internal-format-textual-renaming post-internal-format-textual-renaming See the Internals Manual for details of exactly how this was done, how to handle the change in your workspace, etc.
author ben
date Wed, 05 Jun 2002 09:58:45 +0000
parents 2b6fa2618f76
children 79c6ff3eef26
comparison
equal deleted inserted replaced
866:613552a02607 867:804517e16990
119 #define MENU_ITEM_ID_BITS(x) (((x) & 0x7FFF) | 0x8000) 119 #define MENU_ITEM_ID_BITS(x) (((x) & 0x7FFF) | 0x8000)
120 static HMENU top_level_menu; 120 static HMENU top_level_menu;
121 121
122 /* 122 /*
123 * Translate X accelerator syntax to win32 accelerator syntax. 123 * Translate X accelerator syntax to win32 accelerator syntax.
124 * accel = (Emchar*) to receive the accelerator character 124 * accel = (Ichar*) to receive the accelerator character
125 * or NULL to suppress accelerators in the menu or dialog item. 125 * or NULL to suppress accelerators in the menu or dialog item.
126 * 126 *
127 * %% is replaced with % 127 * %% is replaced with %
128 * if accel is NULL: 128 * if accel is NULL:
129 * %_ is removed. 129 * %_ is removed.
133 * (If there is no accelerator, it will be added on the first character.) 133 * (If there is no accelerator, it will be added on the first character.)
134 * 134 *
135 */ 135 */
136 136
137 Lisp_Object 137 Lisp_Object
138 mswindows_translate_menu_or_dialog_item (Lisp_Object item, Emchar *accel) 138 mswindows_translate_menu_or_dialog_item (Lisp_Object item, Ichar *accel)
139 { 139 {
140 Bytecount len = XSTRING_LENGTH (item); 140 Bytecount len = XSTRING_LENGTH (item);
141 Intbyte *it = (Intbyte *) ALLOCA (2 * len + 42), *ptr = it; 141 Ibyte *it = (Ibyte *) ALLOCA (2 * len + 42), *ptr = it;
142 142
143 memcpy (ptr, XSTRING_DATA (item), len + 1); 143 memcpy (ptr, XSTRING_DATA (item), len + 1);
144 if (accel) 144 if (accel)
145 *accel = '\0'; 145 *accel = '\0';
146 146
147 /* Escape '&' as '&&' */ 147 /* Escape '&' as '&&' */
148 148
149 while ((ptr = (Intbyte *) memchr (ptr, '&', len - (ptr - it))) != NULL) 149 while ((ptr = (Ibyte *) memchr (ptr, '&', len - (ptr - it))) != NULL)
150 { 150 {
151 memmove (ptr + 1, ptr, (len - (ptr - it)) + 1); 151 memmove (ptr + 1, ptr, (len - (ptr - it)) + 1);
152 len++; 152 len++;
153 ptr += 2; 153 ptr += 2;
154 } 154 }
155 155
156 /* Replace XEmacs accelerator '%_' with Windows accelerator '&' 156 /* Replace XEmacs accelerator '%_' with Windows accelerator '&'
157 and `%%' with `%'. */ 157 and `%%' with `%'. */
158 ptr = it; 158 ptr = it;
159 while ((ptr = (Intbyte *) memchr (ptr, '%', len - (ptr - it))) != NULL) 159 while ((ptr = (Ibyte *) memchr (ptr, '%', len - (ptr - it))) != NULL)
160 { 160 {
161 if (*(ptr + 1) == '_') 161 if (*(ptr + 1) == '_')
162 { 162 {
163 if (accel) 163 if (accel)
164 { 164 {
165 *ptr = '&'; 165 *ptr = '&';
166 if (!*accel) 166 if (!*accel)
167 *accel = DOWNCASE (0, charptr_emchar (ptr + 2)); 167 *accel = DOWNCASE (0, itext_ichar (ptr + 2));
168 memmove (ptr + 1, ptr + 2, len - (ptr - it + 2) + 1); 168 memmove (ptr + 1, ptr + 2, len - (ptr - it + 2) + 1);
169 len--; 169 len--;
170 } 170 }
171 else /* Skip accelerator */ 171 else /* Skip accelerator */
172 { 172 {
187 if (accel && !*accel) 187 if (accel && !*accel)
188 { 188 {
189 /* Force a default accelerator */ 189 /* Force a default accelerator */
190 ptr = it; 190 ptr = it;
191 memmove (ptr + 1, ptr, len + 1); 191 memmove (ptr + 1, ptr, len + 1);
192 *accel = DOWNCASE (0, charptr_emchar (ptr + 1)); 192 *accel = DOWNCASE (0, itext_ichar (ptr + 1));
193 *ptr = '&'; 193 *ptr = '&';
194 194
195 len++; 195 len++;
196 } 196 }
197 197
202 * This returns Windows-style menu item string: 202 * This returns Windows-style menu item string:
203 * "Left Flush\tRight Flush" 203 * "Left Flush\tRight Flush"
204 */ 204 */
205 205
206 static Lisp_Object 206 static Lisp_Object
207 displayable_menu_item (Lisp_Object gui_item, int bar_p, Emchar *accel) 207 displayable_menu_item (Lisp_Object gui_item, int bar_p, Ichar *accel)
208 { 208 {
209 Lisp_Object left, right = Qnil; 209 Lisp_Object left, right = Qnil;
210 210
211 /* Left flush part of the string */ 211 /* Left flush part of the string */
212 left = gui_item_display_flush_left (gui_item); 212 left = gui_item_display_flush_left (gui_item);
334 /* Submenu */ 334 /* Submenu */
335 HMENU submenu; 335 HMENU submenu;
336 Lisp_Object gui_item = allocate_gui_item (); 336 Lisp_Object gui_item = allocate_gui_item ();
337 Lisp_Gui_Item *pgui_item = XGUI_ITEM (gui_item); 337 Lisp_Gui_Item *pgui_item = XGUI_ITEM (gui_item);
338 struct gcpro gcpro1, gcpro2, gcpro3; 338 struct gcpro gcpro1, gcpro2, gcpro3;
339 Emchar accel; 339 Ichar accel;
340 Extbyte *itemext; 340 Extbyte *itemext;
341 341
342 GCPRO3 (gui_item, path, *accel_list); 342 GCPRO3 (gui_item, path, *accel_list);
343 343
344 menu_parse_submenu_keywords (item, gui_item); 344 menu_parse_submenu_keywords (item, gui_item);
392 /* An ordinary item */ 392 /* An ordinary item */
393 Lisp_Object style, id; 393 Lisp_Object style, id;
394 Lisp_Object gui_item = gui_parse_item_keywords (item); 394 Lisp_Object gui_item = gui_parse_item_keywords (item);
395 Lisp_Gui_Item *pgui_item = XGUI_ITEM (gui_item); 395 Lisp_Gui_Item *pgui_item = XGUI_ITEM (gui_item);
396 struct gcpro gcpro1, gcpro2; 396 struct gcpro gcpro1, gcpro2;
397 Emchar accel; 397 Ichar accel;
398 Extbyte *itemext; 398 Extbyte *itemext;
399 399
400 GCPRO2 (gui_item, *accel_list); 400 GCPRO2 (gui_item, *accel_list);
401 401
402 if (!gui_item_included_p (gui_item, Vmenubar_configuration)) 402 if (!gui_item_included_p (gui_item, Vmenubar_configuration))
670 current_hash_table = Qnil; 670 current_hash_table = Qnil;
671 prune_menubar (f); 671 prune_menubar (f);
672 } 672 }
673 673
674 int 674 int
675 mswindows_char_is_accelerator (struct frame *f, Emchar ch) 675 mswindows_char_is_accelerator (struct frame *f, Ichar ch)
676 { 676 {
677 Lisp_Object hash = FRAME_MSWINDOWS_MENU_HASH_TABLE (f); 677 Lisp_Object hash = FRAME_MSWINDOWS_MENU_HASH_TABLE (f);
678 678
679 if (NILP (hash)) 679 if (NILP (hash))
680 return 0; 680 return 0;