Commit 15034960 authored by Adrian Robert's avatar Adrian Robert
Browse files

clear warnings and clean up NS port

parent 27ec92c9
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
......
......@@ -367,6 +367,11 @@ typedef struct _widget_value
} 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. */
......
......@@ -280,7 +280,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side
-------------------------------------------------------------------------- */
{
int i, count;
id<NSMenuItem> item;
NSMenuItem *item;
const char *name;
Lisp_Object nameStr;
unsigned short key;
......
......@@ -597,9 +597,9 @@ avoid creating multiple struct font objects (with metrics cache, etc.)
}
#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 @@ WITH_BACKGROUND is zero when (FROM > 0 || TO < S->nchars). */
/* 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 @@ WITH_BACKGROUND is zero when (FROM > 0 || TO < S->nchars). */
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 @@ WITH_BACKGROUND is zero when (FROM > 0 || TO < S->nchars). */
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
......
......@@ -75,20 +75,16 @@ typedef unichar XChar2b;
#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;
......
......@@ -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 @@ -(NSString *)parseKeyEquiv: (char *)key
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 @@ - (void)fillWithWidgetValue: (void *)wvptr
/* add new contents */
for (; wv != NULL; wv = wv->next)
{
id <NSMenuItem> item = [self addItemWithWidgetValue: wv];
NSMenuItem *item = [self addItemWithWidgetValue: wv];
if (wv->contents)
{
......@@ -691,8 +689,7 @@ - (void)fillWithWidgetValue: (void *)wvptr
- (EmacsMenu *)addSubmenuWithTitle: (char *)title forFrame: (struct frame *)f
{
NSString *titleStr = [NSString stringWithUTF8String: title];
id <NSMenuItem> item
= [self addItemWithTitle: titleStr
NSMenuItem *item = [self addItemWithTitle: titleStr
action: nil /*@selector (menuDown:) */
keyEquivalent: @""];
EmacsMenu *submenu = [[EmacsMenu alloc] initWithTitle: titleStr frame: f];
......@@ -1107,7 +1104,7 @@ key equivalents (see below) because the keydefs in ns-win.el have
#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;
......
......@@ -36,8 +36,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
@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 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
- (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 @@ extern Lisp_Object ns_list_fonts (FRAME_PTR f, Lisp_Object pattern,
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);
......
......@@ -785,7 +785,7 @@ Free a pool and temporary objects it refers to (callable from C)
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 @@ Free a pool and temporary objects it refers to (callable from C)
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 @@ External call (RIF): draw cursor
/* 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 @@ overwriting cursor (usually when cursor on a tab) */
(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,7 +3078,8 @@ overwriting cursor (usually when cursor on a tab) */
}
/* 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]
&& [(EmacsApp *)
NSApp fulfillService: [ns_pending_service_names objectAtIndex: 0]
withArg: [ns_pending_service_args objectAtIndex: 0]])
{
[ns_pending_service_names removeObjectAtIndex: 0];
......@@ -3437,7 +3438,7 @@ overwriting cursor (usually when cursor on a tab) */
========================================================================== */
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 @@ Needs to be here because ns_initialize_display_info () uses AppKit classes.
#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 @@ - (void)showPreferencesWindow: (id)sender
}
/* 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 @@ - (NSApplicationTerminateReply)applicationShouldTerminate: (id)sender
}
/* 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 @@ - (void)application: sender openFiles: (NSArray *)fileList
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 @@ - (void)keyDown: (NSEvent *)theEvent
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 @@ - (NSRect)firstRectForCharacterRange: (NSRange)theRange
return rect;
}
- (long)conversationIdentifier
- (NSInteger)conversationIdentifier
{
return (long)self;
return (NSInteger)self;
}
/* TODO: below here not yet implemented correctly, but may not be needed */
......@@ -5239,7 +5240,8 @@ - (void)mouseExited: (NSEvent *)theEvent
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 @@ - (IBAction)setDefaultFont: (id)sender
/* ==========================================================================
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 @@ - (IBAction)setDefaultFont: (id)sender
}
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 @@ Convert an NS font name to an X font name (XLFD).
{
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 @@ Convert an NS font name to an X font name (XLFD).
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 @@ Convert an NS font name to an X font name (XLFD).
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 @@ Convert an X font name (XLFD) to an NS font name.
return ret;
}
void
syms_of_nsterm ()
{
......
......@@ -103,10 +103,6 @@ static Lisp_Object w32_menu_show P_ ((FRAME_PTR, int, int, int, int,
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.
......
......@@ -234,7 +234,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#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 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#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 void uncache_face P_ ((struct face_cache *, struct face *));
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 *));
......
......@@ -146,11 +146,6 @@ static int popup_activated_flag;
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.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment