add mouse-enter and mouse-exit events for tray
This commit is contained in:
parent
a6ea316a5d
commit
8dbb8ccbab
7 changed files with 48 additions and 1 deletions
|
@ -79,6 +79,16 @@ void TrayIcon::NotifyDropText(const std::string& text) {
|
|||
observer.OnDropText(text);
|
||||
}
|
||||
|
||||
void TrayIcon::NotifyMouseEntered() {
|
||||
for (TrayIconObserver& observer : observers_)
|
||||
observer.OnMouseEntered();
|
||||
}
|
||||
|
||||
void TrayIcon::NotifyMouseExited() {
|
||||
for (TrayIconObserver& observer : observers_)
|
||||
observer.OnMouseExited();
|
||||
}
|
||||
|
||||
void TrayIcon::NotifyDragEntered() {
|
||||
for (TrayIconObserver& observer : observers_)
|
||||
observer.OnDragEntered();
|
||||
|
|
|
@ -83,6 +83,8 @@ class TrayIcon {
|
|||
void NotifyDragEntered();
|
||||
void NotifyDragExited();
|
||||
void NotifyDragEnded();
|
||||
void NotifyMouseEntered();
|
||||
void NotifyMouseExited();
|
||||
|
||||
protected:
|
||||
TrayIcon();
|
||||
|
|
|
@ -54,9 +54,16 @@ const CGFloat kVerticalTitleMargin = 2;
|
|||
statusItemWithLength:NSVariableStatusItemLength];
|
||||
statusItem_.reset([item retain]);
|
||||
[statusItem_ setView:self];
|
||||
|
||||
// Finalize setup by sizing our views
|
||||
[self updateDimensions];
|
||||
|
||||
// Add NSTrackingArea for listening to mouseEnter and mouseExit events
|
||||
int opts = (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways);
|
||||
NSTrackingArea* trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
|
||||
options:opts
|
||||
owner:self
|
||||
userInfo:nil];
|
||||
[self addTrackingArea:trackingArea];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
@ -288,6 +295,14 @@ const CGFloat kVerticalTitleMargin = 2;
|
|||
return NSDragOperationCopy;
|
||||
}
|
||||
|
||||
- (void)mouseExited:(NSEvent*)event {
|
||||
trayIcon_->NotifyMouseExited();
|
||||
}
|
||||
|
||||
- (void)mouseEntered:(NSEvent*)event {
|
||||
trayIcon_->NotifyMouseEntered();
|
||||
}
|
||||
|
||||
- (void)draggingExited:(id <NSDraggingInfo>)sender {
|
||||
trayIcon_->NotifyDragExited();
|
||||
}
|
||||
|
|
|
@ -28,6 +28,8 @@ class TrayIconObserver {
|
|||
virtual void OnDragEntered() {}
|
||||
virtual void OnDragExited() {}
|
||||
virtual void OnDragEnded() {}
|
||||
virtual void OnMouseEntered() {}
|
||||
virtual void OnMouseExited() {}
|
||||
|
||||
protected:
|
||||
virtual ~TrayIconObserver() {}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue