Pass bounds in clicked event of tray
authorCheng Zhao <zcbenz@gmail.com>
Mon, 4 May 2015 03:43:05 +0000 (11:43 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Mon, 4 May 2015 03:43:22 +0000 (11:43 +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_cocoa.mm
atom/browser/ui/tray_icon_observer.h

index c7e0149..b66d95c 100644 (file)
@@ -40,8 +40,8 @@ mate::Wrappable* Tray::New(const gfx::Image& image) {
   return new Tray(image);
 }
 
-void Tray::OnClicked(const gfx::Point& pos) {
-  Emit("clicked", pos);
+void Tray::OnClicked(const gfx::Rect& bounds) {
+  Emit("clicked", bounds);
 }
 
 void Tray::OnDoubleClicked() {
index 38fb044..5ed29ec 100644 (file)
@@ -41,7 +41,7 @@ class Tray : public mate::EventEmitter,
   virtual ~Tray();
 
   // TrayIconObserver:
-  void OnClicked(const gfx::Point&) override;
+  void OnClicked(const gfx::Rect&) override;
   void OnDoubleClicked() override;
   void OnBalloonShow() override;
   void OnBalloonClicked() override;
index 06c1f4b..a3878f7 100644 (file)
@@ -26,8 +26,8 @@ void TrayIcon::DisplayBalloon(const gfx::Image& icon,
                               const base::string16& contents) {
 }
 
-void TrayIcon::NotifyClicked(const gfx::Point& pos) {
-  FOR_EACH_OBSERVER(TrayIconObserver, observers_, OnClicked(pos));
+void TrayIcon::NotifyClicked(const gfx::Rect& bounds) {
+  FOR_EACH_OBSERVER(TrayIconObserver, observers_, OnClicked(bounds));
 }
 
 void TrayIcon::NotifyDoubleClicked() {
index 26f31a1..7dc67da 100644 (file)
@@ -10,6 +10,7 @@
 #include "atom/browser/ui/tray_icon_observer.h"
 #include "base/observer_list.h"
 #include "ui/base/models/simple_menu_model.h"
+#include "ui/gfx/geometry/rect.h"
 
 namespace atom {
 
@@ -50,7 +51,7 @@ class TrayIcon {
 
   void AddObserver(TrayIconObserver* obs) { observers_.AddObserver(obs); }
   void RemoveObserver(TrayIconObserver* obs) { observers_.RemoveObserver(obs); }
-  void NotifyClicked(const gfx::Point&);
+  void NotifyClicked(const gfx::Rect& = gfx::Rect());
   void NotifyDoubleClicked();
   void NotifyBalloonShow();
   void NotifyBalloonClicked();
index a68dd1c..1bcbaf7 100644 (file)
 }
 
 - (void)handleClick:(id)sender {
-  // Get the position of the frame of the NSStatusItem.
-  NSPoint pos = [NSApp currentEvent].window.frame.origin;
+  // Get the frame of the NSStatusItem.
+  NSRect frame = [NSApp currentEvent].window.frame;
+  gfx::Rect bounds(frame.origin.x, 0, NSWidth(frame), NSHeight(frame));
   // Flip coordinates to gfx (0,0 in top-left corner) using current screen.
   NSScreen* screen = [NSScreen mainScreen];
-  pos.y = NSMaxY([screen frame]) - pos.y;
+  bounds.set_y(NSHeight([screen frame]) - NSMaxY(frame));
 
-  trayIcon_->NotifyClicked(gfx::Point(pos.x, pos.y));
+  trayIcon_->NotifyClicked(bounds);
 }
 
 - (void)handleDoubleClick:(id)sender {
index 266654a..3a34888 100644 (file)
@@ -6,14 +6,14 @@
 #define ATOM_BROWSER_UI_TRAY_ICON_OBSERVER_H_
 
 namespace gfx {
-class Point;
+class Rect;
 }
 
 namespace atom {
 
 class TrayIconObserver {
  public:
-  virtual void OnClicked(const gfx::Point&) {}
+  virtual void OnClicked(const gfx::Rect&) {}
   virtual void OnDoubleClicked() {}
   virtual void OnBalloonShow() {}
   virtual void OnBalloonClicked() {}