@@ -296,21 +296,21 @@ module.exports = ext.register("ext/editors/editors", {
296296        if  ( init ) 
297297            tabEditors . setAttribute ( "buttons" ,  "close" ) ; 
298298
299-         var  model  =  new  apf . model ( ) ,   
300-              fake  =  tabEditors . add ( "{([@changed] == 1 ? '*' : '') + [@name]}" ,  filepath ,  editor . path ,  null ,  function ( page ) { 
301-                  page . contentType  =  contentType ; 
302-                  page . $at      =  new  apf . actiontracker ( ) ; 
303-                  page . $doc     =  doc ; 
304-                  doc . $page     =  page ; 
305-                  page . $editor  =  editor ; 
306-                  page . setAttribute ( "tooltip" ,  "[@path]" ) ; 
307-                  page . setAttribute ( "class" , 
308-                      "{parseInt([@saving], 10) || parseInt([@lookup], 10) ? (tabEditors.getPage(tabEditors.activepage) == this ? 'saving_active' : 'saving') : \ 
309-                      ([@loading] ? (tabEditors.getPage(tabEditors.activepage) == this ? 'loading_active' : 'loading') : '')}" 
310-                  ) ; 
311-                  page . setAttribute ( "model" ,  page . $model  =  model ) ; 
312-                  page . $model . load ( xmlNode ) ; 
313-              } ) ; 
299+         var  model  =  new  apf . model ( ) ; 
300+         var  fake  =  tabEditors . add ( "{([@changed] == 1 ? '*' : '') + [@name]}" ,  filepath ,  editor . path ,  null ,  function ( page ) { 
301+             page . contentType  =  contentType ; 
302+             page . $at      =  new  apf . actiontracker ( ) ; 
303+             page . $doc     =  doc ; 
304+             doc . $page     =  page ; 
305+             page . $editor  =  editor ; 
306+             page . setAttribute ( "tooltip" ,  "[@path]" ) ; 
307+             page . setAttribute ( "class" , 
308+                 "{parseInt([@saving], 10) || parseInt([@lookup], 10) ? (tabEditors.getPage(tabEditors.activepage) == this ? 'saving_active' : 'saving') : \ 
309+                 ([@loading] ? (tabEditors.getPage(tabEditors.activepage) == this ? 'loading_active' : 'loading') : '')}" 
310+             ) ; 
311+             page . setAttribute ( "model" ,  page . $model  =  model ) ; 
312+             page . $model . load ( xmlNode ) ; 
313+         } ) ; 
314314
315315        if  ( init ) 
316316            tabEditors . setAttribute ( "buttons" ,  "close,scale,order" ) ; 
@@ -321,28 +321,9 @@ module.exports = ext.register("ext/editors/editors", {
321321            fake . $model . load ( e . node ) ; 
322322            ide . dispatchEvent ( "afteropenfile" ,  { doc : doc ,  node : e . node ,  editor : editor } ) ; 
323323        } ) ; 
324- 
325-         fake . $at . addEventListener ( "afterchange" ,  function ( e )  { 
326-             if  ( e . action  ==  "reset" )  { 
327-                 delete  this . undo_ptr ; 
328-                 return ; 
329-             }             
330-             
331-             var  val ; 
332-             if  ( fake . $at . ignoreChange )  { 
333-                 val  =  undefined ; 
334-                 fake . $at . ignoreChange  =  false ; 
335-             }  else  if ( this . undolength  ===  0  &&  ! this . undo_ptr ) 
336-                 val  =  undefined ; 
337-             else 
338-                 val  =  ( this . $undostack [ this . $undostack . length - 1 ]  !==  this . undo_ptr )  ? 1  : undefined ; 
339-                 
340-             if  ( fake . changed  !==  val )  { 
341-                 fake . changed  =  val ; 
342-                 model . setQueryValue ( "@changed" ,  ( val  ? "1"  : "0" ) ) ; 
343-             } 
344-         } ) ; 
345324
325+         this . initEditorEvents ( fake ,  model ) ; 
326+ 
346327        if  ( init  &&  ! active ) 
347328            return ; 
348329
@@ -365,6 +346,34 @@ module.exports = ext.register("ext/editors/editors", {
365346
366347        settings . save ( ) ; 
367348    } , 
349+     
350+     initEditorEvents : function ( fake ,  model )  { 
351+         fake . $at . addEventListener ( "afterchange" ,  function ( e )  { 
352+             if  ( e . action  ==  "reset" )  { 
353+                 delete  this . undo_ptr ; 
354+                 return ; 
355+             } 
356+             
357+             var  val ; 
358+             if  ( fake . $at . ignoreChange )  { 
359+                 val  =  undefined ; 
360+                 fake . $at . ignoreChange  =  false ; 
361+             } 
362+             else  if ( this . undolength  ===  0  &&  ! this . undo_ptr )  { 
363+                 val  =  undefined ; 
364+             } 
365+             else  { 
366+                 val  =  ( this . $undostack [ this . $undostack . length  -  1 ]  !==  this . undo_ptr )  
367+                     ? 1  
368+                     : undefined ; 
369+             } 
370+ 
371+             if  ( fake . changed  !==  val )  { 
372+                 fake . changed  =  val ; 
373+                 model . setQueryValue ( "@changed" ,  ( val  ? "1"  : "0" ) ) ; 
374+             } 
375+         } ) ; 
376+     } , 
368377
369378    close  : function ( page )  { 
370379        page . addEventListener ( "afterclose" ,  this . $close ) ; 
@@ -423,6 +432,11 @@ module.exports = ext.register("ext/editors/editors", {
423432            editorPage . setAttribute ( "actiontracker" ,  page . $at ) ; 
424433
425434        page . $editor . setDocument  &&  page . $editor . setDocument ( page . $doc ,  page . $at ) ; 
435+         
436+         ide . dispatchEvent ( "editorswitch" ,  { 
437+             previousPage : e . previousPage , 
438+             nextPage : e . nextPage 
439+         } ) ; 
426440    } , 
427441
428442    afterswitch  : function ( e )  { 
0 commit comments