| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
KeyListener handling (Bug 526)
NativeWindow:
- expose 'hasFocus()'
Window:
- 'protected enqueueRequestFocus(..)' -> 'public requestFocus(boolean wait)'
- New: 'setKeyboardFocusHandler(KeyListener)' allowing focus traversal co-op w/ covered TK (AWT)
WindowImpl:
- Impl Window changes (see above)
- Impl 'consumedTag' see commit 3b38957f36d4f89b85730755a41c00892ac70591
NewtCanvasAWT:
- FocusAction only removes the global AWT focus owner.
This fixes a deadlock on the Windows platform of AWT's native peer requestFocus impl,
since it's no more called at this point.
- NEW FocusTraversalKeyListener is set as the newtChild's KeyboardFocusHandler,
allowing traversal to the next/previous AWT component.
AWTParentWindowAdapter:
- focusGained(..) clears AWT focus and propagates focus to Newt child,
non blocking w/ 'requestFocus(false)' (see above)
KeyEvent:
- Document limitations of getKeyChar() (Bug 526)
MacWindow:
- only deliver keyChar on key Typed events, harmonizing platform behavior (Bug 526)
WindowsWindow:
- regenerate the keyCode for EVENT_KEY_TYPED (Bug 526)
X11Windows:
- complete keyCode mapping X11 -> Newt - X11KeySym2NewtVKey()
- only deliver keyChar on key Typed events, harmonizing platform behavior (Bug 526)
Tests:
- GearsES2: Make focus visible
- TestParentingFocusTraversal01AWT: unit test for keyboard focus traversal w/ NewtCanvasAWT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instance ; Applet's on OS X are working
Generalize OffscreenLayerSurface
- Using new OffscreenLayerSurface allows using this functionality in a clean manner,
ie. no 'dirty' usage of MacOSXJAWTWindow in a JOGL GL class.
- 'Promoting' OffscreenLayerSurface functionality to JAWTWindow
and it's handling to GLDrawableFactoryImpl::createGLDrawable().
- Move MacOSXCGLDrawableFactory's "MacOSXJAWTWindow getLayeredSurfaceHost(NativeSurface surface)"
to NativeWindowFactory "OffscreenLayerSurface getOffscreenLayerSurface(NativeSurface surface, boolean ifEnabled)"
Use local JAWT instance
- Only w/ a local JAWT instance per JAWTWindow it is possible to switch between
offscreen-layer and onscreen. We also have to determing offscreen-layer lazy
at surface lock, since only at that time we have knowledge whether it's an Applet
or not.
+++
ContextUpdater:
Use local pthread mutex, add DEBUG output
JAWTWindow/NewtCanvasAWT:
Adding methods to request offscreen-layer-surface (if supported),
besides 'if applet' this may trigger the new functionality.
+++
Applet's on OS X are working:
- OS X 10.6.4
- Safari:
- Hangs for a while at start .. whole screen freezes .. approx. 10s
- Sometimes crashes when Applet stops - after all our resources are released!
- Keyboard input isn't assigned sometimes.
- Otherwise .. works well, incl. offscreen/onscreen parenting
- Firefox 8.0:
- Hangs for a while at start .. whole screen freezes .. approx. 10s
- Sometimes crashes when Applet stops - after all our resources are released!
- Keyboard input is never assigned.
- Otherwise .. works well, incl. offscreen/onscreen parenting
- OS X 10.7
- Safari:
- Sometimes crashes when Applet stops - after all our resources are released!
- Keyboard input isn't assigned sometimes.
- Otherwise .. works well, incl. offscreen/onscreen parenting
- Firefox 8.0:
- Sometimes crashes when Applet stops - after all our resources are released!
- Keyboard input is never assigned.
- Otherwise .. works well, incl. offscreen/onscreen parenting
|
|
|
|
|
|
|
|
|
| |
- Use proper OSX types for NS/CGL prototypes (gluegen) and impl.
- Impl layeredSurface (native):
- OSXUtil: NSView backing creation
- OSXUtil: AttachJAWTSurfaceLayer
- CGL: NSOpenGLLayer type impl. and hook
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'NSThemeFrame lockFocus' NSView.m:6053
- surfaceLock/Unlock: Use NewtView softLock
- createWindow:
- enable lock/unlockFocus to force realization of view
- add retainCount in dbg-msg
- clarify changeContentView
|
|
|
|
|
|
|
|
| |
needsDisplay/displayIfNeeded, ..
- Add 'soft' pthread locking (blockin) - impacts: needsDisplay/displayIfNeeded, ..
- needsDisplay/displayIfNeeded also respects destroyNotifySend (ignore action if set)
|
| |
|
|
|
|
| |
see comment
|
|
|
|
| |
focusAction() and native focus request on X11/Windows. On both platforms it's not required (proper focus traversion) and AWT would deadlock on Windows
|
|
|
|
| |
(native) impl. doesn't work.
|
| |
|
|
|
|
| |
incl. native focus request (X11, Windows, OSX)
|
|
|
|
| |
sendFocusLost/sendFocusGained -> focusChanged
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
windowRepaint() callback
- act on positionChanged(..) only for realized windows,
otherwise we could end in an AWT deadlock (AWT parent window).
- add view parenting calls (addSubView/removeFromSuperview)
- attachToParent after view configuration
- allow concurrently view draw
- add windowRepaint() callback (native -> java)
- add more debug tracing
|
|
|
|
| |
lockFocus(), deadlocks since we render separate to focus mgmt.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
behavior/tests)
- Old code was just requesting the focus and made the window upfront
and notifying a gained focus to WindowImpl. (hack)
- Using proper requestFocus impl. issuing focusAction() and utilizing native
focus gained/lost messages. This distinguish between 'makeKey' and 'orderFront'.
Also requesting and accepting (view) first responder role, which is a precursor
to proper gained/lost focus handling on OSX.
- NEWTCanvasAWT: Adding 'steal AWT focus':
+++
void requestFocus() {
super.requestFocus(); // AWT
< steal AWT focus >
NEWTChild.requestFocus()
}
+++
Helps make the focus traversal between NEWT/AWT more reliable.
Happend on OSX that AWT (NewtCanvasAWT instance) didn't release the focus
after NEWT child gained the same.
We are not able to use the 'focusAction()' here (disabled in this code path)
due to AWT-EDT blocking and recursive focus changes. The latter is also
intendend to request the AWT focus first ..
- AWT/NEWT focus test 01 passes on OSX
|
| |
|
|
|
|
| |
warp) - cleanup pos/coord translations
|
|
|
|
|
|
|
|
|
|
| |
Skip 'mouse move' event w/ same position
- On Windows, the OS sends us multiple event w/o change in position, suppress them
Add Enter/Exit events incl. synthesize 'enter' event for windows/osx
- X11: using native Enter/Leave events
- Windows: using native Leave event (tracking) and synthesized enter event
- OSX: TODO (required for the confined feature, etc)
|
|
|
|
|
|
|
|
|
|
|
|
| |
(client-space/top-level, child/parent)
At resizing a perent window w/ a NEWT OSX child,
the window position needs to be updated since it's absolute.
Re-adding sending *Changed notifications via the appropriate WindowImpl methods.
Turns out they are missing in some parent/child situations (fullscreen for example).
Native getLocationOnScreen0(..) queries totalHeight by it's own to have correct values.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
pos/size notifications
Newt/MacWindow
- remove redundant manual window-move/set-size code
- Use local getLocationOnScreen(..), fixes positionChanged(..)
- setFrameTopLeftPoint(..) use totalHeight (w/ insets)
- create: don't 'retain' the window reference (ref counter)
- close: release view,
- cache insets - to be used @ create
|
| |
|
|
|
|
| |
bottom-left to our top-left origin.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Regardless whether the window is a top-level or child window,
we set it's position w/ absolut left-bottom coordinated.
To do so even for an AWT parent component, we retrieve the screen position
by traversing through the AWT tree and adding up each parent's rel. position,
since the native view only reflects the AWT frame.
Note: OSX does not use native views for each AWT component.
- In case we reparent child -> top, we cannot orderOut() the ex parent,
but need to just call orderBack(..), otherwise the whole ex-parent frame
gets hidden.
- In case we close a child window (and reparent child -> top),
we need to remove the parent/child relation and orderOut(..)
before close(..), otherwise the window artifact is left behind.
|
|
|
|
| |
cleanup in X11
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
visibility:
- set pointer visible or invisible
confined:
- confine pointer to window, or not
warp:
- set mouse position within the window
Implemented for X11, tested manually with TestGearsES2NEWT (see code for action keys).
TODO: Windows, MaxOSX and Android (limited)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Note: surface's format _is_ the nativeVisualID of EGL.
More ANativeWindow (ANW) coop:
- add acquire/release for ANW
- validate ANW format
- Add fixCaps: 'format -> GLCaps' validation
Test:
- Constructor: Start w/ surface format RGB_565 (default)
- createNative: Filter EGLConfig w/ surface format
- Move surfaceHandle fetching from surfaceCreated -> surfaceChanged,
where the format is available.
- surfaceChanged: use fixedCaps validation
|
|
|
|
|
|
|
|
|
| |
parent,
a white window rectangle remains.
.. we also need to understand the absolute screen position better,
ie. when required and when not (at window creation currently).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'defer' 1st argument
- Adapt to GlueGen's Lock ChangeSet: e4baba27507ce78e64a150ec6f69fb96f5721a34
- All java callbacks for native have 'defer' 1st argument.
This allows enqueuing resulting events to the EDT if required,
ie. the native thread may not be 'compatible' (MacOSX).
- MacOSX-Native: enqueue key/mouse events and defer:=true for all java callbacks
Since we are comming from a 3rd-party thread (AWT/NSApp-MainThread)
we shall not abuse it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Feature related:
- Added always-on-top
- Added translucency
- Child Window Position
- AWT parent: manual traverse up the tree and calc position on screen
(Problem: the parent view rect is not at the proper position,
but covers the whole frame)
EDTUtil related:
- Works now w/ AWT ot headless (again)
- OSX native JNI callbacks gathering JNIEnv properly
and attaches/detaches thread.
- AWT case: using AWT-Event which properly dispatches our cocoa events
- MainThread (headless) case: Fork off thread w/ main class
and kick off NSApp run().
This leads to same behavior as w/ AWT case.
- Using DefaultEDTUtil
- Cleanup MainThread (implements EDTUtil)
- Currently not used as EDTUtil (osx), just as launcher
- Removed EDTUtil impl code, reuse DefaultEDTUtil
- Cleanup AWTEDTUtil (implements EDTUtil)
- Currently not used as EDTUtil (osx)
|
|
|
|
|
|
| |
reparent/fullscreen)
Window position is not deterministic enough and slows down processing while sync on it
|
|
|
|
| |
setFullscreenEWMH
|
| |
|
| |
|
| |
|
|
|
|
| |
window-decoration/insets size
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- FullScreen
- lock parent window if child
- X11: more sophisticated EWMH FS usage
- X11: set window 'Above' before FS and at focus
- allow window WM default position at window creation
- default position { -1, -1 } as hint to native WM
to gather a suitable default position
- wait until user-pos or WM-pos reached
- reconfigureWindow*
- allow -1 values for pos/size to mark no-change
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
changed ; Enhanced tests; Catch NV/XRANDR/GL bug
X11 fixes
- X11Screen properly uses it's display's connection
decorated in lock/unlock (for ScreenMode etc)
Ensure Screen's size is set if screenMode changed
- ScreenImpl's ScreenModeListener updates it's screen size
so 'external' changes will be detected.
Enhanced tests
- Verify more data rel. ScreenMode
Catch NV/XRANDR/GL bug
- Read TestScreenMode01NEWT/TestScreenMode01bNEWT comments
|
|
|
|
|
|
|
|
|
|
|
|
| |
- don't assume size/pos change - hence don't set window's values, but wait for satisfaction
- don't send resize events on our own, just rely on the event mechanism
- fullscreen: don't wrap action around invisibility from Java, Win7 flashes otherwise.
Clients who benefit from it (X11) impl. it natively.
- fullscreen exit: validate pos/size in case of a child window, like reparenting.
Otherwise the container might gets confused (eg. AWT).
|
|
|
|
| |
no reason to supress this information, it's sent only once (like X11)
|
|
|
|
| |
redundant DBG_PRINT on _NET_FRAME_EXTENTS
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
WindowImpl::reconfigureWindowImpl
Implement proper Inset usage (window decoration size)
- Insets are either polled (updateInsets()) or event driven (insetsChanged())
- Insets are used for size/pos calculations from Java side
- Natural size/pos in NEWT is client-area, ie w/o Insets
- Adding setTopLevelPosition()/setTopLevelSize() for top-level values,
ie including insets
WindowImpl::reconfigureWindowImpl
- Use flags to pass down the requested action to the native implementation
- Impl. all native actions: visible, decoration, reparent, resize, fullscreen
- Always use size/pos in client-area space, impl. shall use Insets to tranform them
- Remove double-setting of (reparent/fullscreen), which where introduced due to buggy impl. code
- Fix return from fullscreen position: Was overwritten with FS position (0/0)
- Fix decoration change: Remove visible toggle - not required, and actually disturbing
X11Windows/WindowsWindow: Added/Fixed Insets impl.
Tests (manual):
- TestSharedContextVBOES2NEWT utilizies proper window layout using Insets
- TestParenting03bAWT uses window layout for reparenting
|
|
|
|
| |
write access
|
|
|
|
|
|
|
| |
-> 0x0
Windows: setPosition was invoking setSize (new size propagation) even w/ nop size,
let WM event wmSize invoke setSize.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NativeCode:
"XChangeProperty( dpy, w, _NET_WM_STATE, XA_ATOM, 32, PropModeReplace, [ FULLSCREEN, ABOVE ] .."
shall only be issued if entering FS, otherwise [ FULLSCREEN, ABOVE ] will be set on the client
side at leaving FS, which is not intended.
This caused a size reset to fullscreen size/mode.
WindowImpl:
Used WindowImpl.this.width and WindowImpl.this.height, where w and h should be used,
the FS and pre-FS values.
|
|
|
|
|
|
|
|
|
|
| |
Use EDT X11 Display connection (DPY) for whole display/screen/window lifecycle,
but the user utilization (OpenGL, ..).
Only using the same DPY for creation and event dispatching allows catching
WM_DELETE_ATOM 'ClientMessage's.
Sync X11Window.c w/ commit 4dbb8731219212e27c9afb769a1c62b32bd230a6
- remove 'test' code .. use orig lines
|