/* NeXT/Open/GNUstep / MacOSX communication module.
-Copyright (C) 1989, 1993-1994, 2005-2006, 2008-2013
- Free Software Foundation, Inc.
+Copyright (C) 1989, 1993-1994, 2005-2006, 2008-2014 Free Software
+Foundation, Inc.
This file is part of GNU Emacs.
/*NSTRACE (ns_send_appdefined); */
#ifdef NS_IMPL_GNUSTEP
- // GNUStep needs postEvent to happen on the main thread.
+ // GNUstep needs postEvent to happen on the main thread.
if (! [[NSThread currentThread] isMainThread])
{
EmacsApp *app = (EmacsApp *)NSApp;
if (FRAME_NS_P (f))
{
EmacsView *view = FRAME_NS_VIEW (f);
- [view updateCollectionBehaviour];
+ [view updateCollectionBehavior];
}
}
}
#endif
-/* GNUStep and OSX <= 10.4 does not have cancelTracking. */
+/* GNUstep and OSX <= 10.4 does not have cancelTracking. */
#if defined (NS_IMPL_COCOA) && \
MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
-/* Check if menu open should be cancelled or continued as normal. */
+/* Check if menu open should be canceled or continued as normal. */
void
ns_check_menu_open (NSMenu *menu)
{
/* (Carbon way: [theEvent keyCode]) */
/* is it a "function key"? */
- fnKeysym = (code < 0x00ff && (flags&NSNumericPadKeyMask))
- ? ns_convert_key ([theEvent keyCode] | NSNumericPadKeyMask)
- : ns_convert_key (code);
+ /* Note: Sometimes a plain key will have the NSNumericPadKeyMask
+ flag set (this is probably a bug in the OS).
+ */
+ if (code < 0x00ff && (flags&NSNumericPadKeyMask))
+ {
+ fnKeysym = ns_convert_key ([theEvent keyCode] | NSNumericPadKeyMask);
+ }
+ if (fnKeysym == 0)
+ {
+ fnKeysym = ns_convert_key (code);
+ }
if (fnKeysym)
{
if (! [self isFullscreen])
{
#ifdef NS_IMPL_GNUSTEP
- // GNUStep does not always update the tool bar height. Force it.
+ // GNUstep does not always update the tool bar height. Force it.
if (toolbar) update_frame_tool_bar (emacsframe);
#endif
if (is_focus_frame)
dpyinfo->x_focus_frame = 0;
+ emacsframe->mouse_moved = 0;
ns_frame_rehighlight (emacsframe);
/* FIXME: for some reason needed on second and subsequent clicks away
[self setFSValue: fs_before_fs];
fs_before_fs = -1;
#ifdef HAVE_NATIVE_FS
- [self updateCollectionBehaviour];
+ [self updateCollectionBehavior];
#endif
if (FRAME_EXTERNAL_TOOL_BAR (emacsframe))
{
}
#ifdef HAVE_NATIVE_FS
-- (void)updateCollectionBehaviour
+- (void)updateCollectionBehavior
{
if (! [self isFullscreen])
{
if (fs_state != FULLSCREEN_BOTH)
{
+ NSScreen *screen = [w screen];
+
+#if defined (NS_IMPL_COCOA) && \
+ MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9
+ /* Hide ghost menu bar on secondary monitor? */
+ if (! onFirstScreen)
+ onFirstScreen = [NSScreen screensHaveSeparateSpaces];
+#endif
/* Hide dock and menubar if we are on the primary screen. */
if (onFirstScreen)
{
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:YES
- screen:[w screen]];
+ screen:screen];
[fw setContentView:[w contentView]];
[fw setTitle:[w title]];
[fw makeKeyAndOrderFront:NSApp];
[fw makeFirstResponder:self];
[w orderOut:self];
- r = [fw frameRectForContentRect:[[fw screen] frame]];
+ r = [fw frameRectForContentRect:[screen frame]];
[fw setFrame: r display:YES animate:YES];
[self windowDidEnterFullScreen:nil];
[fw display];
}
else
{
- error ("Invalid data type in dragging pasteboard.");
+ error ("Invalid data type in dragging pasteboard");
return NO;
}
}
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. */);
+Default is t for OSX >= 10.7, nil otherwise. */);
#ifdef HAVE_NATIVE_FS
ns_use_native_fullscreen = YES;
#else
DEFVAR_BOOL ("ns-use-srgb-colorspace", ns_use_srgb_colorspace,
doc: /*Non-nil means to use sRGB colorspace on OSX >= 10.7.
-Note that this does not apply to images.
-This variable is ignored on OSX < 10.7 and GNUStep. Default is nil. */);
- ns_use_srgb_colorspace = NO;
+Note that this does not apply to images.
+This variable is ignored on OSX < 10.7 and GNUstep. */);
+ ns_use_srgb_colorspace = YES;
/* TODO: move to common code */
DEFVAR_LISP ("x-toolkit-scroll-bars", Vx_toolkit_scroll_bars,