Browse Source

fix: setMaximizable to be true if window is resizable & maximizable (#14648)

* setMaximizable to be true if window is resizable & maximizable

* Fix linting

* Add regressive test to verify maxmizable state

* Leaves maximizable state of window alone if setResizable is called

* Fix exclusive test

* Fix crashing text

* SetMaximizable unconditionally

* Remember former maximizable state

* Fix accidental mac variable deletion

* Logic modification

* Lint

* Remove unneeded test

* Remove unneeded variable since only Windows is effect
Troy 6 years ago
parent
commit
560b1c17af
2 changed files with 8 additions and 2 deletions
  1. 1 1
      atom/browser/native_window_views.cc
  2. 7 1
      spec/api-browser-window-spec.js

+ 1 - 1
atom/browser/native_window_views.cc

@@ -591,6 +591,7 @@ void NativeWindowViews::SetResizable(bool resizable) {
     // both the minimum and maximum size to the window size to achieve it.
     if (resizable) {
       SetContentSizeConstraints(old_size_constraints_);
+      SetMaximizable(maximizable_);
     } else {
       old_size_constraints_ = GetContentSizeConstraints();
       resizable_ = false;
@@ -603,7 +604,6 @@ void NativeWindowViews::SetResizable(bool resizable) {
   if (has_frame() && thick_frame_)
     FlipWindowStyle(GetAcceleratedWidget(), resizable, WS_THICKFRAME);
 #endif
-
   resizable_ = resizable;
 }
 

+ 7 - 1
spec/api-browser-window-spec.js

@@ -2620,9 +2620,15 @@ describe('BrowserWindow module', () => {
       // Only implemented on windows.
       if (process.platform !== 'win32') return
 
-      it('is set to false when resizable state is set to false', () => {
+      it('is reset to its former state', () => {
+        w.setMaximizable(false)
         w.setResizable(false)
+        w.setResizable(true)
         assert.strictEqual(w.isMaximizable(), false)
+        w.setMaximizable(true)
+        w.setResizable(false)
+        w.setResizable(true)
+        assert.strictEqual(w.isMaximizable(), true)
       })
     })