From 11205d9eaaf97bb63bd544b1354613776acf7e55 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 9 Jul 2014 12:43:53 -0700 Subject: [PATCH 1/5] Don't store invalid window dimensions on Windows --- src/atom.coffee | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/atom.coffee b/src/atom.coffee index e70371785..d4db43d0f 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -248,7 +248,15 @@ class Atom extends Model @setWindowDimensions(windowDimensions) storeWindowDimensions: -> - @state.windowDimensions = @getWindowDimensions() + windowDimensions = @getWindowDimensions() + + if process.platform is 'win32' + # Work around https://github.com/atom/atom-shell/issues/473 + # Don't store the window if its dimensions are completely offscreen + return if windowDimensions.x + windowDimensions.width <= 0 + return if windowDimensions.height + windowDimensions.height <= 0 + + @state.windowDimensions = windowDimensions # Public: Get the load settings for the current window. # From 5440dd68a77f5081457d720e8237f7a9f4b5e97d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 9 Jul 2014 12:54:12 -0700 Subject: [PATCH 2/5] Use instance method --- src/atom.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/atom.coffee b/src/atom.coffee index d4db43d0f..0e254542c 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -226,7 +226,7 @@ class Atom extends Model @center() storeDefaultWindowDimensions: -> - dimensions = JSON.stringify(atom.getWindowDimensions()) + dimensions = JSON.stringify(@getWindowDimensions()) localStorage.setItem("defaultWindowDimensions", dimensions) getDefaultWindowDimensions: -> From f90e47daef5c527d23a396ac55707a7229f82509 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 9 Jul 2014 13:04:31 -0700 Subject: [PATCH 3/5] Handle invalid serialized window dimensions --- src/atom.coffee | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index 0e254542c..81f246891 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -225,9 +225,16 @@ class Atom extends Model else @center() + # Returns true if dimensions are useable, false if they should be ignored. + isValidDimensions: ({x, y, width, height}={})-> + # Work around https://github.com/atom/atom-shell/issues/473 + # Invalidate dimensions that are completely offscreen + width > 0 and height > 0 and x + width > 0 and y + height > 0 + storeDefaultWindowDimensions: -> - dimensions = JSON.stringify(@getWindowDimensions()) - localStorage.setItem("defaultWindowDimensions", dimensions) + dimensions = @getWindowDimensions() + if @isValidDimensions(dimensions) + localStorage.setItem("defaultWindowDimensions", JSON.stringify(dimensions)) getDefaultWindowDimensions: -> {windowDimensions} = @getLoadSettings() @@ -240,23 +247,21 @@ class Atom extends Model console.warn "Error parsing default window dimensions", error localStorage.removeItem("defaultWindowDimensions") - {width, height} = screen.getPrimaryDisplay().workAreaSize - dimensions ? {x: 0, y: 0, width: Math.min(1024, width), height} + if @isValidDimensions(dimensions) + dimensions + else + {width, height} = screen.getPrimaryDisplay().workAreaSize + {x: 0, y: 0, width: Math.min(1024, width), height} restoreWindowDimensions: -> - windowDimensions = @state.windowDimensions ? @getDefaultWindowDimensions() - @setWindowDimensions(windowDimensions) + dimensions = @state.windowDimensions + unless @isValidDimensions(dimensions) + dimensions = @getDefaultWindowDimensions() + @setWindowDimensions(dimensions) storeWindowDimensions: -> - windowDimensions = @getWindowDimensions() - - if process.platform is 'win32' - # Work around https://github.com/atom/atom-shell/issues/473 - # Don't store the window if its dimensions are completely offscreen - return if windowDimensions.x + windowDimensions.width <= 0 - return if windowDimensions.height + windowDimensions.height <= 0 - - @state.windowDimensions = windowDimensions + dimensions = @getWindowDimensions() + @state.windowDimensions = dimensions if @isValidDimensions(dimensions) # Public: Get the load settings for the current window. # From 35b4ba3066e5343b222dcb45e0b4df912a1e64f2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 9 Jul 2014 14:31:14 -0700 Subject: [PATCH 4/5] :lipstick: --- src/atom.coffee | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index 81f246891..05724c6f9 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -225,10 +225,9 @@ class Atom extends Model else @center() - # Returns true if dimensions are useable, false if they should be ignored. + # Returns true if the dimensions are useable, false if they should be ignored. + # Work around for https://github.com/atom/atom-shell/issues/473 isValidDimensions: ({x, y, width, height}={})-> - # Work around https://github.com/atom/atom-shell/issues/473 - # Invalidate dimensions that are completely offscreen width > 0 and height > 0 and x + width > 0 and y + height > 0 storeDefaultWindowDimensions: -> From 908ff5d3cd989023258f5e56ca2bb6893865585d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 9 Jul 2014 14:52:59 -0700 Subject: [PATCH 5/5] :lipstick: Add space before -> --- src/atom.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/atom.coffee b/src/atom.coffee index 05724c6f9..50847f72d 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -227,7 +227,7 @@ class Atom extends Model # Returns true if the dimensions are useable, false if they should be ignored. # Work around for https://github.com/atom/atom-shell/issues/473 - isValidDimensions: ({x, y, width, height}={})-> + isValidDimensions: ({x, y, width, height}={}) -> width > 0 and height > 0 and x + width > 0 and y + height > 0 storeDefaultWindowDimensions: ->