Now on revision 111682. ------------------------------------------------------------ revno: 111682 committer: Glenn Morris branch nick: trunk timestamp: Tue 2013-02-05 21:03:35 -0500 message: * lisp/startup.el (command-line): If simple.el is missing, test and warn about for some possible causes. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-02-05 12:16:35 +0000 +++ lisp/ChangeLog 2013-02-06 02:03:35 +0000 @@ -1,3 +1,8 @@ +2013-02-06 Glenn Morris + + * startup.el (command-line): If simple.el is missing, + test and warn about for some possible causes. + 2013-02-05 Jan Djärv * cus-start.el (all): Add ns-use-native-fullscreen. === modified file 'lisp/startup.el' --- lisp/startup.el 2013-01-02 16:13:04 +0000 +++ lisp/startup.el 2013-02-06 02:03:35 +0000 @@ -770,11 +770,20 @@ (locate-file "simple" load-path (get-load-suffixes))) lisp-dir) ;; Don't abort if simple.el cannot be found, but print a warning. + ;; Although in most usage we are going to cryptically abort a moment + ;; later anyway, due to missing required bidi data files (eg bug#13430). (if (null simple-file-name) - (progn - (princ "Warning: Could not find simple.el nor simple.elc" - 'external-debugging-output) - (terpri 'external-debugging-output)) + (let ((standard-output 'external-debugging-output) + (lispdir (expand-file-name "../lisp" data-directory))) + (princ "Warning: Could not find simple.el or simple.elc") + (terpri) + (when (getenv "EMACSLOADPATH") + (princ "The EMACSLOADPATH environment variable is set, \ +please check its value") + (terpri)) + (unless (file-readable-p lispdir) + (princ (format "Lisp directory %s not readable?" lispdir)) + (terpri))) (setq lisp-dir (file-truename (file-name-directory simple-file-name))) (setq load-history (mapcar (lambda (elt) ------------------------------------------------------------ revno: 111681 committer: Glenn Morris branch nick: trunk timestamp: Tue 2013-02-05 09:01:25 -0800 message: Relocate NEWS entry from 24.3 section to 24.4 where it belongs diff: === modified file 'etc/NEWS' --- etc/NEWS 2013-02-05 12:21:55 +0000 +++ etc/NEWS 2013-02-05 17:01:25 +0000 @@ -63,6 +63,13 @@ using the scroll bar (i.e. dragging the thumb down even when the end of the buffer is visible). +** Nextstep (GNUstep / Mac OS X) port + +*** Improved fullscreen support. +Both native (>= OSX 10.7) and "old style" fullscreen are supported. +Customize ns-use-native-fullscreen to change style. For >= 10.7 +native is the default. + * Editing Changes in Emacs 24.4 ** New commands `toggle-frame-fullscreen' and `toggle-frame-maximized', @@ -432,9 +439,6 @@ ** Nextstep (GNUstep / Mac OS X) port *** Support for fullscreen and the frame parameter fullscreen. -Both native (>= OSX 10.7) and "old style" fullscreen are supported. -Customize ns-use-native-fullscreen to change style. For >= 10.7 -native is the default. *** A file dialog is used for open/save operations initiated from the menu/toolbar. ------------------------------------------------------------ revno: 111680 committer: Jan Djärv branch nick: trunk timestamp: Tue 2013-02-05 13:21:55 +0100 message: * NEWS: Mention ns-use-native-fullscreen. diff: === modified file 'etc/ChangeLog' --- etc/ChangeLog 2013-02-01 03:58:50 +0000 +++ etc/ChangeLog 2013-02-05 12:21:55 +0000 @@ -1,3 +1,7 @@ +2013-02-05 Jan Djärv + + * NEWS: Mention ns-use-native-fullscreen. + 2013-02-01 Glenn Morris * CALC-NEWS: Move here from lisp/calc/README, README.prev. === modified file 'etc/NEWS' --- etc/NEWS 2013-02-01 03:51:08 +0000 +++ etc/NEWS 2013-02-05 12:21:55 +0000 @@ -432,6 +432,9 @@ ** Nextstep (GNUstep / Mac OS X) port *** Support for fullscreen and the frame parameter fullscreen. +Both native (>= OSX 10.7) and "old style" fullscreen are supported. +Customize ns-use-native-fullscreen to change style. For >= 10.7 +native is the default. *** A file dialog is used for open/save operations initiated from the menu/toolbar. ------------------------------------------------------------ revno: 111679 fixes bug: http://debbugs.gnu.org/13444 committer: Jan Djärv branch nick: trunk timestamp: Tue 2013-02-05 13:16:35 +0100 message: * lisp/cus-start.el (all): Add ns-use-native-fullscreen. * src/nsmenu.m (update_frame_tool_bar): Check for negative tool bar height. * src/nsterm.h (HAVE_NATIVE_FS): Define if OSX => 10.7. (EmacsView): Add fs_is_native, fsIsNative, isFullscreen and updateCollectionBehaviour. * src/nsterm.m (NEW_STYLE_FS): Remove. (ns_last_use_native_fullscreen): New variable. (x_make_frame_visible): Replace NEW_STYLE_FS with isFullscreen. (x_set_window_size): Do not take title bar and tool bar into account if isFullscreen returns YES. (ns_fullscreen_hook): Replace NEW_STYLE_FS with isFullscreen. (check_native_fs): New function. (ns_select, ns_read_socket): Call check_native_fs if HAVE_NATIVE_FS. (ns_term_init): Remove NEW_STYLE_FS. (updateFrameSize:, windowWillResize:toSize:): Only adjust for title bar and tool bar if isFullscreen returns NO. (windowDidResize:): Replace NEW_STYLE_FS with fsIsNative. (initFrameFromEmacs:): Initialize fs_is_native. Replace NEW_STYLE_FS with HAVE_NATIVE_FS. (window:willUseFullScreenPresentationOptions:): New method. (windowDidEnterFullScreen:): Replace NEW_STYLE_FS with fsIsNative. Hide toolbar if not enabled. (windowDidExitFullScreen:): Call updateCollectionBehaviour. Restore tool bar if enabled, hide it otherwise (Bug#13444). (fsIsNative, isFullscreen, updateCollectionBehaviour): New methods. (toggleFullScreen:): If fs_is_native, call toggleFullScreen on window. Do no set FRAME_EXTERNAL_TOOL_BAR (f) to 0. Check FRAME_EXTERNAL_TOOL_BAR (f) before restoring FRAME_TOOLBAR_HEIGHT (f). Call updateFrameSize when going non-fs. (syms_of_nsterm): Add ns-use-native-fullscreen. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-02-05 02:12:58 +0000 +++ lisp/ChangeLog 2013-02-05 12:16:35 +0000 @@ -1,3 +1,7 @@ +2013-02-05 Jan Djärv + + * cus-start.el (all): Add ns-use-native-fullscreen. + 2013-02-05 Glenn Morris * profiler.el (profiler-report-mode-map): Add a restart menu entry. === modified file 'lisp/cus-start.el' --- lisp/cus-start.el 2013-01-13 17:47:45 +0000 +++ lisp/cus-start.el 2013-02-05 12:16:35 +0000 @@ -398,6 +398,7 @@ (const super)) "23.1") (ns-antialias-text ns boolean "23.1") (ns-auto-hide-menu-bar ns boolean "24.0") + (ns-use-native-fullscreen ns boolean "24.4") ;; process.c (delete-exited-processes processes-basics boolean) ;; syntax.c === modified file 'src/ChangeLog' --- src/ChangeLog 2013-02-04 16:33:30 +0000 +++ src/ChangeLog 2013-02-05 12:16:35 +0000 @@ -1,3 +1,38 @@ +2013-02-05 Jan Djärv + + * nsmenu.m (update_frame_tool_bar): Check for negative tool bar + height. + + * nsterm.h (HAVE_NATIVE_FS): Define if OSX => 10.7. + (EmacsView): Add fs_is_native, fsIsNative, isFullscreen and + updateCollectionBehaviour. + + * nsterm.m (NEW_STYLE_FS): Remove. + (ns_last_use_native_fullscreen): New variable. + (x_make_frame_visible): Replace NEW_STYLE_FS with isFullscreen. + (x_set_window_size): Do not take title bar and tool bar into account + if isFullscreen returns YES. + (ns_fullscreen_hook): Replace NEW_STYLE_FS with isFullscreen. + (check_native_fs): New function. + (ns_select, ns_read_socket): Call check_native_fs if HAVE_NATIVE_FS. + (ns_term_init): Remove NEW_STYLE_FS. + (updateFrameSize:, windowWillResize:toSize:): Only adjust for title bar + and tool bar if isFullscreen returns NO. + (windowDidResize:): Replace NEW_STYLE_FS with fsIsNative. + (initFrameFromEmacs:): Initialize fs_is_native. Replace NEW_STYLE_FS + with HAVE_NATIVE_FS. + (window:willUseFullScreenPresentationOptions:): New method. + (windowDidEnterFullScreen:): Replace NEW_STYLE_FS with fsIsNative. + Hide toolbar if not enabled (Bug#13444). + (windowDidExitFullScreen:): Call updateCollectionBehaviour. + Restore tool bar if enabled, hide it otherwise (Bug#13444). + (fsIsNative, isFullscreen, updateCollectionBehaviour): New methods. + (toggleFullScreen:): If fs_is_native, call toggleFullScreen on + window. Do no set FRAME_EXTERNAL_TOOL_BAR (f) to 0. + Check FRAME_EXTERNAL_TOOL_BAR (f) before restoring + FRAME_TOOLBAR_HEIGHT (f). Call updateFrameSize when going non-fs. + (syms_of_nsterm): Add ns-use-native-fullscreen. + 2013-02-04 Paul Eggert * fileio.c (Qchoose_write_coding_system): Now static. === modified file 'src/nsmenu.m' --- src/nsmenu.m 2013-01-17 06:29:40 +0000 +++ src/nsmenu.m 2013-02-05 12:16:35 +0000 @@ -1110,6 +1110,8 @@ FRAME_TOOLBAR_HEIGHT (f) = NSHeight ([window frameRectForContentRect: NSMakeRect (0, 0, 0, 0)]) - FRAME_NS_TITLEBAR_HEIGHT (f); + if (FRAME_TOOLBAR_HEIGHT (f) < 0) // happens if frame is fullscreen. + FRAME_TOOLBAR_HEIGHT (f) = 0; unblock_input (); } === modified file 'src/nsterm.h' --- src/nsterm.h 2013-01-15 09:22:25 +0000 +++ src/nsterm.h 2013-02-05 12:16:35 +0000 @@ -42,6 +42,11 @@ #ifndef MAC_OS_X_VERSION_10_8 #define MAC_OS_X_VERSION_10_8 1080 #endif + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 +#define HAVE_NATIVE_FS +#endif + #endif /* NS_IMPL_COCOA */ #ifdef __OBJC__ @@ -88,6 +93,7 @@ int tibar_height, tobar_height, bwidth; int maximized_width, maximized_height; NSWindow *nonfs_window; + BOOL fs_is_native; @public struct frame *emacsframe; int rows, cols; @@ -115,6 +121,11 @@ - (void) handleFS; - (void) setFSValue: (int)value; - (void) toggleFullScreen: (id) sender; +- (BOOL) fsIsNative; +- (BOOL) isFullscreen; +#ifdef HAVE_NATIVE_FS +- (void) updateCollectionBehaviour; +#endif #ifdef NS_IMPL_GNUSTEP /* Not declared, but useful. */ === modified file 'src/nsterm.m' --- src/nsterm.m 2013-01-24 05:41:28 +0000 +++ src/nsterm.m 2013-02-05 12:16:35 +0000 @@ -69,11 +69,6 @@ #define NSTRACE(x) #endif -#if defined (NS_IMPL_COCOA) && \ - MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 -#define NEW_STYLE_FS -#endif - extern NSString *NSMenuDidBeginTrackingNotification; /* ========================================================================== @@ -224,6 +219,7 @@ static NSMutableArray *ns_pending_files, *ns_pending_service_names, *ns_pending_service_args; static BOOL ns_do_open_file = NO; +static BOOL ns_last_use_native_fullscreen; static struct { struct input_event *q; @@ -1094,13 +1090,12 @@ SET_FRAME_VISIBLE (f, 1); ns_raise_frame (f); -#ifdef NEW_STYLE_FS /* Making a new frame from a fullscreen frame will make the new frame fullscreen also. So skip handleFS as this will print an error. */ - if (f->want_fullscreen == FULLSCREEN_BOTH - && ([[view window] styleMask] & NSFullScreenWindowMask) != 0) + if ([view fsIsNative] && f->want_fullscreen == FULLSCREEN_BOTH + && [view isFullscreen]) return; -#endif + if (f->want_fullscreen != FULLSCREEN_NONE) { block_input (); @@ -1292,7 +1287,7 @@ pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, rows); /* If we have a toolbar, take its height into account. */ - if (tb) + if (tb && ! [view isFullscreen]) /* NOTE: previously this would generate wrong result if toolbar not yet displayed and fixing toolbar_height=32 helped, but now (200903) seems no longer needed */ @@ -1303,8 +1298,10 @@ FRAME_TOOLBAR_HEIGHT (f) = 0; wr.size.width = pixelwidth + f->border_width; - wr.size.height = pixelheight + FRAME_NS_TITLEBAR_HEIGHT (f) - + FRAME_TOOLBAR_HEIGHT (f); + wr.size.height = pixelheight; + if (! [view isFullscreen]) + wr.size.height += FRAME_NS_TITLEBAR_HEIGHT (f) + + FRAME_TOOLBAR_HEIGHT (f); /* Do not try to constrain to this screen. We may have multiple screens, and want Emacs to span those. Constraining to screen @@ -1355,8 +1352,7 @@ if (!FRAME_VISIBLE_P (f)) return; -#ifndef NEW_STYLE_FS - if (f->want_fullscreen == FULLSCREEN_BOTH) + if (! [view fsIsNative] && f->want_fullscreen == FULLSCREEN_BOTH) { /* Old style fs don't initiate correctly if created from init/default-frame alist, so use a timer (not nice...). @@ -1366,7 +1362,6 @@ userInfo: nil repeats: NO]; return; } -#endif block_input (); [view handleFS]; @@ -3369,6 +3364,30 @@ } } +#ifdef HAVE_NATIVE_FS +static void +check_native_fs () +{ + Lisp_Object frame, tail; + + if (ns_last_use_native_fullscreen == ns_use_native_fullscreen) + return; + + ns_last_use_native_fullscreen = ns_use_native_fullscreen; + + /* Clear the mouse-moved flag for every frame on this display. */ + FOR_EACH_FRAME (tail, frame) + { + struct frame *f = XFRAME (frame); + if (FRAME_NS_P (f)) + { + EmacsView *view = FRAME_NS_VIEW (f); + [view updateCollectionBehaviour]; + } + } +} +#endif + static int ns_read_socket (struct terminal *terminal, struct input_event *hold_quit) /* -------------------------------------------------------------------------- @@ -3382,6 +3401,10 @@ /* NSTRACE (ns_read_socket); */ +#ifdef HAVE_NATIVE_FS + check_native_fs (); +#endif + if ([NSApp modalWindow] != nil) return -1; @@ -3459,6 +3482,10 @@ /* NSTRACE (ns_select); */ +#ifdef HAVE_NATIVE_FS + check_native_fs (); +#endif + if (hold_event_q.nr > 0) { /* We already have events pending. */ @@ -4238,11 +4265,9 @@ NSColorPboardType, NSFontPboardType, nil] retain]; -#ifndef NEW_STYLE_FS /* If fullscreen is in init/default-frame-alist, focus isn't set right for fullscreen windows, so set this. */ [NSApp activateIgnoringOtherApps:YES]; -#endif [NSApp run]; ns_do_open_file = YES; @@ -5391,10 +5416,10 @@ { NSWindow *window = [self window]; NSRect wr = [window frame]; + int extra = 0; + int gsextra = 0; #ifdef NS_IMPL_GNUSTEP - int extra = 3; -#else - int extra = 0; + gsextra = 3; #endif int oldc = cols, oldr = rows; @@ -5402,23 +5427,24 @@ oldh = FRAME_PIXEL_HEIGHT (emacsframe); int neww, newh; - cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (emacsframe, wr.size.width + extra); + cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (emacsframe, wr.size.width + gsextra); if (cols < MINWIDTH) cols = MINWIDTH; - rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES - (emacsframe, wr.size.height - - FRAME_NS_TITLEBAR_HEIGHT (emacsframe) + extra - - FRAME_TOOLBAR_HEIGHT (emacsframe)); + if (! [self isFullscreen]) + { + extra = FRAME_NS_TITLEBAR_HEIGHT (emacsframe) + + FRAME_TOOLBAR_HEIGHT (emacsframe) - gsextra; + } + + rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, wr.size.height - extra); if (rows < MINHEIGHT) rows = MINHEIGHT; neww = (int)wr.size.width - emacsframe->border_width; - newh = ((int)wr.size.height - - FRAME_NS_TITLEBAR_HEIGHT (emacsframe) - - FRAME_TOOLBAR_HEIGHT (emacsframe)); + newh = (int)wr.size.height - extra; if (oldr != rows || oldc != cols || neww != oldw || newh != oldh) { @@ -5436,6 +5462,12 @@ - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize /* normalize frame to gridded text size */ { + int extra = 0; + int gsextra = 0; +#ifdef NS_IMPL_GNUSTEP + gsextra = 3; +#endif + NSTRACE (windowWillResize); /*fprintf (stderr,"Window will resize: %.0f x %.0f\n",frameSize.width,frameSize.height); */ @@ -5453,22 +5485,12 @@ maximized_width = maximized_height = -1; cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (emacsframe, -#ifdef NS_IMPL_GNUSTEP - frameSize.width + 3); -#else - frameSize.width); -#endif + frameSize.width + gsextra); if (cols < MINWIDTH) cols = MINWIDTH; - rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, frameSize.height -#ifdef NS_IMPL_GNUSTEP - - FRAME_NS_TITLEBAR_HEIGHT (emacsframe) + 3 - - FRAME_TOOLBAR_HEIGHT (emacsframe)); -#else - - FRAME_NS_TITLEBAR_HEIGHT (emacsframe) - - FRAME_TOOLBAR_HEIGHT (emacsframe)); -#endif + rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, + frameSize.height - extra); if (rows < MINHEIGHT) rows = MINHEIGHT; #ifdef NS_IMPL_COCOA @@ -5511,12 +5533,13 @@ - (void)windowDidResize: (NSNotification *)notification { - -#if !defined (NEW_STYLE_FS) && ! defined (NS_IMPL_GNUSTEP) - NSWindow *theWindow = [notification object]; - /* We can get notification on the non-FS window when in fullscreen mode. */ - if ([self window] != theWindow) return; -#endif + if (! [self fsIsNative]) + { + NSWindow *theWindow = [notification object]; + /* We can get notification on the non-FS window when in + fullscreen mode. */ + if ([self window] != theWindow) return; + } #ifdef NS_IMPL_GNUSTEP NSWindow *theWindow = [notification object]; @@ -5632,6 +5655,11 @@ scrollbarsNeedingUpdate = 0; fs_state = FULLSCREEN_NONE; fs_before_fs = next_maximized = -1; +#ifdef HAVE_NATIVE_FS + fs_is_native = ns_use_native_fullscreen; +#else + fs_is_native = NO; +#endif maximized_width = maximized_height = -1; nonfs_window = nil; @@ -5658,7 +5686,7 @@ backing: NSBackingStoreBuffered defer: YES]; -#ifdef NEW_STYLE_FS +#ifdef HAVE_NATIVE_FS [win setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; #endif @@ -5867,6 +5895,15 @@ } } +#ifdef HAVE_NATIVE_FS +- (NSApplicationPresentationOptions)window:(NSWindow *)window + willUseFullScreenPresentationOptions: + (NSApplicationPresentationOptions)proposedOptions +{ + return proposedOptions|NSApplicationPresentationAutoHideToolbar; +} +#endif + - (void)windowWillEnterFullScreen:(NSNotification *)notification { fs_before_fs = fs_state; @@ -5875,17 +5912,13 @@ - (void)windowDidEnterFullScreen:(NSNotification *)notification { [self setFSValue: FULLSCREEN_BOTH]; -#ifdef NEW_STYLE_FS - // Fix bad background. - if ([toolbar isVisible]) + if (! [self fsIsNative]) { - [toolbar setVisible:NO]; - [toolbar setVisible:YES]; + [self windowDidBecomeKey:notification]; + [nonfs_window orderOut:self]; } -#else - [self windowDidBecomeKey:notification]; - [nonfs_window orderOut:self]; -#endif + else if (! FRAME_EXTERNAL_TOOL_BAR (emacsframe)) + [toolbar setVisible:NO]; } - (void)windowWillExitFullScreen:(NSNotification *)notification @@ -5898,24 +5931,76 @@ { [self setFSValue: fs_before_fs]; fs_before_fs = -1; + [self updateCollectionBehaviour]; + if (FRAME_EXTERNAL_TOOL_BAR (emacsframe)) + { + [toolbar setVisible:YES]; + update_frame_tool_bar (emacsframe); + [self updateFrameSize:YES]; + [[self window] display]; + } + else + [toolbar setVisible:NO]; + if (next_maximized != -1) [[self window] performZoom:self]; } +- (BOOL)fsIsNative +{ + return fs_is_native; +} + +- (BOOL)isFullscreen +{ + if (! fs_is_native) return nonfs_window != nil; +#ifdef HAVE_NATIVE_FS + return ([[self window] styleMask] & NSFullScreenWindowMask) != 0; +#else + return NO; +#endif +} + +#ifdef HAVE_NATIVE_FS +- (void)updateCollectionBehaviour +{ + if (! [self isFullscreen]) + { + NSWindow *win = [self window]; + NSWindowCollectionBehavior b = [win collectionBehavior]; + if (ns_use_native_fullscreen) + b |= NSWindowCollectionBehaviorFullScreenPrimary; + else + b &= ~NSWindowCollectionBehaviorFullScreenPrimary; + + [win setCollectionBehavior: b]; + fs_is_native = ns_use_native_fullscreen; + } +} +#endif + - (void)toggleFullScreen: (id)sender { -#ifdef NEW_STYLE_FS - [[self window] toggleFullScreen:sender]; -#else - NSWindow *w = [self window], *fw; - BOOL onFirstScreen = [[w screen] - isEqual:[[NSScreen screens] objectAtIndex:0]]; - struct frame *f = emacsframe; + NSWindow *w, *fw; + BOOL onFirstScreen; + struct frame *f; NSSize sz; - NSRect r, wr = [w frame]; - NSColor *col = ns_lookup_indexed_color (NS_FACE_BACKGROUND - (FRAME_DEFAULT_FACE (f)), - f); + NSRect r, wr; + NSColor *col; + + if (fs_is_native) + { + [[self window] toggleFullScreen:sender]; + return; + } + + w = [self window]; + onFirstScreen = [[w screen] isEqual:[[NSScreen screens] objectAtIndex:0]]; + f = emacsframe; + wr = [w frame]; + col = ns_lookup_indexed_color (NS_FACE_BACKGROUND + (FRAME_DEFAULT_FACE (f)), + f); sz.width = FRAME_COLUMN_WIDTH (f); sz.height = FRAME_LINE_HEIGHT (f); @@ -5958,7 +6043,6 @@ FRAME_NS_TITLEBAR_HEIGHT (f) = 0; tobar_height = FRAME_TOOLBAR_HEIGHT (f); FRAME_TOOLBAR_HEIGHT (f) = 0; - FRAME_EXTERNAL_TOOL_BAR (f) = 0; nonfs_window = w; @@ -5995,17 +6079,16 @@ f->border_width = bwidth; FRAME_NS_TITLEBAR_HEIGHT (f) = tibar_height; - FRAME_TOOLBAR_HEIGHT (f) = tobar_height; - if (tobar_height) - FRAME_EXTERNAL_TOOL_BAR (f) = 1; + if (FRAME_EXTERNAL_TOOL_BAR (f)) + FRAME_TOOLBAR_HEIGHT (f) = tobar_height; [self windowWillExitFullScreen:nil]; [fw setFrame: [w frame] display:YES animate:YES]; [fw close]; [w makeKeyAndOrderFront:NSApp]; [self windowDidExitFullScreen:nil]; + [self updateFrameSize:YES]; } -#endif } - (void)handleFS @@ -7159,6 +7242,18 @@ Only works on OSX 10.6 or later. */); ns_auto_hide_menu_bar = Qnil; + DEFVAR_BOOL ("ns-use-native-fullscreen", ns_use_native_fullscreen, + doc: /*Non-nil means to use native fullscreen on OSX >= 10.7. +Nil means use fullscreen the old (< 10.7) way. The old way works better with +multiple monitors, but lacks tool bar. This variable is ignored on OSX < 10.7. +Default is t for OSX >= 10.7, nil otherwise. */); +#ifdef HAVE_NATIVE_FS + ns_use_native_fullscreen = YES; +#else + ns_use_native_fullscreen = NO; +#endif + ns_last_use_native_fullscreen = ns_use_native_fullscreen; + /* TODO: move to common code */ DEFVAR_LISP ("x-toolkit-scroll-bars", Vx_toolkit_scroll_bars, doc: /* Which toolkit scroll bars Emacs uses, if any. ------------------------------------------------------------ revno: 111678 committer: Glenn Morris branch nick: trunk timestamp: Mon 2013-02-04 21:12:58 -0500 message: * lisp/profiler.el (profiler-report-mode-map): Add a restart menu entry. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-02-05 02:03:51 +0000 +++ lisp/ChangeLog 2013-02-05 02:12:58 +0000 @@ -1,5 +1,7 @@ 2013-02-05 Glenn Morris + * profiler.el (profiler-report-mode-map): Add a restart menu entry. + * play/gamegrid.el (gamegrid-add-score-with-update-game-score): Fix directory creation in fallback case. === modified file 'lisp/profiler.el' --- lisp/profiler.el 2013-01-25 04:41:39 +0000 +++ lisp/profiler.el 2013-02-05 02:12:58 +0000 @@ -466,6 +466,8 @@ ["Write Profile..." profiler-report-write-profile :active t :help "Write current profile to a file"] "--" + ["Start Profiler" profiler-start :active (not (profiler-running-p)) + :help "Start profiling"] ["Stop Profiler" profiler-stop :active (profiler-running-p) :help "Stop profiling"] ["New Report" profiler-report :active (profiler-running-p)