diff --git a/PowerEditor/src/Notepad_plus.cpp b/PowerEditor/src/Notepad_plus.cpp index ae4cbeda0..b9f52f559 100644 --- a/PowerEditor/src/Notepad_plus.cpp +++ b/PowerEditor/src/Notepad_plus.cpp @@ -4254,97 +4254,69 @@ void Notepad_plus::getCurrentOpenedFiles(Session & session) session._activeSubIndex = _subDocTab.getCurrentTabIndex(); //Use _invisibleEditView to temporarily open documents to retrieve markers - //Buffer * mainBuf = _mainEditView.getCurrentBuffer(); - //Buffer * subBuf = _subEditView.getCurrentBuffer(); Document oldDoc = _invisibleEditView.execute(SCI_GETDOCPOINTER); - for (int i = 0, len = _mainDocTab.nbItem(); i < len ; ++i) + const int nbElem = 2; + DocTabView *docTab[nbElem]; + docTab[0] = &_mainDocTab; + docTab[1] = &_subDocTab; + for (size_t k = 0; k < nbElem; ++k) { - BufferID bufID = _mainDocTab.getBufferByIndex(i); - Buffer * buf = MainFileManager->getBufferByID(bufID); - - if (!buf->isUntitled()) + for (int i = 0, len = docTab[k]->nbItem(); i < len ; ++i) { - // if the file doesn't exist, it could be redirected - // So we turn Wow64 off - bool isWow64Off = false; - NppParameters *pNppParam = NppParameters::getInstance(); - if (!PathFileExists(buf->getFullPathName())) - { - pNppParam->safeWow64EnableWow64FsRedirection(FALSE); - isWow64Off = true; - } - - if (PathFileExists(buf->getFullPathName())) - { - generic_string languageName = getLangFromMenu(buf); - const TCHAR *langName = languageName.c_str(); + BufferID bufID = docTab[k]->getBufferByIndex(i); + ScintillaEditView *editView = k == 0?&_mainEditView:&_subEditView; + int activeIndex = int(k == 0?session._activeMainIndex:session._activeSubIndex); + vector *viewFiles = (vector *)(k == 0?&(session._mainViewFiles):&(session._subViewFiles)); - sessionFileInfo sfi(buf->getFullPathName(), langName, buf->getEncoding(), buf->getPosition(&_mainEditView), buf->getBackupFileName().c_str(), int(buf->getLastModifiedTimestamp())); + Buffer * buf = MainFileManager->getBufferByID(bufID); - //_mainEditView.activateBuffer(buf->getID()); - _invisibleEditView.execute(SCI_SETDOCPOINTER, 0, buf->getDocument()); - int maxLine = _invisibleEditView.execute(SCI_GETLINECOUNT); - - for (int j = 0 ; j < maxLine ; ++j) + if (!buf->isUntitled()) + { + // if the file doesn't exist, it could be redirected + // So we turn Wow64 off + bool isWow64Off = false; + NppParameters *pNppParam = NppParameters::getInstance(); + if (!PathFileExists(buf->getFullPathName())) { - if ((_invisibleEditView.execute(SCI_MARKERGET, j)&(1 << MARK_BOOKMARK)) != 0) - { - sfi.marks.push_back(j); - } + pNppParam->safeWow64EnableWow64FsRedirection(FALSE); + isWow64Off = true; } - if (i == int(session._activeMainIndex)) + if (PathFileExists(buf->getFullPathName())) { - _mainEditView.getCurrentFoldStates(sfi._foldStates); - } - else - { - sfi._foldStates = buf->getHeaderLineState(&_mainEditView); - } + generic_string languageName = getLangFromMenu(buf); + const TCHAR *langName = languageName.c_str(); + sessionFileInfo sfi(buf->getFullPathName(), langName, buf->getEncoding(), buf->getPosition(editView), buf->getBackupFileName().c_str(), int(buf->getLastModifiedTimestamp())); - session._mainViewFiles.push_back(sfi); - } + _invisibleEditView.execute(SCI_SETDOCPOINTER, 0, buf->getDocument()); + int maxLine = _invisibleEditView.execute(SCI_GETLINECOUNT); - // We enable Wow64 system, if it was disabled - if (isWow64Off) - { - pNppParam->safeWow64EnableWow64FsRedirection(TRUE); - isWow64Off = false; - } - } - } - - for (int i = 0, len = _subDocTab.nbItem(); i < len ; ++i) - { - BufferID bufID = _subDocTab.getBufferByIndex(i); - Buffer * buf = MainFileManager->getBufferByID(bufID); - if (!buf->isUntitled() && PathFileExists(buf->getFullPathName())) - { - generic_string languageName = getLangFromMenu( buf ); - const TCHAR *langName = languageName.c_str(); + for (int j = 0 ; j < maxLine ; ++j) + { + if ((_invisibleEditView.execute(SCI_MARKERGET, j)&(1 << MARK_BOOKMARK)) != 0) + { + sfi.marks.push_back(j); + } + } - sessionFileInfo sfi(buf->getFullPathName(), langName, buf->getEncoding(), buf->getPosition(&_subEditView), buf->getBackupFileName().c_str(), int(buf->getLastModifiedTimestamp())); + if (i == activeIndex) + { + editView->getCurrentFoldStates(sfi._foldStates); + } + else + { + sfi._foldStates = buf->getHeaderLineState(editView); + } + viewFiles->push_back(sfi); + } - _invisibleEditView.execute(SCI_SETDOCPOINTER, 0, buf->getDocument()); - int maxLine = _invisibleEditView.execute(SCI_GETLINECOUNT); - for (int j = 0 ; j < maxLine ; ++j) - { - if ((_invisibleEditView.execute(SCI_MARKERGET, j)&(1 << MARK_BOOKMARK)) != 0) + // We enable Wow64 system, if it was disabled + if (isWow64Off) { - sfi.marks.push_back(j); + pNppParam->safeWow64EnableWow64FsRedirection(TRUE); + isWow64Off = false; } } - - if (i == int(session._activeSubIndex)) - { - _subEditView.getCurrentFoldStates(sfi._foldStates); - } - else - { - sfi._foldStates = buf->getHeaderLineState(&_subEditView); - } - - session._subViewFiles.push_back(sfi); } } _invisibleEditView.execute(SCI_SETDOCPOINTER, 0, oldDoc);