Browse Source

fix: call SetCanActivate in setFocusable (#21855)

Cheng Zhao 5 years ago
parent
commit
442174da0f
2 changed files with 11 additions and 0 deletions
  1. 1 0
      shell/browser/native_window_views.cc
  2. 10 0
      spec-main/api-browser-window-spec.ts

+ 1 - 0
shell/browser/native_window_views.cc

@@ -950,6 +950,7 @@ void NativeWindowViews::SetContentProtection(bool enable) {
 }
 
 void NativeWindowViews::SetFocusable(bool focusable) {
+  widget()->widget_delegate()->SetCanActivate(focusable);
 #if defined(OS_WIN)
   LONG ex_style = ::GetWindowLong(GetAcceleratedWidget(), GWL_EXSTYLE);
   if (focusable)

+ 10 - 0
spec-main/api-browser-window-spec.ts

@@ -649,6 +649,16 @@ describe('BrowserWindow module', () => {
       })
     })
 
+    describe('BrowserWindow.setFocusable()', () => {
+      it('can set unfocusable window to focusable', async () => {
+        const w2 = new BrowserWindow({ focusable: false })
+        const w2Focused = emittedOnce(w2, 'focus')
+        w2.setFocusable(true)
+        w2.focus()
+        await w2Focused
+        await closeWindow(w2, { assertNotWindows: false })
+      })
+    })
   })
 
   describe('sizing', () => {