win: Add "balloon-clicked" event for Tray
authorCheng Zhao <zcbenz@gmail.com>
Fri, 28 Nov 2014 10:50:31 +0000 (18:50 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Fri, 28 Nov 2014 10:50:31 +0000 (18:50 +0800)
atom/browser/api/atom_api_tray.cc
atom/browser/api/atom_api_tray.h
atom/browser/ui/tray_icon.cc
atom/browser/ui/tray_icon.h
atom/browser/ui/tray_icon_observer.h
atom/browser/ui/win/notify_icon.cc
atom/browser/ui/win/notify_icon.h
atom/browser/ui/win/notify_icon_host.cc

index 2e2bc0a..81f8378 100644 (file)
@@ -41,6 +41,10 @@ void Tray::OnDoubleClicked() {
   Emit("double-clicked");
 }
 
+void Tray::OnBalloonClicked() {
+  Emit("balloon-clicked");
+}
+
 void Tray::Destroy() {
   tray_icon_.reset();
 }
index 7257f2a..74b5b1e 100644 (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);
index 538f259..32cb710 100644 (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
index 0aa28ad..cb0fdb9 100644 (file)
@@ -52,6 +52,7 @@ class TrayIcon {
   void RemoveObserver(TrayIconObserver* obs) { observers_.RemoveObserver(obs); }
   void NotifyClicked();
   void NotifyDoubleClicked();
+  void NotifyBalloonClicked();
 
  protected:
   TrayIcon();
index 51ef92e..76a1a46 100644 (file)
@@ -11,6 +11,7 @@ class TrayIconObserver {
  public:
   virtual void OnClicked() {}
   virtual void OnDoubleClicked() {}
+  virtual void OnBalloonClicked() {}
 
  protected:
   virtual ~TrayIconObserver() {}
index dc22773..2d6fec0 100644 (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);
index 2ac309d..37b0ee7 100644 (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();
 
index c9ef82a..83ee6e4 100644 (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: