Add isVisible() to app.dock
authorGabriel Handford <gabrielh@gmail.com>
Mon, 1 Aug 2016 22:22:37 +0000 (15:22 -0700)
committerGabriel Handford <gabrielh@gmail.com>
Mon, 1 Aug 2016 22:22:37 +0000 (15:22 -0700)
atom/browser/api/atom_api_app.cc
atom/browser/browser.h
atom/browser/browser_mac.mm
docs/api/app.md
lib/browser/api/app.js

index 8a66c04..534e5c4 100644 (file)
@@ -656,6 +656,7 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
                  base::Bind(&Browser::DockGetBadgeText, browser));
   dict.SetMethod("dockHide", base::Bind(&Browser::DockHide, browser));
   dict.SetMethod("dockShow", base::Bind(&Browser::DockShow, browser));
+  dict.SetMethod("dockIsVisible", base::Bind(&Browser::DockIsVisible, browser));
   dict.SetMethod("dockSetMenu", &DockSetMenu);
   dict.SetMethod("dockSetIcon", base::Bind(&Browser::DockSetIcon, browser));
 #endif
index 771a29a..96fad18 100644 (file)
@@ -136,6 +136,7 @@ class Browser : public WindowListObserver {
   // Hide/Show dock.
   void DockHide();
   void DockShow();
+  bool DockIsVisible();
 
   // Set docks' menu.
   void DockSetMenu(AtomMenuModel* model);
index d4b615e..2cfb4ca 100644 (file)
@@ -208,6 +208,12 @@ void Browser::DockHide() {
   TransformProcessType(&psn, kProcessTransformToUIElementApplication);
 }
 
+bool Browser::DockIsVisible() {
+  // Because DockShow has a slight delay this may not be true immediately
+  // after that call.
+  return ([[NSRunningApplication currentApplication] activationPolicy] == NSApplicationActivationPolicyRegular);
+}
+
 void Browser::DockShow() {
   BOOL active = [[NSRunningApplication currentApplication] isActive];
   ProcessSerialNumber psn = { 0, kCurrentProcess };
index 1220f36..ca1a36c 100644 (file)
@@ -725,6 +725,12 @@ Hides the dock icon.
 
 Shows the dock icon.
 
+### `app.dock.isVisible()` _macOS_
+
+Returns whether the dock icon is visible.
+The `app.dock.show()` call is asynchronous so this method might not
+return true immediately after that call.
+
 ### `app.dock.setMenu(menu)` _macOS_
 
 * `menu` [Menu](menu.md)
index 0ea788b..a63ef24 100644 (file)
@@ -40,6 +40,7 @@ if (process.platform === 'darwin') {
     getBadge: bindings.dockGetBadgeText,
     hide: bindings.dockHide,
     show: bindings.dockShow,
+    isVisible: bindings.dockIsVisible,
     setMenu: bindings.dockSetMenu,
     setIcon: bindings.dockSetIcon
   }