@@ -51,16 +51,17 @@ function getPlatform() {
51
51
52
52
var canSetVisibleOnAllWorkspaces = / ( m a c | l i n u x ) / . exec ( getPlatform ( ) ) ;
53
53
var appWinEventsMap = {
54
- 'minimize' : 'onMinimized' ,
55
- 'maximize' : 'onMaximized' ,
56
- 'restore' : 'onRestored' ,
57
- 'enter-fullscreen' : 'onFullscreened' ,
58
54
'closed' : 'onClosed'
59
55
} ;
60
56
61
57
var nwWinEventsMap = {
58
+ 'minimize' : 'onMinimized' ,
59
+ 'maximize' : 'onMaximized' ,
60
+ 'restore' : 'onRestore' ,
61
+ 'enter-fullscreen' : 'onFullscreen' ,
62
62
'zoom' : 'onZoom' ,
63
- 'close' : 'onClose'
63
+ 'close' : 'onClose' ,
64
+ 'resize' : 'onResized'
64
65
} ;
65
66
66
67
var nwWrapEventsMap = {
@@ -70,7 +71,6 @@ var nwWrapEventsMap = {
70
71
} ;
71
72
72
73
var wrapEventsMapNewWin = {
73
- 'resize' : 'onResize' ,
74
74
'move' : 'onMove' ,
75
75
'focus' : 'onFocusChanged' ,
76
76
'blur' : 'onFocusChanged'
@@ -110,6 +110,7 @@ nw_internal.registerCustomHook(function(bindingsAPI) {
110
110
var currentNWWindowInternal = nw_internal . generate ( ) ;
111
111
112
112
function NWWindow ( cWindow ) {
113
+ var self = this ;
113
114
if ( cWindow )
114
115
this . cWindow = cWindow ;
115
116
else {
@@ -118,8 +119,33 @@ function NWWindow(cWindow) {
118
119
console . error ( 'The JavaScript context calling ' +
119
120
'nw.Window.get() has no associated Browser window.' ) ;
120
121
}
122
+
123
+ function updateWindowAttributes ( w ) {
124
+ if ( w . id !== self . cWindow . id )
125
+ return ;
126
+ var oldState = self . cWindow . state ;
127
+ var oldWidth = self . cWindow . width ;
128
+ var oldHeight = self . cWindow . height ;
129
+
130
+ self . cWindow . state = w . state ;
131
+ self . cWindow . width = w . width ;
132
+ self . cWindow . height = w . height ;
133
+
134
+ if ( oldState != 'minimized' && w . state == 'minimized' ) {
135
+ dispatchEventIfExists ( self , 'onMinimized' ) ;
136
+ } else if ( oldState != 'maximized' && w . state == 'maximized' ) {
137
+ dispatchEventIfExists ( self , 'onMaximized' ) ;
138
+ } else if ( oldState != 'fullscreen' && w . state == 'fullscreen' ) {
139
+ dispatchEventIfExists ( self , 'onFullscreen' ) ;
140
+ } else if ( oldState != 'normal' && w . state == 'normal' ) {
141
+ dispatchEventIfExists ( self , 'onRestore' ) ;
142
+ } else if ( oldWidth != w . width || oldHeight != w . height ) {
143
+ dispatchEventIfExists ( self , 'onResized' , [ w . width , w . height ] ) ;
144
+ }
145
+ }
121
146
console . log ( "cWindow id: " + this . cWindow . id ) ;
122
147
privates ( this ) . menu = null ;
148
+ chrome . windows . onWindowChanged . addListener ( updateWindowAttributes ) ;
123
149
}
124
150
125
151
forEach ( currentNWWindowInternal , function ( key , value ) {
@@ -134,6 +160,11 @@ NWWindow.prototype.onDocumentStart = new Event("nw.Window.onDocumentStart");
134
160
NWWindow . prototype . onDocumentEnd = new Event ( "nw.Window.onDocumentEnd" ) ;
135
161
NWWindow . prototype . onZoom = new Event ( ) ;
136
162
NWWindow . prototype . onClose = new Event ( "nw.Window.onClose" , undefined , { supportsFilters : true } ) ;
163
+ NWWindow . prototype . onMinimized = new Event ( ) ;
164
+ NWWindow . prototype . onMaximized = new Event ( ) ;
165
+ NWWindow . prototype . onFullscreen = new Event ( ) ;
166
+ NWWindow . prototype . onResized = new Event ( ) ;
167
+ NWWindow . prototype . onRestore = new Event ( ) ;
137
168
138
169
NWWindow . prototype . close = function ( force ) {
139
170
currentNWWindowInternal . close ( force , this . cWindow . id ) ;
@@ -247,35 +278,14 @@ NWWindow.prototype.on = function (event, callback, record) {
247
278
chrome . windows . onMove . addListener ( k ) ;
248
279
return this ; //return early
249
280
break ;
250
- case 'resize' :
251
- var l = wrap ( function ( w ) {
252
- if ( w . id != self . cWindow . id )
253
- return ;
254
- callback . call ( self , w . width , w . height ) ;
255
- } ) ;
256
- chrome . windows . onResize . addListener ( l ) ;
257
- return this ; //return early
258
- break ;
259
281
}
260
- //if (appWinEventsMap.hasOwnProperty(event)) {
261
- // this.appWindow[appWinEventsMap[event]].addListener(wrap());
262
- // return this;
263
- //}
264
- //if (nwWinEventsMap.hasOwnProperty(event)) {
265
- // this[nwWinEventsMap[event]].addListener(wrap());
266
- // return this;
267
- //}
282
+ if ( nwWinEventsMap . hasOwnProperty ( event ) ) {
283
+ this [ nwWinEventsMap [ event ] ] . addListener ( wrap ( ) ) ;
284
+ return this ;
285
+ }
268
286
return this ;
269
287
} ;
270
288
NWWindow . prototype . removeListener = function ( event , callback ) {
271
- if ( appWinEventsMap . hasOwnProperty ( event ) ) {
272
- for ( let l of this . appWindow [ appWinEventsMap [ event ] ] . getListeners ( ) ) {
273
- if ( l . callback . listener && l . callback . listener === callback ) {
274
- this . appWindow [ appWinEventsMap [ event ] ] . removeListener ( l . callback ) ;
275
- return this ;
276
- }
277
- }
278
- }
279
289
if ( nwWinEventsMap . hasOwnProperty ( event ) ) {
280
290
for ( let l of this [ nwWinEventsMap [ event ] ] . getListeners ( ) ) {
281
291
if ( l . callback . listener && l . callback . listener === callback ) {
@@ -305,20 +315,14 @@ NWWindow.prototype.removeListener = function (event, callback) {
305
315
306
316
NWWindow . prototype . removeAllListeners = function ( event ) {
307
317
if ( arguments . length === 0 ) {
308
- var obj = Object . assign ( { } , appWinEventsMap , nwWinEventsMap , nwWrapEventsMap ) ;
318
+ var obj = Object . assign ( { } , nwWinEventsMap , nwWrapEventsMap ) ;
309
319
var keys = Object . keys ( obj ) ;
310
320
for ( var i = 0 , key ; i < keys . length ; ++ i ) {
311
321
key = keys [ i ] ;
312
322
this . removeAllListeners ( key ) ;
313
323
}
314
324
return this ;
315
325
}
316
- if ( appWinEventsMap . hasOwnProperty ( event ) ) {
317
- for ( let l of this . appWindow [ appWinEventsMap [ event ] ] . getListeners ( ) ) {
318
- this . appWindow [ appWinEventsMap [ event ] ] . removeListener ( l . callback ) ;
319
- }
320
- return this ;
321
- }
322
326
if ( nwWinEventsMap . hasOwnProperty ( event ) ) {
323
327
for ( let l of this [ nwWinEventsMap [ event ] ] . getListeners ( ) ) {
324
328
this [ nwWinEventsMap [ event ] ] . removeListener ( l . callback ) ;
0 commit comments