diff --git a/macos/cc/WindowMac.mm b/macos/cc/WindowMac.mm index 32c6d9fb..7248794e 100644 --- a/macos/cc/WindowMac.mm +++ b/macos/cc/WindowMac.mm @@ -525,8 +525,20 @@ static CVReturn displayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt [nsWindow makeKeyAndOrderFront:nil]; } -extern "C" JNIEXPORT jint JNICALL Java_io_github_humbleui_jwm_WindowMac__1nGetZOrder +extern "C" JNIEXPORT bool JNICALL Java_io_github_humbleui_jwm_WindowMac__1nIsFront (JNIEnv* env, jobject obj) { + jwm::WindowMac* instance = reinterpret_cast(jwm::classes::Native::fromJava(env, obj)); + NSWindow* nsWindow = instance->fNSWindow; + return [nsWindow isMainWindow]; +} + +extern "C" JNIEXPORT void JNICALL Java_io_github_humbleui_jwm_WindowMac__1nBringToFront + (JNIEnv* env, jobject obj) { + [NSApp activateIgnoringOtherApps:YES]; +} + +extern "C" JNIEXPORT jint JNICALL Java_io_github_humbleui_jwm_WindowMac__1nGetZOrder +(JNIEnv* env, jobject obj) { jwm::WindowMac* instance = reinterpret_cast(jwm::classes::Native::fromJava(env, obj)); NSWindow* nsWindow = instance->fNSWindow; NSWindowLevel level = [nsWindow level]; diff --git a/macos/java/WindowMac.java b/macos/java/WindowMac.java index 35a2d41d..645be065 100644 --- a/macos/java/WindowMac.java +++ b/macos/java/WindowMac.java @@ -251,15 +251,14 @@ public Window focus() { @Override public Window bringToFront() { assert _onUIThread() : "Should be run on UI thread"; - // TODO: impl me + _nBringToFront(); return this; } @Override public boolean isFront() { assert _onUIThread() : "Should be run on UI thread"; - // TODO: impl me - return false; + return _nIsFront(); } @Override @@ -315,6 +314,8 @@ public void close() { @ApiStatus.Internal public native void _nHideMouseCursorUntilMoved(boolean value); @ApiStatus.Internal public native void _nLockMouseCursor(boolean value); @ApiStatus.Internal public native void _nSetVisible(boolean value); + @ApiStatus.Internal public native boolean _nIsFront(); + @ApiStatus.Internal public native void _nBringToFront(); @ApiStatus.Internal public native Screen _nGetScreen(); @ApiStatus.Internal public native void _nRequestFrame(); @ApiStatus.Internal public native void _nMinimize();