@@ -25,36 +25,30 @@ function main(window)
2525 listener =
2626 {
2727 timer : null ,
28- last : 0 ,
29- onMessagesLoaded : function listener_onMessagesLoaded ( aAll )
30- {
31- listener . selectMessageDelayed . apply ( this , arguments ) ;
32- } ,
33-
34- onMakeActive : function listener_onMakeActive ( )
35- {
36- listener . selectMessageDelayed . apply ( this , arguments ) ;
37- } ,
38-
28+ calls : [ ] ,
3929 selectMessageDelayed : function listener_selectMessageDelayed ( )
4030 {
4131 if ( this . timer )
4232 this . timer . cancel ( ) ;
4333
4434 let that = this ,
4535 args = arguments ;
36+
37+ this . calls [ this . calls . length ] = arguments [ arguments . length - 1 ] ;
4638 //the timer needed to allow time to restore previous selection if any
4739 this . timer = setTimeout ( function ( ) { listener . selectMessage . apply ( that , args ) } , 0 ) ;
4840 } ,
4941
5042 selectMessage : function listener_selectMessage ( obj )
5143 {
44+ let calls = Object . assign ( [ ] , this . calls ) ;
45+ this . calls = [ ] ;
5246 if ( ! prefs . sel )
5347 return ;
5448
5549 let isTextbox = this . isTextbox ( window . document . activeElement ) ;
5650
57- if ( obj . view . dbView && ( ! obj . view . dbView . numSelected || ( obj . view . dbView . numSelected && ! isTextbox && prefs . selForce ) ) )
51+ if ( obj . view . dbView && ( ! obj . view . dbView . numSelected || ( obj . view . dbView . numSelected && ! isTextbox && prefs . selForce && calls . indexOf ( "onDisplayingFolder" ) != - 1 ) ) )
5852 {
5953
6054 let msgDefault = Ci . nsMsgNavigationType . firstMessage ,
@@ -130,7 +124,37 @@ function main(window)
130124 onTabClosing : function tabMan_onTabClosing ( ) { } ,
131125 onTabSwitched : function tabMan_onTabSwitched ( tab ) { } ,
132126 } ;
133-
127+ ! function ( )
128+ {
129+ let listenerEvents = [
130+ // "onActiveCreatedView",
131+ // "onActiveMessagesLoaded",
132+ // "onCreatedView",
133+ // "onDestroyingView",
134+ "onDisplayingFolder" ,
135+ // "onFolderLoading",
136+ // "onLeavingFolder",
137+ // "onLoadingFolder",
138+ "onMakeActive" ,
139+ // "onMessageCountsChanged",
140+ // "onMessagesLoaded",
141+ // "onMessagesRemovalFailed",
142+ // "onMessagesRemoved",
143+ // "onSearching",
144+ // "onSortChanged",
145+ ] ;
146+ for ( let i = 0 ; i < listenerEvents . length ; i ++ )
147+ {
148+ let name = listenerEvents [ i ] ;
149+ this [ name ] = function ( )
150+ {
151+ let args = Array . prototype . slice . call ( arguments ) ;
152+ args [ args . length ] = name ;
153+ this . selectMessageDelayed . apply ( this , args ) ;
154+ }
155+ }
156+ return true ;
157+ } . bind ( listener ) ( ) ,
134158 window . FolderDisplayListenerManager . registerListener ( listener ) ;
135159 listen ( window , window , "unload" , unload ( function ( )
136160 {
0 commit comments