Browse Source

Pass bounds in clicked event of tray

Cheng Zhao 10 years ago
parent
commit
f5cf3556b1

+ 2 - 2
atom/browser/api/atom_api_tray.cc

@@ -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() {

+ 1 - 1
atom/browser/api/atom_api_tray.h

@@ -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;

+ 2 - 2
atom/browser/ui/tray_icon.cc

@@ -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() {

+ 2 - 1
atom/browser/ui/tray_icon.h

@@ -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();

+ 5 - 4
atom/browser/ui/tray_icon_cocoa.mm

@@ -26,13 +26,14 @@
 }
 
 - (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 {

+ 2 - 2
atom/browser/ui/tray_icon_observer.h

@@ -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() {}