NSTrackingArea с полноэкранным окном / видом - PullRequest
1 голос
/ 07 февраля 2010

Я пытаюсь установить NSTrackingArea в полноэкранном режиме, чтобы получить события перемещения мыши.

Однако всякий раз, когда я это делаю, я получаю ошибку подтверждения. Я искал в Интернете, но не смог найти потенциальных клиентов.

*** Assertion failure in -[_NSFullScreenWindow _setTrackingRect:inside:owner:userData:useTrackingNum:install:], /SourceCache/AppKit/AppKit-1038.25/AppKit.subproj/NSWindow.m:3944

Вот код, который устанавливает область отслеживания (x = 1024, y = 768):

    cocoaWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0.0, 0.0, x,y)
                                              styleMask: NSTitledWindowMask
                                                backing: NSBackingStoreBuffered
                                                  defer:NO];
    glView = [[WLMacGLView alloc] initWithFrame:NSMakeRect(0.0, 0.0,  x,y) pixelFormat:[WLMacGLView defaultPixelFormat]];
    [glView setCocoaController:self];

    //add the glView as a subview of the window's content view
    [[cocoaWindow contentView] addSubview:glView];
    NSRect r = [glView frame];
    NSTrackingArea *track = [[NSTrackingArea alloc] initWithRect:r options: NSTrackingMouseMoved | NSTrackingActiveWhenFirstResponder | NSTrackingActiveInKeyWindow
                                   owner:self userInfo:nil];
    [glView addTrackingArea:track];
    [glView enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];
    [glView createContext];

Утверждение происходит сразу после вызова enterFullScreenMode: withOptions:

У кого-нибудь есть идеи? Разве это не тот подход, который я должен использовать для перемещения событий мыши в полноэкранном окне?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2010

Таким образом, ответ на этот вопрос оказался ошибкой в ​​моем собственном коде.

При инициализации NSTrackingArea я передал неправильный объект для владельца. Правильная вещь, чтобы передать, был NSView. После исправления все работает как положено.

0 голосов
/ 07 февраля 2010

Если вы хотите отслеживать мышь в целом виде, я думаю, будет проще реализовать методы mouseDown:, mouseMoved: и mouseUp: для получения событий мыши.

...