@@ -66,7 +66,7 @@ QuickFolders.Util = {
6666 _isCSSGradients : - 1 ,
6767 _isCSSRadius : - 1 ,
6868 _isCSSShadow : true ,
69- HARDCODED_CURRENTVERSION : "4.21.1 " , // will later be overriden call to AddonManager
69+ HARDCODED_CURRENTVERSION : "4.21.2 " , // will later be overriden call to AddonManager
7070 HARDCODED_EXTENSION_TOKEN : ".hc" ,
7171 ADDON_ID : "quickfolders@curious.be" ,
7272 FolderFlags : { // nsMsgFolderFlags
@@ -702,7 +702,7 @@ QuickFolders.Util = {
702702 } ,
703703
704704 // find the first mail tab representing a folder and open it
705- ensureFolderViewTab : function ensureFolderViewTab ( ) {
705+ ensureFolderViewTab : function ensureFolderViewTab ( folder ) {
706706 const util = QuickFolders . Util ;
707707 // TB 3 bug 22295 - if a single mail tab is opened this appears to close it!
708708 let found = false ,
@@ -718,15 +718,28 @@ QuickFolders.Util = {
718718 // switchToTab
719719 // iterate tabs
720720 let tabInfoCount = util . getTabInfoLength ( tabmail ) ;
721+ let firstFound = - 1 ;
721722 for ( let i = 0 ; i < tabInfoCount ; i ++ ) {
722723 let info = util . getTabInfoByIndex ( tabmail , i ) ;
723724 if ( info && this . getTabMode ( info ) == util . mailFolderTypeName ) {
724725 util . logDebugOptional ( "mailTabs" , "switching to tab: " + info . title ) ;
725- tabmail . switchToTab ( i ) ;
726- found = true ;
727- break ;
726+ if ( firstFound < 0 ) firstFound = i ;
727+ if ( ! folder )
728+ break ;
729+ else {
730+ let fD = info ? info . folderDisplay : null ;
731+ if ( fD . view && fD . view . displayedFolder && folder . URI == fD . view . displayedFolder . URI ) {
732+ firstFound = i ;
733+ break ; // this is the one we want
734+ }
735+ }
728736 }
729737 }
738+ if ( firstFound >= 0 ) {
739+ tabmail . switchToTab ( firstFound ) ;
740+ found = true ;
741+ }
742+
730743 // if it can't find a tab with folders ideally it should call openTab to display a new folder tab
731744 for ( let i = 0 ; ( ! found ) && i < tabInfoCount ; i ++ ) {
732745 let info = util . getTabInfoByIndex ( tabmail , i ) ;
@@ -919,12 +932,23 @@ QuickFolders.Util = {
919932 return null ;
920933 }
921934
935+
922936 // [issue 132] Shift-M opens a new tab after moving the message...
923937 // if we move the email and are in a single message window, we need to jump to the next unread mail first!
938+ let tabMail = document . getElementById ( "tabmail" ) ,
939+ currentTabInfo = tabMail . tabInfo [ QuickFolders . tabContainer . selectedIndex ] ,
940+ // currentTabId = currentTabInfo.tabId,
941+ currentTabSelIdx = QuickFolders . tabContainer . selectedIndex ,
942+ moveFromSingleMailTab = false ,
943+ isGoNext = prefs . getBoolPref ( "quickMove.gotoNextMsgAfterMove" ) ;
924944 if ( ! makeCopy && QuickFolders . Interface . CurrentTabMode == "message" ) {
945+ moveFromSingleMailTab = true ;
925946 // either go to the next mail... or close the tab
926- if ( prefs . getBoolPref ( "quickMove.gotoNextMsgAfterMove" ) )
947+ if ( isGoNext ) {
927948 goDoCommand ( 'cmd_nextMsg' ) ;
949+ QuickFolders . Interface . ensureCurrentFolder ( ) ;
950+ }
951+ document . getElementById ( 'messagepane' ) . focus ( ) ;
928952 }
929953
930954 step = 5 ;
@@ -941,9 +965,20 @@ QuickFolders.Util = {
941965 'listener = QuickFolders.CopyListener\n' +
942966 'msgWindow = ' + msgWindow + '\n' +
943967 'allowUndo = true)' ) ;
968+ let currentTab = tabMail . selectedTab ;
944969 cs . CopyMessages ( sourceFolder , messageList , targetFolder , isMove , QuickFolders . CopyListener , msgWindow , true ) ;
945970 step = 8 ;
946971 util . touch ( targetFolder ) ; // set MRUTime
972+ if ( moveFromSingleMailTab && currentTabSelIdx > 0 && ! isGoNext ) {
973+ // close single message tab:
974+ util . logDebug ( "moveMessages: currentTabSelIdx = " + currentTabSelIdx ) ;
975+ if ( currentTabSelIdx == QuickFolders . tabContainer . selectedIndex ) {
976+ // TO DO: goto corresponding folder tab or at least tab 0
977+ util . ensureFolderViewTab ( sourceFolder ) ;
978+ // now close the tab Tb opened.
979+ tabMail . closeTab ( currentTab , false ) ;
980+ }
981+ }
947982 return messageIdList ; // we need the first element for further processing
948983 }
949984 catch ( e ) {
@@ -999,6 +1034,7 @@ QuickFolders.Util = {
9991034 } ,
10001035
10011036 getTabInfoByIndex : function getTabInfoByIndex ( tabmail , idx ) {
1037+ this . logDebug ( "getTabInfoByIndex(tabmail, " + idx + ") tabInfo: " + tabmail . tabInfo ) ;
10021038 if ( tabmail . tabInfo && tabmail . tabInfo . length )
10031039 return tabmail . tabInfo [ idx ] ;
10041040 if ( tabmail . tabOwners )
0 commit comments