aboutsummaryrefslogtreecommitdiffstats
path: root/src/newt/classes
Commit message (Collapse)AuthorAgeFilesLines
* Bug 1267 - OSX El Capitan: Animated NEWT GLWindow flickers at resizeSven Gothel2015-11-152-2/+15
| | | | | | | | | | | | OSX El Capitan 10.11.1 using JRE 1.8.0_66: Animated NEWT GLWindow flickers at resize. While at live resize the animation thread renders into the live resized NSView which causes flickering on OSX 10.11. Resolution is to pause animation during live resize and resume at its end.
* Remove deprectated classes and methodsSven Gothel2015-10-151-35/+0
|
* WindowImpl.quirks: Access default -> protected, also fix API doc comment.v2.3.2Sven Gothel2015-10-101-3/+3
|
* Bug 1249: NEWT/X11 Visibility: Listening to more events for updated state; ↵Sven Gothel2015-10-101-38/+116
| | | | | | | | | | | | | | | | | Adding QUIRK_BIT_VISIBILITY 1) More visibility detection on post ConfigureNotify events, since the latter may not yet contain the updated visibility state as it whould (WM bug!): - EnterNotify - LeaveNotify - Disabled - Expose - VisibilityNotify 2) Introducing quirks. Setting QUIRK_BIT_VISIBILITY to handle the issue where visibility -> false could not even be set.
* Bug 1247 - TestGearsNewtAWTWrapper fails AWT recreation case removeNotify -> ↵Sven Gothel2015-10-092-46/+112
| | | | | | | | | | | | | | | | | | addNotify, e.g. by moving to other monitor AWTCanvas removeNotify didn't cause 'local' destruction of the NEWT window, allowing a 'recreate' w/ subsequent addNotify. This case has been hacked-into NEWT.AWT.WindowDriver + AWTCanvas: - suppression of window destroy events - keeping fields/states intact in NEWT.AWT.WindowDriver - propagating signals appropriately Note: This is barely a working hack and not a fine piece of software :) This AWT backend driver exists only due to historical reasons. This hack simply proves that JAWTWindow works properly.
* Bug 1247: Align NEWT AWT driver w/ GLCanvas (not fixing any issues)Sven Gothel2015-10-091-18/+40
|
* Bug 1249 - NEWT X11: setVisible(false) IconicState/_NET_WM_STATE_HIDDEN: ↵Sven Gothel2015-10-091-1/+2
| | | | | | | | | | | Handle case where KDE unmaps the window Update our internal JavaWindow.isMapped according to MapNotify and UnmapNotify. This takes care of a situation (KDE) where a window is unmapped during IconicState. For unmapped windows we cannot interprete _NET_WM_STATE_HIDDEN and we have to issue XMapWindow for restoring the window.
* Bug 1249 - NEWT X11: setVisible(*) _NET_WM_STATE_HIDDEN update not received ↵Sven Gothel2015-10-091-7/+41
| | | | | | | | | | | | | | | | | | | | | | at ConfigureNotify event (2) On gnome shell WM, sometimes KDE WM, it has been observed that the _NET_WM_STATE_HIDDEN update (visible or invisible) is not received at ConfigureNotify event. Turns out the state is finally updated at FocusOut! This change tests _NET_WM_STATE_HIDDEN visibility hint for mapped window also for FocusIn and FocusOut events, besides the ConfigureNotify event. Further more, NormalState to restore a hidden but mapped window did not work, so it is no more being sent. We limit us here to _NET_ACTIVE_WINDOW. 2 unit tests are prepared to test this issue: - TestGLWindows00NEWT - TestParenting01NEWT
* Bug 1249 - NEWT X11: setVisible(false) IconicState not listening to ↵Sven Gothel2015-10-081-14/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | _NET_WM_STATE_HIDDEN; setVisible(true) not restoring from _NET_WM_STATE_HIDDEN Using Gnome Shell 3.14.4-1~deb8u1 disclosed an issue w/ our newly utilized IconicState/_NET_WM_STATE_HIDDEN, i.e. visibleChanged(false) was never received. This is a regression of commit 2d837a7a7130702ad36b694875613fae77c7ef06, which utilizes WM_CHANGE_STATE_IDX + IconicState for visibility on top-level windows. This bug consist out of _two_ isssue: 1) setVisible(false) IconicState not listening to _NET_WM_STATE_HIDDEN Here, we 'listen' to _NET_WM_STATE_HIDDEN when receiving ConfigureNotify if supported _and_ XMapWindow has been issued. In such case existence/non-existence of _NET_WM_STATE_HIDDEN determines visibility. Otherwise, we have wait for MapNotify/UnmapNotify. The 'XMapWindow has been issued' criteria is tracked by new field 'JavaWindow.isMapped' and set/cleared when we actually issue XMapWindow/XUnmapWindow! 2) setVisible(true) not restoring from _NET_WM_STATE_HIDDEN It has been observed that restoring IconicState/_NET_WM_STATE_HIDDEN via XMapWindow or even NormalState may not work reliably on WMs. See <https://stackoverflow.com/questions/30192347/how-to-restore-a-window-with-xlib> Hence we restore from this WM state via NormalState _and_ _NET_ACTIVE_WINDOW. Both strategies seem to work well on KDE as well as on Gnome.
* Bug 1238 - Fix NPE for Window-Icon's PNGPixelRect for unresolved location; ↵Sven Gothel2015-10-036-40/+68
| | | | | | | | | | | | | | | | | | | | | | | | | Bug 1199 - Add setting to disable default window icons Bug 1238 - Fix NPE for Window-Icon's PNGPixelRect for unresolved location, i.e. null URLConnections Testing w/ jogl/make/scripts/tests.sh USE_BUILDDIR=1, discloses this issue - since the icons are available in jar only. Handling all unresolved resources, i.e. null URLConnection, is required. Further more, the icon list passed via property 'newt.window.icons' shall be separated by comma as well. This allows passing the list via scripts more conveniently. -Dnewt.window.icons="newt/data/jogamp-16x16.png,newt/data/jogamp-32x32.png" +++ Bug 1199 - Add setting to disable default window icons This patch also allows disabling JogAmp's own window icons by simply defining a non-existing location, i.e. -Dnewt.window.icons="null,null"
* Bug 1237: Adopt GlueGen's clarification of IOUtil.getResource(..), commit ↵Sven Gothel2015-10-033-9/+9
| | | | | | | | d78bb1be0a6290cb94918b21865a023c01825048 - Skip relative lookup for IOUtil.ClassResources using 'asset' only (from JAR file) - Tested w/ jar file and build-dir, see scripts/tests.sh 'USE_BUILDDIR'
* Bug 1232 - NEWT Translucent Decorated Windows Not Working On Windows >= 8 ↵Sven Gothel2015-10-011-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (Lack of Aero / Blur ) Adopting new undocumented user32.dll Windows >= 8 API: - SetWindowCompositionAttribute / AccentState See: - <https://github.com/riverar/sample-win10-aeroglass/blob/master/MainWindow.xaml.cs> - <http://withinrafael.com/adding-the-aero-glass-blur-to-your-windows-10-apps/> - <http://undoc.airesoft.co.uk/user32.dll/SetWindowCompositionAttribute.php> - <http://undoc.airesoft.co.uk/user32.dll/GetWindowCompositionAttribute.php> +++ Cleaning up WindowsDWM.h, use on header file (in stub_includes) for GlueGen and implementation. +++ Merge java implementation within GDIUtil.DwmSetupTranslucency(..), to be utilized by NEWT and JOGL. NEWT issues GDIUtil.DwmSetupTranslucency(..) at creation and when toggling decoration. Toggling decoration on Win >= 8 leads to lost of translucency when returning to decorated window. On Win 7, this may work .. but is also buggy. +++ Followup patch is needed for NEWT to _not_ clear the background!
* Bug 1205 - NEWT Security: Clear framebuffer after creation and before ↵Sven Gothel2015-09-291-6/+20
| | | | | | | | | | | | | | | | | | | visibility (Windows Onscreen) WindowsWindow.c: - WindowUserData.isInCreation set while window at initizalization, i.e. before final size/pos/visibility. Also no visibility until final NewtWindow_setVisiblePosSize(..) call. This is possible since even w/o ShowWindow upfront, UpdateInsets(..) is able to gather accurate values. - Suppress any Java callback while WindowUserData.isInCreation, issue one callback when window is final. Use newly accumulated callback WindowImpl.sizePosInsetsFocusVisibleChanged(..) - While WindowUserData.isInCreation, WM_PAINT triggers WM_ERASEBKGND and WM_ERASEBKGND actually erases background w/ window background color.
* NEWT WindowImpl.createNative(): Post creation: Only perform mod-actions if ↵Sven Gothel2015-09-291-22/+27
| | | | non default (performance)
* Bug 1222 - NEWT OSX: setAlwaysOnTop() and setAlwaysOnBottom() not workingSven Gothel2015-09-261-11/+6
| | | | | | | | | | | | - The NSWindow level must be set at window creation - Levels are - aontop: kCGMaximumWindowLevel - aonbottom: kCGDesktopIconWindowLevel (w/ input) - normal: NSNormalWindowLevel - Hence we need to recreate the NSWindow if toggling the state, similar to opaque .. etc.
* NEWTDemoListener: Fix 'v' modifier collision of ctrl, use shift.Sven Gothel2015-09-261-1/+1
|
* Bug 1188: Fix setMaximized(..) isReconfigureMaskSupported(..) querySven Gothel2015-09-261-2/+2
| | | | | | | setMaximized(..) isReconfigureMaskSupported(..) was using the state bit-number instead of the state bit-mask! Fixed.
* Bug 1214: Fix Deadlock in screenPositionChanged(..); Use ↵Sven Gothel2015-09-262-103/+122
| | | | | | | | | | | | | | | | | | | | | | | | | | | screenPositionChanged(..) in size[Screen]PosInsetsChanged(..) on OSX; Cleanup OSX Code - Fix Deadlock in screenPositionChanged(..) Defer requires to spawn whole child-window action to another thread since we may come from native 'NewtWindow::windowDidMove()' on MainThread. - Use screenPositionChanged(..) in size[Screen]PosInsetsChanged(..) on OSX Move callback WindowImpl::sizePosInsetsChanged(..) to OSX's WindowDriver::sizeScreenPosInsetsChanged(..), since we need to use screenPositionChanged(..) to calculate child window relative position to parent. I.e. we receive the location on screen. - Cleanup OSX Code - Native JNI entries shall handle NULL windowHandle -> return - Clarify usage of 'getWindowHandle()' and use 'isNativeValid()' if appropriate. - Don't re-use cached getWindowHandle() for non-blocking off-thread actions, since handle may become invalid. - Clarify getLocationOnScreen*(..) implementation code, i.e. separate getLocationOnScreenByParent(..) semantics.
* Bug 1214 - NEWT MacOSX: Detect auto-resize of Window when it is larger than ↵Sven Gothel2015-09-252-23/+41
| | | | | | | | | | | screen - On OSX (similar to X11) a created window with size > screen will get resized to fit screen size implicitly. - Fix detects insets, position and size after onscreen window creation. - Patch also merges insets and size change java callback
* NEWTDemoListener: Double-Mouse-Click Fullscreen only w/ 3 pointers involvedSven Gothel2015-09-191-1/+1
|
* TestGearsES2*AWT / NewtDemoListener: Show pixel-scale in title bar.Sven Gothel2015-09-181-1/+9
|
* Unit Tests: NEWTDemoListener: Less verbose; GraphUI-Demos: Show DPI and ↵Sven Gothel2015-09-171-11/+12
| | | | Pixel-Scale in GLEventListener.init(...)
* NEWT Window Maximize: re-gain focus after maximize action (maybe lost on ↵Sven Gothel2015-09-151-0/+5
| | | | platforms, i.e. OSX)
* Fix NEWT DisplayImpl.createPointerIcon: Pass through Exceptions, as required ↵Sven Gothel2015-09-151-10/+24
| | | | by API doc.
* Bug 1211: Refine NEWTDemoListener, JOGLNewtAppletBaseSven Gothel2015-09-152-48/+72
| | | | | | | | | | | - NEWTDemoListener.createPointerIcons(..) - Use Display instance - Simplify PointerIcon creation using a list, skipping all non-found resources. - JOGLNewtAppletBase - Bring back reparent action via key 'r' - Drop redundant PointerIcon, using NEWTDemoListener
* Bug 1211: Hardening Condition-Wait from Spurious-Wakeups and unintended ↵Sven Gothel2015-09-1511-154/+604
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | InterruptedException(s) Below is an updated list of Condition-Wait classifications as described in Bug 1211. This list includes recent changes on GlueGen regarding this Bug 1211. A followup commit will address the unit tests. - Noncancelable + Persistent-Wait - GLMediaPlayerImpl.StreamWorker thread (changed) - pauses thread in case of intr - Cancelable + Persistent-Wait: - LFRingbuffer.getImpl(..) - LFRingbuffer.waitForFreeSlots(int) - SyncedRingbuffer.getImpl(..) - SyncedRingbuffer.waitForFreeSlots(int) - FunctionTask.invokeOnNewThread(..) (changed) - RunnableTask.invokeOnNewThread(..) (changed) - SharedResourceRunner.run() - SharedResourceRunner.doAndWait() (changed) - SharedResourceRunner.start() (changed) - SharedResourceRunner.stop() (changed) - GLMediaPlayerImpl.StreamWorker ctor (changed) - GLMediaPlayerImpl caller thread actions do*() (changed) - AndroidGLMediaPlayerAPI14.getNextTextureImpl(..) (changed) - DisplayImpl.enqueueEvent(..) (changed) -> Persistent-Wait -> Cancels wait and NEWTEvent -> dispatchMessage(NEWTEventTask): always notifyCaller! - GLDrawableHelper.invoke(..) (changed) - DefaultEDTUtil.waitUntilIdle() (changed) - DefaultEDTUtil.waitUntilStopped() (changed) - DefaultEDTUtil.invokeImpl(..) (changed) - DefaultEDTUtil.NEDT.run(..) (changed) - AWTEDTUtil.waitUntilStopped(..) (changed) - AWTEDTUtil.invokeImpl(..) (changed) - AWTEDTUtil.NEDT.run(..) (changed) - SWTEDTUtil.invokeImpl(..) (changed) - SWTEDTUtil.waitUntilStopped(..) (changed) - SWTEDTUtil.NEDT.run(..) (changed) - GLWorkerThread.invokeAndWait(..) - GLWorkerThread.start() (changed) - GLWorkerThread.WorkerRunnable.run() (changed) - Animator.run() (changed) - AnimatorBase.finishLifecycleAction() (changed) - OSXUtil.RunOnMainThread(..) (changed) - SingletonInstanceServerSocket.Server.shutdown() (changed) - SingletonInstanceServerSocket.Server.start() (changed) - com.jogamp.audio.windows.waveout.Mixer.shutdown() (changed) - Extending/Using InterruptSource.Thread (changed) - DefaultEDTUtil.NEDT - AWTEDTUtil.NEDT - SWTEDTUtil.NEDT - GLWorkerThread.thread - Mixer.FillerThread - Mixer.MixerThread - Using InterruptSource.Thread (changed) - TempFileCache - LauncherTempFileCache - Animator.thread - SingletonInstanceServerSocket.Server.serverThread Deprecated: - FunctionTask.invoke(..) (changed) -> on current thread, no wait -> deprecated - RunnableTask.invoke(..) (changed) -> on current thread, no wait -> deprecated
* Bug 1208 - NEWT: Window: Consider avoiding operations if not supported, see ↵Sven Gothel2015-08-311-28/+84
| | | | | | | | | | getSupportedStateMask() - Skip operation if not supported - Fix skip operation if isFullscreen() && !isNativeValid(): We have to store the state w/o action, so the state can be picked up at native creation.
* Fix Bug 1209 - Regression of Bug 1188 Patches: Parented Fullscreen Issues ↵Sven Gothel2015-08-311-51/+94
| | | | | | | | | | | | | | | | | (X11, Windows) The regression was caused by WindowImpl changes: (1) Not ignoring maximizedChanged(..) during fullscreen. X11 windows may promote maximized state, which will be passed in reconfigure -> non-fullscreen and hinders reseting the original size. (2) getReconfigureMask(..) was wrongly translated to state-mask, i.e. special handling of STATE_MASK_UNDECORATED and STATE_MASK_CHILDWIN was removed. - Issues above were corrected - Replace PSTATE_MASK_FULLSCREEN_NFS* w/ own stateMaskNFS for simplification
* Bug 1188: Refine getSupportedStateMask() semantics and minimum requirements ↵Sven Gothel2015-08-318-20/+18
| | | | | | | | | (adding STATE_MASK_FULLSCREEN) Refine getSupportedStateMask(): - always for _after_ native creation, i.e. first visibility - removed STATE_MASK_AUTOPOSITION - adding STATE_MASK_FULLSCREEN to minimum requirements
* Bug 1202 - Add support of Adaptive Vsync via [GLX|WGL]_EXT_swap_control_tearSven Gothel2015-08-273-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [GLX|WGL]_EXT_swap_control_tear extensions support asynchronous buffer swaps, i.e. adaptive Vsync. <https://www.opengl.org/wiki/SwapInterval_aka_vsync#Adaptive_Vsync> <https://www.opengl.org/registry/specs/EXT/wgl_swap_control_tear.txt> <https://www.opengl.org/registry/specs/EXT/glx_swap_control_tear.txt> <http://keithp.com/blogs/async_flip/> The extensions utilizes a negative interval value, enabling late swaps to occur without synchronization to the video frame. Hence '-1' has new semantics, previously it was the 'default value' of 'untouched vsync interval'. New default is: - 0 for unrealized context - 1 for realized context +++ It requires [GLX|WGL]_EXT_swap_control, hence we shall ensure to use use this extension in the implementation of GLContext.setSwapInterval(..). +++ Mesa3D seems to support GLX_SGI_swap_control only. +++ Implemented on Windows and X11. +++ On GNU/Linux using NVidia driver w/ my setup(*), sadly the query GLX.glXQueryDrawable(displayHandle, drawable.getHandle(), GLX.GLX_LATE_SWAPS_TEAR_EXT, val); always returns zero here, indicating async vsync is not supported. (Queried the attribute for every frame in windowed or fullscreen mode) Fullscreen (*) - Debian 8 - Kernel 3.16 - KDE/Kwin - GL Version 4.5 (Core profile, arb, compat[ES2, ES3, ES31], FBO, hardware) - 4.5.0 NVIDIA 355.06 [GL 4.5.0, vendor 355.6.0 (NVIDIA 355.06)] - GL_RENDERER GeForce GTX 660/PCIe/SSE2 - Samsung U28D590 (DFP-4): Internal DisplayPort +++
* Merge branch 'Bug1178' of https://github.com/xranby/joglSven Gothel2015-08-261-14/+44
|\
| * Bug 1178: X11UnderlayTracker: Resend identical KeyCode, KeySymbol and KeyCharXerxes Rånby2015-08-251-6/+2
| | | | | | | | Signed-off-by: Xerxes Rånby <[email protected]>
| * Bug 1178: Fix cc3: Set position using LocationOnScreen coordinates.Xerxes Rånby2015-08-251-8/+42
| | | | | | | | Signed-off-by: Xerxes Rånby <[email protected]>
* | Bug 1188: Fix API doc of getSupportedStateMask(); Misc Changes (see below)Sven Gothel2015-08-253-31/+29
| | | | | | | | | | | | | | | | - Fix STATE_MASK_CREATENATIVE - Simplify resetStateMask() - Windows WindowDriver: Remove STATE_MASK_STICKY from supported states - TestGearsNEWT: Use NEWTDemoListener
* | Bug 1188: Introduce getSupportedStateMask() implemented via WindowDriver's ↵Sven Gothel2015-08-2113-57/+241
| | | | | | | | | | | | | | | | | | | | | | | | | | getSupportedReconfigMaskImpl() - See getSupportedStateMask() for semantics - getSupportedReconfigMaskImpl() result now used for isReconfigureMaskSupported() - getSupportedReconfigMaskImpl() implementations: - Full featured: X11, Windows and OSX - X11: Use WindowManager Atoms for certain features (dynamic) - Others: Use fixed features. - TODO: Consider avoiding actions if not supported.
* | Bug 1188: Refine reconfig state bitsSven Gothel2015-08-202-8/+8
| |
* | Bug 1188: Cleanup public/private[reconfig, non-reconfig] state bitsSven Gothel2015-08-192-16/+16
|/ | | | | | | | | - STATE_BIT_FULLSCREEN_SPAN is private and used for reconfigure, hence STATE_BIT_COUNT_RECONFIG is needed. - STATE_BIT_FULLSCREEN_SPAN is added at the end of public state bits - PSTATE_BIT_MINMAXSIZE_SET is unused.
* Bug 1188: Add @since 2.3.2 tagSven Gothel2015-08-182-14/+86
|
* Bug 1188: Windows: Implement unresizable using appropriate windows stylesSven Gothel2015-08-121-11/+0
| | | | | | | - to avoid resizing when toggling resizable (change of window border) we maintain 'RECT insets' in our WindowUserData struct and fix the client -> top position late in NewtWindow_setVisiblePosSize(..) after any style change.
* Bug 1188: Refine Maximized on X11 / Impl. Maximized and Iconify on WindowsSven Gothel2015-08-123-74/+164
| | | | | | | | | | | | | | | | | | | | | | | | | | | WindowImpl - remove updateMinMaxSize(..) - unused info - fix appendStateToString: show all maximized state changes if reconfig - add sizePosMaxInsetsChanged(..) and sendMouseEventRequestFocus(..) accumulating multiple callbacks from impl. - add: maximizedChanged(..) notification from native impl. - refine manual maximized mode used for OSX and Windows (single extent) - reconfigMaximizedManual(..) - resetMaximizedManual(..) X11 WindowDriver: - Update maximized at xreconfig, read from _NET_WM_STATE - Use less Java callbacks from JNI Windows WindowDriver: - Use native maximized, if HORZ && VERT, otherwise use manual maximized for single extent. - Invisible of top-window -> MINIMIZED/ICONIFY showing the app in task-bar.
* NEWT WindowImpl + WindowDriver: Remove updateInsetsImpl(Insets insets) and ↵Sven Gothel2015-08-1111-64/+5
| | | | | | rely solely on insetsChanged(..) (event driven) Only affected WindowDriver is AWT, which now updates the insets when setVisible(true).
* NEWT OSX WindowDriver: Must wait for resize on main-thread (Related to Bug 1188)Sven Gothel2015-08-111-1/+1
| | | | | | If not waiting for resize on main-thread, corruption may happen at continued rendering. This has been experienced w/ maximize-horizontally (Bug 1188).
* NEWY WindowImpl appendStateBits(..): Refine maximized; Refine WindowDriver's ↵Sven Gothel2015-08-114-7/+14
| | | | reconfig DEBUG
* Bug 1188: OSX: Add maximize horz/vert, implemented manuallySven Gothel2015-08-111-4/+44
|
* Merge branch 'master' of https://github.com/xranby/joglSven Gothel2015-08-111-2/+16
|\
| * Bug 1178: Fix cc10 regression caused by the fix for cc7.Xerxes Rånby2015-08-101-2/+16
| | | | | | | | | | | | | | | | | | | | | | Bug 1178 cc10: We no longer throw an ExceptionInInitializerError when X11 is not available. Fix 1178 cc10: We need to use an X11 resource in the constructor in order to throw an ExceptionInInitializerError if X11 is not available. We can resolve this by query for the X11 display and screen inside the constructor. Signed-off-by: Xerxes Rånby <[email protected]>
* | NEWT WindowDriver's reconfig DEBUG: Add end-of-method dump of current ↵Sven Gothel2015-08-113-6/+13
| | | | | | | | states, dump current and new states upfront.
* | Bug 1188: Fix regression on OSX setVisible: in-visibility never reached on ↵Sven Gothel2015-08-111-5/+5
| | | | | | | | | | | | | | | | | | | | child windows / Fix [Un}Resizable style - Fix regression on OSX setVisible: in-visibility never reached on child windows - Fix 'typo' while porting to bit-mask, i.e. '!=' -> '=='. - Fix [Un}Resizable style - Use NSResizableWindowMask only for !Undecorated and if STATE_MASK_RESIZABLE is set.
* | WindowImpl appendStateBits(..): Fix POINTER* representationSven Gothel2015-08-111-1/+3
| |
* | Bug 1188: Fix regression on X11 setVisible: in-visibility never reached on ↵Sven Gothel2015-08-111-1/+2
|/ | | | | | | | | child windows It has been experienced that UnmapNotify is not sent for child windows when using IconicState! Hence the visible:=false event never reaches the Window, causing an error. This patch only uses IconicState for top-level windows and if requested.