Browse Source

clean up ignore double click event implementation

mikeykhalil 7 years ago
parent
commit
208374afa4
2 changed files with 6 additions and 12 deletions
  1. 2 0
      atom/browser/api/atom_api_tray.cc
  2. 4 12
      atom/browser/ui/tray_icon_cocoa.mm

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

@@ -177,7 +177,9 @@ void Tray::SetHighlightMode(TrayIcon::HighlightMode mode) {
 }
 
 void Tray::SetIgnoreDoubleClickEvents(bool ignore) {
+#if defined(OS_MACOSX)
   tray_icon_->SetIgnoreDoubleClickEvents(ignore);
+#endif
 }
 
 void Tray::DisplayBalloon(mate::Arguments* args,

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

@@ -287,24 +287,16 @@ const CGFloat kVerticalTitleMargin = 2;
 
   // If we are ignoring double click events, we should ignore the `clickCount`
   // value and immediately emit a click event.
-  if (ignoreDoubleClickEvents_ == YES) {
-    trayIcon_->NotifyClicked(
-        gfx::ScreenRectFromNSRect(event.window.frame),
-        gfx::ScreenPointFromNSPoint([event locationInWindow]),
-        ui::EventFlagsFromModifiers([event modifierFlags]));
-    [self setNeedsDisplay:YES];
-    return;
-  }
-
-  // Single click event.
-  if (event.clickCount == 1)
+  BOOL shouldBeHandledAsASingleClick = (event.clickCount == 1) || ignoreDoubleClickEvents_;
+  if (shouldBeHandledAsASingleClick)
     trayIcon_->NotifyClicked(
         gfx::ScreenRectFromNSRect(event.window.frame),
         gfx::ScreenPointFromNSPoint([event locationInWindow]),
         ui::EventFlagsFromModifiers([event modifierFlags]));
 
   // Double click event.
-  if (event.clickCount == 2)
+  BOOL shouldBeHandledAsADoubleClick = (event.clickCount == 2) && !ignoreDoubleClickEvents_;
+  if (shouldBeHandledAsADoubleClick)
     trayIcon_->NotifyDoubleClicked(
         gfx::ScreenRectFromNSRect(event.window.frame),
         ui::EventFlagsFromModifiers([event modifierFlags]));