diff options
-rw-r--r-- | cocoa/ScintillaCocoa.h | 5 | ||||
-rw-r--r-- | cocoa/ScintillaCocoa.mm | 25 | ||||
-rw-r--r-- | cocoa/ScintillaView.mm | 23 |
3 files changed, 36 insertions, 17 deletions
diff --git a/cocoa/ScintillaCocoa.h b/cocoa/ScintillaCocoa.h index 545dc3607..4f7079f23 100644 --- a/cocoa/ScintillaCocoa.h +++ b/cocoa/ScintillaCocoa.h @@ -202,10 +202,7 @@ public: virtual NSMenu* CreateContextMenu(NSEvent* event); void HandleCommand(NSInteger command); -// virtual OSStatus ActiveStateChanged(); -// -// virtual void CallTipClick(); - + virtual void ActiveStateChanged(bool isActive); }; diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm index f97520a81..557861d6b 100644 --- a/cocoa/ScintillaCocoa.mm +++ b/cocoa/ScintillaCocoa.mm @@ -1649,19 +1649,18 @@ void ScintillaCocoa::HandleCommand(NSInteger command) //-------------------------------------------------------------------------------------------------- -//OSStatus ScintillaCocoa::ActiveStateChanged() -//{ -// // If the window is being deactivated, lose the focus and turn off the ticking -// if ( ! this->IsActive() ) { -// DropCaret(); -// //SetFocusState( false ); -// SetTicking( false ); -// } else { -// ShowCaretAtCurrentPosition(); -// } -// return noErr; -//} -// +void ScintillaCocoa::ActiveStateChanged(bool isActive) +{ + // If the window is being deactivated, lose the focus and turn off the ticking + if (!isActive) { + DropCaret(); + //SetFocusState( false ); + SetTicking( false ); + } else { + ShowCaretAtCurrentPosition(); + } +} + //-------------------------------------------------------------------------------------------------- diff --git a/cocoa/ScintillaView.mm b/cocoa/ScintillaView.mm index 1748cc40d..85eb81a1c 100644 --- a/cocoa/ScintillaView.mm +++ b/cocoa/ScintillaView.mm @@ -794,6 +794,17 @@ static void notification(intptr_t windowid, unsigned int iMessage, uintptr_t wPa [self setGeneralProperty: SCI_INDICSETUNDER parameter: INPUT_INDICATOR value: 1]; [self setGeneralProperty: SCI_INDICSETSTYLE parameter: INPUT_INDICATOR value: INDIC_PLAIN]; [self setGeneralProperty: SCI_INDICSETALPHA parameter: INPUT_INDICATOR value: 100]; + + NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; + [center addObserver:self + selector:@selector(applicationDidResignActive:) + name:NSApplicationDidResignActiveNotification + object:nil]; + + [center addObserver:self + selector:@selector(applicationDidBecomeActive:) + name:NSApplicationDidBecomeActiveNotification + object:nil]; } return self; } @@ -809,6 +820,18 @@ static void notification(intptr_t windowid, unsigned int iMessage, uintptr_t wPa //-------------------------------------------------------------------------------------------------- +- (void) applicationDidResignActive: (NSNotification *)note { + mBackend->ActiveStateChanged(false); +} + +//-------------------------------------------------------------------------------------------------- + +- (void) applicationDidBecomeActive: (NSNotification *)note { + mBackend->ActiveStateChanged(true); +} + +//-------------------------------------------------------------------------------------------------- + - (void) viewDidMoveToWindow { [super viewDidMoveToWindow]; |