Mercurial > emacs
comparison src/xmenu.c @ 46370:40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
SCHARS, SBYTES, STRING_INTERVALS, SREF, SDATA; explicit size_byte references
left unchanged for now.
author | Ken Raeburn <raeburn@raeburn.org> |
---|---|
date | Mon, 15 Jul 2002 00:00:41 +0000 |
parents | 1fb8f75062c6 |
children | 5e95e401d481 |
comparison
equal
deleted
inserted
replaced
46369:dd1d3b1d0053 | 46370:40db0673e6f0 |
---|---|
503 } | 503 } |
504 | 504 |
505 enabled = XVECTOR (item_properties)->contents[ITEM_PROPERTY_ENABLE]; | 505 enabled = XVECTOR (item_properties)->contents[ITEM_PROPERTY_ENABLE]; |
506 item_string = XVECTOR (item_properties)->contents[ITEM_PROPERTY_NAME]; | 506 item_string = XVECTOR (item_properties)->contents[ITEM_PROPERTY_NAME]; |
507 | 507 |
508 if (!NILP (map) && XSTRING (item_string)->data[0] == '@') | 508 if (!NILP (map) && SREF (item_string, 0) == '@') |
509 { | 509 { |
510 if (!NILP (enabled)) | 510 if (!NILP (enabled)) |
511 /* An enabled separate pane. Remember this to handle it later. */ | 511 /* An enabled separate pane. Remember this to handle it later. */ |
512 *pending_maps_ptr = Fcons (Fcons (map, Fcons (item_string, key)), | 512 *pending_maps_ptr = Fcons (Fcons (map, Fcons (item_string, key)), |
513 *pending_maps_ptr); | 513 *pending_maps_ptr); |
549 index += 3; /* Skip new pane marker. */ | 549 index += 3; /* Skip new pane marker. */ |
550 else if (EQ (tem, Qquote)) | 550 else if (EQ (tem, Qquote)) |
551 index++; /* Skip a left, right divider. */ | 551 index++; /* Skip a left, right divider. */ |
552 else | 552 else |
553 { | 553 { |
554 if (!submenu && XSTRING (tem)->data[0] != '\0' | 554 if (!submenu && SREF (tem, 0) != '\0' |
555 && XSTRING (tem)->data[0] != '-') | 555 && SREF (tem, 0) != '-') |
556 XVECTOR (menu_items)->contents[index + MENU_ITEMS_ITEM_NAME] | 556 XVECTOR (menu_items)->contents[index + MENU_ITEMS_ITEM_NAME] |
557 = concat2 (build_string (" "), tem); | 557 = concat2 (build_string (" "), tem); |
558 index += MENU_ITEMS_ITEM_LENGTH; | 558 index += MENU_ITEMS_ITEM_LENGTH; |
559 } | 559 } |
560 } | 560 } |
566 prefix = build_string (NILP (selected) ? "[ ] " : "[X] "); | 566 prefix = build_string (NILP (selected) ? "[ ] " : "[X] "); |
567 else if (EQ (type, QCradio)) | 567 else if (EQ (type, QCradio)) |
568 prefix = build_string (NILP (selected) ? "( ) " : "(*) "); | 568 prefix = build_string (NILP (selected) ? "( ) " : "(*) "); |
569 } | 569 } |
570 /* Not a button. If we have earlier buttons, then we need a prefix. */ | 570 /* Not a button. If we have earlier buttons, then we need a prefix. */ |
571 else if (!*notbuttons_ptr && XSTRING (item_string)->data[0] != '\0' | 571 else if (!*notbuttons_ptr && SREF (item_string, 0) != '\0' |
572 && XSTRING (item_string)->data[0] != '-') | 572 && SREF (item_string, 0) != '-') |
573 prefix = build_string (" "); | 573 prefix = build_string (" "); |
574 | 574 |
575 if (!NILP (prefix)) | 575 if (!NILP (prefix)) |
576 item_string = concat2 (prefix, item_string); | 576 item_string = concat2 (prefix, item_string); |
577 } | 577 } |
1451 pane_name = ENCODE_SYSTEM (pane_name); | 1451 pane_name = ENCODE_SYSTEM (pane_name); |
1452 AREF (menu_items, i + MENU_ITEMS_PANE_NAME) = pane_name; | 1452 AREF (menu_items, i + MENU_ITEMS_PANE_NAME) = pane_name; |
1453 } | 1453 } |
1454 #endif | 1454 #endif |
1455 pane_string = (NILP (pane_name) | 1455 pane_string = (NILP (pane_name) |
1456 ? "" : (char *) XSTRING (pane_name)->data); | 1456 ? "" : (char *) SDATA (pane_name)); |
1457 /* If there is just one top-level pane, put all its items directly | 1457 /* If there is just one top-level pane, put all its items directly |
1458 under the top-level menu. */ | 1458 under the top-level menu. */ |
1459 if (menu_items_n_panes == 1) | 1459 if (menu_items_n_panes == 1) |
1460 pane_string = ""; | 1460 pane_string = ""; |
1461 | 1461 |
1515 if (prev_wv) | 1515 if (prev_wv) |
1516 prev_wv->next = wv; | 1516 prev_wv->next = wv; |
1517 else | 1517 else |
1518 save_wv->contents = wv; | 1518 save_wv->contents = wv; |
1519 | 1519 |
1520 wv->name = (char *) XSTRING (item_name)->data; | 1520 wv->name = (char *) SDATA (item_name); |
1521 if (!NILP (descrip)) | 1521 if (!NILP (descrip)) |
1522 wv->key = (char *) XSTRING (descrip)->data; | 1522 wv->key = (char *) SDATA (descrip); |
1523 wv->value = 0; | 1523 wv->value = 0; |
1524 /* The EMACS_INT cast avoids a warning. There's no problem | 1524 /* The EMACS_INT cast avoids a warning. There's no problem |
1525 as long as pointers have enough bits to hold small integers. */ | 1525 as long as pointers have enough bits to hold small integers. */ |
1526 wv->call_data = (!NILP (def) ? (void *) (EMACS_INT) i : 0); | 1526 wv->call_data = (!NILP (def) ? (void *) (EMACS_INT) i : 0); |
1527 wv->enabled = !NILP (enable); | 1527 wv->enabled = !NILP (enable); |
1751 { | 1751 { |
1752 Lisp_Object string; | 1752 Lisp_Object string; |
1753 string = XVECTOR (items)->contents[i + 1]; | 1753 string = XVECTOR (items)->contents[i + 1]; |
1754 if (NILP (string)) | 1754 if (NILP (string)) |
1755 break; | 1755 break; |
1756 wv->name = (char *) XSTRING (string)->data; | 1756 wv->name = (char *) SDATA (string); |
1757 wv = wv->next; | 1757 wv = wv->next; |
1758 } | 1758 } |
1759 | 1759 |
1760 f->menu_bar_vector = menu_items; | 1760 f->menu_bar_vector = menu_items; |
1761 f->menu_bar_items_used = menu_items_used; | 1761 f->menu_bar_items_used = menu_items_used; |
1774 string = XVECTOR (items)->contents[i + 1]; | 1774 string = XVECTOR (items)->contents[i + 1]; |
1775 if (NILP (string)) | 1775 if (NILP (string)) |
1776 break; | 1776 break; |
1777 | 1777 |
1778 wv = xmalloc_widget_value (); | 1778 wv = xmalloc_widget_value (); |
1779 wv->name = (char *) XSTRING (string)->data; | 1779 wv->name = (char *) SDATA (string); |
1780 wv->value = 0; | 1780 wv->value = 0; |
1781 wv->enabled = 1; | 1781 wv->enabled = 1; |
1782 wv->button_type = BUTTON_TYPE_NONE; | 1782 wv->button_type = BUTTON_TYPE_NONE; |
1783 wv->help = Qnil; | 1783 wv->help = Qnil; |
1784 /* This prevents lwlib from assuming this | 1784 /* This prevents lwlib from assuming this |
2049 pane_name = ENCODE_SYSTEM (pane_name); | 2049 pane_name = ENCODE_SYSTEM (pane_name); |
2050 AREF (menu_items, i + MENU_ITEMS_PANE_NAME) = pane_name; | 2050 AREF (menu_items, i + MENU_ITEMS_PANE_NAME) = pane_name; |
2051 } | 2051 } |
2052 #endif | 2052 #endif |
2053 pane_string = (NILP (pane_name) | 2053 pane_string = (NILP (pane_name) |
2054 ? "" : (char *) XSTRING (pane_name)->data); | 2054 ? "" : (char *) SDATA (pane_name)); |
2055 /* If there is just one top-level pane, put all its items directly | 2055 /* If there is just one top-level pane, put all its items directly |
2056 under the top-level menu. */ | 2056 under the top-level menu. */ |
2057 if (menu_items_n_panes == 1) | 2057 if (menu_items_n_panes == 1) |
2058 pane_string = ""; | 2058 pane_string = ""; |
2059 | 2059 |
2114 wv = xmalloc_widget_value (); | 2114 wv = xmalloc_widget_value (); |
2115 if (prev_wv) | 2115 if (prev_wv) |
2116 prev_wv->next = wv; | 2116 prev_wv->next = wv; |
2117 else | 2117 else |
2118 save_wv->contents = wv; | 2118 save_wv->contents = wv; |
2119 wv->name = (char *) XSTRING (item_name)->data; | 2119 wv->name = (char *) SDATA (item_name); |
2120 if (!NILP (descrip)) | 2120 if (!NILP (descrip)) |
2121 wv->key = (char *) XSTRING (descrip)->data; | 2121 wv->key = (char *) SDATA (descrip); |
2122 wv->value = 0; | 2122 wv->value = 0; |
2123 /* If this item has a null value, | 2123 /* If this item has a null value, |
2124 make the call_data null so that it won't display a box | 2124 make the call_data null so that it won't display a box |
2125 when the mouse is on it. */ | 2125 when the mouse is on it. */ |
2126 wv->call_data | 2126 wv->call_data |
2167 #ifndef HAVE_MULTILINGUAL_MENU | 2167 #ifndef HAVE_MULTILINGUAL_MENU |
2168 if (STRING_MULTIBYTE (title)) | 2168 if (STRING_MULTIBYTE (title)) |
2169 title = ENCODE_SYSTEM (title); | 2169 title = ENCODE_SYSTEM (title); |
2170 #endif | 2170 #endif |
2171 | 2171 |
2172 wv_title->name = (char *) XSTRING (title)->data; | 2172 wv_title->name = (char *) SDATA (title); |
2173 wv_title->enabled = TRUE; | 2173 wv_title->enabled = TRUE; |
2174 wv_title->button_type = BUTTON_TYPE_NONE; | 2174 wv_title->button_type = BUTTON_TYPE_NONE; |
2175 wv_title->next = wv_sep1; | 2175 wv_title->next = wv_sep1; |
2176 wv_title->help = Qnil; | 2176 wv_title->help = Qnil; |
2177 first_wv->contents = wv_title; | 2177 first_wv->contents = wv_title; |
2368 Lisp_Object pane_name, prefix; | 2368 Lisp_Object pane_name, prefix; |
2369 char *pane_string; | 2369 char *pane_string; |
2370 pane_name = XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_NAME]; | 2370 pane_name = XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_NAME]; |
2371 prefix = XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_PREFIX]; | 2371 prefix = XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_PREFIX]; |
2372 pane_string = (NILP (pane_name) | 2372 pane_string = (NILP (pane_name) |
2373 ? "" : (char *) XSTRING (pane_name)->data); | 2373 ? "" : (char *) SDATA (pane_name)); |
2374 prev_wv = xmalloc_widget_value (); | 2374 prev_wv = xmalloc_widget_value (); |
2375 prev_wv->value = pane_string; | 2375 prev_wv->value = pane_string; |
2376 if (keymaps && !NILP (prefix)) | 2376 if (keymaps && !NILP (prefix)) |
2377 prev_wv->name++; | 2377 prev_wv->name++; |
2378 prev_wv->enabled = 1; | 2378 prev_wv->enabled = 1; |
2415 | 2415 |
2416 wv = xmalloc_widget_value (); | 2416 wv = xmalloc_widget_value (); |
2417 prev_wv->next = wv; | 2417 prev_wv->next = wv; |
2418 wv->name = (char *) button_names[nb_buttons]; | 2418 wv->name = (char *) button_names[nb_buttons]; |
2419 if (!NILP (descrip)) | 2419 if (!NILP (descrip)) |
2420 wv->key = (char *) XSTRING (descrip)->data; | 2420 wv->key = (char *) SDATA (descrip); |
2421 wv->value = (char *) XSTRING (item_name)->data; | 2421 wv->value = (char *) SDATA (item_name); |
2422 wv->call_data = (void *) &XVECTOR (menu_items)->contents[i]; | 2422 wv->call_data = (void *) &XVECTOR (menu_items)->contents[i]; |
2423 wv->enabled = !NILP (enable); | 2423 wv->enabled = !NILP (enable); |
2424 wv->help = Qnil; | 2424 wv->help = Qnil; |
2425 prev_wv = wv; | 2425 prev_wv = wv; |
2426 | 2426 |
2654 char *pane_string; | 2654 char *pane_string; |
2655 | 2655 |
2656 pane_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_NAME]; | 2656 pane_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_NAME]; |
2657 prefix = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_PREFIX]; | 2657 prefix = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_PREFIX]; |
2658 pane_string = (NILP (pane_name) | 2658 pane_string = (NILP (pane_name) |
2659 ? "" : (char *) XSTRING (pane_name)->data); | 2659 ? "" : (char *) SDATA (pane_name)); |
2660 if (keymaps && !NILP (prefix)) | 2660 if (keymaps && !NILP (prefix)) |
2661 pane_string++; | 2661 pane_string++; |
2662 | 2662 |
2663 lpane = XMenuAddPane (FRAME_X_DISPLAY (f), menu, pane_string, TRUE); | 2663 lpane = XMenuAddPane (FRAME_X_DISPLAY (f), menu, pane_string, TRUE); |
2664 if (lpane == XM_FAILURE) | 2664 if (lpane == XM_FAILURE) |
2681 if (NILP (item)) | 2681 if (NILP (item)) |
2682 { | 2682 { |
2683 j++; | 2683 j++; |
2684 continue; | 2684 continue; |
2685 } | 2685 } |
2686 width = STRING_BYTES (XSTRING (item)); | 2686 width = SBYTES (item); |
2687 if (width > maxwidth) | 2687 if (width > maxwidth) |
2688 maxwidth = width; | 2688 maxwidth = width; |
2689 | 2689 |
2690 j += MENU_ITEMS_ITEM_LENGTH; | 2690 j += MENU_ITEMS_ITEM_LENGTH; |
2691 } | 2691 } |
2704 item_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_NAME]; | 2704 item_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_NAME]; |
2705 enable = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_ENABLE]; | 2705 enable = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_ENABLE]; |
2706 descrip | 2706 descrip |
2707 = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_EQUIV_KEY]; | 2707 = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_EQUIV_KEY]; |
2708 help = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_HELP]; | 2708 help = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_HELP]; |
2709 help_string = STRINGP (help) ? XSTRING (help)->data : NULL; | 2709 help_string = STRINGP (help) ? SDATA (help) : NULL; |
2710 | 2710 |
2711 if (!NILP (descrip)) | 2711 if (!NILP (descrip)) |
2712 { | 2712 { |
2713 int gap = maxwidth - STRING_BYTES (XSTRING (item_name)); | 2713 int gap = maxwidth - SBYTES (item_name); |
2714 #ifdef C_ALLOCA | 2714 #ifdef C_ALLOCA |
2715 Lisp_Object spacer; | 2715 Lisp_Object spacer; |
2716 spacer = Fmake_string (make_number (gap), make_number (' ')); | 2716 spacer = Fmake_string (make_number (gap), make_number (' ')); |
2717 item_name = concat2 (item_name, spacer); | 2717 item_name = concat2 (item_name, spacer); |
2718 item_name = concat2 (item_name, descrip); | 2718 item_name = concat2 (item_name, descrip); |
2719 item_data = XSTRING (item_name)->data; | 2719 item_data = SDATA (item_name); |
2720 #else | 2720 #else |
2721 /* if alloca is fast, use that to make the space, | 2721 /* if alloca is fast, use that to make the space, |
2722 to reduce gc needs. */ | 2722 to reduce gc needs. */ |
2723 item_data | 2723 item_data |
2724 = (unsigned char *) alloca (maxwidth | 2724 = (unsigned char *) alloca (maxwidth |
2725 + STRING_BYTES (XSTRING (descrip)) + 1); | 2725 + SBYTES (descrip) + 1); |
2726 bcopy (XSTRING (item_name)->data, item_data, | 2726 bcopy (SDATA (item_name), item_data, |
2727 STRING_BYTES (XSTRING (item_name))); | 2727 SBYTES (item_name)); |
2728 for (j = XSTRING (item_name)->size; j < maxwidth; j++) | 2728 for (j = SCHARS (item_name); j < maxwidth; j++) |
2729 item_data[j] = ' '; | 2729 item_data[j] = ' '; |
2730 bcopy (XSTRING (descrip)->data, item_data + j, | 2730 bcopy (SDATA (descrip), item_data + j, |
2731 STRING_BYTES (XSTRING (descrip))); | 2731 SBYTES (descrip)); |
2732 item_data[j + STRING_BYTES (XSTRING (descrip))] = 0; | 2732 item_data[j + SBYTES (descrip)] = 0; |
2733 #endif | 2733 #endif |
2734 } | 2734 } |
2735 else | 2735 else |
2736 item_data = XSTRING (item_name)->data; | 2736 item_data = SDATA (item_name); |
2737 | 2737 |
2738 if (XMenuAddSelection (FRAME_X_DISPLAY (f), | 2738 if (XMenuAddSelection (FRAME_X_DISPLAY (f), |
2739 menu, lpane, 0, item_data, | 2739 menu, lpane, 0, item_data, |
2740 !NILP (enable), help_string) | 2740 !NILP (enable), help_string) |
2741 == XM_FAILURE) | 2741 == XM_FAILURE) |