/*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;
}
#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 (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 t. */);
+This variable is ignored on OSX < 10.7 and GNUstep. */);
ns_use_srgb_colorspace = YES;
/* TODO: move to common code */