Merge pull request #26 from trunkmaster/master

Added support for WindowMaker's WMFHideApplication action.
This commit is contained in:
Fred Kiefer 2019-04-06 23:31:39 +02:00 committed by GitHub
commit 67bc99516b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 67 additions and 23 deletions

View file

@ -1,3 +1,28 @@
2019-04-06 Sergii Stoian <stoyan255@ukr.net>
* Headers/Additions/GNUstepGUI/GSDisplayServer.h,
* Source/NSApplication.m,
* Source/GSDisplayServer.m: `hidewindow` method was renamed to
`hideApplication`
* Source/NSApplication.m (hide:): Change comment before call to
`hidewindow`.
* Source/GSDisplayServer.m (hidewindow:): fixes to return value and type.
Change comment.
2019-04-05 Sergii Stoian <stoyan255@gmail.com>
* Headers/AppKit/NSEvent.h: new event subtype `GSAppKitAppHide` was added.
* Source/NSWindow.m (sendEvent:): handle "GSAppKitAppHide" event subtype.
* Headers/Additions/GNUstepGUI/GSDisplayServer.h,
* Source/GSDisplayServer.m (hidewindow:): new methods was added.
* Source/NSApplication.m (hide:): Send -hidewindow: to to the main menu.
If window manager doesn't support _GNUSTEP_HIDE_APP atom - hide windows
by ourself.
2019-04-03 Sergii Stoian <stoyan255@ukr.net>
* Source/NSApplication.m (activateIgnoringOtherApps:):

View file

@ -136,6 +136,7 @@ APPKIT_EXPORT NSString *GSScreenNumber;
- (void) windowbacking: (NSBackingStoreType)type : (int)win;
- (void) titlewindow: (NSString *)window_title : (int)win;
- (void) miniwindow: (int)win;
- (BOOL) hideApplication: (int)win;
- (BOOL) appOwnsMiniwindow;
- (void) setWindowdevice: (int)win forContext: (NSGraphicsContext *)ctxt;
// Deprecated

View file

@ -532,6 +532,7 @@ typedef enum {
GSAppKitDraggingFinished,
GSAppKitRegionExposed,
GSAppKitWindowDeminiaturize,
GSAppKitAppHide
} GSAppKitSubtype;
#endif

View file

@ -601,6 +601,13 @@ GSCurrentServer(void)
[self subclassResponsibility: _cmd];
}
/** Ask the window manager to hide all the application windows for us.
Return whether they have been hidden. */
- (BOOL) hideApplication: (int) win
{
return NO;
}
/** Returns YES if the application should create the miniwindow counterpart
to the full size window and own it. Some display systems handle the
miniwindow themselves. In this case the backend subclass should

View file

@ -2496,30 +2496,36 @@ image.</p><p>See Also: -applicationIconImage</p>
[_hidden_main resignMainWindow];
}
windows_list = GSOrderedWindows();
iter = [windows_list reverseObjectEnumerator];
/** Ask the window manager to hide all the application windows for us.
Return whether they have been hidden. */
win = [[self mainMenu] window];
if ([GSServerForWindow(win) hideApplication: [win windowNumber]] == NO)
{
windows_list = GSOrderedWindows();
iter = [windows_list reverseObjectEnumerator];
while ((win = [iter nextObject]))
{
if ([win isVisible] == NO && ![win isMiniaturized])
{
continue; /* Already invisible */
}
if ([win canHide] == NO)
{
continue; /* Not hideable */
}
if (win == _app_icon_window)
{
continue; /* can't hide the app icon. */
}
if (_app_is_active == YES && [win hidesOnDeactivate] == YES)
{
continue; /* Will be hidden by deactivation */
}
[_hidden addObject: win];
[win orderOut: self];
}
while ((win = [iter nextObject]))
{
if ([win isVisible] == NO && ![win isMiniaturized])
{
continue; /* Already invisible */
}
if ([win canHide] == NO)
{
continue; /* Not hideable */
}
if (win == _app_icon_window)
{
continue; /* can't hide the app icon. */
}
if (_app_is_active == YES && [win hidesOnDeactivate] == YES)
{
continue; /* Will be hidden by deactivation */
}
[_hidden addObject: win];
[win orderOut: self];
}
}
_app_is_hidden = YES;
if (YES == [[NSUserDefaults standardUserDefaults]

View file

@ -4224,6 +4224,10 @@ checkCursorRectanglesExited(NSView *theView, NSEvent *theEvent, NSPoint lastPoi
[self performMiniaturize: NSApp];
break;
case GSAppKitAppHide:
[NSApp hide: self];
break;
case GSAppKitWindowFocusIn:
if (_f.is_miniaturized)
{