From 9937a2bbe8dd6cc01ff3dd0ce32268e33c0ec1de Mon Sep 17 00:00:00 2001 From: tr2-harada <140588681+tr2-harada@users.noreply.github.com> Date: Mon, 21 Aug 2023 09:43:49 +0900 Subject: [PATCH] fix: explorer restart does not recreated thumbnail toolbar buttons (#39551) fix: explorer restart does not recreated thumbnail toolbar buttons. --- shell/browser/native_window_views.cc | 4 ++++ shell/browser/native_window_views.h | 4 ++++ shell/browser/native_window_views_win.cc | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/shell/browser/native_window_views.cc b/shell/browser/native_window_views.cc index 028b35c1ceb1..0ce17d437ab0 100644 --- a/shell/browser/native_window_views.cc +++ b/shell/browser/native_window_views.cc @@ -254,6 +254,10 @@ NativeWindowViews::NativeWindowViews(const gin_helper::Dictionary& options, if (title_bar_style_ != TitleBarStyle::kNormal) set_has_frame(false); + + // If the taskbar is re-created after we start up, we have to rebuild all of + // our buttons. + taskbar_created_message_ = RegisterWindowMessage(TEXT("TaskbarCreated")); #endif if (enable_larger_than_screen()) diff --git a/shell/browser/native_window_views.h b/shell/browser/native_window_views.h index e97d22ace0ab..e7d4c30b2ae6 100644 --- a/shell/browser/native_window_views.h +++ b/shell/browser/native_window_views.h @@ -318,6 +318,10 @@ class NativeWindowViews : public NativeWindow, // Controls Overlay if enabled on Windows. SkColor overlay_button_color_; SkColor overlay_symbol_color_; + + // The message ID of the "TaskbarCreated" message, sent to us when we need to + // reset our thumbar buttons. + UINT taskbar_created_message_ = 0; #endif // Handles unhandled keyboard messages coming back from the renderer process. diff --git a/shell/browser/native_window_views_win.cc b/shell/browser/native_window_views_win.cc index e4288d047c30..f782dbbbad31 100644 --- a/shell/browser/native_window_views_win.cc +++ b/shell/browser/native_window_views_win.cc @@ -221,6 +221,12 @@ bool NativeWindowViews::PreHandleMSG(UINT message, return true; } + if (message == taskbar_created_message_) { + // We need to reset all of our buttons because the taskbar went away. + taskbar_host_.RestoreThumbarButtons(GetAcceleratedWidget()); + return true; + } + switch (message) { // Screen readers send WM_GETOBJECT in order to get the accessibility // object, so take this opportunity to push Chromium into accessible