To replicate use same test case as Bug 956 When the editor is detached, the newt window is thrown behind the eclipseRCP editor, standing on its own in the desktop. If the editor is docked back again in the main window, the newt window returns to proper position and behaviour. Native window handle remains the same: 20140210 12:51:04 <sgothel> SWTAccessor.getWindowHandle(this) <- do validate .. 20140210 12:51:25 <sgothel> iff changes, we need a new SWTNativeWindow 20140210 12:51:36 <sgothel> (pull-in, i.e. becomes valid again) 20140210 12:51:36 <hija> ok hold on 20140210 12:54:45 <hija> native Handle 140509586886384 20140210 12:54:45 <hija> SWTAccessor 140509586886384 Proposed solution: ( discussion http://jogamp.org/log/irc/jogamp_20140210050544.html#l15 ) When detaching or reattaching the editor from the main app, SWT calls Widget.reskin() on all the objects of the hierarchy, and thus on NewtCanvasSWT. We can use this to trigger a reparenting of the newt-window: newtChild.reparentWindow(null, -1, -1, 0 /* hints */); newtChild.setVisible(false); newtChild.reparentWindow(nativeWindow, -1, -1, Window.REPARENT_HINT_BECOMES_VISIBLE); newtChild.setVisible(true); newtChild.sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED); Reparenting to null window is a workaround to force newtChild to see the change. Otherwise, the change is blocked later: 20140210 14:39:20 <hija> reparenting the window has a: if(newParentWindow != getParent()) { 20140210 14:40:55 <hija> in WindowImpl.java 20140210 14:41:17 <hija> line 1301 . . . 20140210 15:24:28 <sgothel> the reparent shall happen when you pull-out (w/ null parent) and then you push-in (w/ valid parent handle) 20140210 15:24:43 <sgothel> IMHO .. then you will have a proper behavior 20140210 15:25:02 <sgothel> i.e. both resulting in ReparentOperation.ACTION_NATIVE_REPARENTING 20140210 15:25:41 <sgothel> pull-out: 20140210 15:25:43 <sgothel> newtChild.setVisible(false); 20140210 15:25:43 <sgothel> newtChild.reparentWindow(null, -1, -1, 0 /* hints */); 20140210 15:25:48 <sgothel> push-in: 20140210 15:25:57 <sgothel> newtChild.reparentWindow(nativeWindow, -1, -1, Window.REPARENT_HINT_BECOMES_VISIBLE); 20140210 15:25:57 <sgothel> newtChild.setVisible(true); 20140210 15:26:16 <sgothel> newtChild.sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED); // trigger a resize/relayout to listener 20140210 15:26:51 <sgothel> w/ SWTNativeWindow nativeWindow Proposed solution triggers the disappearance of the whole eclipseRCP window: 20140210 15:39:10 <hija> if you have setVisible(false); 20140210 15:39:19 <hija> dragging the view out to a standalone window hides all of eclipse
Fixed via bug 969 I assume. Otherwise we need to reopen it.