diff --git a/atom/browser/api/atom_api_window.cc b/atom/browser/api/atom_api_window.cc
index af402de077..1327d8de6f 100644
--- a/atom/browser/api/atom_api_window.cc
+++ b/atom/browser/api/atom_api_window.cc
@@ -606,7 +606,7 @@ bool Window::SetThumbarButtons(mate::Arguments* args) {
   }
   auto window = static_cast<NativeWindowViews*>(window_.get());
   return window->taskbar_host().SetThumbarButtons(
-      window->GetAcceleratedWidget(), buttons);
+      window_->GetAcceleratedWidget(), buttons);
 #else
   return false;
 #endif
diff --git a/atom/browser/native_window_views.cc b/atom/browser/native_window_views.cc
index af793719cd..5f5ca68749 100644
--- a/atom/browser/native_window_views.cc
+++ b/atom/browser/native_window_views.cc
@@ -726,10 +726,12 @@ void NativeWindowViews::SetSkipTaskbar(bool skip) {
                                     CLSCTX_INPROC_SERVER)) ||
       FAILED(taskbar->HrInit()))
     return;
-  if (skip)
+  if (skip) {
     taskbar->DeleteTab(GetAcceleratedWidget());
-  else
+  } else {
     taskbar->AddTab(GetAcceleratedWidget());
+    taskbar_host_.RestoreThumbarButtons(GetAcceleratedWidget());
+  }
 #elif defined(USE_X11)
   SetWMSpecState(GetAcceleratedWidget(), skip,
                  GetAtom("_NET_WM_STATE_SKIP_TASKBAR"));
diff --git a/atom/browser/ui/win/taskbar_host.cc b/atom/browser/ui/win/taskbar_host.cc
index fd49d28fd7..00bff1c88a 100644
--- a/atom/browser/ui/win/taskbar_host.cc
+++ b/atom/browser/ui/win/taskbar_host.cc
@@ -115,9 +115,17 @@ bool TaskbarHost::SetThumbarButtons(
     r = taskbar_->ThumbBarAddButtons(window, kMaxButtonsCount, thumb_buttons);
 
   thumbar_buttons_added_ = true;
+  last_buttons_ = buttons;
   return SUCCEEDED(r);
 }
 
+void TaskbarHost::RestoreThumbarButtons(HWND window) {
+  if (thumbar_buttons_added_) {
+    thumbar_buttons_added_ = false;
+    SetThumbarButtons(window, last_buttons_);
+  }
+}
+
 bool TaskbarHost::SetProgressBar(
     HWND window, double value, const std::string& mode) {
   if (!InitializeTaskbar())
diff --git a/atom/browser/ui/win/taskbar_host.h b/atom/browser/ui/win/taskbar_host.h
index c76340cd6e..a9263d9e89 100644
--- a/atom/browser/ui/win/taskbar_host.h
+++ b/atom/browser/ui/win/taskbar_host.h
@@ -34,6 +34,8 @@ class TaskbarHost {
   bool SetThumbarButtons(
       HWND window, const std::vector<ThumbarButton>& buttons);
 
+  void RestoreThumbarButtons(HWND window);
+
   // Set the progress state in taskbar.
   bool SetProgressBar(HWND window, double value, const std::string& mode);
 
@@ -57,6 +59,8 @@ class TaskbarHost {
   using CallbackMap = std::map<int, base::Closure>;
   CallbackMap callback_map_;
 
+  std::vector<ThumbarButton> last_buttons_;
+
   // The COM object of taskbar.
   base::win::ScopedComPtr<ITaskbarList3> taskbar_;