win: Add "balloon-clicked" event for Tray

This commit is contained in:
Cheng Zhao 2014-11-28 18:50:31 +08:00
parent 8097cb2b9e
commit 210c97f957
8 changed files with 22 additions and 0 deletions

View file

@ -41,6 +41,10 @@ void Tray::OnDoubleClicked() {
Emit("double-clicked");
}
void Tray::OnBalloonClicked() {
Emit("balloon-clicked");
}
void Tray::Destroy() {
tray_icon_.reset();
}

View file

@ -43,6 +43,7 @@ class Tray : public mate::EventEmitter,
// TrayIconObserver:
void OnClicked() override;
void OnDoubleClicked() override;
void OnBalloonClicked() override;
void Destroy();
void SetImage(mate::Arguments* args, const gfx::ImageSkia& image);

View file

@ -31,4 +31,8 @@ void TrayIcon::NotifyDoubleClicked() {
FOR_EACH_OBSERVER(TrayIconObserver, observers_, OnDoubleClicked());
}
void TrayIcon::NotifyBalloonClicked() {
FOR_EACH_OBSERVER(TrayIconObserver, observers_, OnBalloonClicked());
}
} // namespace atom

View file

@ -52,6 +52,7 @@ class TrayIcon {
void RemoveObserver(TrayIconObserver* obs) { observers_.RemoveObserver(obs); }
void NotifyClicked();
void NotifyDoubleClicked();
void NotifyBalloonClicked();
protected:
TrayIcon();

View file

@ -11,6 +11,7 @@ class TrayIconObserver {
public:
virtual void OnClicked() {}
virtual void OnDoubleClicked() {}
virtual void OnBalloonClicked() {}
protected:
virtual ~TrayIconObserver() {}

View file

@ -71,6 +71,10 @@ void NotifyIcon::HandleClickEvent(const gfx::Point& cursor_pos,
ui::MENU_SOURCE_MOUSE));
}
void NotifyIcon::HandleBalloonClickEvent() {
NotifyBalloonClicked();
}
void NotifyIcon::ResetIcon() {
NOTIFYICONDATA icon_data;
InitIconData(&icon_data);

View file

@ -35,6 +35,9 @@ class NotifyIcon : public TrayIcon {
// otherwise displays the context menu if there is one.
void HandleClickEvent(const gfx::Point& cursor_pos, bool left_button_click);
// Handles a click on the balloon from the user.
void HandleBalloonClickEvent();
// Re-creates the status tray icon now after the taskbar has been created.
void ResetIcon();

View file

@ -132,6 +132,10 @@ LRESULT CALLBACK NotifyIconHost::WndProc(HWND hwnd,
return TRUE;
switch (lparam) {
case TB_INDETERMINATE:
win_icon->HandleBalloonClickEvent();
return TRUE;
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
case WM_CONTEXTMENU: