diff options
author | Sven Gothel <[email protected]> | 2019-03-21 00:54:16 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2019-03-21 00:54:16 +0100 |
commit | 5ae0eeca1a7031931d10c0db56539bf565ee9591 (patch) | |
tree | a6eaf0a8c1d8a375b073a8fa6523d446df664790 | |
parent | c4cebae730496f95308ad7a9d01cabe2061d916e (diff) |
NewtCanvasJFX.NativeWindow: Delegate required child window canvas position
NewtCanvasJFX.NativeWindow shall pass through NewtCanvasJFX's Canvas position
to properly position the NEWT child window inside the top level Window.
NewtJFXReparentingKeyAdapter demonstrating manual reparenting demonstrates this case.
TestGearsES2NewtCanvasAWT's default behavior is to use a surrounding border
for the NEWTCanvasAWT child, similar to TestNewtCanvasJFXGLn.
5 files changed, 17 insertions, 76 deletions
diff --git a/src/newt/classes/com/jogamp/newt/javafx/NewtCanvasJFX.java b/src/newt/classes/com/jogamp/newt/javafx/NewtCanvasJFX.java index 721922ba9..7efde273a 100644 --- a/src/newt/classes/com/jogamp/newt/javafx/NewtCanvasJFX.java +++ b/src/newt/classes/com/jogamp/newt/javafx/NewtCanvasJFX.java @@ -628,12 +628,12 @@ public class NewtCanvasJFX extends Canvas implements NativeWindowHolder, WindowC @Override public int getX() { - return 0; + return NewtCanvasJFX.this.clientArea.getX(); } @Override public int getY() { - return 0; + return NewtCanvasJFX.this.clientArea.getY(); } @Override diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestGearsES2NewtCanvasAWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestGearsES2NewtCanvasAWT.java index dc6e95bab..77c4bf8f3 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestGearsES2NewtCanvasAWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestGearsES2NewtCanvasAWT.java @@ -91,7 +91,7 @@ public class TestGearsES2NewtCanvasAWT extends UITestCase { static int screenIdx = 0; static PointImmutable wpos; static DimensionImmutable wsize, rwsize = null; - static FrameLayout frameLayout = FrameLayout.None; + static FrameLayout frameLayout = FrameLayout.BorderCenterSurrounded; static ResizeBy resizeBy = ResizeBy.Component; static float[] reqSurfacePixelScale = new float[] { ScalableSurface.AUTOMAX_PIXELSCALE, ScalableSurface.AUTOMAX_PIXELSCALE }; diff --git a/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtAWTReparentingKeyAdapter.java b/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtAWTReparentingKeyAdapter.java index 276c4ccb9..7e92c8438 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtAWTReparentingKeyAdapter.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtAWTReparentingKeyAdapter.java @@ -49,54 +49,6 @@ public class NewtAWTReparentingKeyAdapter extends NewtReparentingKeyAdapter { this.frame = frame; } - public void keyPressed(final KeyEvent e) { - if( e.isAutoRepeat() || e.isConsumed() ) { - return; - } - if( 0 == e.getModifiers() ) { // all modifiers go to super class .. - final int keySymbol = e.getKeySymbol(); - switch (keySymbol) { - case KeyEvent.VK_R: - e.setConsumed(true); - quitAdapterOff(); - glWindow.invokeOnNewThread(null, false, new Runnable() { - public void run() { - final java.lang.Thread t = glWindow.setExclusiveContextThread(null); - if(glWindow.getParent()==null) { - printlnState("[reparent pre - glWin to HOME]"); - glWindow.reparentWindow(winHolder.getNativeWindow(), -1, -1, 0 /* hints */); - } else { - if( null != frame ) { - final InsetsImmutable nInsets = glWindow.getInsets(); - final java.awt.Insets aInsets = frame.getInsets(); - int dx, dy; - if( nInsets.getTotalHeight()==0 ) { - dx = aInsets.left; - dy = aInsets.top; - } else { - dx = nInsets.getLeftWidth(); - dy = nInsets.getTopHeight(); - } - final int topLevelX = frame.getX()+frame.getWidth()+dx; - final int topLevelY = frame.getY()+dy; - printlnState("[reparent pre - glWin to TOP.1]", topLevelX+"/"+topLevelY+" - insets " + nInsets + ", " + aInsets); - glWindow.reparentWindow(null, topLevelX, topLevelY, 0 /* hint */); - } else { - printlnState("[reparent pre - glWin to TOP.0]"); - glWindow.reparentWindow(null, -1, -1, 0 /* hints */); - } - } - printlnState("[reparent post]"); - glWindow.requestFocus(); - glWindow.setExclusiveContextThread(t); - quitAdapterOn(); - } } ); - break; - } - } - super.keyPressed(e); - } - @Override public void setTitle() { setTitle(frame, winHolder.getNativeWindow(), glWindow); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtJFXReparentingKeyAdapter.java b/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtJFXReparentingKeyAdapter.java index 253cbbce0..3ed847ae3 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtJFXReparentingKeyAdapter.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtJFXReparentingKeyAdapter.java @@ -50,6 +50,7 @@ public class NewtJFXReparentingKeyAdapter extends NewtReparentingKeyAdapter { this.frame = frame; } + @Override public void keyPressed(final KeyEvent e) { if( e.isAutoRepeat() || e.isConsumed() ) { return; @@ -64,29 +65,14 @@ public class NewtJFXReparentingKeyAdapter extends NewtReparentingKeyAdapter { public void run() { final java.lang.Thread t = glWindow.setExclusiveContextThread(null); if(glWindow.getParent()==null) { - printlnState("[reparent pre - glWin to HOME]"); - glWindow.reparentWindow(winHolder.getNativeWindow(), -1, -1, 0 /* hints */); + printlnState("[reparent pre - glWin to HOME: child pos "+winHolder.getNativeWindow().getX()+"/"+winHolder.getNativeWindow().getY()+"]"); + glWindow.reparentWindow(winHolder.getNativeWindow(), winHolder.getNativeWindow().getX(), winHolder.getNativeWindow().getY(), 0 /* hints */); + glWindow.setPosition(winHolder.getNativeWindow().getX(), winHolder.getNativeWindow().getY()); } else { - if( null != frame ) { - final InsetsImmutable nInsets = glWindow.getInsets(); - final InsetsImmutable aInsets; - { - final int aILeft = (int)frame.getScene().getX(); - final int aITop = (int)frame.getScene().getY(); - final int aIRight = (int)(frame.getWidth()-frame.getScene().getWidth())-aILeft; - final int aIBottom = (int)(frame.getHeight()-frame.getScene().getHeight())-aITop; - aInsets = new Insets(aILeft, aIRight, aITop, aIBottom); - } - final Bounds bL = frame.getScene().getRoot().getBoundsInLocal(); - final Bounds bs = frame.getScene().getRoot().localToScreen(bL); - final int topLevelX = (int)bs.getMinX(); - final int topLevelY = (int)bs.getMinY(); - printlnState("[reparent pre - glWin to TOP.1]", topLevelX+"/"+topLevelY+" - insets " + nInsets + ", " + aInsets); - glWindow.reparentWindow(null, topLevelX, topLevelY, 0 /* hint */); - } else { - printlnState("[reparent pre - glWin to TOP.0]"); - glWindow.reparentWindow(null, -1, -1, 0 /* hints */); - } + final com.jogamp.nativewindow.util.Point p0 = winHolder.getNativeWindow().getLocationOnScreen(null); + final com.jogamp.nativewindow.util.Point p1 = glWindow.getLocationOnScreen(null); + printlnState("[reparent pre - glWin to TOP.1] frame ", p0+", glWindow "+p1); + glWindow.reparentWindow(null, p1.getX(), p1.getY(), 0 /* hint */); } printlnState("[reparent post]"); glWindow.requestFocus(); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtReparentingKeyAdapter.java b/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtReparentingKeyAdapter.java index 969e2adb0..339230d48 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtReparentingKeyAdapter.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/parenting/NewtReparentingKeyAdapter.java @@ -51,6 +51,7 @@ public class NewtReparentingKeyAdapter extends NEWTDemoListener { this.winHolder = winHolder; } + @Override public void keyPressed(final KeyEvent e) { if( e.isAutoRepeat() || e.isConsumed() ) { return; @@ -71,11 +72,13 @@ public class NewtReparentingKeyAdapter extends NEWTDemoListener { public void run() { final java.lang.Thread t = glWindow.setExclusiveContextThread(null); if(glWindow.getParent()==null) { - printlnState("[reparent pre - glWin to HOME]"); + printlnState("[reparent pre - glWin to HOME: child pos "+winHolder.getNativeWindow().getX()+"/"+winHolder.getNativeWindow().getY()+"]"); glWindow.reparentWindow(winHolder.getNativeWindow(), -1, -1, 0 /* hints */); } else { - printlnState("[reparent pre - glWin to TOP.0]"); - glWindow.reparentWindow(null, -1, -1, 0 /* hints */); + final com.jogamp.nativewindow.util.Point p0 = winHolder.getNativeWindow().getLocationOnScreen(null); + final com.jogamp.nativewindow.util.Point p1 = glWindow.getLocationOnScreen(null); + printlnState("[reparent pre - glWin to TOP.1] frame ", p0+", glWindow "+p1); + glWindow.reparentWindow(null, p1.getX(), p1.getY(), 0 /* hint */); } printlnState("[reparent post]"); glWindow.requestFocus(); |