diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index 1bb93d05d6c89edb0d4693a6a1ce0bb32d07056d..1b5804ec83dad11b8fc37a069834a036bb11d1e8 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -124,6 +124,14 @@ attributedStringInfo getSegments(NSAttributedString *str) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowResized:) name:NSWindowDidResizeNotification + object:[self window]]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(windowWillMiniaturize:) name:NSWindowWillMiniaturizeNotification + object:[self window]]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(windowDidDeminiaturize:) name:NSWindowDidDeminiaturizeNotification object:[self window]]; } @@ -141,6 +149,16 @@ attributedStringInfo getSegments(NSAttributedString *str) } } +- (void)windowWillMiniaturize:(NSNotification *)notification; +{ + callWindowHide(); +} + +- (void)windowDidDeminiaturize:(NSNotification *)notification; +{ + callWindowUnhide(); +} + - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h index d64525fbdd709611c2fd8507044d65a723b28425..f02052ca6adae6ee8b13ec3acce9de9ebf99c800 100755 --- a/indra/llwindow/llwindowmacosx-objc.h +++ b/indra/llwindow/llwindowmacosx-objc.h @@ -116,6 +116,8 @@ void callScrollMoved(float delta); void callMouseExit(); void callWindowFocus(); void callWindowUnfocus(); +void callWindowHide(); +void callWindowUnhide(); void callDeltaUpdate(float *delta, unsigned int mask); void callMiddleMouseDown(float *pos, unsigned int mask); void callMiddleMouseUp(float *pos, unsigned int mask); diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 18d515201566fb0d3d6a9cc97e97323a5e526450..e8d0a8bdb804e2a1f158996ea7f67ca64179fedf 100755 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -349,6 +349,22 @@ void callWindowUnfocus() gWindowImplementation->getCallbacks()->handleFocusLost(gWindowImplementation); } +void callWindowHide() +{ + if ( gWindowImplementation && gWindowImplementation->getCallbacks() ) + { + gWindowImplementation->getCallbacks()->handleActivate(gWindowImplementation, false); + } +} + +void callWindowUnhide() +{ + if ( gWindowImplementation && gWindowImplementation->getCallbacks() ) + { + gWindowImplementation->getCallbacks()->handleActivate(gWindowImplementation, true); + } +} + void callDeltaUpdate(float *delta, MASK mask) { gWindowImplementation->updateMouseDeltas(delta); diff --git a/indra/newview/llappdelegate-objc.mm b/indra/newview/llappdelegate-objc.mm index 988058aad34752ac5e32d52ca87fb45c7d6bfc12..549df80fa1a501a268d77f1f948d58d26022ab50 100644 --- a/indra/newview/llappdelegate-objc.mm +++ b/indra/newview/llappdelegate-objc.mm @@ -84,6 +84,16 @@ callWindowUnfocus(); } +- (void) applicationDidHide:(NSNotification *)notification +{ + callWindowHide(); +} + +- (void) applicationDidUnhide:(NSNotification *)notification +{ + callWindowUnhide(); +} + - (NSApplicationDelegateReply) applicationShouldTerminate:(NSApplication *)sender { if (!runMainLoop())