Skip to content

Commit

Permalink
bugfix: settings window display issue (#410)
Browse files Browse the repository at this point in the history
* fix: settings window display issue

* perf: activate last frontmost app when closing query window if settings window is not showing

---------

Co-authored-by: tisfeng <[email protected]>
  • Loading branch information
phlpsong and tisfeng authored Feb 18, 2024
1 parent 1c228a8 commit d05bc54
Showing 1 changed file with 18 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -408,10 +408,7 @@ - (void)showFloatingWindow:(EZBaseQueryWindow *)window atPoint:(CGPoint)point {
return;
}

EZPreferencesWindowController *preferencesWindowController = [EZPreferencesWindowController shared];
if (preferencesWindowController.isShowing) {
[preferencesWindowController.window close];
}
[[self currentShowingSettingsWindow] close];

// get safe window position
CGPoint safeLocation = [EZCoordinateUtils getFrameSafePoint:window.frame moveToPoint:point inScreen:self.screen];
Expand All @@ -437,6 +434,22 @@ - (void)showFloatingWindow:(EZBaseQueryWindow *)window atPoint:(CGPoint)point {
[self updateFloatingWindowType:window.windowType];
}

- (nullable NSWindow *)currentShowingSettingsWindow {
EZPreferencesWindowController *preferencesWindowController = [EZPreferencesWindowController shared];
if (preferencesWindowController.isShowing) {
return preferencesWindowController.window;
}

// Workaround for SwiftUI Settings window, fix https://github.com/tisfeng/Easydict/issues/362
for (NSWindow *window in [NSApp windows]) {
if ([window.identifier isEqualToString:@"com_apple_SwiftUI_Settings_window"] && window.visible) {
return window;
}
}

return nil;
}

- (void)updateFloatingWindowType:(EZWindowType)floatingWindowType {
NSNumber *windowType = @(floatingWindowType);
[self.floatingWindowTypeArray removeObject:windowType];
Expand Down Expand Up @@ -904,7 +917,7 @@ - (void)closeFloatingWindow {
self.floatingWindow.titleBar.pin = NO;
[self.floatingWindow close];

if (![EZPreferencesWindowController.shared isShowing]) {
if (![self currentShowingSettingsWindow]) {
// recover last app.
[self activeLastFrontmostApplication];
}
Expand Down

0 comments on commit d05bc54

Please sign in to comment.