win: Add "balloon-show" and "balloon-closed" events
authorCheng Zhao <zcbenz@gmail.com>
Fri, 28 Nov 2014 11:42:57 +0000 (19:42 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Fri, 28 Nov 2014 11:42:57 +0000 (19:42 +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 81f8378..dfb0d6e 100644 (file)
@@ -41,10 +41,18 @@ void Tray::OnDoubleClicked() {
   Emit("double-clicked");
 }
 
+void Tray::OnBalloonShow() {
+  Emit("balloon-show");
+}
+
 void Tray::OnBalloonClicked() {
   Emit("balloon-clicked");
 }
 
+void Tray::OnBalloonClosed() {
+  Emit("balloon-closed");
+}
+
 void Tray::Destroy() {
   tray_icon_.reset();
 }
index 74b5b1e..87bc84a 100644 (file)
@@ -43,7 +43,9 @@ class Tray : public mate::EventEmitter,
   // TrayIconObserver:
   void OnClicked() override;
   void OnDoubleClicked() override;
+  void OnBalloonShow() override;
   void OnBalloonClicked() override;
+  void OnBalloonClosed() override;
 
   void Destroy();
   void SetImage(mate::Arguments* args, const gfx::ImageSkia& image);
index 32cb710..a59c0c7 100644 (file)
@@ -31,8 +31,16 @@ void TrayIcon::NotifyDoubleClicked() {
   FOR_EACH_OBSERVER(TrayIconObserver, observers_, OnDoubleClicked());
 }
 
+void TrayIcon::NotifyBalloonShow() {
+  FOR_EACH_OBSERVER(TrayIconObserver, observers_, OnBalloonShow());
+}
+
 void TrayIcon::NotifyBalloonClicked() {
   FOR_EACH_OBSERVER(TrayIconObserver, observers_, OnBalloonClicked());
 }
 
+void TrayIcon::NotifyBalloonClosed() {
+  FOR_EACH_OBSERVER(TrayIconObserver, observers_, OnBalloonClosed());
+}
+
 }  // namespace atom
index cb0fdb9..83ee98e 100644 (file)
@@ -52,7 +52,9 @@ class TrayIcon {
   void RemoveObserver(TrayIconObserver* obs) { observers_.RemoveObserver(obs); }
   void NotifyClicked();
   void NotifyDoubleClicked();
+  void NotifyBalloonShow();
   void NotifyBalloonClicked();
+  void NotifyBalloonClosed();
 
  protected:
   TrayIcon();
index 76a1a46..293e537 100644 (file)
@@ -11,7 +11,9 @@ class TrayIconObserver {
  public:
   virtual void OnClicked() {}
   virtual void OnDoubleClicked() {}
+  virtual void OnBalloonShow() {}
   virtual void OnBalloonClicked() {}
+  virtual void OnBalloonClosed() {}
 
  protected:
   virtual ~TrayIconObserver() {}
index b541caf..9784298 100644 (file)
@@ -71,10 +71,6 @@ 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 37b0ee7..2ac309d 100644 (file)
@@ -35,9 +35,6 @@ 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 83ee6e4..14dcf6d 100644 (file)
@@ -132,8 +132,16 @@ LRESULT CALLBACK NotifyIconHost::WndProc(HWND hwnd,
       return TRUE;
 
     switch (lparam) {
+      case TB_CHECKBUTTON:
+        win_icon->NotifyBalloonShow();
+        return TRUE;
+
       case TB_INDETERMINATE:
-        win_icon->HandleBalloonClickEvent();
+        win_icon->NotifyBalloonClicked();
+        return TRUE;
+
+      case TB_HIDEBUTTON:
+        win_icon->NotifyBalloonClosed();
         return TRUE;
 
       case WM_LBUTTONDOWN: