mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
fix: safer check for WCO button updates (#34875)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
@@ -879,7 +879,7 @@ bool NativeWindowViews::IsMovable() {
|
||||
void NativeWindowViews::SetMinimizable(bool minimizable) {
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
FlipWindowStyle(GetAcceleratedWidget(), minimizable, WS_MINIMIZEBOX);
|
||||
if (titlebar_overlay_enabled()) {
|
||||
if (IsWindowControlsOverlayEnabled()) {
|
||||
auto* frame_view =
|
||||
static_cast<WinFrameView*>(widget()->non_client_view()->frame_view());
|
||||
frame_view->caption_button_container()->UpdateButtons();
|
||||
@@ -899,7 +899,7 @@ bool NativeWindowViews::IsMinimizable() {
|
||||
void NativeWindowViews::SetMaximizable(bool maximizable) {
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
FlipWindowStyle(GetAcceleratedWidget(), maximizable, WS_MAXIMIZEBOX);
|
||||
if (titlebar_overlay_enabled()) {
|
||||
if (IsWindowControlsOverlayEnabled()) {
|
||||
auto* frame_view =
|
||||
static_cast<WinFrameView*>(widget()->non_client_view()->frame_view());
|
||||
frame_view->caption_button_container()->UpdateButtons();
|
||||
@@ -939,7 +939,7 @@ void NativeWindowViews::SetClosable(bool closable) {
|
||||
} else {
|
||||
EnableMenuItem(menu, SC_CLOSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
|
||||
}
|
||||
if (titlebar_overlay_enabled()) {
|
||||
if (IsWindowControlsOverlayEnabled()) {
|
||||
auto* frame_view =
|
||||
static_cast<WinFrameView*>(widget()->non_client_view()->frame_view());
|
||||
frame_view->caption_button_container()->UpdateButtons();
|
||||
|
||||
@@ -2426,6 +2426,41 @@ describe('BrowserWindow module', () => {
|
||||
ifit(process.platform === 'darwin')('sets Window Control Overlay with hidden inset title bar', async () => {
|
||||
await testWindowsOverlay('hiddenInset');
|
||||
});
|
||||
|
||||
ifdescribe(process.platform === 'win32')('when an invalid titleBarStyle is initially set', () => {
|
||||
let w: BrowserWindow;
|
||||
|
||||
beforeEach(() => {
|
||||
w = new BrowserWindow({
|
||||
show: false,
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
contextIsolation: false
|
||||
},
|
||||
titleBarOverlay: {
|
||||
color: '#0000f0',
|
||||
symbolColor: '#ffffff'
|
||||
},
|
||||
titleBarStyle: 'hiddenInset'
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await closeAllWindows();
|
||||
});
|
||||
|
||||
it('does not crash changing minimizability ', () => {
|
||||
expect(() => {
|
||||
w.setMinimizable(false);
|
||||
}).to.not.throw();
|
||||
});
|
||||
|
||||
it('does not crash changing maximizability', () => {
|
||||
expect(() => {
|
||||
w.setMaximizable(false);
|
||||
}).to.not.throw();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
ifdescribe(['win32', 'darwin'].includes(process.platform))('"titleBarOverlay" option', () => {
|
||||
|
||||
Reference in New Issue
Block a user