[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 */
- branch scratch/ns/testing created (now 6ab3dc1), Alan Third, 2021/11/14
- scratch/ns/testing 2dd414a 2/7: Simplify NS color handling, Alan Third, 2021/11/14
- scratch/ns/testing 5e4ba5c 1/7: Only set LANG if the ID is valid, Alan Third, 2021/11/14
- scratch/ns/testing 9eadfb7 5/7: Make NS toolbar use NSString instead of C strings,
Alan Third <=
- scratch/ns/testing 7d2c360 6/7: Make NS toolbar item ID more unique (bug#50160), Alan Third, 2021/11/14
- scratch/ns/testing bc3b8f3 3/7: Further cleanup of NS color code, Alan Third, 2021/11/14
- scratch/ns/testing ee8e8af 4/7: Fix macfont backend color handling, Alan Third, 2021/11/14
- scratch/ns/testing 6ab3dc1 7/7: Allow resizing undecorated frames on macOS (bug#28512, bug#31795), Alan Third, 2021/11/14