Mercurial > emacs
changeset 97198:cf43f4e3ecc8
clear warnings and clean up NS port
author | Adrian Robert <Adrian.B.Robert@gmail.com> |
---|---|
date | Fri, 01 Aug 2008 14:01:08 +0000 |
parents | 406ac82acbcc |
children | 1aaeadd306da |
files | src/ChangeLog src/keyboard.h src/nsfns.m src/nsfont.m src/nsgui.h src/nsmenu.m src/nsterm.h src/nsterm.m src/w32menu.c src/xfaces.c src/xmenu.c |
diffstat | 11 files changed, 114 insertions(+), 217 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Fri Aug 01 12:56:49 2008 +0000 +++ b/src/ChangeLog Fri Aug 01 14:01:08 2008 +0000 @@ -1,3 +1,47 @@ +2008-08-01 Adrian Robert <Adrian.B.Robert@gmail.com> + Warning clearing and clean-up in NS port. + * keyboard.h (xmalloc_widget_value, digest_single_submenu): Add + prototypes. + * nsgui.h (FACE_DEFAULT): Remove, unused. + (XGCValues): Change colors to unsigned long. + * nsterm.h (EmacsApp): Add declaration of all methods implemented in + nsterm.m. + (EmacsMenu -addItemWithWidgetValue:): Change to use NSMenuItem class. + (ns_list_fonts): Remove, unused. + (ns_font_to_xlfd, ns_fontname_to_xlfd): Drop prototypes. + * nsfns.m (interpret_services_menu): Use NSMenuItem class. + * nsfont.m (nsfont_open): Fix cast error in glyphs,metrics alloc. + (nsfont_draw): Compare face colors to 0, not nil. + * nsmenu.m (struct widget_value): Drop unneeded declaration. + (EmacsMenu -addItemWithWidgetValue:, -fillWithWidgetValue:) + (-addSubmenuWithTitle:): Use NSMenuItem class. + (ns_popup_menu): Use NO, not NULL, for enabled setting. + * nsterm.m (ns_draw_glyph_string): Don't compare font to ~0. + (ns_clip_to_row): Make gc arg a BOOL. + (ns_draw_fringe_bitmap, ns_draw_window_cursor): Use YES, NO in + ns_clip_to_row() call. + (ns_draw_glyph_string): Drop face comparison to ~0 (no longer + used). Cast FRAME_FONT assignments. + (ns_read_socket): Cast call to EmacsApp-fulfillService:withArg:. + (ns_string_to_lispmod): Change arg to const char. + (ns_term_init): Use NSMenuItem class. + (EmacsApp -openFile:): Move to different section of file. + (EmacsApp -application:openFiles:): Don't return a value, call + -replyToOpenOrPrint:. + (EmacsView -keyDown:): Fix up cast. + (EmacsView -converstationIdentifier): Use NSInteger instead of long. + (EmacsView -menuDown:): Cast tag in call to + find_and_call_menu_selection(). + (ns_list_fonts): Remove, unused. + (ns_font_to_xlfd): Make static. Cast result of UTF8String. + (ns_fontname_to_xlfd): Make static. + * w32menu.c (xmalloc_widget_value, digest_single_submenu): Remove + prototypes (now in keyboard.h). + (next_menubar_widget_id): Remove, unused. + * xmenu.c (xmalloc_widget_value, digest_single_submenu): Remove + prototypes (now in keyboard.h). + * xfaces.c (ns_list_fonts, w32_list_fonts): Remove, unused. + 2008-08-01 Dan Nicolaescu <dann@ics.uci.edu> * systty.h: Fix previous change that removed BSD_TERMIOS. Add
--- a/src/keyboard.h Fri Aug 01 12:56:49 2008 +0000 +++ b/src/keyboard.h Fri Aug 01 14:01:08 2008 +0000 @@ -367,6 +367,11 @@ } widget_value; #endif +#if defined (HAVE_NS) || defined (HAVE_NTGUI) || defined (USE_X_TOOLKIT) || defined (USE_GTK) +extern widget_value *xmalloc_widget_value P_ ((void)); +extern widget_value *digest_single_submenu P_ ((int, int, int)); +#endif + /* Macros for dealing with lispy events. */
--- a/src/nsfns.m Fri Aug 01 12:56:49 2008 +0000 +++ b/src/nsfns.m Fri Aug 01 14:01:08 2008 +0000 @@ -280,7 +280,7 @@ -------------------------------------------------------------------------- */ { int i, count; - id<NSMenuItem> item; + NSMenuItem *item; const char *name; Lisp_Object nameStr; unsigned short key;
--- a/src/nsfont.m Fri Aug 01 12:56:49 2008 +0000 +++ b/src/nsfont.m Fri Aug 01 14:01:08 2008 +0000 @@ -597,9 +597,9 @@ } #endif - font_info->glyphs = (unsigned short *) + font_info->glyphs = (unsigned short **) xmalloc (0x100 * sizeof (unsigned short *)); - font_info->metrics = (struct font_metrics *) + font_info->metrics = (struct font_metrics **) xmalloc (0x100 * sizeof (struct font_metrics *)); if (!font_info->glyphs || !font_info->metrics) return Qnil; @@ -984,7 +984,7 @@ /* set up for character rendering */ r.origin.y += font->voffset + (s->height - font->height)/2; - col = (NS_FACE_FOREGROUND (face) != nil + col = (NS_FACE_FOREGROUND (face) != 0 ? ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), s->f) : FRAME_FOREGROUND_COLOR (s->f)); /* FIXME: find another way to pass this */ @@ -1077,7 +1077,7 @@ if (face->underline_p) { - if (face->underline_color != nil) + if (face->underline_color != 0) [ns_lookup_indexed_color (face->underline_color, s->f) set]; else [col set]; @@ -1087,7 +1087,7 @@ CGContextAddLineToPoint (gcontext, r.origin.x + r.size.width, r.origin.y + font->underpos); CGContextStrokePath (gcontext); - if (face->underline_color != nil) + if (face->underline_color != 0) [col set]; } else
--- a/src/nsgui.h Fri Aug 01 12:56:49 2008 +0000 +++ b/src/nsgui.h Fri Aug 01 14:01:08 2008 +0000 @@ -75,20 +75,16 @@ #define XCHAR2B_BYTE2(chp) \ ((*chp) & 0x00ff) -#define FACE_DEFAULT (~0) - /* XXX: xfaces requires these structures, but the question is are we forced to use them? */ typedef struct _XGCValues { + unsigned long foreground; + unsigned long background; #ifdef __OBJC__ - NSColor *foreground; - NSColor *background; struct ns_font *font; #else - void *foreground; - void *background; void *font; #endif } XGCValues;
--- a/src/nsmenu.m Fri Aug 01 12:56:49 2008 +0000 +++ b/src/nsmenu.m Fri Aug 01 14:01:08 2008 +0000 @@ -53,8 +53,6 @@ #include "nsmenu_common.c" #endif -extern struct widget_value; - extern Lisp_Object Qundefined, Qmenu_enable, Qmenu_bar_update_hook; extern Lisp_Object QCtoggle, QCradio; @@ -594,9 +592,9 @@ return [NSString stringWithFormat: @"%c", tpos[2]]; } -- (id <NSMenuItem>)addItemWithWidgetValue: (void *)wvptr +- (NSMenuItem *)addItemWithWidgetValue: (void *)wvptr { - id <NSMenuItem> item; + NSMenuItem *item; widget_value *wv = (widget_value *)wvptr; if (name_is_separator (wv->name)) @@ -663,7 +661,7 @@ /* add new contents */ for (; wv != NULL; wv = wv->next) { - id <NSMenuItem> item = [self addItemWithWidgetValue: wv]; + NSMenuItem *item = [self addItemWithWidgetValue: wv]; if (wv->contents) { @@ -691,10 +689,9 @@ - (EmacsMenu *)addSubmenuWithTitle: (char *)title forFrame: (struct frame *)f { NSString *titleStr = [NSString stringWithUTF8String: title]; - id <NSMenuItem> item - = [self addItemWithTitle: titleStr - action: nil /*@selector (menuDown:) */ - keyEquivalent: @""]; + NSMenuItem *item = [self addItemWithTitle: titleStr + action: nil /*@selector (menuDown:) */ + keyEquivalent: @""]; EmacsMenu *submenu = [[EmacsMenu alloc] initWithTitle: titleStr frame: f]; [self setSubmenu: submenu forItem: item]; [submenu release]; @@ -1107,7 +1104,7 @@ #endif wv_title->name = (char *) SDATA (title); - wv_title->enabled = NULL; + wv_title->enabled = NO; wv_title->button_type = BUTTON_TYPE_NONE; wv_title->help = Qnil; wv_title->next = wv_sep;
--- a/src/nsterm.h Fri Aug 01 12:56:49 2008 +0000 +++ b/src/nsterm.h Fri Aug 01 14:01:08 2008 +0000 @@ -36,8 +36,14 @@ @interface EmacsApp : NSApplication { } +- (void)logNotification: (NSNotification *)notification; - (void)sendEvent: (NSEvent *)theEvent; - (void)showPreferencesWindow: (id)sender; +- (BOOL) openFile: (NSString *)fileName; +- (void)fd_handler: (NSTimer *) fdEntry; +- (void)cursor_blink_handler: (NSTimer *)cursorEntry; +- (void)timeout_handler: (NSTimer *)timedEntry; +- (BOOL)fulfillService: (NSString *)name withArg: (NSString *)arg; @end @@ -104,7 +110,7 @@ - (void)setFrame: (struct frame *)f; - (void)menuNeedsUpdate: (NSMenu *)menu; /* (delegate method) */ - (NSString *)parseKeyEquiv: (char *)key; -- (id <NSMenuItem>)addItemWithWidgetValue: (void *)wvptr; +- (NSMenuItem *)addItemWithWidgetValue: (void *)wvptr; - (void)fillWithWidgetValue: (void *)wvptr; - (EmacsMenu *)addSubmenuWithTitle: (char *)title forFrame: (struct frame *)f; - (void) clear; @@ -727,10 +733,6 @@ int size, int maxnames); extern void ns_clear_frame (struct frame *f); -#ifdef __OBJC__ -extern const char *ns_font_to_xlfd (NSFont *font); -#endif -extern const char *ns_fontname_to_xlfd (const char *name); extern const char *ns_xlfd_to_fontname (const char *xlfd); extern void check_ns (void);
--- a/src/nsterm.m Fri Aug 01 12:56:49 2008 +0000 +++ b/src/nsterm.m Fri Aug 01 14:01:08 2008 +0000 @@ -785,7 +785,7 @@ static void -ns_clip_to_row (struct window *w, struct glyph_row *row, int area, GC gc) +ns_clip_to_row (struct window *w, struct glyph_row *row, int area, BOOL gc) /* -------------------------------------------------------------------------- 23: Internal (but parallels other terms): Focus drawing on given row -------------------------------------------------------------------------- */ @@ -2212,7 +2212,7 @@ int oldVH = row->visible_height; row->visible_height = p->h; row->y -= rowY - p->y; - ns_clip_to_row (w, row, -1, NULL); + ns_clip_to_row (w, row, -1, NO); row->y = oldY; row->visible_height = oldVH; } @@ -2329,7 +2329,7 @@ /* TODO: only needed in rare cases with last-resort font in HELLO.. should we do this more efficiently? */ - ns_clip_to_row (w, glyph_row, -1, NULL); + ns_clip_to_row (w, glyph_row, -1, NO); /* ns_focus (f, &r, 1); */ if (FRAME_LAST_INACTIVE (f)) @@ -2943,8 +2943,8 @@ (s->for_overlaps ? NS_DUMPGLYPH_FOREGROUND : NS_DUMPGLYPH_NORMAL)); ns_tmp_font = (struct nsfont_info *)s->face->font; - if (ns_tmp_font == ~0 || ns_tmp_font == NULL) - ns_tmp_font = FRAME_FONT (s->f); + if (ns_tmp_font == NULL) + ns_tmp_font = (struct nsfont_info *)FRAME_FONT (s->f); ns_tmp_font->font.driver->draw (s, 0, s->nchars, s->x, s->y, @@ -3078,8 +3078,9 @@ } /* Deal with pending service requests. */ else if (ns_pending_service_names && [ns_pending_service_names count] != 0 - && [NSApp fulfillService: [ns_pending_service_names objectAtIndex: 0] - withArg: [ns_pending_service_args objectAtIndex: 0]]) + && [(EmacsApp *) + NSApp fulfillService: [ns_pending_service_names objectAtIndex: 0] + withArg: [ns_pending_service_args objectAtIndex: 0]]) { [ns_pending_service_names removeObjectAtIndex: 0]; [ns_pending_service_args removeObjectAtIndex: 0]; @@ -3437,7 +3438,7 @@ ========================================================================== */ -static Lisp_Object ns_string_to_lispmod (char *s) +static Lisp_Object ns_string_to_lispmod (const char *s) /* -------------------------------------------------------------------------- Convert modifier name to lisp symbol -------------------------------------------------------------------------- */ @@ -3876,7 +3877,7 @@ #ifdef NS_IMPL_COCOA { NSMenu *appMenu; - id<NSMenuItem> item; + NSMenuItem *item; /* set up the application menu */ svcsMenu = [[EmacsMenu alloc] initWithTitle: @"Services"]; [svcsMenu setAutoenablesItems: NO]; @@ -4029,6 +4030,26 @@ } +/* Open a file (used by below, after going into queue read by ns_read_socket) */ +- (BOOL) openFile: (NSString *)fileName +{ + struct frame *emacsframe = SELECTED_FRAME (); + NSEvent *theEvent = [NSApp currentEvent]; + + if (!emacs_event) + return NO; + + emacs_event->kind = NON_ASCII_KEYSTROKE_EVENT; + emacs_event->code = KEY_NS_OPEN_FILE_LINE; + ns_input_file = append2 (ns_input_file, build_string ([fileName UTF8String])); + ns_input_line = Qnil; /* can be start or cons start,end */ + emacs_event->modifiers =0; + EV_TRAILER (theEvent); + + return YES; +} + + /* ************************************************************************** EmacsApp delegate implementation @@ -4080,26 +4101,6 @@ } -/* Open a file (used by below, after going into queue read by ns_read_socket) */ --(BOOL) openFile: (NSString *)fileName -{ - struct frame *emacsframe = SELECTED_FRAME (); - NSEvent *theEvent = [NSApp currentEvent]; - - if (!emacs_event) - return NO; - - emacs_event->kind = NON_ASCII_KEYSTROKE_EVENT; - emacs_event->code = KEY_NS_OPEN_FILE_LINE; - ns_input_file = append2 (ns_input_file, build_string ([fileName UTF8String])); - ns_input_line = Qnil; /* can be start or cons start,end */ - emacs_event->modifiers =0; - EV_TRAILER (theEvent); - - return YES; -} - - /* Notification from the Workspace to open a file */ - (BOOL)application: sender openFile: (NSString *)file { @@ -4131,7 +4132,7 @@ NSString *file; while ((file = [files nextObject]) != nil) [ns_pending_files addObject: file]; - return YES; + [self replyToOpenOrPrint: NSApplicationDelegateReplySuccess]; } /* TODO: these may help w/IO switching btwn terminal and NSApp */ @@ -4359,7 +4360,7 @@ NSView most recently updated (I guess), which is not the correct one. UPDATE: After multi-TTY merge this happens even w/o NO_SOCK_SIGIO */ if ([[theEvent window] isKindOfClass: [EmacsWindow class]]) - [[(EmacsView *)[theEvent window] delegate] keyDown: theEvent]; + [(EmacsView *)[[theEvent window] delegate] keyDown: theEvent]; return; } @@ -4638,9 +4639,9 @@ return rect; } -- (long)conversationIdentifier -{ - return (long)self; +- (NSInteger)conversationIdentifier +{ + return (NSInteger)self; } /* TODO: below here not yet implemented correctly, but may not be needed */ @@ -5239,7 +5240,8 @@ context_menu_value = [sender tag]; else find_and_call_menu_selection (emacsframe, emacsframe->menu_bar_items_used, - emacsframe->menu_bar_vector, [sender tag]); + emacsframe->menu_bar_vector, + (void *)[sender tag]); ns_send_appdefined (-1); return self; } @@ -6156,6 +6158,7 @@ /* ========================================================================== Font-related functions; these used to be in nsfaces.m + The XLFD functions (115 lines) are an abomination that should be removed. ========================================================================== */ @@ -6204,141 +6207,9 @@ } -Lisp_Object -ns_list_fonts (FRAME_PTR f, Lisp_Object pattern, int size, int maxnames) -/* -------------------------------------------------------------------------- - This is used by the xfaces system. It is expected to speak XLFD. - -------------------------------------------------------------------------- */ -{ - Lisp_Object list = Qnil, - rpattern, - key, - tem, - args[2]; - struct re_pattern_buffer *bufp; - id fm = [NSFontManager sharedFontManager]; - NSEnumerator *fenum, *senum; - NSArray *membInfo; - NSString *fontname; - const char *xlfdName; - char *pattFam; - char *patt; - NSString *famName; - - NSTRACE (ns_list_fonts); - - CHECK_STRING (pattern); - patt = SDATA (pattern); - -#if 0 -/* temporary: for font_backend, we use fontsets, and when these are defined, - the old XLFD-based system is used; eventually this will be replaced by - backend code, but for now we allow specs that are just family names */ - /* if pattern is not XLFD, panic now */ - if (patt[0] != '-') - error ("ns_list_fonts: X font name (XLFD) expected."); - - /* if unicode encoding not requested, also die */ - if (!strstr (patt, "iso10646") && patt[strlen (patt)-3] != '*') - return Qnil; -#endif /* 0 */ - - key = f ? Fcons (pattern, make_number (maxnames)) : Qnil; - tem = f ? XCDR (FRAME_NS_DISPLAY_INFO (f)->name_list_element) : Qnil; - - /* See if we cached the result for this particular query. - The cache is an alist of the form: - ((((PATTERN . MAXNAMES) FONTNAME) ...) ...) - */ - if (f && !NILP (list = Fassoc (key, tem))) - { - list = Fcdr_safe (list); - /* We have a cached list. Don't have to get the list again. */ - if (!NILP (list)) - return list; - } - - if (patt[0] != '-') - pattFam = patt; - else - pattFam = ns_xlfd_to_fontname (patt); - /* XXX: '*' at beginning matches literally.. */ - if (pattFam[0] == '*') - pattFam[0] = '.'; - - /* must start w/family name, but can have other stuff afterwards - (usually bold and italic specifiers) */ - args[0] = build_string ("^"); - args[1] = build_string (pattFam); - rpattern = Fconcat (2, args); - bufp = compile_pattern (rpattern, 0, Vascii_canon_table, 0, 0); - - list = Qnil; - fenum = [[fm availableFontFamilies] objectEnumerator]; - while ( (famName = [fenum nextObject]) ) - { - NSMutableString *tmp = [famName mutableCopy]; - const char *fname; - NSRange r; - - /* remove spaces, to look like postscript name */ - while ((r = [tmp rangeOfString: @" "]).location != NSNotFound) - [tmp deleteCharactersInRange: r]; - - fname = [tmp UTF8String]; - int len = strlen (fname); - BOOL foundItal; - const char *synthItalFont; - - if (re_search (bufp, fname, len, 0, len, 0) >= 0) - { - /* Found a family. Add all variants. If we have no italic variant, - add a synthItal. */ - senum =[[fm availableMembersOfFontFamily: famName] objectEnumerator]; - foundItal = NO; - synthItalFont = NULL; - while (membInfo = [senum nextObject]) - { - xlfdName - = ns_fontname_to_xlfd ([[membInfo objectAtIndex: 0] - UTF8String]); - list = Fcons (build_string (xlfdName), list); - if (!synthItalFont) - { - NSString *synthName - = [[membInfo objectAtIndex: 0] - stringByAppendingString: @"-synthItal"]; - synthItalFont = [synthName UTF8String]; - } - else if ([[membInfo objectAtIndex: 3] intValue] - & NSItalicFontMask) - foundItal = YES; - } - if (foundItal == NO) - { - xlfdName = ns_fontname_to_xlfd (synthItalFont); - list = Fcons (build_string (xlfdName), list); - } - } - [tmp release]; - } - - /* fallback */ - if (XFASTINT (Flength (list)) == 0) - list = Fcons (build_string (ns_fontname_to_xlfd ("Monaco")), list); - - /* store result in cache */ - if (f != NULL) - XCDR_AS_LVALUE (FRAME_NS_DISPLAY_INFO (f)->name_list_element) - = Fcons (Fcons (key, list), - XCDR (FRAME_NS_DISPLAY_INFO (f)->name_list_element)); - return list; -} - - /* XLFD: -foundry-family-weight-slant-swidth-adstyle-pxlsz-ptSz-resx-resy-spc-avgWidth-rgstry-encoding */ -const char * +static const char * ns_font_to_xlfd (NSFont *nsfont) /* -------------------------------------------------------------------------- Convert an NS font name to an X font name (XLFD). @@ -6347,7 +6218,7 @@ { NSFontManager *mgr = [NSFontManager sharedFontManager]; NSString *sname = [nsfont /*familyName*/fontName]; - char *famName = [sname UTF8String]; + char *famName = (char *)[sname UTF8String]; char *weightStr = [mgr fontNamed: sname hasTraits: NSBoldFontMask] ? "bold" : "medium"; char *slantStr = [mgr fontNamed: sname hasTraits: NSItalicFontMask] ? @@ -6358,7 +6229,7 @@ int i, len; /* change '-' to '$' to avoid messing w/XLFD separator */ - for (len =strlen (famName), i =0; i<len; i++) + for (len = strlen (famName), i =0; i<len; i++) if (famName[i] == '-') { famName[i] = '\0'; @@ -6373,7 +6244,7 @@ return xlfd; } -const char * +static const char * ns_fontname_to_xlfd (const char *name) /* -------------------------------------------------------------------------- Convert an NS font name to an X font name (XLFD). @@ -6453,6 +6324,7 @@ return ret; } + void syms_of_nsterm () {
--- a/src/w32menu.c Fri Aug 01 12:56:49 2008 +0000 +++ b/src/w32menu.c Fri Aug 01 14:01:08 2008 +0000 @@ -103,10 +103,6 @@ void w32_free_menu_strings P_((HWND)); -static int next_menubar_widget_id; - -extern widget_value *xmalloc_widget_value P_ ((void)); -extern widget_value *digest_single_submenu P_ ((int, int, int)); /* This is set nonzero after the user activates the menu bar, and set to zero again after the menu bars are redisplayed by prepare_menu_bar.
--- a/src/xfaces.c Fri Aug 01 12:56:49 2008 +0000 +++ b/src/xfaces.c Fri Aug 01 14:01:08 2008 +0000 @@ -234,7 +234,6 @@ #define x_display_info w32_display_info #define FRAME_X_FONT_TABLE FRAME_W32_FONT_TABLE #define check_x check_w32 -#define x_list_fonts w32_list_fonts #define GCGraphicsExposures 0 #endif /* WINDOWSNT */ @@ -245,7 +244,6 @@ #define x_display_info ns_display_info #define FRAME_X_FONT_TABLE FRAME_NS_FONT_TABLE #define check_x check_ns -#define x_list_fonts ns_list_fonts #define GCGraphicsExposures 0 #endif /* HAVE_NS */ @@ -557,14 +555,6 @@ static GC x_create_gc P_ ((struct frame *, unsigned long, XGCValues *)); static void x_free_gc P_ ((struct frame *, GC)); -#ifdef WINDOWSNT -extern Lisp_Object w32_list_fonts P_ ((struct frame *, Lisp_Object, int, int)); -#endif /* WINDOWSNT */ - -#ifdef HAVE_NS -extern Lisp_Object ns_list_fonts P_ ((struct frame *, Lisp_Object, int, int)); -#endif /* HAVE_NS */ - #ifdef USE_X_TOOLKIT static void x_update_menu_appearance P_ ((struct frame *));
--- a/src/xmenu.c Fri Aug 01 12:56:49 2008 +0000 +++ b/src/xmenu.c Fri Aug 01 14:01:08 2008 +0000 @@ -146,11 +146,6 @@ static int next_menubar_widget_id; -#if defined (USE_X_TOOLKIT) || defined (USE_GTK) -extern widget_value *xmalloc_widget_value P_ ((void)); -extern widget_value *digest_single_submenu P_ ((int, int, int)); -#endif - /* This is set nonzero after the user activates the menu bar, and set to zero again after the menu bars are redisplayed by prepare_menu_bar. While it is nonzero, all calls to set_frame_menubar go deep.