Add app.dock.setIcon to change icon of dock
authorragingwind <ragingwind@gmail.com>
Sat, 23 Jan 2016 23:30:14 +0000 (08:30 +0900)
committerragingwind <ragingwind@gmail.com>
Sat, 23 Jan 2016 23:30:14 +0000 (08:30 +0900)
atom/browser/api/atom_api_app.cc
atom/browser/api/lib/app.js
atom/browser/browser.h
atom/browser/browser_mac.mm
docs/api/app.md

index b0c8706..394014e 100644 (file)
@@ -18,6 +18,7 @@
 #include "atom/common/native_mate_converters/net_converter.h"
 #include "atom/common/native_mate_converters/file_path_converter.h"
 #include "atom/common/native_mate_converters/gurl_converter.h"
+#include "atom/common/native_mate_converters/image_converter.h"
 #include "atom/common/node_includes.h"
 #include "atom/common/options_switches.h"
 #include "base/command_line.h"
@@ -34,6 +35,7 @@
 #include "native_mate/object_template_builder.h"
 #include "net/ssl/ssl_cert_request_info.h"
 #include "ui/base/l10n/l10n_util.h"
+#include "ui/gfx/image/image.h"
 
 #if defined(OS_WIN)
 #include "base/strings/utf_string_conversions.h"
@@ -448,6 +450,7 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
   dict.SetMethod("dockHide", base::Bind(&Browser::DockHide, browser));
   dict.SetMethod("dockShow", base::Bind(&Browser::DockShow, browser));
   dict.SetMethod("dockSetMenu", &DockSetMenu);
+  dict.SetMethod("dockSetIcon", base::Bind(&Browser::DockSetIcon, browser));
 #endif
 }
 
index b99c069..f7c9cd9 100644 (file)
@@ -37,7 +37,8 @@ if (process.platform === 'darwin') {
     getBadge: bindings.dockGetBadgeText,
     hide: bindings.dockHide,
     show: bindings.dockShow,
-    setMenu: bindings.dockSetMenu
+    setMenu: bindings.dockSetMenu,
+    setIcon: bindings.dockSetIcon
   };
 }
 
index e46624b..0b55fb6 100644 (file)
@@ -27,6 +27,10 @@ namespace ui {
 class MenuModel;
 }
 
+namespace gfx {
+class Image;
+}
+
 namespace atom {
 
 class LoginHandler;
@@ -91,6 +95,9 @@ class Browser : public WindowListObserver {
 
   // Set docks' menu.
   void DockSetMenu(ui::MenuModel* model);
+
+  // Set docks' icon.
+  void DockSetIcon(const gfx::Image& image);
 #endif  // defined(OS_MACOSX)
 
 #if defined(OS_WIN)
index 8b1dd31..e3c4eaf 100644 (file)
@@ -102,4 +102,9 @@ void Browser::DockSetMenu(ui::MenuModel* model) {
   [delegate setApplicationDockMenu:model];
 }
 
+void Browser::DockSetIcon(const gfx::Image& image) {
+  [[NSApplication sharedApplication]
+      setApplicationIconImage:image.AsNSImage()];
+}
+
 }  // namespace atom
index 13cb66e..a26defb 100644 (file)
@@ -512,6 +512,12 @@ Shows the dock icon.
 
 Sets the application's [dock menu][dock-menu].
 
+### `app.dock.setIcon(image)` _OS X_
+
+* `image` [NativeImage](native-image.md)
+
+Sets the `image` associated with this dock icon.
+
 [dock-menu]:https://developer.apple.com/library/mac/documentation/Carbon/Conceptual/customizing_docktile/concepts/dockconcepts.html#//apple_ref/doc/uid/TP30000986-CH2-TPXREF103
 [tasks]:http://msdn.microsoft.com/en-us/library/windows/desktop/dd378460(v=vs.85).aspx#tasks
 [app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx