emacs-diffs
[Top][All Lists]
Advanced

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

scratch/ns/testing 9eadfb7 5/7: Make NS toolbar use NSString instead of


From: Alan Third
Subject: scratch/ns/testing 9eadfb7 5/7: Make NS toolbar use NSString instead of C strings
Date: Sun, 14 Nov 2021 13:50:27 -0500 (EST)

branch: scratch/ns/testing
commit 9eadfb784469a90cdab110f2ca92460def6ee9b7
Author: Alan Third <alan@idiocy.org>
Commit: Alan Third <alan@idiocy.org>

    Make NS toolbar use NSString instead of C strings
    
    * src/nsfns.m ([NSString stringWithLispString:]): Ensure that the lisp
    object is actually a string.
    * src/nsmenu.m (update_frame_tool_bar): Convert to NSString instead of
    C strings.
    ([EmacsToolbar 
addDisplayItemWithImage:idx:tag:labelText:helpText:enabled:]):
    No need to convert to NSString here anymore.
---
 src/nsfns.m  |  3 +++
 src/nsmenu.m | 16 ++++++----------
 src/nsterm.h |  4 ++--
 3 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/nsfns.m b/src/nsfns.m
index 2df5fef..fcb3156 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -3095,6 +3095,9 @@ all_nonzero_ascii (unsigned char *str, ptrdiff_t n)
    encoded form (e.g. UTF-8).  */
 + (NSString *)stringWithLispString:(Lisp_Object)string
 {
+  if (!STRINGP (string))
+    return nil;
+
   /* Shortcut for the common case.  */
   if (all_nonzero_ascii (SDATA (string), SBYTES (string)))
     return [NSString stringWithCString: SSDATA (string)
diff --git a/src/nsmenu.m b/src/nsmenu.m
index 29201e6..f42cd38 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -1081,9 +1081,7 @@ update_frame_tool_bar_1 (struct frame *f, EmacsToolbar 
*toolbar)
       struct image *img;
       Lisp_Object image;
       Lisp_Object labelObj;
-      const char *labelText;
       Lisp_Object helpObj;
-      const char *helpText;
 
       /* Check if this is a separator.  */
       if (EQ (TOOLPROP (TOOL_BAR_ITEM_TYPE), Qt))
@@ -1109,11 +1107,9 @@ update_frame_tool_bar_1 (struct frame *f, EmacsToolbar 
*toolbar)
           idx = -1;
         }
       labelObj = TOOLPROP (TOOL_BAR_ITEM_LABEL);
-      labelText = NILP (labelObj) ? "" : SSDATA (labelObj);
       helpObj = TOOLPROP (TOOL_BAR_ITEM_HELP);
       if (NILP (helpObj))
         helpObj = TOOLPROP (TOOL_BAR_ITEM_CAPTION);
-      helpText = NILP (helpObj) ? "" : SSDATA (helpObj);
 
       /* Ignore invalid image specifications.  */
       if (!valid_image_p (image))
@@ -1135,8 +1131,8 @@ update_frame_tool_bar_1 (struct frame *f, EmacsToolbar 
*toolbar)
       [toolbar addDisplayItemWithImage: img->pixmap
                                    idx: k++
                                    tag: i
-                             labelText: labelText
-                              helpText: helpText
+                             labelText: [NSString 
stringWithLispString:labelObj]
+                              helpText: [NSString stringWithLispString:helpObj]
                                enabled: enabled_p];
 #undef TOOLPROP
     }
@@ -1252,8 +1248,8 @@ update_frame_tool_bar (struct frame *f)
 - (void) addDisplayItemWithImage: (EmacsImage *)img
                              idx: (int)idx
                              tag: (int)tag
-                       labelText: (const char *)label
-                        helpText: (const char *)help
+                       labelText: (NSString *)label
+                        helpText: (NSString *)help
                          enabled: (BOOL)enabled
 {
   NSTRACE ("[EmacsToolbar addDisplayItemWithImage: ...]");
@@ -1270,8 +1266,8 @@ update_frame_tool_bar (struct frame *f)
       item = [[[NSToolbarItem alloc] initWithItemIdentifier: identifier]
                autorelease];
       [item setImage: img];
-      [item setLabel: [NSString stringWithUTF8String: label]];
-      [item setToolTip: [NSString stringWithUTF8String: help]];
+      [item setLabel: label];
+      [item setToolTip: help];
       [item setTarget: emacsView];
       [item setAction: @selector (toolbarClicked:)];
       [identifierToItem setObject: item forKey: identifier];
diff --git a/src/nsterm.h b/src/nsterm.h
index 968c0e6..2edaf2a 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -551,8 +551,8 @@ typedef id instancetype;
 - (void) addDisplayItemWithImage: (EmacsImage *)img
                              idx: (int)idx
                              tag: (int)tag
-                       labelText: (const char *)label
-                        helpText: (const char *)help
+                       labelText: (NSString *)label
+                        helpText: (NSString *)help
                          enabled: (BOOL)enabled;
 
 /* delegate methods */



reply via email to

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