Плагин Photoshop - окно MacOS / CoCoa - закрытие модального диалога - PullRequest
0 голосов
/ 28 октября 2019

Я разрабатываю плагин PhotoShop на C ++. В нем мне нужно показать какой-то пользовательский интерфейс, а в MacOS у меня есть NSWindowController производный класс, который показывает, что мне нужно.

Чтобы показать окно Какао внутри плагина фотошопа, у меня есть такой код.

OSStatus initializeCocoaListener()
{
  [[[MainWindowController alloc] init] autorelease];
  return noErr;
}

OSStatus orderWindowFrontListener(void)
{
  int okPressed = [[MainWindowController mainWindowController] showWindow];
  return okPressed;
}

- (int) showWindow
{
  [self.window makeKeyAndOrderFront:nil];
  [NSApplication sharedApplication].delegate = self;

  int b = [[NSApplication sharedApplication] runModalForWindow:self.window];
  [self.window orderOut:self];
  return b;
}

все отлично работает. Пользовательский интерфейс отображается по мере необходимости. Однако проблема в том, что когда я нажимаю системную кнопку Close, окно скрывается, но закрывается не полностью. Пользовательский интерфейс PhotoShop по-прежнему заблокирован.

Для правильного закрытия у меня есть кнопка в окне, которая вызывает такой код.

-(IBAction) closeWindow:(id)sender
{
  [NSApp stopModalWithCode:0];
}

после этого окно разрушается и PhotoShop получаетобратно управление.

Ну, вопрос в том, как заставить системную кнопку [Close] работать так же?

Я пытался реализовать протокол NSApplicationDelegate и переопределить этот метод

@interface MainWindowController : NSWindowController<NSApplicationDelegate>
{

....

Is there a special way to close a Modal dialog in Cocoa?



- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {
    return YES;
}

но не повезло.

Есть ли другие способы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...