summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Third <alan@idiocy.org>2021-08-22 21:50:09 +0100
committerAlan Third <alan@idiocy.org>2021-12-22 20:48:19 +0000
commit42601d3a938ee5a12a557840aef11c4d3bb180f6 (patch)
treef1cf9617fafff0e7550baa7c083d197ce81b8b23
parent308ad05d37a2d230c65a8799e193e25f4f8ba540 (diff)
downloademacs-42601d3a938ee5a12a557840aef11c4d3bb180f6.tar.gz
emacs-42601d3a938ee5a12a557840aef11c4d3bb180f6.tar.bz2
emacs-42601d3a938ee5a12a557840aef11c4d3bb180f6.zip
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.
-rw-r--r--src/nsfns.m3
-rw-r--r--src/nsmenu.m16
-rw-r--r--src/nsterm.h4
3 files changed, 11 insertions, 12 deletions
diff --git a/src/nsfns.m b/src/nsfns.m
index 7cb2cf72581..643da01989f 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -3140,6 +3140,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 29201e69079..f42cd387022 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 3413bb1f780..75b31c68f1d 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 */