diff --git a/atom/browser/browser.cc b/atom/browser/browser.cc index 4761c7ca81f0..b658de410209 100644 --- a/atom/browser/browser.cc +++ b/atom/browser/browser.cc @@ -70,6 +70,10 @@ std::string Browser::GetName() const { void Browser::SetName(const std::string& name) { name_override_ = name; + +#if defined(OS_WIN) + SetAppUserModelID(name); +#endif } bool Browser::OpenFile(const std::string& file_path) { diff --git a/atom/browser/browser.h b/atom/browser/browser.h index e058ec25e251..aa3b3c07aa56 100644 --- a/atom/browser/browser.h +++ b/atom/browser/browser.h @@ -13,6 +13,10 @@ #include "atom/browser/browser_observer.h" #include "atom/browser/window_list_observer.h" +#if defined(OS_WIN) +#include "base/strings/string16.h" +#endif + namespace base { class FilePath; } @@ -76,6 +80,11 @@ class Browser : public WindowListObserver { void DockSetMenu(ui::MenuModel* model); #endif // defined(OS_MACOSX) +#if defined(OS_WIN) + // Set the application user model ID, called when "SetName" is called. + void SetAppUserModelID(const std::string& name); +#endif + // Tell the application to open a file. bool OpenFile(const std::string& file_path); @@ -126,6 +135,10 @@ class Browser : public WindowListObserver { std::string version_override_; std::string name_override_; +#if defined(OS_WIN) + base::string16 app_user_model_id_; +#endif + DISALLOW_COPY_AND_ASSIGN(Browser); }; diff --git a/atom/browser/browser_win.cc b/atom/browser/browser_win.cc index 85be2d32433a..91550ace4a7d 100644 --- a/atom/browser/browser_win.cc +++ b/atom/browser/browser_win.cc @@ -54,11 +54,17 @@ void Browser::AddRecentDocument(const base::FilePath& path) { if (SUCCEEDED(hr)) { SHARDAPPIDINFO info; info.psi = item; - info.pszAppID = L"Atom"; + info.pszAppID = app_user_model_id_.c_str(); SHAddToRecentDocs(SHARD_APPIDINFO, &info); } } +void Browser::SetAppUserModelID(const std::string& name) { + app_user_model_id_ = base::UTF8ToUTF16( + base::StringPrintf("atom-shell.app.%s", name)); + SetCurrentProcessExplicitAppUserModelID(app_user_model_id_.c_str()); +} + std::string Browser::GetExecutableFileVersion() const { base::FilePath path; if (PathService::Get(base::FILE_EXE, &path)) {