Skip to content

Commit

Permalink
Fix GNUstep build warnings
Browse files Browse the repository at this point in the history
* src/nsterm.h ([EmacsWindow orderedIndex]):
* src/nsterm.m ([EmacsWindow orderedIndex]): Implement orderedIndex
for use under GNUstep.
* src/nsmenu.m (free_frame_menubar):
(ns_update_menubar):
([EmacsMenu addSubmenuWithTitle:]):
([EmacsMenu addItemWithWidgetValue:attributes:]): Cast return values
to correct types.
([EmacsMenu fillWithWidgetValue:]): Move variable definition inside
relevant #ifdef block.
([EmacsMenu menuWillOpen:]):
([EmacsMenu menuDidClose:]):
([EmacsMenu confinementRectForMenu:onScreen:]):
([EmacsMenu menu:willHighlightItem:]): New functions to silence build
warnings.
* src/nsfont.m (nsfont_open): Remove pointless fabs call.
  • Loading branch information
alanthird committed Jun 20, 2021
1 parent 9e76815 commit 0bd9e78
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 9 deletions.
2 changes: 1 addition & 1 deletion src/nsfont.m
Expand Up @@ -700,7 +700,7 @@ Properties to be considered are same as for list(). */
when setting family in ns_spec_to_descriptor(). */
if (ns_attribute_fvalue (fontDesc, NSFontWeightTrait) > 0.50F)
traits |= NSBoldFontMask;
if (fabs (ns_attribute_fvalue (fontDesc, NSFontSlantTrait) > 0.05F))
if (ns_attribute_fvalue (fontDesc, NSFontSlantTrait) > 0.05F)
traits |= NSItalicFontMask;

/* see https://web.archive.org/web/20100201175731/http://cocoadev.com/forums/comments.php?DiscussionID=74 */
Expand Down
39 changes: 31 additions & 8 deletions src/nsmenu.m
Expand Up @@ -73,7 +73,7 @@
id menu = [NSApp mainMenu];
for (int i = [menu numberOfItems] - 1 ; i >= 0; i--)
{
NSMenuItem *item = [menu itemAtIndex:i];
NSMenuItem *item = (NSMenuItem *)[menu itemAtIndex:i];
NSString *title = [item title];

if ([ns_app_name isEqualToString:title])
Expand Down Expand Up @@ -358,7 +358,7 @@
if (i < [menu numberOfItems])
{
NSString *titleStr = [NSString stringWithUTF8String: wv->name];
NSMenuItem *item = [menu itemAtIndex:i];
NSMenuItem *item = (NSMenuItem *)[menu itemAtIndex:i];
submenu = (EmacsMenu*)[item submenu];

[item setTitle:titleStr];
Expand All @@ -368,8 +368,10 @@
else
submenu = [menu addSubmenuWithTitle: wv->name];

#ifdef NS_IMPL_COCOA
if ([[submenu title] isEqualToString:@"Help"])
[NSApp setHelpMenu:submenu];
#endif

if (deep_p)
[submenu fillWithWidgetValue: wv->contents];
Expand Down Expand Up @@ -472,7 +474,7 @@ - (NSMenuItem *)addItemWithWidgetValue: (void *)wvptr

if (menu_separator_name_p (wv->name))
{
item = [NSMenuItem separatorItem];
item = (NSMenuItem *)[NSMenuItem separatorItem];
}
else
{
Expand Down Expand Up @@ -534,7 +536,7 @@ -(void)removeAllItems
needsUpdate = YES;
}


#ifdef NS_IMPL_COCOA
typedef struct {
const char *from, *to;
} subst_t;
Expand Down Expand Up @@ -591,17 +593,18 @@ -(void)removeAllItems
xfree (buf);
return SSDATA (result);
}
#endif /* NS_IMPL_COCOA */

- (void)fillWithWidgetValue: (void *)wvptr
{
widget_value *first_wv = (widget_value *)wvptr;
NSFont *menuFont = [NSFont menuFontOfSize:0];
NSDictionary *attributes = nil;

#ifdef NS_IMPL_COCOA
/* Cocoa doesn't allow multi-key sequences in its menu display, so
work around it by using tabs to split the title into two
columns. */
NSFont *menuFont = [NSFont menuFontOfSize:0];
NSDictionary *font_attribs = @{NSFontAttributeName: menuFont};
CGFloat maxNameWidth = 0;
CGFloat maxKeyWidth = 0;
Expand Down Expand Up @@ -672,9 +675,9 @@ - (void)fillWithWidgetValue: (void *)wvptr
- (EmacsMenu *)addSubmenuWithTitle: (const char *)title
{
NSString *titleStr = [NSString stringWithUTF8String: title];
NSMenuItem *item = [self addItemWithTitle: titleStr
action: (SEL)nil /*@selector (menuDown:) */
keyEquivalent: @""];
NSMenuItem *item = (NSMenuItem *)[self addItemWithTitle: titleStr
action: (SEL)nil
keyEquivalent: @""];
EmacsMenu *submenu = [[EmacsMenu alloc] initWithTitle: titleStr];
[self setSubmenu: submenu forItem: item];
[submenu release];
Expand Down Expand Up @@ -711,6 +714,26 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f
: Qnil;
}

#ifdef NS_IMPL_GNUSTEP
/* GNUstep seems to have a number of required methods in
NSMenuDelegate that are optional in Cocoa. */

- (void) menuWillOpen:(NSMenu *)menu
{
}
- (void) menuDidClose:(NSMenu *)menu
{
}
- (NSRect)confinementRectForMenu:(NSMenu *)menu
onScreen:(NSScreen *)screen
{
return NSZeroRect;
}
- (void)menu:(NSMenu *)menu willHighlightItem:(NSMenuItem *)item
{
}
#endif

@end /* EmacsMenu */


Expand Down
4 changes: 4 additions & 0 deletions src/nsterm.h
Expand Up @@ -504,6 +504,10 @@ typedef id instancetype;
NSPoint grabOffset;
}

#ifdef NS_IMPL_GNUSTEP
- (NSInteger) orderedIndex;
#endif

- (BOOL)restackWindow:(NSWindow *)win above:(BOOL)above;
- (void)setAppearance;
@end
Expand Down
10 changes: 10 additions & 0 deletions src/nsterm.m
Expand Up @@ -8763,6 +8763,16 @@ - (void)makeKeyAndOrderFront:(id)sender
}


#ifdef NS_IMPL_GNUSTEP
/* orderedIndex isn't yet available in GNUstep, but it seems pretty
easy to implement. */
- (NSInteger) orderedIndex
{
return [[NSApp orderedWindows] indexOfObjectIdenticalTo:self];
}
#endif


/* The array returned by [NSWindow parentWindow] may already be
sorted, but the documentation doesn't tell us whether or not it is,
so to be safe we'll sort it. */
Expand Down

0 comments on commit 0bd9e78

Please sign in to comment.