From 73f6162f5c6e0889857d27d1470a6742c719f492 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 4 Mar 2016 16:12:14 -0800 Subject: [PATCH 1/8] Enable resizable spec on Linux --- spec/api-browser-window-spec.js | 34 +++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index 25e92382ccaf..8c45b43f5530 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -527,6 +527,24 @@ describe('browser-window module', function() { }); }); + describe('window states', function () { + describe('resizable state', function() { + it('can be changed with resizable option', function() { + w.destroy(); + w = new BrowserWindow({show: false, resizable: false}); + assert.equal(w.isResizable(), false); + }); + + it('can be changed with setResizable method', function() { + assert.equal(w.isResizable(), true); + w.setResizable(false); + assert.equal(w.isResizable(), false); + w.setResizable(true); + assert.equal(w.isResizable(), true); + }); + }); + }) + describe('window states', function() { // Not implemented on Linux. if (process.platform == 'linux') @@ -625,22 +643,6 @@ describe('browser-window module', function() { }); }); - describe('resizable state', function() { - it('can be changed with resizable option', function() { - w.destroy(); - w = new BrowserWindow({show: false, resizable: false}); - assert.equal(w.isResizable(), false); - }); - - it('can be changed with setResizable method', function() { - assert.equal(w.isResizable(), true); - w.setResizable(false); - assert.equal(w.isResizable(), false); - w.setResizable(true); - assert.equal(w.isResizable(), true); - }); - }); - describe('hasShadow state', function() { // On Window there is no shadow by default and it can not be changed // dynamically. From 67edcc8f9192948498bc36b697e63b494f35ebb2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 4 Mar 2016 16:12:58 -0800 Subject: [PATCH 2/8] Initially set resizable property on Linux --- atom/browser/native_window_views.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atom/browser/native_window_views.cc b/atom/browser/native_window_views.cc index 97a2ee05a331..3605abbd3ffb 100644 --- a/atom/browser/native_window_views.cc +++ b/atom/browser/native_window_views.cc @@ -120,11 +120,11 @@ NativeWindowViews::NativeWindowViews( minimizable_(true) { options.Get(options::kTitle, &title_); options.Get(options::kAutoHideMenuBar, &menu_bar_autohide_); + options.Get(options::kResizable, &resizable_); #if defined(OS_WIN) // On Windows we rely on the CanResize() to indicate whether window can be // resized, and it should be set before window is created. - options.Get(options::kResizable, &resizable_); options.Get(options::kMinimizable, &minimizable_); options.Get(options::kMaximizable, &maximizable_); #endif From bda5bb4a74416fed3b0577677e458c5b2e416a02 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 4 Mar 2016 16:15:04 -0800 Subject: [PATCH 3/8] Add missing semicolon --- spec/api-browser-window-spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index 8c45b43f5530..c11d177a73e9 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -543,7 +543,7 @@ describe('browser-window module', function() { assert.equal(w.isResizable(), true); }); }); - }) + }); describe('window states', function() { // Not implemented on Linux. From 4ec79d5d1805e0743010cc8ca155f6075e8090aa Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 7 Mar 2016 09:53:20 -0800 Subject: [PATCH 4/8] Add Linux exclusion to describe --- spec/api-browser-window-spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index c11d177a73e9..88b897eb449e 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -545,7 +545,7 @@ describe('browser-window module', function() { }); }); - describe('window states', function() { + describe('window states (excluding Linux)', function() { // Not implemented on Linux. if (process.platform == 'linux') return; From 38acc7090b8e4dff4612816040e853493328eee5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 7 Mar 2016 10:11:30 -0800 Subject: [PATCH 5/8] Contrain size in ctor on non-resizable windows --- atom/browser/native_window_views.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/atom/browser/native_window_views.cc b/atom/browser/native_window_views.cc index 3605abbd3ffb..78769f252a85 100644 --- a/atom/browser/native_window_views.cc +++ b/atom/browser/native_window_views.cc @@ -218,6 +218,12 @@ NativeWindowViews::NativeWindowViews( std::string window_type; if (options.Get(options::kType, &window_type)) SetWindowType(GetAcceleratedWidget(), window_type); + + if (!resizable_) { + gfx::Size content_size = GetContentSize(); + SetContentSizeConstraints( + extensions::SizeConstraints(content_size, content_size)); + } #endif // Add web view. From 993b878925bf5d6c21493bdb1bf1209b2ab25511 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 7 Mar 2016 10:37:01 -0800 Subject: [PATCH 6/8] :art: --- spec/api-browser-window-spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index 88b897eb449e..731ae1cb86fc 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -527,7 +527,7 @@ describe('browser-window module', function() { }); }); - describe('window states', function () { + describe('window states', function() { describe('resizable state', function() { it('can be changed with resizable option', function() { w.destroy(); From 7de37859f071d7fa910277097d6092eb116b20c9 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 7 Mar 2016 13:48:33 -0800 Subject: [PATCH 7/8] Set resizable on Linux from InitWithOptions --- atom/browser/native_window.cc | 6 ++++++ atom/browser/native_window_views.cc | 7 ------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/atom/browser/native_window.cc b/atom/browser/native_window.cc index c25534f7f18e..80679bdb056d 100644 --- a/atom/browser/native_window.cc +++ b/atom/browser/native_window.cc @@ -115,6 +115,12 @@ void NativeWindow::InitFromOptions(const mate::Dictionary& options) { } else { SetSizeConstraints(size_constraints); } +#if defined(USE_X11) + bool resizable; + if (options.Get(options::kResizable, &resizable)) { + SetResizable(resizable); + } +#endif #if defined(OS_WIN) || defined(USE_X11) bool closable; if (options.Get(options::kClosable, &closable)) { diff --git a/atom/browser/native_window_views.cc b/atom/browser/native_window_views.cc index 78769f252a85..a2c9e8e62d91 100644 --- a/atom/browser/native_window_views.cc +++ b/atom/browser/native_window_views.cc @@ -120,7 +120,6 @@ NativeWindowViews::NativeWindowViews( minimizable_(true) { options.Get(options::kTitle, &title_); options.Get(options::kAutoHideMenuBar, &menu_bar_autohide_); - options.Get(options::kResizable, &resizable_); #if defined(OS_WIN) // On Windows we rely on the CanResize() to indicate whether window can be @@ -218,12 +217,6 @@ NativeWindowViews::NativeWindowViews( std::string window_type; if (options.Get(options::kType, &window_type)) SetWindowType(GetAcceleratedWidget(), window_type); - - if (!resizable_) { - gfx::Size content_size = GetContentSize(); - SetContentSizeConstraints( - extensions::SizeConstraints(content_size, content_size)); - } #endif // Add web view. From ad3f4a26fd38887969abb14a927170ec613d3467 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 7 Mar 2016 13:53:57 -0800 Subject: [PATCH 8/8] Restore setting resizable property from ctor on Windows --- atom/browser/native_window_views.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/atom/browser/native_window_views.cc b/atom/browser/native_window_views.cc index a2c9e8e62d91..97a2ee05a331 100644 --- a/atom/browser/native_window_views.cc +++ b/atom/browser/native_window_views.cc @@ -124,6 +124,7 @@ NativeWindowViews::NativeWindowViews( #if defined(OS_WIN) // On Windows we rely on the CanResize() to indicate whether window can be // resized, and it should be set before window is created. + options.Get(options::kResizable, &resizable_); options.Get(options::kMinimizable, &minimizable_); options.Get(options::kMaximizable, &maximizable_); #endif