emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/xmenu.c


From: Ken Raeburn
Subject: [Emacs-diffs] Changes to emacs/src/xmenu.c
Date: Sun, 14 Jul 2002 20:01:02 -0400

Index: emacs/src/xmenu.c
diff -c emacs/src/xmenu.c:1.232 emacs/src/xmenu.c:1.233
*** emacs/src/xmenu.c:1.232     Thu Jul 11 10:17:28 2002
--- emacs/src/xmenu.c   Sun Jul 14 20:00:41 2002
***************
*** 505,511 ****
    enabled = XVECTOR (item_properties)->contents[ITEM_PROPERTY_ENABLE];
    item_string = XVECTOR (item_properties)->contents[ITEM_PROPERTY_NAME]; 
  
!   if (!NILP (map) && XSTRING (item_string)->data[0] == '@')
      {
        if (!NILP (enabled))
        /* An enabled separate pane. Remember this to handle it later.  */
--- 505,511 ----
    enabled = XVECTOR (item_properties)->contents[ITEM_PROPERTY_ENABLE];
    item_string = XVECTOR (item_properties)->contents[ITEM_PROPERTY_NAME]; 
  
!   if (!NILP (map) && SREF (item_string, 0) == '@')
      {
        if (!NILP (enabled))
        /* An enabled separate pane. Remember this to handle it later.  */
***************
*** 551,558 ****
                  index++;              /* Skip a left, right divider. */
                else
                  {
!                   if (!submenu && XSTRING (tem)->data[0] != '\0'
!                       && XSTRING (tem)->data[0] != '-')
                      XVECTOR (menu_items)->contents[index + 
MENU_ITEMS_ITEM_NAME]
                        = concat2 (build_string ("    "), tem);
                    index += MENU_ITEMS_ITEM_LENGTH;
--- 551,558 ----
                  index++;              /* Skip a left, right divider. */
                else
                  {
!                   if (!submenu && SREF (tem, 0) != '\0'
!                       && SREF (tem, 0) != '-')
                      XVECTOR (menu_items)->contents[index + 
MENU_ITEMS_ITEM_NAME]
                        = concat2 (build_string ("    "), tem);
                    index += MENU_ITEMS_ITEM_LENGTH;
***************
*** 568,575 ****
          prefix = build_string (NILP (selected) ? "( ) " : "(*) ");
        }
      /* Not a button. If we have earlier buttons, then we need a prefix.  */
!     else if (!*notbuttons_ptr && XSTRING (item_string)->data[0] != '\0'
!            && XSTRING (item_string)->data[0] != '-')
        prefix = build_string ("    ");
  
      if (!NILP (prefix))
--- 568,575 ----
          prefix = build_string (NILP (selected) ? "( ) " : "(*) ");
        }
      /* Not a button. If we have earlier buttons, then we need a prefix.  */
!     else if (!*notbuttons_ptr && SREF (item_string, 0) != '\0'
!            && SREF (item_string, 0) != '-')
        prefix = build_string ("    ");
  
      if (!NILP (prefix))
***************
*** 1453,1459 ****
            }
  #endif
          pane_string = (NILP (pane_name)
!                        ? "" : (char *) XSTRING (pane_name)->data);
          /* If there is just one top-level pane, put all its items directly
             under the top-level menu.  */
          if (menu_items_n_panes == 1)
--- 1453,1459 ----
            }
  #endif
          pane_string = (NILP (pane_name)
!                        ? "" : (char *) SDATA (pane_name));
          /* If there is just one top-level pane, put all its items directly
             under the top-level menu.  */
          if (menu_items_n_panes == 1)
***************
*** 1517,1525 ****
          else
            save_wv->contents = wv;
  
!         wv->name = (char *) XSTRING (item_name)->data;
          if (!NILP (descrip))
!           wv->key = (char *) XSTRING (descrip)->data;
          wv->value = 0;
          /* The EMACS_INT cast avoids a warning.  There's no problem
             as long as pointers have enough bits to hold small integers.  */
--- 1517,1525 ----
          else
            save_wv->contents = wv;
  
!         wv->name = (char *) SDATA (item_name);
          if (!NILP (descrip))
!           wv->key = (char *) SDATA (descrip);
          wv->value = 0;
          /* The EMACS_INT cast avoids a warning.  There's no problem
             as long as pointers have enough bits to hold small integers.  */
***************
*** 1753,1759 ****
          string = XVECTOR (items)->contents[i + 1];
          if (NILP (string))
            break;
!         wv->name = (char *) XSTRING (string)->data;
          wv = wv->next;
        }
  
--- 1753,1759 ----
          string = XVECTOR (items)->contents[i + 1];
          if (NILP (string))
            break;
!         wv->name = (char *) SDATA (string);
          wv = wv->next;
        }
  
***************
*** 1776,1782 ****
            break;
  
          wv = xmalloc_widget_value ();
!         wv->name = (char *) XSTRING (string)->data;
          wv->value = 0;
          wv->enabled = 1;
          wv->button_type = BUTTON_TYPE_NONE;
--- 1776,1782 ----
            break;
  
          wv = xmalloc_widget_value ();
!         wv->name = (char *) SDATA (string);
          wv->value = 0;
          wv->enabled = 1;
          wv->button_type = BUTTON_TYPE_NONE;
***************
*** 2051,2057 ****
            }
  #endif
          pane_string = (NILP (pane_name)
!                        ? "" : (char *) XSTRING (pane_name)->data);
          /* If there is just one top-level pane, put all its items directly
             under the top-level menu.  */
          if (menu_items_n_panes == 1)
--- 2051,2057 ----
            }
  #endif
          pane_string = (NILP (pane_name)
!                        ? "" : (char *) SDATA (pane_name));
          /* If there is just one top-level pane, put all its items directly
             under the top-level menu.  */
          if (menu_items_n_panes == 1)
***************
*** 2116,2124 ****
            prev_wv->next = wv;
          else 
            save_wv->contents = wv;
!         wv->name = (char *) XSTRING (item_name)->data;
          if (!NILP (descrip))
!           wv->key = (char *) XSTRING (descrip)->data;
          wv->value = 0;
          /* If this item has a null value,
             make the call_data null so that it won't display a box
--- 2116,2124 ----
            prev_wv->next = wv;
          else 
            save_wv->contents = wv;
!         wv->name = (char *) SDATA (item_name);
          if (!NILP (descrip))
!           wv->key = (char *) SDATA (descrip);
          wv->value = 0;
          /* If this item has a null value,
             make the call_data null so that it won't display a box
***************
*** 2169,2175 ****
        title = ENCODE_SYSTEM (title);
  #endif
        
!       wv_title->name = (char *) XSTRING (title)->data;
        wv_title->enabled = TRUE;
        wv_title->button_type = BUTTON_TYPE_NONE;
        wv_title->next = wv_sep1;
--- 2169,2175 ----
        title = ENCODE_SYSTEM (title);
  #endif
        
!       wv_title->name = (char *) SDATA (title);
        wv_title->enabled = TRUE;
        wv_title->button_type = BUTTON_TYPE_NONE;
        wv_title->next = wv_sep1;
***************
*** 2370,2376 ****
      pane_name = XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_NAME];
      prefix = XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_PREFIX];
      pane_string = (NILP (pane_name)
!                  ? "" : (char *) XSTRING (pane_name)->data);  
      prev_wv = xmalloc_widget_value ();
      prev_wv->value = pane_string;
      if (keymaps && !NILP (prefix))
--- 2370,2376 ----
      pane_name = XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_NAME];
      prefix = XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_PREFIX];
      pane_string = (NILP (pane_name)
!                  ? "" : (char *) SDATA (pane_name));  
      prev_wv = xmalloc_widget_value ();
      prev_wv->value = pane_string;
      if (keymaps && !NILP (prefix))
***************
*** 2417,2424 ****
        prev_wv->next = wv;
        wv->name = (char *) button_names[nb_buttons];
        if (!NILP (descrip))
!         wv->key = (char *) XSTRING (descrip)->data;
!       wv->value = (char *) XSTRING (item_name)->data;
        wv->call_data = (void *) &XVECTOR (menu_items)->contents[i];
        wv->enabled = !NILP (enable);
        wv->help = Qnil;
--- 2417,2424 ----
        prev_wv->next = wv;
        wv->name = (char *) button_names[nb_buttons];
        if (!NILP (descrip))
!         wv->key = (char *) SDATA (descrip);
!       wv->value = (char *) SDATA (item_name);
        wv->call_data = (void *) &XVECTOR (menu_items)->contents[i];
        wv->enabled = !NILP (enable);
        wv->help = Qnil;
***************
*** 2656,2662 ****
          pane_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_NAME];
          prefix = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_PREFIX];
          pane_string = (NILP (pane_name)
!                        ? "" : (char *) XSTRING (pane_name)->data);
          if (keymaps && !NILP (prefix))
            pane_string++;
  
--- 2656,2662 ----
          pane_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_NAME];
          prefix = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_PREFIX];
          pane_string = (NILP (pane_name)
!                        ? "" : (char *) SDATA (pane_name));
          if (keymaps && !NILP (prefix))
            pane_string++;
  
***************
*** 2683,2689 ****
                  j++;
                  continue;
                }
!             width = STRING_BYTES (XSTRING (item));
              if (width > maxwidth)
                maxwidth = width;
  
--- 2683,2689 ----
                  j++;
                  continue;
                }
!             width = SBYTES (item);
              if (width > maxwidth)
                maxwidth = width;
  
***************
*** 2706,2739 ****
          descrip
            = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_EQUIV_KEY];
          help = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_HELP];
!         help_string = STRINGP (help) ? XSTRING (help)->data : NULL;
          
          if (!NILP (descrip))
            {
!             int gap = maxwidth - STRING_BYTES (XSTRING (item_name));
  #ifdef C_ALLOCA
              Lisp_Object spacer;
              spacer = Fmake_string (make_number (gap), make_number (' '));
              item_name = concat2 (item_name, spacer);
              item_name = concat2 (item_name, descrip);
!             item_data = XSTRING (item_name)->data;
  #else
              /* if alloca is fast, use that to make the space,
                 to reduce gc needs.  */
              item_data
                = (unsigned char *) alloca (maxwidth
!                                           + STRING_BYTES (XSTRING (descrip)) 
+ 1);
!             bcopy (XSTRING (item_name)->data, item_data,
!                    STRING_BYTES (XSTRING (item_name)));
!             for (j = XSTRING (item_name)->size; j < maxwidth; j++)
                item_data[j] = ' ';
!             bcopy (XSTRING (descrip)->data, item_data + j,
!                    STRING_BYTES (XSTRING (descrip)));
!             item_data[j + STRING_BYTES (XSTRING (descrip))] = 0;
  #endif
            }
          else
!           item_data = XSTRING (item_name)->data;
  
          if (XMenuAddSelection (FRAME_X_DISPLAY (f),
                                 menu, lpane, 0, item_data,
--- 2706,2739 ----
          descrip
            = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_EQUIV_KEY];
          help = XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_HELP];
!         help_string = STRINGP (help) ? SDATA (help) : NULL;
          
          if (!NILP (descrip))
            {
!             int gap = maxwidth - SBYTES (item_name);
  #ifdef C_ALLOCA
              Lisp_Object spacer;
              spacer = Fmake_string (make_number (gap), make_number (' '));
              item_name = concat2 (item_name, spacer);
              item_name = concat2 (item_name, descrip);
!             item_data = SDATA (item_name);
  #else
              /* if alloca is fast, use that to make the space,
                 to reduce gc needs.  */
              item_data
                = (unsigned char *) alloca (maxwidth
!                                           + SBYTES (descrip) + 1);
!             bcopy (SDATA (item_name), item_data,
!                    SBYTES (item_name));
!             for (j = SCHARS (item_name); j < maxwidth; j++)
                item_data[j] = ' ';
!             bcopy (SDATA (descrip), item_data + j,
!                    SBYTES (descrip));
!             item_data[j + SBYTES (descrip)] = 0;
  #endif
            }
          else
!           item_data = SDATA (item_name);
  
          if (XMenuAddSelection (FRAME_X_DISPLAY (f),
                                 menu, lpane, 0, item_data,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]