From 26f17d6f4f59491fb345494ae404d2bae74c6673 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sat, 2 Feb 2019 00:36:57 +0900 Subject: [PATCH 01/16] Remove WMPROFILE --- Src/Merge.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Src/Merge.cpp b/Src/Merge.cpp index 759c43c78..1b5b71328 100644 --- a/Src/Merge.cpp +++ b/Src/Merge.cpp @@ -202,10 +202,7 @@ BOOL CMergeApp::InitInstance() if (cmdInfo.m_bNoPrefs) m_pOptions->SetSerializing(false); // Turn off serializing to registry. - { - WMPROFILE(L"Init"); - Options::Init(m_pOptions.get()); // Implementation in OptionsInit.cpp - } + Options::Init(m_pOptions.get()); // Implementation in OptionsInit.cpp ApplyCommandLineConfigOptions(cmdInfo); if (cmdInfo.m_sErrorMessages.size() > 0) { -- 2.11.0 From 2f466e25e4c465b915a185640dfc3c11fa7a7328 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sat, 2 Feb 2019 00:39:51 +0900 Subject: [PATCH 02/16] Remove unused variables --- Src/Merge.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/Src/Merge.h b/Src/Merge.h index 9aee56f6a..47e15a880 100644 --- a/Src/Merge.h +++ b/Src/Merge.h @@ -177,8 +177,6 @@ private: LONG m_nActiveOperations; /**< Active operations count. */ bool m_bMergingMode; /**< Merging or Edit mode */ CFont m_fontGUI; - std::map m_hKeys; - std::map m_hWriteKeys; }; extern CMergeApp theApp; -- 2.11.0 From 119b4c5f4674ab1bbe64724cf4d75e5d06eebfc4 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sun, 3 Feb 2019 11:56:02 +0900 Subject: [PATCH 03/16] Reduce application startup time by reducing the number of open-close of HKEY (2) (Anti-virus software makes creating the handle of registry key slow) --- Src/Common/RegOptionsMgr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Src/Common/RegOptionsMgr.h b/Src/Common/RegOptionsMgr.h index 63df71324..95418d9a6 100644 --- a/Src/Common/RegOptionsMgr.h +++ b/Src/Common/RegOptionsMgr.h @@ -17,7 +17,7 @@ class COptionsMgr; class CRegOptionsMgr: public COptionsMgr { public: - CRegOptionsMgr() : m_serializing(true), m_bCloseHandle(true) { } + CRegOptionsMgr() : m_serializing(true), m_bCloseHandle(false) { } virtual ~CRegOptionsMgr() { } int LoadOption(const String& name); int SetRegRootKey(const String& path); -- 2.11.0 From d71a52feffa1401a95cecaaa43356e9729ee1dee Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sun, 3 Feb 2019 11:57:04 +0900 Subject: [PATCH 04/16] Fix sf.net ticket #2213: Left and Right files swap after losing focus v2.16.0.0 --- Src/DirDoc.cpp | 8 ++++---- Src/DirDoc.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Src/DirDoc.cpp b/Src/DirDoc.cpp index 787ff296f..27a9bd65c 100644 --- a/Src/DirDoc.cpp +++ b/Src/DirDoc.cpp @@ -432,7 +432,7 @@ bool CDirDoc::CloseMergeDocs() * @param [in] nTrivialDiffs Amount of ignored differences * @param [in] bIdentical `true` if files became identical, `false` otherwise. */ -void CDirDoc::UpdateChangedItem(PathContext &paths, +void CDirDoc::UpdateChangedItem(const PathContext &paths, UINT nDiffs, UINT nTrivialDiffs, bool bIdentical) { DIFFITEM *pos = FindItemFromPaths(*m_pCtxt, paths); @@ -440,17 +440,17 @@ void CDirDoc::UpdateChangedItem(PathContext &paths, if (!pos) { PathContext pathsSwapped(paths); - std::swap(paths[0], paths[static_cast(paths.size() - 1)]); + std::swap(pathsSwapped[0], pathsSwapped[static_cast(pathsSwapped.size() - 1)]); pos = FindItemFromPaths(*m_pCtxt, pathsSwapped); if (!pos && paths.size() > 2) { pathsSwapped = paths; - std::swap(paths[0], paths[1]); + std::swap(pathsSwapped[0], pathsSwapped[1]); pos = FindItemFromPaths(*m_pCtxt, pathsSwapped); if (!pos && paths.size() > 2) { pathsSwapped = paths; - std::swap(paths[1], paths[2]); + std::swap(pathsSwapped[1], pathsSwapped[2]); pos = FindItemFromPaths(*m_pCtxt, pathsSwapped); } } diff --git a/Src/DirDoc.h b/Src/DirDoc.h index 03c44cee3..2291c6a97 100644 --- a/Src/DirDoc.h +++ b/Src/DirDoc.h @@ -90,7 +90,7 @@ public: bool HasDirView() const { return m_pDirView != nullptr; } void RefreshOptions(); void CompareReady(); - void UpdateChangedItem(PathContext & paths, + void UpdateChangedItem(const PathContext & paths, UINT nDiffs, UINT nTrivialDiffs, bool bIdentical); void UpdateResources(); void InitStatusStrings(); -- 2.11.0 From f62abe3cdac43f03e6af6e0d457a3dd667c1cb77 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sun, 3 Feb 2019 11:57:27 +0900 Subject: [PATCH 05/16] Update .hgignore --- .hgignore | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.hgignore b/.hgignore index b080078ff..5a12e55e7 100644 --- a/.hgignore +++ b/.hgignore @@ -44,8 +44,15 @@ syntax: glob dlldata.c .git *.opensdf +*.log +*.bak +*.bsc +*.diagsession +*.vspx DebugU ShellExtension/ShellExtension.h +ShellExtension/ShellExtension_i.c +ShellExtension/ShellExtension_p.c Plugins/src_VCPP/DisplayBinaryFiles/DisplayBinaryFiles.h Plugins/src_VCPP/DisplayXMLFiles/DisplayXMLFiles.h Plugins/src_VCPP/EditBinaryFiles/EditBinaryFiles.h @@ -70,3 +77,4 @@ Docs/Users/Manual/build/saxon Docs/Users/Manual/build/xsl Docs/Users/Manual/build/xerces Docs/Users/Manual/build/Version.txt +winmerge-cppcheck-build-dir -- 2.11.0 From 38e02b7a1c6440033df3fb4ac2c947dac4f8687d Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sun, 3 Feb 2019 14:43:54 +0900 Subject: [PATCH 06/16] TempFile.cpp: Use Poco::File::remove() instead of SHFileOperation() SHFileOperation() is slow. --- Src/TempFile.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Src/TempFile.cpp b/Src/TempFile.cpp index cbe50d981..3edd49651 100644 --- a/Src/TempFile.cpp +++ b/Src/TempFile.cpp @@ -218,16 +218,13 @@ static bool WMrunning(const vector& processIDs, int iPI) */ bool ClearTempfolder(const String &pathName) { - // SHFileOperation expects a ZZ terminated list of paths! - String normalizedPathName = pathName; - paths::normalize(normalizedPathName); // remove trailing slash - const size_t pathSize = normalizedPathName.length() + 2; - std::vector path(pathSize, 0); - memcpy(&path[0], normalizedPathName.c_str(), normalizedPathName.length() * sizeof(TCHAR)); - - SHFILEOPSTRUCT fileop = {0, FO_DELETE, &path[0], 0, FOF_NOCONFIRMATION | - FOF_SILENT | FOF_NOERRORUI, 0, 0, 0}; - SHFileOperation(&fileop); - + try + { + TFile(pathName).remove(true); + } + catch (...) + { + return false; + } return true; } -- 2.11.0 From 07755eab3b56d974dd1d38b3c1944f9510b0376c Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sun, 3 Feb 2019 19:40:00 +0900 Subject: [PATCH 07/16] MergeStatusBar.cpp: Reduce unnecessary drawing --- Src/MergeStatusBar.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Src/MergeStatusBar.cpp b/Src/MergeStatusBar.cpp index 2416d0d24..e31d5aa8b 100644 --- a/Src/MergeStatusBar.cpp +++ b/Src/MergeStatusBar.cpp @@ -118,6 +118,14 @@ BOOL CMergeStatusBar::Create(CWnd* pParentWnd) for (auto&& p : { PANE_PANE0_RO, PANE_PANE1_RO, PANE_PANE2_RO }) SetPaneText(p, sText.c_str(), TRUE); + for (int pane = 0; pane < 3; pane++) + { + SetPaneStyle(PANE_PANE0_INFO + pane * nColumnsPerPane, SBPS_NORMAL); + SetPaneStyle(PANE_PANE0_ENCODING + pane * nColumnsPerPane, SBPS_OWNERDRAW); + SetPaneStyle(PANE_PANE0_RO + pane * nColumnsPerPane, SBPS_NORMAL); + SetPaneStyle(PANE_PANE0_EOL + pane * nColumnsPerPane, SBPS_OWNERDRAW); + } + return TRUE; }; -- 2.11.0 From d21e0a248ee7477844294916f9e9c9d2bff83c6f Mon Sep 17 00:00:00 2001 From: Timon34 Date: Tue, 5 Feb 2019 18:33:45 +0000 Subject: [PATCH 08/16] Russian.po edited online with Bitbucket Fixed 1 typo, improved 2 strings translation, changed translators list --HG-- branch : Timon34/russianpo-edited-online-with-bitbucket-f-1549391570392 --- Translations/WinMerge/Russian.po | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Translations/WinMerge/Russian.po b/Translations/WinMerge/Russian.po index 935b283ee..28093df53 100644 --- a/Translations/WinMerge/Russian.po +++ b/Translations/WinMerge/Russian.po @@ -2,6 +2,7 @@ # Released under the "GNU General Public License" # # Translators: +# * Dmitriy Rublev # * Valerij Romanovskij # * Dmitriy S. Aleshkowskiy # * geek2k @@ -15,7 +16,7 @@ msgstr "" "Report-Msgid-Bugs-To: http://bugs.winmerge.org/\n" "POT-Creation-Date: \n" "PO-Revision-Date: 2012-09-13 20:55+0200\n" -"Last-Translator: Valerij Romanovskij \n" +"Last-Translator: Dmitriy Rublev \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -229,7 +230,7 @@ msgstr "Недавние проекты" #: Merge.rc:73E9B1DA #, c-format msgid "Recent F&iles Or Folders" -msgstr "Недавние Файлы или Папки" +msgstr "Недавние файлы или папки" #: Merge.rc:29D50B4A #, c-format @@ -3187,7 +3188,7 @@ msgstr "" "Не удается удалить файл фильтра:\n" "%1\n" "\n" -"Возможно, файл только для четния?" +"Возможно, файл только для чтения?" #: Merge.rc:6F3BCB34 #, c-format @@ -3324,7 +3325,7 @@ msgstr "Выбор папки" #: Merge.rc:3080B693 #, c-format msgid "Select two (or three) folders or two (or three) files to compare." -msgstr "Выберите две (или три) папки или два (или три) файла для сравнения." +msgstr "Выберите для сравнения 2 (или 3) папки или файла." #: Merge.rc:2EBBDDD6 #, c-format -- 2.11.0 From 0548b7add1e524160f6a09d36762082b25b487df Mon Sep 17 00:00:00 2001 From: Tichij Date: Tue, 12 Feb 2019 13:11:23 +0200 Subject: [PATCH 09/16] Minor improvements of Lithuanian translation --- Translations/InnoSetup/Lithuanian.isl | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Translations/InnoSetup/Lithuanian.isl b/Translations/InnoSetup/Lithuanian.isl index 377930059..77678a3de 100644 --- a/Translations/InnoSetup/Lithuanian.isl +++ b/Translations/InnoSetup/Lithuanian.isl @@ -42,7 +42,7 @@ ConfirmTitle=Patvirtinimas ErrorTitle=Klaida ; *** SetupLdr messages -SetupLdrStartupMessage=%1 diegimas. Ar norite tæsti? +SetupLdrStartupMessage=%1 diegimas. Norite tæsti? LdrCannotCreateTemp=Negaliu sukurti laikinojo failo. Diegimas nutraukiamas. LdrCannotExecTemp=Negaliu ávykdyti failo laikinajame kataloge. Diegimas nutraukiamas. @@ -150,14 +150,14 @@ CannotInstallToUNCPath=Diegimo programa negali diegti InvalidPath=Jûs privalote áraðyti pilnà kelià su disko raide; pavyzdþiui:%n%nC:\APP%n% ir negalima nurodyti UNC tipo katalogà:%n%n\\Serveris\share InvalidDrive=Diskas, kurá nurodëte, neegzistuoja arba yra neprieinamas. Praðome nurodyti kità diskà ir/arba katalogà. DiskSpaceWarningTitle=Nepakanka laisvos vietos diske -DiskSpaceWarning=Diegimui reikia bent %1 KB laisvos vietos, bet nurodytame diske yra tik %2 KB laisvos vietos.%n%nAr Jûs vis tiek norite tæsti? +DiskSpaceWarning=Diegimui reikia bent %1 KB laisvos vietos, bet nurodytame diske yra tik %2 KB laisvos vietos.%n%nVis tiek norite tæsti? DirNameTooLong=Katalogo pavadinimas ar kelias iki jo per ilgas. InvalidDirName=Nekorektiðkas katalogo pavadinimas. BadDirName32=Katalogo pavadinime neturi bûti simboliø:%n%n%1 DirExistsTitle=Toks katalogas egzistuoja -DirExists=Katalogas:%n%n%1%n%n jau egzistuoja. Ar vistiek norite diegti programà tame kataloge? +DirExists=Katalogas:%n%n%1%n%n jau egzistuoja. Vis tiek norite diegti programà tame kataloge? DirDoesntExistTitle=Toks katalogas neegzistuoja. -DirDoesntExist=Katalogas:%n%n%1%n%n neegzistuoja. Ar norite kad katalogas bûtø sukurtas? +DirDoesntExist=Katalogas:%n%n%1%n%n neegzistuoja. Norite, kad katalogas bûtø sukurtas? ; *** "Select Components" wizard page WizardSelectComponents=Komponentø pasirinkimas @@ -168,7 +168,7 @@ FullInstallation=Pilnas vis CompactInstallation=Glaustas diegimas CustomInstallation=Pasirinktinis diegimas NoUninstallWarningTitle=Komponentai egzistuoja -NoUninstallWarning=Diegimo programa aptiko, kad ðie komponentai jau ádiegti Jûsø kompiuteryje:%n%n%1%n%nJei nuimsite þymes nuo ðiø komponentø, jie vis tiek nebus iðtrinti.%n%nAr vis tiek norite tæsti diegimà? +NoUninstallWarning=Diegimo programa aptiko, kad ðie komponentai jau ádiegti Jûsø kompiuteryje:%n%n%1%n%nJei nuimsite þymes nuo ðiø komponentø, jie vis tiek nebus iðtrinti.%n%nVis tiek norite tæsti diegimà? ComponentSize1=%1 KB ComponentSize2=%1 MB ComponentsDiskSpaceMBLabel=Dabartinis Jûsø pasirinkimas reikalauja [mb] MB laisvos vietos diske. @@ -221,8 +221,8 @@ FinishedHeadingLabel= FinishedLabelNoIcons=Diegimo programa baigë „[name]“ diegimà Jûsø kompiuteryje. FinishedLabel=Diegimo programa baigë „[name]“ diegimà Jûsø kompiuteryje. Programa gali bûti paleista pasirinkus atitinkamas nuorodas. ClickFinish=Spauskite „Pabaiga“, kad uþdarytumëte diegimo programà. -FinishedRestartLabel=Sëkmingam „[name]“ diegimui, reikëtø perkrauti kompiuterá. Ar norite perkrauti já dabar? -FinishedRestartMessage=Sëkmingam „[name]“ diegimui, reikëtø perkrauti kompiuterá.%n%nAr norite perkrauti já dabar? +FinishedRestartLabel=Sëkmingam „[name]“ diegimui, reikëtø perkrauti kompiuterá. Norite perkrauti já dabar? +FinishedRestartMessage=Sëkmingam „[name]“ diegimui, reikëtø perkrauti kompiuterá.%n%nNorite perkrauti já dabar? ShowReadmeCheck=Taip, að norëèiau perskaityti „README“ failà YesRadio=&Taip, að noriu perkrauti kompiuterá dabar NoRadio=&Ne, að perkrausiu kompiuterá vëliau @@ -240,7 +240,7 @@ SelectDirectoryLabel=Pra ; *** Installation phase messages SetupAborted=Diegimas nebuvo baigtas.%n%nPraðome iðspræsti problemà ir paleisti diegimo programà vëliau. -EntryAbortRetryIgnore=Spauskite „Retry“, jeigu norite bandyti vël, „Ignore“ - tæsti vistiek arba „Abort“, kad nutrauktumëte diegimà. +EntryAbortRetryIgnore=Spauskite „Retry“, jeigu norite bandyti vël, „Ignore“ - tæsti vis tiek arba „Abort“, kad nutrauktumëte diegimà. ; *** Installation status messages StatusClosingApplications=Uþdaromos programos... @@ -272,13 +272,13 @@ ErrorIniEntry=Klaida ra ; *** File copying errors FileAbortRetryIgnore=Spauskite „Retry“, jeigu norite bandyti dar kartà, „Ignore“ - praleisti failà (nerekomenduojama) arba „Abort“ - nutraukti diegimà. -FileAbortRetryIgnore2=Spauskite „Retry“, jeigu norite bandyti dar kartà, „Ignore“ - tæsti vistiek (nerekomenduojama) arba „Abort“ - nutraukti diegimà. +FileAbortRetryIgnore2=Spauskite „Retry“, jeigu norite bandyti dar kartà, „Ignore“ - tæsti vis tiek (nerekomenduojama) arba „Abort“ - nutraukti diegimà. SourceIsCorrupted=Failas sugadintas SourceDoesntExist=Neegzistuoja „%1“ failas ExistingFileReadOnly=Egzistuojantis failas turi tik skaitymo atributus.%n%nSpauskite „Retry“ ðio atributo iðtrynimui ir bandyti vël, „Ignore“ - praleisti failà arba „Abort“ - nutraukti diegimà. ErrorReadingExistingDest=Skaitant egzistuojantá failà ávyko klaida: -FileExists=Toks failas jau egzistuoja.%n%nAr norite, kad diegimo programa perraðytø failà? -ExistingFileNewer=Egzistuojantis failas yra naujesnis uþ tà, kurá diegimo programa bando áraðyti. Rekomenduojama palikti esantá naujesná failà.%n%nAr norite palikti naujesná failà? +FileExists=Toks failas jau egzistuoja.%n%nNorite, kad diegimo programa perraðytø failà? +ExistingFileNewer=Egzistuojantis failas yra naujesnis uþ tà, kurá diegimo programa bando áraðyti. Rekomenduojama palikti esantá naujesná failà.%n%nNorite palikti naujesná failà? ErrorChangingAttr=Keièiant failo atributus ávyko klaida: ErrorCreatingTemp=Kuriant failà pasirinktame kataloge ávyko klaida: ErrorReadingSource=Skaitant diegiamàjá failà ávyko klaida: @@ -299,18 +299,18 @@ UninstallNotFound= UninstallOpenError=„%1“ failas negali bûti atidarytas. Paðalinti neámanoma. UninstallUnsupportedVer=Paðalinimo þurnalo failas „%1“ yra paðalinimo programai nesuprantamo formato. Paðalinti neámanoma. UninstallUnknownEntry=Neþinomas áraðas (%1) rastas paðalinimo þurnalo faile. -ConfirmUninstall=Ar esate tikri, kad norite paðalinti „%1“ ir visus priklausanèius komponentus? +ConfirmUninstall=Esate tikri, kad norite paðalinti „%1“ ir visus priklausanèius komponentus? UninstallOnlyOnWin64=Ðis diegimas gali bûti paðalintas tik 64 bitø Windows sistemose. OnlyAdminCanUninstall=Tik administratoriaus teises turintis vartotojas gali paðalinti programà. UninstallStatusLabel=Praðome palaukti, kol „%1“ bus paðalinta ið Jûsø kompiuterio. UninstalledAll=„%1“ buvo sëkmingai paðalinta ið Jûsø kompiuterio. UninstalledMost=„%1“ paðalinimas sëkmingai baigtas.%n%nKai kurie elementai nebuvo iðtrinti - juos galite paðalinti rankiniu bûdu. -UninstalledAndNeedsRestart=„%1“ paðalinimui uþbaigti Jûsø kompiuteris turi bûti perkrautas.%n%nAr norite perkrauti já dabar? +UninstalledAndNeedsRestart=„%1“ paðalinimui uþbaigti Jûsø kompiuteris turi bûti perkrautas.%n%nNorite perkrauti já dabar? UninstallDataCorrupted=„%1“ failas yra sugadinta. Programos paðalinti neámanoma. ; *** Uninstallation phase messages ConfirmDeleteSharedFileTitle=Iðtrinti bendruosius failus? -ConfirmDeleteSharedFile2=Aptikta, kad jokia programa nenaudoja bendrøjø failø. Ar norite iðtrinti bendruosius failus? %n%nJeigu kurios nors programos naudoja ðiuos failus, ir jie bus iðtrinti, tos programos gali veikti neteisingai. Jeigu nesate tikras - spauskite „Ne“. Failo palikimas Jûsø kompiuteryje nesukels jokiø problemø. +ConfirmDeleteSharedFile2=Aptikta, kad jokia programa nenaudoja bendrøjø failø. Norite iðtrinti bendruosius failus? %n%nJeigu kurios nors programos naudoja ðiuos failus, ir jie bus iðtrinti, tos programos gali veikti neteisingai. Jeigu nesate tikras - spauskite „Ne“. Failo palikimas Jûsø kompiuteryje nesukels jokiø problemø. SharedFileNameLabel=Failo pavadinimas: SharedFileLocationLabel=Vieta: WizardUninstalling=Paðalinimo eiga @@ -337,7 +337,7 @@ AssocFileExtension=&Susieti AssocingFileExtension=„%1“ programa susiejama su failo plëtiniu %2... AutoStartProgramGroupDescription=Atomatinë paleistis: AutoStartProgram=Atomatiðkai paleisti „%1“ -AddonHostProgramNotFound=„%1“ nerasta Jûsø nurodytame kataloge.%n%nAr Jûs vis tiek norite tæsti? +AddonHostProgramNotFound=„%1“ nerasta Jûsø nurodytame kataloge.%n%nVis tiek norite tæsti? ;Things we can also localize -- 2.11.0 From 1ddf0b4076b317d1cf59e6001ff96b9727ddcb00 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sun, 17 Feb 2019 20:57:06 +0900 Subject: [PATCH 10/16] 'Automatically scroll to first difference' option did not work since 0db5699a19e7 --- Src/HexMergeDoc.cpp | 24 ++++++++++++---- Src/HexMergeDoc.h | 3 +- Src/HexMergeFrm.cpp | 24 +++++++++++++--- Src/HexMergeFrm.h | 3 +- Src/ImgMergeFrm.cpp | 9 ++++-- Src/ImgMergeFrm.h | 3 +- Src/MainFrm.cpp | 12 ++++++-- Src/MergeDoc.cpp | 59 ++++++++++++++++++++------------------- Src/MergeDoc.h | 3 +- Src/MergeEditView.cpp | 2 ++ Translations/WinMerge/English.pot | 2 +- 11 files changed, 95 insertions(+), 49 deletions(-) diff --git a/Src/HexMergeDoc.cpp b/Src/HexMergeDoc.cpp index b0268cc4e..eaf96d584 100644 --- a/Src/HexMergeDoc.cpp +++ b/Src/HexMergeDoc.cpp @@ -501,7 +501,7 @@ HRESULT CHexMergeDoc::LoadOneFile(int index, LPCTSTR filename, bool readOnly, co /** * @brief Load files and initialize frame's compare result icon */ -bool CHexMergeDoc::OpenDocs(int nFiles, const FileLocation fileloc[], const bool bRO[], const String strDesc[], int nPane) +bool CHexMergeDoc::OpenDocs(int nFiles, const FileLocation fileloc[], const bool bRO[], const String strDesc[]) { CHexMergeFrame *pf = GetParentFrame(); ASSERT(pf != nullptr); @@ -522,9 +522,6 @@ bool CHexMergeDoc::OpenDocs(int nFiles, const FileLocation fileloc[], const bool m_pView[0]->ResizeWindow(); OnRefresh(); - - if (GetOptionsMgr()->GetBool(OPT_SCROLL_TO_FIRST)) - m_pView[0]->SendMessage(WM_COMMAND, ID_FIRSTDIFF); } else { @@ -534,6 +531,21 @@ bool CHexMergeDoc::OpenDocs(int nFiles, const FileLocation fileloc[], const bool return bSucceeded; } +void CHexMergeDoc::MoveOnLoad(int nPane, int) +{ + if (nPane < 0) + { + nPane = theApp.GetProfileInt(_T("Settings"), _T("ActivePane"), 0); + if (nPane < 0 || nPane >= m_nBuffers) + nPane = 0; + } + + GetParentFrame()->SetActivePane(nPane); + + if (GetOptionsMgr()->GetBool(OPT_SCROLL_TO_FIRST)) + m_pView[0]->SendMessage(WM_COMMAND, ID_FIRSTDIFF); +} + void CHexMergeDoc::CheckFileChanged(void) { for (int pane = 0; pane < m_nBuffers; ++pane) @@ -720,8 +732,8 @@ void CHexMergeDoc::OnFileReload() fileloc[pane].setPath(m_filePaths[pane]); bRO[pane] = m_pView[pane]->GetReadOnly(); } - int nActivePane = GetActiveMergeView()->m_nThisPane; - OpenDocs(m_nBuffers, fileloc, bRO, m_strDesc, nActivePane); + OpenDocs(m_nBuffers, fileloc, bRO, m_strDesc); + MoveOnLoad(GetActiveMergeView()->m_nThisPane); } /** diff --git a/Src/HexMergeDoc.h b/Src/HexMergeDoc.h index 4ed7c0793..b54f411ee 100644 --- a/Src/HexMergeDoc.h +++ b/Src/HexMergeDoc.h @@ -85,7 +85,8 @@ public: CHexMergeFrame * GetParentFrame() const; void UpdateHeaderPath(int pane); void RefreshOptions(); - bool OpenDocs(int nFiles, const FileLocation fileloc[], const bool bRO[], const String strDesc[], int nPane); + bool OpenDocs(int nFiles, const FileLocation fileloc[], const bool bRO[], const String strDesc[]); + void MoveOnLoad(int nPane = -1, int nLineIndex = -1); void CheckFileChanged(void); String GetDescription(int pane) const { return m_strDesc[pane]; }; private: diff --git a/Src/HexMergeFrm.cpp b/Src/HexMergeFrm.cpp index e485cb5e8..1f89e5433 100644 --- a/Src/HexMergeFrm.cpp +++ b/Src/HexMergeFrm.cpp @@ -139,10 +139,7 @@ BOOL CHexMergeFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/, m_wndFilePathBar.SetPaneCount(m_pMergeDoc->m_nBuffers); m_wndFilePathBar.SetOnSetFocusCallback([&](int pane) { - if (m_wndSplitter.GetColumnCount() > 1) - m_wndSplitter.SetActivePane(0, pane); - else - m_wndSplitter.SetActivePane(pane, 0); + SetActivePane(pane); }); // Set filename bars inactive so colors get initialized @@ -238,6 +235,7 @@ void CHexMergeFrame::SavePosition() CRect rc; pLeft->GetWindowRect(&rc); theApp.WriteProfileInt(_T("Settings"), _T("WLeft"), rc.Width()); + theApp.WriteProfileInt(_T("Settings"), _T("ActivePane"), GetActivePane()); } } @@ -348,6 +346,24 @@ void CHexMergeFrame::UpdateSplitter() m_wndSplitter.RecalcLayout(); } +int CHexMergeFrame::GetActivePane() +{ + int nPane; + if (m_wndSplitter.GetColumnCount() > 1) + m_wndSplitter.GetActivePane(nullptr, &nPane); + else + m_wndSplitter.GetActivePane(&nPane, nullptr); + return nPane; +} + +void CHexMergeFrame::SetActivePane(int nPane) +{ + if (m_wndSplitter.GetColumnCount() > 1) + m_wndSplitter.SetActivePane(0, nPane); + else + m_wndSplitter.SetActivePane(nPane, 0); +} + /** * @brief Synchronize control and status bar placements with splitter position, * update mod indicators, synchronize scrollbars diff --git a/Src/HexMergeFrm.h b/Src/HexMergeFrm.h index d599762f5..d59460a93 100644 --- a/Src/HexMergeFrm.h +++ b/Src/HexMergeFrm.h @@ -53,7 +53,8 @@ public: void UpdateAutoPaneResize(); void UpdateSplitter(); - + int GetActivePane(); + void SetActivePane(int nPane); // Attributes protected: diff --git a/Src/ImgMergeFrm.cpp b/Src/ImgMergeFrm.cpp index a9bd72939..2d60249e9 100644 --- a/Src/ImgMergeFrm.cpp +++ b/Src/ImgMergeFrm.cpp @@ -199,7 +199,7 @@ CImgMergeFrame::~CImgMergeFrame() } } -bool CImgMergeFrame::OpenDocs(int nFiles, const FileLocation fileloc[], const bool bRO[], const String strDesc[], int nPane, CMDIFrameWnd *pParent) +bool CImgMergeFrame::OpenDocs(int nFiles, const FileLocation fileloc[], const bool bRO[], const String strDesc[], CMDIFrameWnd *pParent) { for (int pane = 0; pane < nFiles; ++pane) @@ -228,6 +228,11 @@ bool CImgMergeFrame::OpenDocs(int nFiles, const FileLocation fileloc[], const bo if (GetOptionsMgr()->GetBool(OPT_SCROLL_TO_FIRST)) m_pImgMergeWindow->FirstDiff(); + return true; +} + +void CImgMergeFrame::MoveOnLoad(int nPane, int) +{ if (nPane < 0) { nPane = theApp.GetProfileInt(_T("Settings"), _T("ActivePane"), 0); @@ -236,8 +241,6 @@ bool CImgMergeFrame::OpenDocs(int nFiles, const FileLocation fileloc[], const bo } m_pImgMergeWindow->SetActivePane(nPane); - - return true; } void CImgMergeFrame::ChangeFile(int nBuffer, const String& path) diff --git a/Src/ImgMergeFrm.h b/Src/ImgMergeFrm.h index 32d193e68..583db4289 100644 --- a/Src/ImgMergeFrm.h +++ b/Src/ImgMergeFrm.h @@ -58,7 +58,8 @@ public: // Operations public: - bool OpenDocs(int nFiles, const FileLocation fileloc[], const bool bRO[], const String strDesc[], int nPane, CMDIFrameWnd *pParent); + bool OpenDocs(int nFiles, const FileLocation fileloc[], const bool bRO[], const String strDesc[], CMDIFrameWnd *pParent); + void MoveOnLoad(int nPane = -1, int nLineIndex = -1); void ChangeFile(int pane, const String& path); void SetDirDoc(CDirDoc * pDirDoc); void UpdateResources(); diff --git a/Src/MainFrm.cpp b/Src/MainFrm.cpp index 498ba7d3b..86ec1400f 100644 --- a/Src/MainFrm.cpp +++ b/Src/MainFrm.cpp @@ -711,7 +711,7 @@ bool CMainFrame::ShowMergeDoc(CDirDoc * pDirDoc, } // Note that OpenDocs() takes care of closing compare window when needed. - bool bResult = pMergeDoc->OpenDocs(nFiles, fileloc, GetROFromFlags(nFiles, dwFlags).data(), strDesc, GetActivePaneFromFlags(nFiles, dwFlags)); + bool bResult = pMergeDoc->OpenDocs(nFiles, fileloc, GetROFromFlags(nFiles, dwFlags).data(), strDesc); if (CChildFrame *pFrame = pMergeDoc->GetParentFrame()) { @@ -739,6 +739,8 @@ bool CMainFrame::ShowMergeDoc(CDirDoc * pDirDoc, } } + pMergeDoc->MoveOnLoad(GetActivePaneFromFlags(nFiles, dwFlags)); + if (!sReportFile.empty()) pMergeDoc->GenerateReport(sReportFile); @@ -755,8 +757,10 @@ bool CMainFrame::ShowHexMergeDoc(CDirDoc * pDirDoc, int nFiles, const FileLocati if (pHexMergeDoc == nullptr) return false; - if (!pHexMergeDoc->OpenDocs(nFiles, fileloc, GetROFromFlags(nFiles, dwFlags).data(), strDesc, GetActivePaneFromFlags(nFiles, dwFlags))) + if (!pHexMergeDoc->OpenDocs(nFiles, fileloc, GetROFromFlags(nFiles, dwFlags).data(), strDesc)) return false; + + pHexMergeDoc->MoveOnLoad(GetActivePaneFromFlags(nFiles, dwFlags)); if (!sReportFile.empty()) pHexMergeDoc->GenerateReport(sReportFile); @@ -776,7 +780,7 @@ bool CMainFrame::ShowImgMergeDoc(CDirDoc * pDirDoc, int nFiles, const FileLocati pImgMergeFrame->SetDirDoc(pDirDoc); pDirDoc->AddMergeDoc(pImgMergeFrame); - if (!pImgMergeFrame->OpenDocs(nFiles, fileloc, GetROFromFlags(nFiles, dwFlags).data(), strDesc, GetActivePaneFromFlags(nFiles, dwFlags), this)) + if (!pImgMergeFrame->OpenDocs(nFiles, fileloc, GetROFromFlags(nFiles, dwFlags).data(), strDesc, this)) return ShowMergeDoc(pDirDoc, nFiles, fileloc, dwFlags, strDesc, sReportFile, infoUnpacker); for (int pane = 0; pane < nFiles; pane++) @@ -785,6 +789,8 @@ bool CMainFrame::ShowImgMergeDoc(CDirDoc * pDirDoc, int nFiles, const FileLocati pImgMergeFrame->DoAutoMerge(pane); } + pImgMergeFrame->MoveOnLoad(GetActivePaneFromFlags(nFiles, dwFlags)); + if (!sReportFile.empty()) pImgMergeFrame->GenerateReport(sReportFile); diff --git a/Src/MergeDoc.cpp b/Src/MergeDoc.cpp index 25ba81bd7..42cb916b0 100644 --- a/Src/MergeDoc.cpp +++ b/Src/MergeDoc.cpp @@ -2599,14 +2599,12 @@ DWORD CMergeDoc::LoadOneFile(int index, String filename, bool readOnly, const St * @brief Loads files and does initial rescan. * @param fileloc [in] File to open to left/middle/right side (path & encoding info) * @param bRO [in] Is left/middle/right file read-only - * @param nPane [in] Pane to activate - * @param nLineIndex [in] Index of line in view to move the cursor to * @return Success/Failure/Binary (failure) per typedef enum OpenDocsResult_TYPE * @todo Options are still read from CMainFrame, this will change * @sa CMainFrame::ShowMergeDoc() */ bool CMergeDoc::OpenDocs(int nFiles, const FileLocation ifileloc[], - const bool bRO[], const String strDesc[], int nPane/* = -1 */, int nLineIndex/* = -1 */) + const bool bRO[], const String strDesc[]) { IDENTLEVEL identical = IDENTLEVEL_NONE; int nRescanResult = RESCAN_OK; @@ -2829,29 +2827,6 @@ bool CMergeDoc::OpenDocs(int nFiles, const FileLocation ifileloc[], ShowRescanError(nRescanResult, identical); } - if (nPane < 0) - { - nPane = theApp.GetProfileInt(_T("Settings"), _T("ActivePane"), 0); - if (nPane < 0 || nPane >= m_nBuffers) - nPane = 0; - } - if (nLineIndex == -1) - { - // scroll to first diff - if (GetOptionsMgr()->GetBool(OPT_SCROLL_TO_FIRST) && - m_diffList.HasSignificantDiffs()) - { - int nDiff = m_diffList.FirstSignificantDiff(); - m_pView[0][nPane]->SelectDiff(nDiff, true, false); - nLineIndex = m_pView[0][nPane]->GetCursorPos().y; - } - else - { - nLineIndex = 0; - } - } - m_pView[0][nPane]->GotoLine(nLineIndex, false, nPane); - // Exit if files are identical should only work for the first // comparison and must be disabled afterward. theApp.m_bExitIfNoDiff = MergeCmdLineInfo::Disabled; @@ -2875,6 +2850,32 @@ bool CMergeDoc::OpenDocs(int nFiles, const FileLocation ifileloc[], return true; } +void CMergeDoc::MoveOnLoad(int nPane, int nLineIndex) +{ + if (nPane < 0) + { + nPane = theApp.GetProfileInt(_T("Settings"), _T("ActivePane"), 0); + if (nPane < 0 || nPane >= m_nBuffers) + nPane = 0; + } + if (nLineIndex == -1) + { + // scroll to first diff + if (GetOptionsMgr()->GetBool(OPT_SCROLL_TO_FIRST) && + m_diffList.HasSignificantDiffs()) + { + int nDiff = m_diffList.FirstSignificantDiff(); + m_pView[0][nPane]->SelectDiff(nDiff, true, false); + nLineIndex = m_pView[0][nPane]->GetCursorPos().y; + } + else + { + nLineIndex = 0; + } + } + m_pView[0][nPane]->GotoLine(nLineIndex, false, nPane); +} + void CMergeDoc::ChangeFile(int nBuffer, const String& path) { if (!PromptAndSaveIfNeeded(true)) @@ -2896,7 +2897,8 @@ void CMergeDoc::ChangeFile(int nBuffer, const String& path) fileloc[nBuffer].setPath(path); fileloc[nBuffer].encoding = GuessCodepageEncoding(path, GetOptionsMgr()->GetInt(OPT_CP_DETECT)); - OpenDocs(m_nBuffers, fileloc, bRO, strDesc, nBuffer, 0); + OpenDocs(m_nBuffers, fileloc, bRO, strDesc); + MoveOnLoad(nBuffer, 0); } /** @@ -3146,7 +3148,8 @@ void CMergeDoc::OnFileReload() fileloc[pane].setPath(m_filePaths[pane]); } CPoint pt = GetActiveMergeView()->GetCursorPos(); - OpenDocs(m_nBuffers, fileloc, bRO, m_strDesc, GetActiveMergeView()->m_nThisPane, pt.y); + OpenDocs(m_nBuffers, fileloc, bRO, m_strDesc); + MoveOnLoad(GetActiveMergeView()->m_nThisPane, pt.y); } /** diff --git a/Src/MergeDoc.h b/Src/MergeDoc.h index e16614a67..09427a865 100644 --- a/Src/MergeDoc.h +++ b/Src/MergeDoc.h @@ -179,8 +179,9 @@ public: void RefreshOptions(); void UpdateResources(); bool OpenDocs(int nFiles, const FileLocation fileloc[], - const bool bRO[], const String strDesc[], int nPane = -1, int nLineIndex = -1); + const bool bRO[], const String strDesc[]); int LoadFile(CString sFileName, int nBuffer, bool & readOnly, const FileTextEncoding & encoding); + void MoveOnLoad(int nPane = -1, int nLinIndex = -1); void ChangeFile(int nBuffer, const String& path); void RescanIfNeeded(float timeOutInSecond); int Rescan(bool &bBinary, IDENTLEVEL &identical, bool bForced = false); diff --git a/Src/MergeEditView.cpp b/Src/MergeEditView.cpp index fbff415bf..c6537058f 100644 --- a/Src/MergeEditView.cpp +++ b/Src/MergeEditView.cpp @@ -453,7 +453,9 @@ std::map> CMergeEditView::GetColumnSelectedWordDiffIndice( void CMergeEditView::OnInitialUpdate() { + PushCursors(); CCrystalEditViewEx::OnInitialUpdate(); + PopCursors(); SetFont(dynamic_cast(AfxGetMainWnd())->m_lfDiff); SetAlternateDropTarget(new DropHandler(std::bind(&CMergeEditView::OnDropFiles, this, std::placeholders::_1))); diff --git a/Translations/WinMerge/English.pot b/Translations/WinMerge/English.pot index e00c9a63a..b56f17847 100644 --- a/Translations/WinMerge/English.pot +++ b/Translations/WinMerge/English.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: WinMerge\n" "Report-Msgid-Bugs-To: http://bugs.winmerge.org/\n" -"POT-Creation-Date: 2019-01-14 01:56+0000\n" +"POT-Creation-Date: 2019-02-02 01:28+0000\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: English \n" -- 2.11.0 From 7be4af4da8023d1a1186a75de99fd95a44fd684c Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Tue, 19 Feb 2019 07:42:53 +0900 Subject: [PATCH 11/16] Fix sf.net ticket #2215: Cancelation of selection range with reverse indent (Revert the commit "Improve handling of last lines in files (4) (b3d10de90b11)" partially) --- Externals/crystaledit/editlib/ccrystaltextbuffer.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Externals/crystaledit/editlib/ccrystaltextbuffer.cpp b/Externals/crystaledit/editlib/ccrystaltextbuffer.cpp index 25bc0e52e..b56fe6ffe 100644 --- a/Externals/crystaledit/editlib/ccrystaltextbuffer.cpp +++ b/Externals/crystaledit/editlib/ccrystaltextbuffer.cpp @@ -120,17 +120,13 @@ RecalcPoint (CPoint & ptPoint) if (ptPoint.y > m_ptEnd.y) { ptPoint.y -= (m_ptEnd.y - m_ptStart.y); - ptPoint.y = min(ptPoint.y, m_ptEnd.y); - if (ptPoint.y < m_ptEnd.y) - return; + return; } if (ptPoint.y == m_ptEnd.y && ptPoint.x >= m_ptEnd.x) { ptPoint.y = m_ptStart.y; ptPoint.x = m_ptStart.x + (ptPoint.x - m_ptEnd.x); - ptPoint.x = min(ptPoint.x, m_ptEnd.x); - if( ptPoint.x < m_ptEnd.x) - return; + return; } if (ptPoint.y == m_ptStart.y) { -- 2.11.0 From e0e400026993938f5a86e5eedbb03f3ddfe29b45 Mon Sep 17 00:00:00 2001 From: Yanko Yankov Date: Wed, 20 Feb 2019 22:28:56 +0000 Subject: [PATCH 12/16] Bulgarian.po edited online with Bitbucket --HG-- branch : YankoNik/bulgarianpo-edited-online-with-bitbucket-1550701708352 --- Translations/WinMerge/Bulgarian.po | 452 ++++++++++++++++++------------------- 1 file changed, 226 insertions(+), 226 deletions(-) diff --git a/Translations/WinMerge/Bulgarian.po b/Translations/WinMerge/Bulgarian.po index fdffa9c79..b34d24cdd 100644 --- a/Translations/WinMerge/Bulgarian.po +++ b/Translations/WinMerge/Bulgarian.po @@ -48,12 +48,12 @@ msgstr "Копирай в &ляво" #: Merge.rc:6FC398B6 #, c-format msgid "Copy &from Left" -msgstr "" +msgstr "Копирай &от ляво" #: Merge.rc:8AF7E68 #, c-format msgid "Copy fro&m Right" -msgstr "" +msgstr "Копирай от д&ясно" #: Merge.rc:381D79E4 #, c-format @@ -103,7 +103,7 @@ msgstr "с &Регистрирано Приложение" #: Merge.rc:321D741E #, c-format msgid "with &External Editor\tCtrl+Alt+E" -msgstr "" +msgstr "с &външен редактор\tCtrl+Alt+E" #: Merge.rc:AC3AA12 #, c-format @@ -113,12 +113,12 @@ msgstr "&със..." #: Merge.rc:1A8FADD3 #, c-format msgid "View &Differences" -msgstr "" +msgstr "Преглед на &разликите" #: Merge.rc:71E3C8E3 #, c-format msgid "Diff &Block Size" -msgstr "" +msgstr "Размер на &блока с разлики" #: Merge.rc:67D67717 #, c-format @@ -128,17 +128,17 @@ msgstr "" #: Merge.rc:5A9A7139 #, c-format msgid "&Previous Page" -msgstr "" +msgstr "&Предишна страница" #: Merge.rc:68816EE1 #, c-format msgid "&Next Page" -msgstr "" +msgstr "&Следваща страница" #: Merge.rc:4DE14271 #, c-format msgid "&Active Pane" -msgstr "" +msgstr "&Активен панел" #: Merge.rc:43017E43 #, c-format @@ -158,17 +158,17 @@ msgstr "&Няма" #: Merge.rc:4DE14272 #, c-format msgid "&Alpha Blend" -msgstr "" +msgstr "&Прозрачност" #: Merge.rc:237A0532 #, c-format msgid "Alpha &Blend Animation" -msgstr "" +msgstr "Прозрачност на &анимацията" #: Merge.rc:5806E58F #, c-format msgid "Dragging &Mode" -msgstr "" +msgstr "Режим с влачене" #: Merge.rc:43017E45 #, c-format @@ -178,12 +178,12 @@ msgstr "&Премести" #: Merge.rc:5A9A713A #, c-format msgid "&Adjust Offset" -msgstr "" +msgstr "&Корекция на отместването" #: Merge.rc:100AAFAC #, c-format msgid "&Set Background Color" -msgstr "" +msgstr "&Настройка на фоновия цвят" #: Merge.rc:43017E46 #, c-format @@ -198,7 +198,7 @@ msgstr "&Нов\tCtrl+N" #: Merge.rc:2C8061AC #, c-format msgid "New (&3 panes)" -msgstr "" +msgstr "Нов (с &3 панела)" #: Merge.rc:1DC30E61 #, c-format @@ -227,7 +227,7 @@ msgstr "Последни проекти" #: Merge.rc:73E9B1DA #, c-format msgid "Recent F&iles Or Folders" -msgstr "" +msgstr "Последни &файлове или папки" #: Merge.rc:29D50B4A #, c-format @@ -272,7 +272,7 @@ msgstr "&Голям" #: Merge.rc:43017E49 #, c-format msgid "&Huge" -msgstr "" +msgstr "&Огромен" #: Merge.rc:27AC6D7F #, c-format @@ -307,7 +307,7 @@ msgstr "&Добавки" #: Merge.rc:4C6CFD95 #, c-format msgid "P&lugin Settings..." -msgstr "" +msgstr "Настройка на добавки" #: Merge.rc:729280D7 #, c-format @@ -387,12 +387,12 @@ msgstr "&WinMerge Помощ\tF1" #: Merge.rc:1B17601E #, c-format msgid "R&elease Notes" -msgstr "" +msgstr "Б&ележки към версиите" #: Merge.rc:6E470BE7 #, c-format msgid "&Translations" -msgstr "" +msgstr "&Преводи" #: Merge.rc:1C6125F4 #, c-format @@ -412,7 +412,7 @@ msgstr "&За WinMerge..." #: Merge.rc:68816EE2 #, c-format msgid "&Read-only" -msgstr "" +msgstr "&Само за четене" #: Merge.rc:71676C45 #, c-format @@ -422,7 +422,7 @@ msgstr "О&т ляво само за четене" #: Merge.rc:729280D8 #, c-format msgid "M&iddle Read-only" -msgstr "" +msgstr "Среден само за четене" #: Merge.rc:32BFDBA9 #, c-format @@ -432,7 +432,7 @@ msgstr "От дяс&но само за четене" #: Merge.rc:453F5DDB #, c-format msgid "File En&coding..." -msgstr "" +msgstr "&Кодироне на файла" #: Merge.rc:E44718 #, c-format @@ -457,7 +457,7 @@ msgstr "Покажи &Левите уникални неща" #: Merge.rc:28A1C3B4 #, c-format msgid "Show Midd&le Unique Items" -msgstr "" +msgstr "Покажи &Средните уникални елементи" #: Merge.rc:43600E8F #, c-format @@ -482,17 +482,17 @@ msgstr "" #: Merge.rc:200AD0D1 #, c-format msgid "Show &Left Only Different Items" -msgstr "" +msgstr "Покажи само &Левите уникални неща" #: Merge.rc:4899EBE1 #, c-format msgid "Show &Middle Only Different Items" -msgstr "" +msgstr "Покажи само &Средните уникални неща" #: Merge.rc:614F49A9 #, c-format msgid "Show &Right Only Different Items" -msgstr "" +msgstr "Покажи само &Десните разлики" #: Merge.rc:6F833C17 #, c-format @@ -502,17 +502,17 @@ msgstr "Покажи &Скритите неща" #: Merge.rc:311E1D87 #, c-format msgid "Tree &Mode" -msgstr "" +msgstr "&Дървовиден режим" #: Merge.rc:3E934D #, c-format msgid "E&xpand All Subfolders" -msgstr "" +msgstr "Разтвори всички подпапки" #: Merge.rc:4B91C2CF #, c-format msgid "&Collapse All Subfolders" -msgstr "" +msgstr "Свий всички подпапки" #: Merge.rc:E6D7EE #, c-format @@ -612,7 +612,7 @@ msgstr "&Запиши\tCtrl+S" #: Merge.rc:125AD721 #, c-format msgid "Sav&e" -msgstr "" +msgstr "Зап&ази" #: Merge.rc:751AB58E #, c-format @@ -622,7 +622,7 @@ msgstr "Запиши &лявата част" #: Merge.rc:194397DD #, c-format msgid "Save &Middle" -msgstr "" +msgstr "Запази С&редната част" #: Merge.rc:2E3BFCA2 #, c-format @@ -632,22 +632,22 @@ msgstr "Запиши &дясната част" #: Merge.rc:79321BE1 #, c-format msgid "Save &As" -msgstr "" +msgstr "Запази &като" #: Merge.rc:1BF42626 #, c-format msgid "Save &Left As..." -msgstr "" +msgstr "Запази &Левия част като" #: Merge.rc:6F833C18 #, c-format msgid "Save &Middle As..." -msgstr "" +msgstr "Запази &Средната част като..." #: Merge.rc:62909ED4 #, c-format msgid "Save &Right As..." -msgstr "" +msgstr "Запази &Дясната част като..." #: Merge.rc:4DB19837 #, c-format @@ -676,7 +676,7 @@ msgstr "Режим на сливане\tF9" #: Merge.rc:32BFDBAA #, c-format msgid "Re&load\tCtrl+F5" -msgstr "" +msgstr "Пре&зареждане\tCtrl+F5" #: Merge.rc:1A9EBDED #, c-format @@ -691,7 +691,7 @@ msgstr "" #: Merge.rc:43017E4B #, c-format msgid "&Text" -msgstr "" +msgstr "&Текст" #: Merge.rc:22956A7 #, c-format @@ -701,12 +701,12 @@ msgstr "&XML" #: Merge.rc:89AF4F8 #, c-format msgid "&Binary" -msgstr "" +msgstr "&Двоичен" #: Merge.rc:1D2E49FA #, c-format msgid "&Image" -msgstr "" +msgstr "&Изображения" #: Merge.rc:6E470BE9 #, c-format @@ -751,7 +751,7 @@ msgstr "Замес&ти...\tCtrl+H" #: Merge.rc:4B91C2D1 #, c-format msgid "&Marker...\tCtrl+Shift+M" -msgstr "" +msgstr "&Маркер...\tCtrl+Shift+M" #: Merge.rc:669F87F4 #, c-format @@ -822,37 +822,37 @@ msgstr "" #: Merge.rc:68816EE4 #, c-format msgid "&All Lines" -msgstr "" +msgstr "Всички линии" #: Merge.rc:AC3AA17 #, c-format msgid "&0 Lines" -msgstr "" +msgstr "&0 линии" #: Merge.rc:89AF4F9 #, c-format msgid "&1 Line" -msgstr "" +msgstr "&1 линия" #: Merge.rc:AC3AA18 #, c-format msgid "&3 Lines" -msgstr "" +msgstr "&3 линии" #: Merge.rc:AC3AA19 #, c-format msgid "&5 Lines" -msgstr "" +msgstr "&5 линии" #: Merge.rc:AC3AA1A #, c-format msgid "&7 Lines" -msgstr "" +msgstr "&7 линии" #: Merge.rc:AC3AA1B #, c-format msgid "&9 Lines" -msgstr "" +msgstr "&9 линии" #: Merge.rc:44B58195 #, c-format @@ -892,7 +892,7 @@ msgstr "Отрежи дългите редове" #: Merge.rc:62909ED5 #, c-format msgid "Split V&ertically" -msgstr "" +msgstr "Раздели вертикално" #: Merge.rc:70E79DFF #, c-format @@ -907,87 +907,87 @@ msgstr "Навигатор" #: Merge.rc:59B87E1C #, c-format msgid "Ne&xt Conflict\tAlt+Shift+Down" -msgstr "" +msgstr "Следващо различие\tAlt+Shift+Down" #: Merge.rc:3BDD62C2 #, c-format msgid "Pre&vious Conflict\tAlt+Shift+Up" -msgstr "" +msgstr "Предишено различие\tAlt+Shift+Up" #: Merge.rc:6D5176E5 #, c-format msgid "A&dvanced" -msgstr "" +msgstr "Р&азширено" #: Merge.rc:9DA4F24 #, c-format msgid "Next Difference Between Left and Middle\tAlt+1" -msgstr "" +msgstr "Следващо различие между Левия и Среден панел\tAlt+1" #: Merge.rc:2EBE17F8 #, c-format msgid "Previous Difference Between Left And Middle\tAlt+Shift+1" -msgstr "" +msgstr "Предишено различие между Левия и Среден панел\tAlt+Shift+1" #: Merge.rc:21599F72 #, c-format msgid "Next Difference Between Left and Right\tAlt+2" -msgstr "" +msgstr "Следващо различие между Левия и Десен панел\tAlt+2" #: Merge.rc:5416A5EC #, c-format msgid "Previous Difference Between Left And Right\tAlt+Shift+2" -msgstr "" +msgstr "Предишено различие между Левия и Десен панел\tAlt+Shift+2" #: Merge.rc:316F95AC #, c-format msgid "Next Difference Between Middle and Right\tAlt+3" -msgstr "" +msgstr "Следващо различие между Средния и Десен панел\tAlt+3" #: Merge.rc:2904E763 #, c-format msgid "Previous Difference Between Middle And Right\tAlt+Shift+3" -msgstr "" +msgstr "Предишено различие между Средния и Десен панел\tAlt+Shift+3" #: Merge.rc:4D91737D #, c-format msgid "Next Left Only Difference\tAlt+7" -msgstr "" +msgstr "Следващо различие само от Ляво\tAlt+7" #: Merge.rc:4BFD42D #, c-format msgid "Previous Left Only Difference\tAlt+Shift+7" -msgstr "" +msgstr "Предишено различие само от Ляво\tAlt+Shift+7" #: Merge.rc:2F029443 #, c-format msgid "Next Middle Only Difference\tAlt+8" -msgstr "" +msgstr "Следващо различие само в Средата\tAlt+8" #: Merge.rc:541B8710 #, c-format msgid "Previous Middle Only Difference\tAlt+Shift+8" -msgstr "" +msgstr "Предишено различие само в Средата\tAlt+Shift+8" #: Merge.rc:649CFC83 #, c-format msgid "Next Right Only Difference\tAlt+9" -msgstr "" +msgstr "Следващо различие само от Дясно\tAlt+9" #: Merge.rc:133AB1C4 #, c-format msgid "Previous Right Only Difference\tAlt+Shift+9" -msgstr "" +msgstr "Предишено различие само от Дясно\tAlt+Shift+9" #: Merge.rc:30FF7A4C #, c-format msgid "Copy from Left\tAlt+Shift+Right" -msgstr "" +msgstr "Корирай от ляво\tAlt+Shift+Right" #: Merge.rc:30FF7A4D #, c-format msgid "Copy from Right\tAlt+Shift+Left" -msgstr "" +msgstr "Корирай от дясно\tAlt+Shift+Left" #: Merge.rc:28C70E7F #, c-format @@ -1012,17 +1012,17 @@ msgstr "Копира&й всичко в ляво" #: Merge.rc:4BC6A157 #, c-format msgid "A&uto Merge\tAlt+Ctrl+M" -msgstr "" +msgstr "А&втоматично сливане\tAlt+Ctrl+M" #: Merge.rc:13D827C3 #, c-format msgid "Add &Synchronization Point\tAlt+S" -msgstr "" +msgstr "Добавяне точка за синхронизация\tAlt+S" #: Merge.rc:6F88EC67 #, c-format msgid "Clear Sync&hronization Points" -msgstr "" +msgstr "Изтриване точките за синхронизация" #: Merge.rc:68816EE5 #, c-format @@ -1037,7 +1037,7 @@ msgstr "&Скриптове" #: Merge.rc:39000D56 #, c-format msgid "Sp&lit" -msgstr "" +msgstr "Ра&здели" #: Merge.rc:4C3E0A2B #, c-format @@ -1052,32 +1052,32 @@ msgstr "" #: Merge.rc:20F0A449 #, c-format msgid "First &left item with second left item" -msgstr "" +msgstr "Първият &ляв елемент с втория ляв елемент" #: Merge.rc:2758BFC0 #, c-format msgid "First &right item with second right item" -msgstr "" +msgstr "Първи и &десен елемент с втори десен елемент" #: Merge.rc:56380EAD #, c-format msgid "&First left item with second right item" -msgstr "" +msgstr "&Първият ляв елемент с втория десен елемент" #: Merge.rc:56380EAE #, c-format msgid "&Second left item with first right item" -msgstr "" +msgstr "&Втори ляв елемент с първи десен елемент" #: Merge.rc:67A28B28 #, c-format msgid "Co&mpare As" -msgstr "" +msgstr "С&равни като" #: Merge.rc:4D4D2E92 #, c-format msgid "Left to Middle (%1 of %2)" -msgstr "" +msgstr "Ляв към Среден (%1 of %2)" #: Merge.rc:1723859F #, c-format @@ -1092,22 +1092,22 @@ msgstr "Ляв към... (%1 от %2)" #: Merge.rc:6CA26872 #, c-format msgid "Middle to Left (%1 of %2)" -msgstr "" +msgstr "Среден към Ляв (%1 of %2)" #: Merge.rc:27AAA635 #, c-format msgid "Middle to Right (%1 of %2)" -msgstr "" +msgstr "Среден към Десен (%1 of %2)" #: Merge.rc:7F2E4118 #, c-format msgid "Middle to... (%1 of %2)" -msgstr "" +msgstr "Среден към... (%1 of %2)" #: Merge.rc:2044B100 #, c-format msgid "Right to Middle (%1 of %2)" -msgstr "" +msgstr "Десен към Среден (%1 of %2)" #: Merge.rc:73E9B1DB #, c-format @@ -1132,7 +1132,7 @@ msgstr "&От ляво" #: Merge.rc:89AF4FB #, c-format msgid "&Middle" -msgstr "" +msgstr "&Среден" #: Merge.rc:1D2E49FB #, c-format @@ -1147,7 +1147,7 @@ msgstr "&Двете" #: Merge.rc:22956A8 #, c-format msgid "&All" -msgstr "" +msgstr "&Всички" #: Merge.rc:4876CD3D #, c-format @@ -1172,12 +1172,12 @@ msgstr "с &Външен Редактор" #: Merge.rc:5A9A713D #, c-format msgid "&Parent Folder" -msgstr "" +msgstr "&Родителска папка" #: Merge.rc:761E6872 #, c-format msgid "Open Midd&le" -msgstr "" +msgstr "Отвори сре&ден" #: Merge.rc:1C95A043 #, c-format @@ -1197,7 +1197,7 @@ msgstr "Ляв (%1 от %2)" #: Merge.rc:729280D9 #, c-format msgid "Middle (%1 of %2)" -msgstr "" +msgstr "Среден (%1 of %2)" #: Merge.rc:32BFDBAB #, c-format @@ -1212,7 +1212,7 @@ msgstr "Двете (%1 от %2)" #: Merge.rc:2515A6BA #, c-format msgid "All (%1 of %2)" -msgstr "" +msgstr "Всички (%1 of %2)" #: Merge.rc:6FC398B9 #, c-format @@ -1222,7 +1222,7 @@ msgstr "Копирай &файловите имена" #: Merge.rc:4BFA4345 #, c-format msgid "Copy Items To Clip&board" -msgstr "" +msgstr "Копиране елементи в клипборда" #: Merge.rc:22956A9 #, c-format @@ -1232,17 +1232,17 @@ msgstr "&Зип" #: Merge.rc:7370E045 #, c-format msgid "Both to... (%1 of %2)" -msgstr "" +msgstr "И двете... (%1 of %2)" #: Merge.rc:7CF93369 #, c-format msgid "All to... (%1 of %2)" -msgstr "" +msgstr "Всички към... (%1 of %2)" #: Merge.rc:31EF0955 #, c-format msgid "Differences to... (%1 of %2)" -msgstr "" +msgstr "Разликите към... (%1 of %2)" #: Merge.rc:AC3AA1D #, c-format @@ -1252,22 +1252,22 @@ msgstr "&Обнови" #: Merge.rc:71676C47 #, c-format msgid "Left Shell menu" -msgstr "" +msgstr "Лев Shell меню" #: Merge.rc:729280DA #, c-format msgid "Middle Shell menu" -msgstr "" +msgstr "Среден Shell меню" #: Merge.rc:32BFDBAC #, c-format msgid "Right Shell menu" -msgstr "" +msgstr "Десен Shell меню" #: Merge.rc:3CF9F84 #, c-format msgid "Copy" -msgstr "" +msgstr "Копирай" #: Merge.rc:78B3B625 #, c-format @@ -1342,7 +1342,7 @@ msgstr "Големи/малки букви" #: Merge.rc:620FF1AC #, c-format msgid "Igno&re carriage return differences (Windows/Unix/Mac)" -msgstr "" +msgstr "Игнорирайте разликите за нов ред (Windows/Unix/Mac)" #: Merge.rc:6DE6F873 #, c-format @@ -1352,7 +1352,7 @@ msgstr "&Включително подпапките" #: Merge.rc:1DC30E64 #, c-format msgid "&Compare method:" -msgstr "" +msgstr "Метод за &сравняване:" #: Merge.rc:7A4CFAFB #, c-format @@ -1367,7 +1367,7 @@ msgstr "Бърз достъп" #: Merge.rc:36B164C4 #, c-format msgid "Binary Contents" -msgstr "" +msgstr "Двоично съдържание" #: Merge.rc:2CEE4748 #, c-format @@ -1387,7 +1387,7 @@ msgstr "Размер" #: Merge.rc:1DC30E65 #, c-format msgid "&Load Project..." -msgstr "" +msgstr "Зареди проект" #: Merge.rc:2515A6BC #, c-format @@ -1417,7 +1417,7 @@ msgstr "Избери Файл или директория..." #: Merge.rc:6DE6F874 #, c-format msgid "&1st File or Folder" -msgstr "" +msgstr "&1-ви файл или папка" #: Merge.rc:39174D96 #, c-format @@ -1427,7 +1427,7 @@ msgstr "Само за четене" #: Merge.rc:56BD1FBA #, c-format msgid "Swap 1st | 2nd" -msgstr "" +msgstr "Размени 1-ви | 2-ри" #: Merge.rc:68816EE7 #, c-format @@ -1437,17 +1437,17 @@ msgstr "&Потърси..." #: Merge.rc:6DE6F875 #, c-format msgid "&2nd File or Folder" -msgstr "" +msgstr "&2-ри файл или папка" #: Merge.rc:39174D97 #, c-format msgid "Rea&d-only" -msgstr "" +msgstr "Само за &четене" #: Merge.rc:56BD1FBB #, c-format msgid "Swap 2nd | 3rd" -msgstr "" +msgstr "Размени 2-ри | 3-ти" #: Merge.rc:78E0CE0E #, c-format @@ -1457,17 +1457,17 @@ msgstr "Преглед" #: Merge.rc:3C1ECDDA #, c-format msgid "&3rd File or Folder (Optional)" -msgstr "" +msgstr "&3-ши файл или папка (незадължителен)" #: Merge.rc:39174D98 #, c-format msgid "Read-o&nly" -msgstr "" +msgstr "Са&мо за четене" #: Merge.rc:56BD1FBC #, c-format msgid "Swap 1st | 3rd" -msgstr "" +msgstr "Размени 1-ви | 3-ти" #: Merge.rc:146A5938 #, c-format @@ -1477,7 +1477,7 @@ msgstr "Потърси..." #: Merge.rc:22467E6E #, c-format msgid " Folder: Filter" -msgstr "" +msgstr " Папка: Филтър" #: Merge.rc:68816EE8 #, c-format @@ -1487,16 +1487,16 @@ msgstr "Избери..." #: Merge.rc:662470D5 #, c-format msgid " File: Unpacker Plugin" -msgstr "" +msgstr " Файл: Unpacker добавка" #: Merge.rc:751AB58F #, c-format msgid "Se&lect..." -msgstr "" +msgstr "Из&бор" #: Merge.rc:4C3E0A2D msgid "Co&mpare" -msgstr "" +msgstr "С&равни" #: Merge.rc:4E65D340 #, c-format @@ -1551,12 +1551,12 @@ msgstr "Запази времето на файла при сравняване" #: Merge.rc:17F0E759 #, c-format msgid "Show \"Select Files or Folders\" Dialog on Startup" -msgstr "" +msgstr "Покажи \"Изберете Файлове или Папки\" диалога при стартиране" #: Merge.rc:1AD99579 #, c-format msgid "Close \"Select Files or Folders\" Dialog on clicking OK button" -msgstr "" +msgstr "Затвори \"Изберете Файлове или Папки\" диалога при избор на бутон ОК" #: Merge.rc:44776ACE #, c-format @@ -1566,7 +1566,7 @@ msgstr "Отвори-диалог Авто-завършване:" #: Merge.rc:1B63306F #, c-format msgid "Language:" -msgstr "" +msgstr "Език:" #: Merge.rc:516450B #, c-format @@ -1611,12 +1611,12 @@ msgstr "До края на файла" #: Merge.rc:545FEEA2 #, c-format msgid "&Don't close this dialog box" -msgstr "" +msgstr "&Не затваряйте този диалог" #: Merge.rc:68EE6DF0 #, c-format msgid "Find &Prev" -msgstr "" +msgstr "Намери преден" #: Merge.rc:68816EE9 #, c-format @@ -1671,12 +1671,12 @@ msgstr "Зам. &всичко" #: Merge.rc:2FC0BA7B #, c-format msgid "Markers" -msgstr "" +msgstr "Маркери" #: Merge.rc:61E8009D #, c-format msgid "Enable &Markers" -msgstr "" +msgstr "Разрешаване на &маркери" #: Merge.rc:24A380 #, c-format @@ -1686,7 +1686,7 @@ msgstr "Нов" #: Merge.rc:3938FFC4 #, c-format msgid "&Background color:" -msgstr "" +msgstr "Цвят на фона:" #: Merge.rc:1D2E49FC #, c-format @@ -1766,12 +1766,12 @@ msgstr "Избрани и преместени:" #: Merge.rc:73FB246 #, c-format msgid "Same As The Next (3 panes):" -msgstr "" +msgstr "Също като следващото (3 панела)" #: Merge.rc:60B696AF #, c-format msgid "Same As The Next (Selected):" -msgstr "" +msgstr "Също като следващото (избрано)" #: Merge.rc:40C55014 #, c-format @@ -1941,12 +1941,12 @@ msgstr "Спри" #: Merge.rc:D109E01 #, c-format msgid "Pause" -msgstr "" +msgstr "Пауза" #: Merge.rc:4C3E0A2E #, c-format msgid "Continue" -msgstr "" +msgstr "Продължи" #: Merge.rc:1AC98D0A #, c-format @@ -2036,7 +2036,7 @@ msgstr "Игнорирай &Големи/малки букви" #: Merge.rc:6C318DC8 #, c-format msgid "Ignore codepage &differences" -msgstr "" +msgstr "Игнорирайте &разликите в кодовите страници" #: Merge.rc:285B56CE #, c-format @@ -2121,7 +2121,7 @@ msgstr "Ниво &дума:" #: Merge.rc:14AF463A #, c-format msgid "W&ord break characters:" -msgstr "" +msgstr "Символи за разделяне на думи" #: Merge.rc:34DF5070 #, c-format @@ -2176,17 +2176,17 @@ msgstr "&Отмени промените" #: Merge.rc:24BA673E #, c-format msgid "Middle side file" -msgstr "" +msgstr "Файл средна част" #: Merge.rc:F2F641C #, c-format msgid "Sa&ve changes" -msgstr "" +msgstr "За&пази промените" #: Merge.rc:71E3C8E4 #, c-format msgid "Disca&rd changes" -msgstr "" +msgstr "О&тмени промените" #: Merge.rc:47D4A3FB #, c-format @@ -2206,7 +2206,7 @@ msgstr "О&тмени промените" #: Merge.rc:5578260F #, c-format msgid "Disca&rd All" -msgstr "" +msgstr "От&мени всичко" #: Merge.rc:4C3E0A30 #, c-format @@ -2226,12 +2226,12 @@ msgstr "Изберете стандартна кодировка за не-Unico #: Merge.rc:5CC85DF4 #, c-format msgid "Detect codepage info for these files: .html, .rc, .xml \nneed to restart session" -msgstr "" +msgstr "Разпознаване кодовата страница за файлове: .html, .rc, .xml \nизисква се рестартиране" #: Merge.rc:3BCD5104 #, c-format msgid "Detect codepage for text files using mlang.dll\nneed to restart session" -msgstr "" +msgstr "Разпознаване кодовата страница за текстови файлове с използване на mlang.dll\nизисква се рестартиране" #: Merge.rc:E6D7F1 #, c-format @@ -2326,27 +2326,27 @@ msgstr "Удебелен" #: Merge.rc:2CEE4749 #, c-format msgid "Marker colors" -msgstr "" +msgstr "Цветове за маркерите" #: Merge.rc:56BD1FBD #, c-format msgid "Search Marker:" -msgstr "" +msgstr "Намери маркер:" #: Merge.rc:7B76381B #, c-format msgid "User Defined Marker1:" -msgstr "" +msgstr "Потребителски Маркер1:" #: Merge.rc:7B76381C #, c-format msgid "User Defined Marker2:" -msgstr "" +msgstr "Потребителски Маркер2" #: Merge.rc:7B76381D #, c-format msgid "User Defined Marker3:" -msgstr "" +msgstr "Потребителски Маркер3" #: Merge.rc:387F7980 #, c-format @@ -2471,22 +2471,22 @@ msgstr "Затвори" #: Merge.rc:2FC0BA7C #, c-format msgid "Middle:" -msgstr "" +msgstr "Среден:" #: Merge.rc:2CEE474A #, c-format msgid "Missing Left:" -msgstr "" +msgstr "Липсва Ляв:" #: Merge.rc:2A79A039 #, c-format msgid "Missing Middle:" -msgstr "" +msgstr "Липсва Среден:" #: Merge.rc:70DAA20F #, c-format msgid "Missing Right:" -msgstr "" +msgstr "Липсва Десен" #: Merge.rc:413EF3DC #, c-format @@ -2671,12 +2671,12 @@ msgstr "Не" #: Merge.rc:B612C23 #, c-format msgid "Plugins" -msgstr "" +msgstr "Добавки" #: Merge.rc:78B3B628 #, c-format msgid "&Enable plugins" -msgstr "" +msgstr "Разрешаване на добавки" #: Merge.rc:62909ED6 #, c-format @@ -2696,7 +2696,7 @@ msgstr "Позволи &допълнително меню" #: Merge.rc:4EF81631 #, c-format msgid "&Add to context menu" -msgstr "" +msgstr "Добави в контекстното меню" #: Merge.rc:26A6974B #, c-format @@ -2726,22 +2726,22 @@ msgstr "Игнорирай времевите разлики по-малки о #: Merge.rc:6D5B7719 #, c-format msgid "&Include unique subfolders contents" -msgstr "" +msgstr "&Включи съдържанието на уникални подпапки" #: Merge.rc:3E136C28 #, c-format msgid "&Automatically expand all subfolders" -msgstr "" +msgstr "&Автоматично разтвори всички подпапки" #: Merge.rc:5D032167 #, c-format msgid "Ignore &Reparse Points" -msgstr "" +msgstr "Игнориране &точки за възстановяване" #: Merge.rc:2E2C5208 #, c-format msgid "&Quick compare limit (MB):" -msgstr "" +msgstr "Лимит за бързо сравнение (MB):" #: Merge.rc:2188DD49 #, c-format @@ -2756,32 +2756,32 @@ msgstr "Двоичен" #: Merge.rc:7AAB28B8 #, c-format msgid "Binary File &Patterns:" -msgstr "" +msgstr "&Шаблони за двоични файлове:" #: Merge.rc:4F5264C9 #, c-format msgid "Frhed settings" -msgstr "" +msgstr "Настройки за Frhed" #: Merge.rc:1A8FADD4 #, c-format msgid "View &Settings..." -msgstr "" +msgstr "&Настройки преглед " #: Merge.rc:78B3B629 #, c-format msgid "&Binary Mode..." -msgstr "" +msgstr "Двоичен режим..." #: Merge.rc:1A9EBDF3 #, c-format msgid "&Character Set..." -msgstr "" +msgstr "Набор от &символи..." #: Merge.rc:B8C361 #, c-format msgid "Image" -msgstr "" +msgstr "Изображения" #: Merge.rc:2C4A6C6D #, c-format @@ -2826,17 +2826,17 @@ msgstr "" #: Merge.rc:E8950E9 #, c-format msgid "\nNew Documents (Ctrl+N)" -msgstr "" +msgstr "\nНови документи (Ctrl+N)" #: Merge.rc:28AAB7D #, c-format msgid "\nOpen (Ctrl+O)" -msgstr "" +msgstr "\nОтвори (Ctrl+O)" #: Merge.rc:28AAB7E #, c-format msgid "\nSave (Ctrl+S)" -msgstr "" +msgstr "\nЗапази (Ctrl+S)" #: Merge.rc:524AB109 #, c-format @@ -2861,7 +2861,7 @@ msgstr "Проектовия файл е записан успешно." #: Merge.rc:28AAB7F #, c-format msgid "\nUndo (Ctrl+Z)" -msgstr "" +msgstr "\nВърни (Ctrl+Z)" #: Merge.rc:28AAB80 #, c-format @@ -2955,12 +2955,12 @@ msgstr "Не питай пак този въпрос." #: Merge.rc:78ACB5DB #, c-format msgid "To make this messagebox visible again, press the Reset button on the General page of the Options dialog." -msgstr "" +msgstr "За да видите отново това съобщение, натиснете бутона Reset на страницата Общи в диалога Опции." #: Merge.rc:39000D58 #, c-format msgid "Syntax" -msgstr "" +msgstr "Синтаксис" #: Merge.rc:2C0C2241 #, c-format @@ -3005,7 +3005,7 @@ msgstr "Уникод" #: Merge.rc:295600 #, c-format msgid "X64" -msgstr "" +msgstr "X64" #: Merge.rc:761E6873 #, c-format @@ -3086,7 +3086,7 @@ msgstr "Филтри" #: Merge.rc:52D199B #, c-format msgid "[F] " -msgstr "" +msgstr "[F] " #: Merge.rc:2C0C2242 #, c-format @@ -3177,7 +3177,7 @@ msgstr "Филтърният файл вече съществува. Да се #: Merge.rc:237A126 #, c-format msgid "Regular expression" -msgstr "Чести изрази" +msgstr "Регулярни изрази" #: Merge.rc:34BD4316 #, c-format @@ -3202,7 +3202,7 @@ msgstr "Без заглавие ляв" #: Merge.rc:730B3FD4 #, c-format msgid "Untitled middle" -msgstr "" +msgstr "Без заглавие среда" #: Merge.rc:4E089EF3 #, c-format @@ -3283,27 +3283,27 @@ msgstr "Избор на директория" #: Merge.rc:3080B693 #, c-format msgid "Select two (or three) folders or two (or three) files to compare." -msgstr "" +msgstr "Изберете две (или три) папки или два (или три) файла за сравнение." #: Merge.rc:2EBBDDD6 #, c-format msgid "Left (1st) path is invalid!" -msgstr "" +msgstr "Левия (1-ви) път е невалиден!" #: Merge.rc:BA50069 #, c-format msgid "Middle (2nd) path is invalid!" -msgstr "" +msgstr "Средния (2-ри) път е невалиден!" #: Merge.rc:21DC7C32 #, c-format msgid "Right (2nd) path is invalid!" -msgstr "" +msgstr "Десния (2-ри) път е невалиден!" #: Merge.rc:21DC7C33 #, c-format msgid "Right (3rd) path is invalid!" -msgstr "" +msgstr "Десния (3-ти) път е невалиден!" #: Merge.rc:5AB9EEA7 #, c-format @@ -3313,27 +3313,27 @@ msgstr "Двата пътя са невалидни!" #: Merge.rc:585E8EC0 #, c-format msgid "Left (1st) and Middle (2nd) paths are invalid!" -msgstr "" +msgstr "Левия (1-ви) и Средния (2-ри) пътищя са невалидни!" #: Merge.rc:135DE390 #, c-format msgid "Left (1st) and Right (3rd) paths are invalid!" -msgstr "" +msgstr "Левия (1-ви) и Десния (3-ти) пътищя са невалидни!" #: Merge.rc:72716FA6 #, c-format msgid "Middle (2nd) and Right (3rd) paths are invalid!" -msgstr "" +msgstr "Средния (2-ри) и Левия (3-ти) пътищя са невалидни!" #: Merge.rc:237A0533 #, c-format msgid "All paths are invalid!" -msgstr "" +msgstr "Всички пътищя са невалидни!" #: Merge.rc:1235F930 #, c-format msgid "Only enabled for File comparisons" -msgstr "" +msgstr "Разрешено само при сравняване на файлове" #: Merge.rc:30FF7A4E #, c-format @@ -3490,7 +3490,7 @@ msgstr "Запиши левия файл като" #: Merge.rc:E4471D #, c-format msgid "Save Middle File As" -msgstr "" +msgstr "Запиши Средния файл като" #: Merge.rc:6F833C19 #, c-format @@ -3529,17 +3529,17 @@ msgstr "От дясно към ляво (%1)" #: Merge.rc:52D3F9F6 #, c-format msgid "Right to Middle (%1)" -msgstr "" +msgstr "Десен към Среден (%1)" #: Merge.rc:17F5B413 #, c-format msgid "Middle to Left (%1)" -msgstr "" +msgstr "Среден към Ляв (%1)" #: Merge.rc:66C0CE9F #, c-format msgid "Middle to Right (%1)" -msgstr "" +msgstr "Среден към Десен (%1)" #: Merge.rc:7271FF80 #, c-format @@ -3549,7 +3549,7 @@ msgstr "От ляво към дясно (%1)" #: Merge.rc:5BCDF0E7 #, c-format msgid "Left to Middle (%1)" -msgstr "" +msgstr "Ляв към Среден (%1)" #: Merge.rc:71676C48 #, c-format @@ -3559,7 +3559,7 @@ msgstr "Ляв към... (%1)" #: Merge.rc:729280DB #, c-format msgid "Middle to... (%1)" -msgstr "" +msgstr "Среден към ... (%1)" #: Merge.rc:32BFDBAD #, c-format @@ -3569,17 +3569,17 @@ msgstr "Десен към... (%1)" #: Merge.rc:36B164C5 #, c-format msgid "Both to... (%1)" -msgstr "" +msgstr "И двата към... (%1)" #: Merge.rc:2515A6BD #, c-format msgid "All to... (%1)" -msgstr "" +msgstr "Всички към... (%1)" #: Merge.rc:290D6FC6 #, c-format msgid "Differences to... (%1)" -msgstr "" +msgstr "Разликите към... (%1)" #: Merge.rc:1B633070 #, c-format @@ -3589,7 +3589,7 @@ msgstr "Ляво (%1)" #: Merge.rc:13C27215 #, c-format msgid "Middle (%1)" -msgstr "" +msgstr "Среден (%1)" #: Merge.rc:39174D9A #, c-format @@ -3604,7 +3604,7 @@ msgstr "Двете(%1)" #: Merge.rc:669F87F5 #, c-format msgid "All (%1)" -msgstr "" +msgstr "Всички (%1)" #: Merge.rc:DD21175 #, c-format @@ -3614,7 +3614,7 @@ msgstr "Лява част - изберете папка:" #: Merge.rc:2B480620 #, c-format msgid "Middle side - select destination folder:" -msgstr "" +msgstr "Средна страна - изберете папка за местоназначение" #: Merge.rc:5BBC5591 #, c-format @@ -3674,22 +3674,22 @@ msgstr "" #: Merge.rc:2019BE6E #, c-format msgid "Are you sure you want to move:" -msgstr "" +msgstr "Наистина ли искате да преместите:" #: Merge.rc:2B0F0BA4 #, c-format msgid "Are you sure you want to move %d items:" -msgstr "" +msgstr "Наистина ли искате да преместите %d елемента:" #: Merge.rc:CAEDA37 #, c-format msgid "Confirm Move" -msgstr "" +msgstr "Потвърдете преместването" #: Merge.rc:1E9E7AFF #, c-format msgid "You are about to close the window that is comparing folders. Are you sure you want to close the window?" -msgstr "" +msgstr "На път сте да затворите прозореца, в който се сравняват папки. Наистина ли искате да затворите прозореца?" #: Merge.rc:4B6299EF #, c-format @@ -3889,7 +3889,7 @@ msgstr "От дясно само: %1" #: Merge.rc:576B1A36 #, c-format msgid "Does not exist in %1" -msgstr "" +msgstr "Не съществува в %1" #: Merge.rc:6B248E76 #, c-format @@ -3909,7 +3909,7 @@ msgstr "Различни файлове" #: Merge.rc:387F7982 #, c-format msgid "Folders are different" -msgstr "" +msgstr "Папките са различни" #: Merge.rc:1B633073 #, c-format @@ -3924,22 +3924,22 @@ msgstr "Само десният" #: Merge.rc:13C27218 #, c-format msgid "Middle Only" -msgstr "" +msgstr "Само средно" #: Merge.rc:638BD42C #, c-format msgid "No item in left" -msgstr "" +msgstr "В лявата част няма елемент" #: Merge.rc:DEEB1BA #, c-format msgid "No item in right" -msgstr "" +msgstr "Няма елемент вдясно" #: Merge.rc:2FE785D7 #, c-format msgid "No item in middle" -msgstr "" +msgstr "Няма елемент в средата" #: Merge.rc:79AB21E1 #, c-format @@ -3949,27 +3949,27 @@ msgstr "Грешка" #: Merge.rc:12D66B44 #, c-format msgid "Text files are identical" -msgstr "" +msgstr "Текстовите файлове са идентични" #: Merge.rc:1DEEB161 #, c-format msgid "(Middle and right are identical)" -msgstr "" +msgstr "(Средно и дясно са идентични)" #: Merge.rc:1D99B043 #, c-format msgid "(Left and right are identical)" -msgstr "" +msgstr "(Лявото и дясното са идентични)" #: Merge.rc:159C584C #, c-format msgid "(Left and middle are identical)" -msgstr "" +msgstr "(Лявата и средната са идентични)" #: Merge.rc:12D66B45 #, c-format msgid "Text files are different" -msgstr "" +msgstr "Текстовите файлове са различни" #: Merge.rc:203BBC7B #, c-format @@ -4014,7 +4014,7 @@ msgstr "Дата на промяна на дясната страна." #: Merge.rc:68FB0CE7 #, c-format msgid "Middle side modification date." -msgstr "" +msgstr "Дата на промяна на средната част" #: Merge.rc:453F5DDC #, c-format @@ -4248,22 +4248,22 @@ msgstr "Папката съществува само в другата стра #: Merge.rc:36F211E1 #, c-format msgid "Do you want to move to the next file?" -msgstr "" +msgstr "Искате ли да преминете към следващия файл?" #: Merge.rc:6A0A36F1 #, c-format msgid "Do you want to move to the previous file?" -msgstr "" +msgstr "Искате ли да преминете към предишния файл?" #: Merge.rc:36F211E2 #, c-format msgid "Do you want to move to the next page?" -msgstr "" +msgstr "Искате ли да преминете към следващата страница?" #: Merge.rc:6A0A36F2 #, c-format msgid "Do you want to move to the previous page?" -msgstr "" +msgstr "Искате ли да преминете към предишната страница?" #: Merge.rc:4A700AB0 #, c-format @@ -4284,17 +4284,17 @@ msgstr "Загуба на информация, поради грешка в к #: Merge.rc:5851E4C9 #, c-format msgid "Information lost due to encoding errors: first file" -msgstr "" +msgstr "Информация, загубена поради грешки при кодиране: първи файл" #: Merge.rc:31EAB496 #, c-format msgid "Information lost due to encoding errors: second file" -msgstr "" +msgstr "Информация, загубена поради грешки при кодиране: втори файл" #: Merge.rc:5851E4CA #, c-format msgid "Information lost due to encoding errors: third file" -msgstr "" +msgstr "Информация, загубена поради грешки при кодиране: трети файл" #: Merge.rc:7D4E76C0 #, c-format @@ -4319,32 +4319,32 @@ msgstr "Не може да се намери низа \"%s\"" #: Merge.rc:34855CF1 #, c-format msgid "You are now entering Merge Mode. If you want to turn off Merge Mode, press F9 key" -msgstr "" +msgstr "Вече сте в режим на сливане. Ако искате да изключите режим на сливане, натиснете клавиша F9" #: Merge.rc:5E0C549 #, c-format msgid "The number of automatically merged changes: %1\nThe number of unresolved conflicts: %2" -msgstr "" +msgstr "Броят на автоматично обединени промени: %1\nБрой неразрешени конфликти: %2" #: Merge.rc:7453F857 #, c-format msgid "The change of codepage has been merged" -msgstr "" +msgstr "Промяната на кодовата страница е обединена" #: Merge.rc:162B12FA #, c-format msgid "The changes of codepage are conflicting" -msgstr "" +msgstr "Промените в кодовата страница са противоречиви" #: Merge.rc:7632E88E #, c-format msgid "The change of EOL has been merged" -msgstr "" +msgstr "Промяната на EOL е обединена" #: Merge.rc:502A2983 #, c-format msgid "The changes of EOL are conflicting" -msgstr "" +msgstr "Промените в EOL са противоречиви" #: Merge.rc:5C8E17D1 #, c-format @@ -4502,7 +4502,7 @@ msgstr "Няма" #: Merge.rc:4C72B57 #, c-format msgid "Type" -msgstr "" +msgstr "Тип" #: Merge.rc:5ED09E18 #, c-format @@ -4522,52 +4522,52 @@ msgstr "" #: Merge.rc:51A4FE5F #, c-format msgid "\nDifference in the Current Line" -msgstr "" +msgstr "\nРазлика в текущия ред" #: Merge.rc:CF15594 #, c-format msgid "\nOptions" -msgstr "" +msgstr "\nOptions" #: Merge.rc:6F90DC3A #, c-format msgid "\nRefresh (F5)" -msgstr "" +msgstr "\nОбновяване (F5)" #: Merge.rc:414AF01 #, c-format msgid "\nPrevious Difference (Alt+Up)" -msgstr "" +msgstr "\nПредишна разлика (Alt+Up)" #: Merge.rc:16618519 #, c-format msgid "\nNext Difference (Alt+Down)" -msgstr "" +msgstr "\nСледваща разлика (Alt+Down)" #: Merge.rc:7C5EF083 #, c-format msgid "\nPrevious Conflict (Alt+Shift+Up)" -msgstr "" +msgstr "\nПредишен конфликт (Alt+Shift+Up)" #: Merge.rc:51A4FE60 #, c-format msgid "\nNext Conflict (Alt+Shift+Down)" -msgstr "" +msgstr "\nСледващ конфликт (Alt+Shift+Down)" #: Merge.rc:35CF1E68 #, c-format msgid "\nFirst Difference (Alt+Home)" -msgstr "" +msgstr "\nПърва разлика (Alt+Home)" #: Merge.rc:51A4FE61 #, c-format msgid "\nCurrent Difference (Alt+Enter)" -msgstr "" +msgstr "\nТекуща разлика (Alt+Enter)" #: Merge.rc:1DA00C8A #, c-format msgid "\nLast Difference (Alt+End)" -msgstr "" +msgstr "\nПоследна разлика (Alt+End)" #: Merge.rc:E8950EA #, c-format @@ -4737,17 +4737,17 @@ msgstr "" #: Merge.rc:3D9427A9 #, c-format msgid "frhed is not installed" -msgstr "" +msgstr "frhed не е инсталиран" #: Merge.rc:73B321AA #, c-format msgid "%1 does not exist. Do you want to create it?" -msgstr "" +msgstr "%1 не съществува. Искате ли да я създадете?" #: Merge.rc:3A5D5964 #, c-format msgid "Failed to create folder." -msgstr "" +msgstr "Неуспешно създаване на папка." #: Merge.rc:64F70DD6 #, c-format -- 2.11.0 From 936be91cb330e78a823f0114fc4a45a2b0d30630 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sun, 24 Feb 2019 16:15:17 +0900 Subject: [PATCH 13/16] Update Contributors.txt --- Docs/Users/Contributors.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Docs/Users/Contributors.txt b/Docs/Users/Contributors.txt index 1d828afb0..ea064e8f3 100644 --- a/Docs/Users/Contributors.txt +++ b/Docs/Users/Contributors.txt @@ -32,6 +32,7 @@ Localization: * Bulgarian: Sld tigertron + Yanko Yankov * Catalan: Jordi Vilar -- 2.11.0 From 98317843e2450fd86ba30c035fb39eda0b8fa360 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sun, 24 Feb 2019 16:41:35 +0900 Subject: [PATCH 14/16] Use COptionsMgr instead of GetProfile*() and WriteProfile*() --- Src/7zCommon.cpp | 7 ++----- Src/ChildFrm.cpp | 6 +++--- Src/Common/RegOptionsMgr.cpp | 2 +- Src/DirDoc.cpp | 4 ++-- Src/DirFrame.cpp | 6 ++++-- Src/HexMergeDoc.cpp | 2 +- Src/HexMergeFrm.cpp | 6 +++--- Src/ImgMergeFrm.cpp | 8 ++++---- Src/MainFrm.cpp | 8 ++++---- Src/Merge.cpp | 10 +++++----- Src/MergeDoc.cpp | 2 +- Src/OpenFrm.cpp | 6 ++++-- Src/OptionsDef.h | 18 ++++++++++++++++++ Src/OptionsInit.cpp | 16 ++++++++++++++++ Src/PatchDlg.cpp | 35 +++++++++++++++++++---------------- Src/SelectUnpackerDlg.cpp | 6 ++++-- 16 files changed, 91 insertions(+), 51 deletions(-) diff --git a/Src/7zCommon.cpp b/Src/7zCommon.cpp index 5d01c8489..ccd9b6506 100644 --- a/Src/7zCommon.cpp +++ b/Src/7zCommon.cpp @@ -543,9 +543,6 @@ void DirItemEnumerator::CompressArchive(LPCTSTR path) String strPath; if (path == nullptr) { - // No path given, so prompt for path! - static const TCHAR _T_Merge7z[] = _T("Merge7z"); - static const TCHAR _T_FilterIndex[] = _T("FilterIndex"); // 7z311 can only write 7z, zip, and tar(.gz|.bz2) archives, so don't // offer other formats here! static const TCHAR _T_Filter[] @@ -584,7 +581,7 @@ void DirItemEnumerator::CompressArchive(LPCTSTR path) OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_NOREADONLYRETURN, strFilter.c_str() ); - dlg.m_ofn.nFilterIndex = AfxGetApp()->GetProfileInt(_T_Merge7z, _T_FilterIndex, 1); + dlg.m_ofn.nFilterIndex = GetOptionsMgr()->GetInt(OPT_ARCHIVE_FILTER_INDEX); // Use extension from current filter as default extension: if (int i = dlg.m_ofn.nFilterIndex) { @@ -603,7 +600,7 @@ void DirItemEnumerator::CompressArchive(LPCTSTR path) { strPath = dlg.GetPathName(); path = strPath.c_str(); - AfxGetApp()->WriteProfileInt(_T_Merge7z, _T_FilterIndex, dlg.m_ofn.nFilterIndex); + GetOptionsMgr()->SaveOption(OPT_ARCHIVE_FILTER_INDEX, static_cast(dlg.m_ofn.nFilterIndex)); } } if (path && !MultiStepCompressArchive(path)) diff --git a/Src/ChildFrm.cpp b/Src/ChildFrm.cpp index b01bc964e..395d5357d 100644 --- a/Src/ChildFrm.cpp +++ b/Src/ChildFrm.cpp @@ -267,7 +267,7 @@ void CChildFrame::ActivateFrame(int nCmdShow) CMDIChildWnd * oldActiveFrame = GetMDIFrame()->MDIGetActive(&bMaximized); if (oldActiveFrame == nullptr) // for the first frame, get the restored/maximized state from the registry - bMaximized = theApp.GetProfileInt(_T("Settings"), _T("ActiveFrameMax"), TRUE); + bMaximized = GetOptionsMgr()->GetBool(OPT_ACTIVE_FRAME_MAX); if (bMaximized) nCmdShow = SW_SHOWMAXIMIZED; else @@ -296,7 +296,7 @@ BOOL CChildFrame::DestroyWindow() WINDOWPLACEMENT wp; wp.length = sizeof(WINDOWPLACEMENT); GetWindowPlacement(&wp); - theApp.WriteProfileInt(_T("Settings"), _T("ActiveFrameMax"), (wp.showCmd == SW_MAXIMIZE)); + GetOptionsMgr()->SaveOption(OPT_ACTIVE_FRAME_MAX, (wp.showCmd == SW_MAXIMIZE)); } return CMDIChildWnd::DestroyWindow(); @@ -326,7 +326,7 @@ void CChildFrame::SavePosition() auto& splitterWnd = static_cast(m_wndSplitter.GetPane(iRow, 0))->m_wndSplitter; splitterWnd.GetActivePane(&iRow, &iCol); if (iRow >= 0 || iCol >= 0) - theApp.WriteProfileInt(_T("Settings"), _T("ActivePane"), max(iRow, iCol)); + GetOptionsMgr()->SaveOption(OPT_ACTIVE_PANE, max(iRow, iCol)); } } diff --git a/Src/Common/RegOptionsMgr.cpp b/Src/Common/RegOptionsMgr.cpp index 5b89901e6..76867aee4 100644 --- a/Src/Common/RegOptionsMgr.cpp +++ b/Src/Common/RegOptionsMgr.cpp @@ -613,7 +613,7 @@ int CRegOptionsMgr::ExportOptions(const String& filename, const bool bHexColor / int CRegOptionsMgr::ImportOptions(const String& filename) { int retVal = COption::OPT_OK; - const int BufSize = 10240; // This should be enough for a long time.. + const int BufSize = 20480; // This should be enough for a long time.. TCHAR buf[BufSize] = {0}; // Query keys - returns NUL separated strings diff --git a/Src/DirDoc.cpp b/Src/DirDoc.cpp index 27a9bd65c..d19b8016b 100644 --- a/Src/DirDoc.cpp +++ b/Src/DirDoc.cpp @@ -266,7 +266,7 @@ void CDirDoc::Rescan() pf->GetHeaderInterface()->SetPaneCount(m_nDirs); pf->GetHeaderInterface()->SetOnSetFocusCallback([&](int pane) { m_pDirView->SetActivePane(pane); - theApp.WriteProfileInt(_T("Settings"), _T("ActivePane"), pane); + GetOptionsMgr()->SaveOption(OPT_ACTIVE_PANE, pane); }); for (int nIndex = 0; nIndex < m_nDirs; nIndex++) { @@ -275,7 +275,7 @@ void CDirDoc::Rescan() pf->GetHeaderInterface()->SetActive(nIndex, false); } pf->GetHeaderInterface()->Resize(); - int nPane = theApp.GetProfileInt(_T("Settings"), _T("ActivePane"), 0); + int nPane = GetOptionsMgr()->GetInt(OPT_ACTIVE_PANE); m_pDirView->SetActivePane((nPane >= 0 && nPane < m_nDirs) ? nPane : 0); // Make sure filters are up-to-date diff --git a/Src/DirFrame.cpp b/Src/DirFrame.cpp index 53f4ba72c..005d56d71 100644 --- a/Src/DirFrame.cpp +++ b/Src/DirFrame.cpp @@ -28,6 +28,8 @@ #include "stdafx.h" #include "DirFrame.h" #include "Merge.h" +#include "OptionsDef.h" +#include "OptionsMgr.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -193,7 +195,7 @@ void CDirFrame::ActivateFrame(int nCmdShow) CMDIChildWnd * oldActiveFrame = GetMDIFrame()->MDIGetActive(&bMaximized); if (oldActiveFrame == nullptr) // for the first frame, get the restored/maximized state from the registry - bMaximized = theApp.GetProfileInt(_T("Settings"), _T("ActiveFrameMax"), TRUE); + bMaximized = GetOptionsMgr()->GetBool(OPT_ACTIVE_FRAME_MAX); if (bMaximized) nCmdShow = SW_SHOWMAXIMIZED; else @@ -254,7 +256,7 @@ BOOL CDirFrame::DestroyWindow() WINDOWPLACEMENT wp; wp.length = sizeof(WINDOWPLACEMENT); GetWindowPlacement(&wp); - theApp.WriteProfileInt(_T("Settings"), _T("ActiveFrameMax"), (wp.showCmd == SW_MAXIMIZE)); + GetOptionsMgr()->SaveOption(OPT_ACTIVE_FRAME_MAX, (wp.showCmd == SW_MAXIMIZE)); // save docking positions and sizes CDockState dockState; GetDockState(dockState); diff --git a/Src/HexMergeDoc.cpp b/Src/HexMergeDoc.cpp index eaf96d584..dfb9d758f 100644 --- a/Src/HexMergeDoc.cpp +++ b/Src/HexMergeDoc.cpp @@ -535,7 +535,7 @@ void CHexMergeDoc::MoveOnLoad(int nPane, int) { if (nPane < 0) { - nPane = theApp.GetProfileInt(_T("Settings"), _T("ActivePane"), 0); + nPane = GetOptionsMgr()->GetInt(OPT_ACTIVE_PANE); if (nPane < 0 || nPane >= m_nBuffers) nPane = 0; } diff --git a/Src/HexMergeFrm.cpp b/Src/HexMergeFrm.cpp index 1f89e5433..69502bfa3 100644 --- a/Src/HexMergeFrm.cpp +++ b/Src/HexMergeFrm.cpp @@ -196,7 +196,7 @@ BOOL CHexMergeFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/, void CHexMergeFrame::ActivateFrame(int nCmdShow) { - if (!GetMDIFrame()->MDIGetActive() && theApp.GetProfileInt(_T("Settings"), _T("ActiveFrameMax"), FALSE)) + if (!GetMDIFrame()->MDIGetActive() && GetOptionsMgr()->GetBool(OPT_ACTIVE_FRAME_MAX)) { nCmdShow = SW_SHOWMAXIMIZED; } @@ -216,7 +216,7 @@ BOOL CHexMergeFrame::DestroyWindow() WINDOWPLACEMENT wp; wp.length = sizeof(WINDOWPLACEMENT); GetWindowPlacement(&wp); - theApp.WriteProfileInt(_T("Settings"), _T("ActiveFrameMax"), (wp.showCmd == SW_MAXIMIZE)); + GetOptionsMgr()->SaveOption(OPT_ACTIVE_FRAME_MAX, (wp.showCmd == SW_MAXIMIZE)); } return CMDIChildWnd::DestroyWindow(); @@ -235,7 +235,7 @@ void CHexMergeFrame::SavePosition() CRect rc; pLeft->GetWindowRect(&rc); theApp.WriteProfileInt(_T("Settings"), _T("WLeft"), rc.Width()); - theApp.WriteProfileInt(_T("Settings"), _T("ActivePane"), GetActivePane()); + GetOptionsMgr()->SaveOption(OPT_ACTIVE_PANE, GetActivePane()); } } diff --git a/Src/ImgMergeFrm.cpp b/Src/ImgMergeFrm.cpp index 2d60249e9..d2f1c043f 100644 --- a/Src/ImgMergeFrm.cpp +++ b/Src/ImgMergeFrm.cpp @@ -218,7 +218,7 @@ bool CImgMergeFrame::OpenDocs(int nFiles, const FileLocation fileloc[], const bo return false; int nCmdShow = SW_SHOW; - if (theApp.GetProfileInt(_T("Settings"), _T("ActiveFrameMax"), FALSE)) + if (GetOptionsMgr()->GetBool(OPT_ACTIVE_FRAME_MAX)) nCmdShow = SW_SHOWMAXIMIZED; ShowWindow(nCmdShow); BringToTop(nCmdShow); @@ -235,7 +235,7 @@ void CImgMergeFrame::MoveOnLoad(int nPane, int) { if (nPane < 0) { - nPane = theApp.GetProfileInt(_T("Settings"), _T("ActivePane"), 0); + nPane = GetOptionsMgr()->GetInt(OPT_ACTIVE_PANE); if (nPane < 0 || nPane >= m_pImgMergeWindow->GetPaneCount()) nPane = 0; } @@ -564,7 +564,7 @@ BOOL CImgMergeFrame::DestroyWindow() WINDOWPLACEMENT wp; wp.length = sizeof(WINDOWPLACEMENT); GetWindowPlacement(&wp); - theApp.WriteProfileInt(_T("Settings"), _T("ActiveFrameMax"), (wp.showCmd == SW_MAXIMIZE)); + GetOptionsMgr()->SaveOption(OPT_ACTIVE_FRAME_MAX, (wp.showCmd == SW_MAXIMIZE)); } return CMDIChildWnd::DestroyWindow(); @@ -610,7 +610,7 @@ void CImgMergeFrame::SavePosition() { CRect rc; GetWindowRect(&rc); - theApp.WriteProfileInt(_T("Settings"), _T("ActivePane"), m_pImgMergeWindow->GetActivePane()); + GetOptionsMgr()->SaveOption(OPT_ACTIVE_PANE, m_pImgMergeWindow->GetActivePane()); // save the bars layout // save docking positions and sizes diff --git a/Src/MainFrm.cpp b/Src/MainFrm.cpp index 86ec1400f..2fb8bcb96 100644 --- a/Src/MainFrm.cpp +++ b/Src/MainFrm.cpp @@ -905,8 +905,8 @@ bool CMainFrame::DoFileOpen(const PathContext * pFiles /*= nullptr*/, if (pDirDoc != nullptr && !pDirDoc->CloseMergeDocs()) return false; - FileTransform::g_UnpackerMode = static_cast(theApp.GetProfileInt(_T("Settings"), _T("UnpackerMode"), PLUGIN_MANUAL)); - FileTransform::g_PredifferMode = static_cast(theApp.GetProfileInt(_T("Settings"), _T("PredifferMode"), PLUGIN_MANUAL)); + FileTransform::g_UnpackerMode = static_cast(GetOptionsMgr()->GetInt(OPT_PLUGINS_UNPACKER_MODE)); + FileTransform::g_PredifferMode = static_cast(GetOptionsMgr()->GetInt(OPT_PLUGINS_PREDIFFER_MODE)); Merge7zFormatMergePluginScope scope(infoUnpacker); @@ -1394,7 +1394,7 @@ void CMainFrame::OnPluginUnpackMode(UINT nID ) FileTransform::g_UnpackerMode = PLUGIN_AUTO; break; } - theApp.WriteProfileInt(_T("Settings"), _T("UnpackerMode"), FileTransform::g_UnpackerMode); + GetOptionsMgr()->SaveOption(OPT_PLUGINS_UNPACKER_MODE, FileTransform::g_UnpackerMode); } void CMainFrame::OnUpdatePluginUnpackMode(CCmdUI* pCmdUI) @@ -1422,7 +1422,7 @@ void CMainFrame::OnPluginPrediffMode(UINT nID ) pMergeDoc->SetPrediffer(&infoPrediffer); for (auto pDirDoc : GetAllDirDocs()) pDirDoc->GetPluginManager().SetPrediffSettingAll(FileTransform::g_PredifferMode); - theApp.WriteProfileInt(_T("Settings"), _T("PredifferMode"), FileTransform::g_PredifferMode); + GetOptionsMgr()->SaveOption(OPT_PLUGINS_PREDIFFER_MODE, FileTransform::g_PredifferMode); } void CMainFrame::OnUpdatePluginPrediffMode(CCmdUI* pCmdUI) diff --git a/Src/Merge.cpp b/Src/Merge.cpp index 1b5b71328..dbd44f937 100644 --- a/Src/Merge.cpp +++ b/Src/Merge.cpp @@ -282,8 +282,8 @@ BOOL CMergeApp::InitInstance() charsets_init(); UpdateCodepageModule(); - FileTransform::g_UnpackerMode = static_cast(theApp.GetProfileInt(_T("Settings"), _T("UnpackerMode"), PLUGIN_MANUAL)); - FileTransform::g_PredifferMode = static_cast(theApp.GetProfileInt(_T("Settings"), _T("PredifferMode"), PLUGIN_MANUAL)); + FileTransform::g_UnpackerMode = static_cast(GetOptionsMgr()->GetInt(OPT_PLUGINS_UNPACKER_MODE)); + FileTransform::g_PredifferMode = static_cast(GetOptionsMgr()->GetInt(OPT_PLUGINS_PREDIFFER_MODE)); NONCLIENTMETRICS ncm = { sizeof NONCLIENTMETRICS }; if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof NONCLIENTMETRICS, &ncm, 0)) @@ -561,11 +561,11 @@ BOOL CMergeApp::OnIdle(LONG lCount) */ void CMergeApp::InitializeFileFilters() { - CString filterPath = GetProfileString(_T("Settings"), _T("UserFilterPath"), _T("")); + String filterPath = GetOptionsMgr()->GetString(OPT_FILTER_USERPATH); - if (!filterPath.IsEmpty()) + if (!filterPath.empty()) { - m_pGlobalFileFilter->SetUserFilterPath((LPCTSTR)filterPath); + m_pGlobalFileFilter->SetUserFilterPath(filterPath); } m_pGlobalFileFilter->LoadAllFileFilters(); } diff --git a/Src/MergeDoc.cpp b/Src/MergeDoc.cpp index 42cb916b0..61dbaeb69 100644 --- a/Src/MergeDoc.cpp +++ b/Src/MergeDoc.cpp @@ -2854,7 +2854,7 @@ void CMergeDoc::MoveOnLoad(int nPane, int nLineIndex) { if (nPane < 0) { - nPane = theApp.GetProfileInt(_T("Settings"), _T("ActivePane"), 0); + nPane = GetOptionsMgr()->GetInt(OPT_ACTIVE_PANE); if (nPane < 0 || nPane >= m_nBuffers) nPane = 0; } diff --git a/Src/OpenFrm.cpp b/Src/OpenFrm.cpp index 1d445853d..f171e6230 100644 --- a/Src/OpenFrm.cpp +++ b/Src/OpenFrm.cpp @@ -2,6 +2,8 @@ // #include "stdafx.h" #include "OpenFrm.h" +#include "OptionsDef.h" +#include "OptionsMgr.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -98,7 +100,7 @@ void COpenFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI) void COpenFrame::ActivateFrame(int nCmdShow) { - if (!GetMDIFrame()->MDIGetActive() && AfxGetApp()->GetProfileInt(_T("Settings"), _T("ActiveFrameMax"), TRUE)) + if (!GetMDIFrame()->MDIGetActive() && GetOptionsMgr()->GetBool(OPT_ACTIVE_FRAME_MAX)) { nCmdShow = SW_SHOWMAXIMIZED; } @@ -137,7 +139,7 @@ BOOL COpenFrame::DestroyWindow() WINDOWPLACEMENT wp; wp.length = sizeof(WINDOWPLACEMENT); GetWindowPlacement(&wp); - AfxGetApp()->WriteProfileInt(_T("Settings"), _T("ActiveFrameMax"), (wp.showCmd == SW_MAXIMIZE)); + GetOptionsMgr()->SaveOption(OPT_ACTIVE_FRAME_MAX, (wp.showCmd == SW_MAXIMIZE)); } return CMDIChildWnd::DestroyWindow(); diff --git a/Src/OptionsDef.h b/Src/OptionsDef.h index e89defb75..950c695d5 100644 --- a/Src/OptionsDef.h +++ b/Src/OptionsDef.h @@ -58,6 +58,10 @@ extern const String OPT_DIRVIEW_SORT_COLUMN3 OP("Settings/DirViewSortCol3"); extern const String OPT_DIRVIEW_SORT_ASCENDING OP("Settings/DirViewSortAscending"); extern const String OPT_DIRVIEW_EXPAND_SUBDIRS OP("Settings/DirViewExpandSubdirs"); +// Window/Pane +extern const String OPT_ACTIVE_FRAME_MAX OP("Settings/ActiveFrameMax"); +extern const String OPT_ACTIVE_PANE OP("Settings/ActivePane"); + // Folder Compare Report extern const String OPT_REPORTFILES_REPORTTYPE OP("ReportFiles/ReportType"); extern const String OPT_REPORTFILES_COPYTOCLIPBOARD OP("ReportFiles/CopyToClipboard"); @@ -196,10 +200,24 @@ extern const String OPT_FILEFILTER_SHARED OP("Settings/Filters/Shared"); // Archive support extern const String OPT_ARCHIVE_ENABLE OP("Merge7z/Enable"); extern const String OPT_ARCHIVE_PROBETYPE OP("Merge7z/ProbeSignature"); +extern const String OPT_ARCHIVE_FILTER_INDEX OP("Merge7z/FilterIndex"); + +// Patch Creator +extern const String OPT_PATCHCREATOR_PATCH_STYLE OP("PatchCreator/PatchStyle"); +extern const String OPT_PATCHCREATOR_CONTEXT_LINES OP("PatchCreator/ContextLines"); +extern const String OPT_PATCHCREATOR_CASE_SENSITIVE OP("PatchCreator/CaseSensitive"); +extern const String OPT_PATCHCREATOR_EOL_SENSITIVE OP("PatchCreator/EOLSensitive"); +extern const String OPT_PATCHCREATOR_IGNORE_BLANK_LINES OP("PatchCreator/IgnoreBlankLines"); +extern const String OPT_PATCHCREATOR_WHITESPACE OP("PatchCreator/Whitespace"); +extern const String OPT_PATCHCREATOR_OPEN_TO_EDITOR OP("PatchCreator/OpenToEditor"); +extern const String OPT_PATCHCREATOR_INCLUDE_CMD_LINE OP("PatchCreator/IncludeCmdLine"); // Plugins extern const String OPT_PLUGINS_ENABLED OP("Settings/PluginsEnabled"); extern const String OPT_PLUGINS_DISABLED_LIST OP("Settings/PluginsDisabledList"); +extern const String OPT_PLUGINS_UNPACKER_MODE OP("Settings/UnpackerMode"); +extern const String OPT_PLUGINS_PREDIFFER_MODE OP("Settings/PredifferMode"); +extern const String OPT_PLUGINS_UNPACK_DONT_CHECK_EXTENSION OP("Plugins/UnpackDontCheckExtension"); // Startup options extern const String OPT_SHOW_SELECT_FILES_AT_STARTUP OP("Settings/ShowFileDialog"); diff --git a/Src/OptionsInit.cpp b/Src/OptionsInit.cpp index 33102753e..952ca5a1a 100644 --- a/Src/OptionsInit.cpp +++ b/Src/OptionsInit.cpp @@ -14,6 +14,7 @@ #include "DiffWrapper.h" // CMP_CONTENT #include "paths.h" #include "Environment.h" +#include "FileTransform.h" #include "Constants.h" // Functions to copy values set by installer from HKLM to HKCU. @@ -172,11 +173,26 @@ void Init(COptionsMgr *pOptions) pOptions->InitOption(OPT_ARCHIVE_ENABLE, 1); // Enable by default pOptions->InitOption(OPT_ARCHIVE_PROBETYPE, false); + pOptions->InitOption(OPT_ARCHIVE_FILTER_INDEX, 1); pOptions->InitOption(OPT_PLUGINS_ENABLED, true); pOptions->InitOption(OPT_PLUGINS_DISABLED_LIST, _T("")); + pOptions->InitOption(OPT_PLUGINS_UNPACKER_MODE, PLUGIN_MANUAL); + pOptions->InitOption(OPT_PLUGINS_PREDIFFER_MODE, PLUGIN_MANUAL); + pOptions->InitOption(OPT_PLUGINS_UNPACK_DONT_CHECK_EXTENSION, false); + + pOptions->InitOption(OPT_PATCHCREATOR_PATCH_STYLE, 0); + pOptions->InitOption(OPT_PATCHCREATOR_CONTEXT_LINES, 0); + pOptions->InitOption(OPT_PATCHCREATOR_CASE_SENSITIVE, true); + pOptions->InitOption(OPT_PATCHCREATOR_EOL_SENSITIVE, true); + pOptions->InitOption(OPT_PATCHCREATOR_IGNORE_BLANK_LINES, false); + pOptions->InitOption(OPT_PATCHCREATOR_WHITESPACE, WHITESPACE_COMPARE_ALL); + pOptions->InitOption(OPT_PATCHCREATOR_OPEN_TO_EDITOR, false); + pOptions->InitOption(OPT_PATCHCREATOR_INCLUDE_CMD_LINE, false); pOptions->InitOption(OPT_TABBAR_AUTO_MAXWIDTH, true); + pOptions->InitOption(OPT_ACTIVE_FRAME_MAX, true); + pOptions->InitOption(OPT_ACTIVE_PANE, 0); pOptions->InitOption(OPT_MRU_MAX, 9); diff --git a/Src/PatchDlg.cpp b/Src/PatchDlg.cpp index 74d7968eb..210b9ba54 100644 --- a/Src/PatchDlg.cpp +++ b/Src/PatchDlg.cpp @@ -28,6 +28,8 @@ #include "CompareOptions.h" #include "FileOrFolderSelect.h" #include "Environment.h" +#include "OptionsDef.h" +#include "OptionsMgr.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -415,28 +417,28 @@ void CPatchDlg::UpdateSettings() */ void CPatchDlg::LoadSettings() { - int patchStyle = AfxGetApp()->GetProfileInt(_T("PatchCreator"), _T("PatchStyle"), 0); + int patchStyle = GetOptionsMgr()->GetInt(OPT_PATCHCREATOR_PATCH_STYLE); if ((patchStyle < DIFF_OUTPUT_NORMAL || patchStyle > DIFF_OUTPUT_UNIFIED) && patchStyle != DIFF_OUTPUT_HTML) patchStyle = DIFF_OUTPUT_NORMAL; m_outputStyle = (enum output_style) patchStyle; - m_contextLines = AfxGetApp()->GetProfileInt(_T("PatchCreator"), _T("ContextLines"), 0); + m_contextLines = GetOptionsMgr()->GetInt(OPT_PATCHCREATOR_CONTEXT_LINES); if (m_contextLines < 0 || m_contextLines > 50) m_contextLines = 0; - m_caseSensitive = !!AfxGetApp()->GetProfileInt(_T("PatchCreator"), _T("CaseSensitive"), true); - m_ignoreEOLDifference = !!AfxGetApp()->GetProfileInt(_T("PatchCreator"), _T("EOLSensitive"), true); - m_ignoreBlanks = !!AfxGetApp()->GetProfileInt(_T("PatchCreator"), _T("IgnoreBlankLines"), false); + m_caseSensitive = GetOptionsMgr()->GetBool(OPT_PATCHCREATOR_CASE_SENSITIVE); + m_ignoreEOLDifference = GetOptionsMgr()->GetBool(OPT_PATCHCREATOR_EOL_SENSITIVE); + m_ignoreBlanks = GetOptionsMgr()->GetBool(OPT_PATCHCREATOR_IGNORE_BLANK_LINES); - m_whitespaceCompare = AfxGetApp()->GetProfileInt(_T("PatchCreator"), _T("Whitespace"), WHITESPACE_COMPARE_ALL); + m_whitespaceCompare = GetOptionsMgr()->GetInt(OPT_PATCHCREATOR_WHITESPACE); if (m_whitespaceCompare < WHITESPACE_COMPARE_ALL || m_whitespaceCompare > WHITESPACE_IGNORE_ALL) { m_whitespaceCompare = WHITESPACE_COMPARE_ALL; } - m_openToEditor = !!AfxGetApp()->GetProfileInt(_T("PatchCreator"), _T("OpenToEditor"), false); - m_includeCmdLine = !!AfxGetApp()->GetProfileInt(_T("PatchCreator"), _T("IncludeCmdLine"), false); + m_openToEditor = GetOptionsMgr()->GetBool(OPT_PATCHCREATOR_OPEN_TO_EDITOR); + m_includeCmdLine = GetOptionsMgr()->GetBool(OPT_PATCHCREATOR_INCLUDE_CMD_LINE); UpdateSettings(); } @@ -446,14 +448,15 @@ void CPatchDlg::LoadSettings() */ void CPatchDlg::SaveSettings() { - AfxGetApp()->WriteProfileInt(_T("PatchCreator"), _T("PatchStyle"), m_outputStyle); - AfxGetApp()->WriteProfileInt(_T("PatchCreator"), _T("ContextLines"), m_contextLines); - AfxGetApp()->WriteProfileInt(_T("PatchCreator"), _T("CaseSensitive"), m_caseSensitive); - AfxGetApp()->WriteProfileInt(_T("PatchCreator"), _T("EOLSensitive"), m_ignoreEOLDifference); - AfxGetApp()->WriteProfileInt(_T("PatchCreator"), _T("IgnoreBlankLines"), m_ignoreBlanks); - AfxGetApp()->WriteProfileInt(_T("PatchCreator"), _T("Whitespace"), m_whitespaceCompare); - AfxGetApp()->WriteProfileInt(_T("PatchCreator"), _T("OpenToEditor"), m_openToEditor); - AfxGetApp()->WriteProfileInt(_T("PatchCreator"), _T("IncludeCmdLine"), m_includeCmdLine); + COptionsMgr *pOptions = GetOptionsMgr(); + pOptions->SaveOption(OPT_PATCHCREATOR_PATCH_STYLE, m_outputStyle); + pOptions->SaveOption(OPT_PATCHCREATOR_CONTEXT_LINES, m_contextLines); + pOptions->SaveOption(OPT_PATCHCREATOR_CASE_SENSITIVE, m_caseSensitive); + pOptions->SaveOption(OPT_PATCHCREATOR_EOL_SENSITIVE, m_ignoreEOLDifference); + pOptions->SaveOption(OPT_PATCHCREATOR_IGNORE_BLANK_LINES, m_ignoreBlanks); + pOptions->SaveOption(OPT_PATCHCREATOR_WHITESPACE, m_whitespaceCompare); + pOptions->SaveOption(OPT_PATCHCREATOR_OPEN_TO_EDITOR, m_openToEditor); + pOptions->SaveOption(OPT_PATCHCREATOR_INCLUDE_CMD_LINE, m_includeCmdLine); } /** diff --git a/Src/SelectUnpackerDlg.cpp b/Src/SelectUnpackerDlg.cpp index 8d5d87b91..0b8dd71e4 100644 --- a/Src/SelectUnpackerDlg.cpp +++ b/Src/SelectUnpackerDlg.cpp @@ -28,6 +28,8 @@ #include "SelectUnpackerDlg.h" #include "Plugins.h" #include "FileTransform.h" +#include "OptionsMgr.h" +#include "OptionsDef.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -194,7 +196,7 @@ END_MESSAGE_MAP() void CSelectUnpackerDlg::OnOK() { - AfxGetApp()->WriteProfileInt(_T("Plugins"), _T("UnpackDontCheckExtension"), m_bNoExtensionCheck); + GetOptionsMgr()->SaveOption(OPT_PLUGINS_UNPACK_DONT_CHECK_EXTENSION, m_bNoExtensionCheck); CTrDialog::OnOK(); } @@ -203,7 +205,7 @@ BOOL CSelectUnpackerDlg::OnInitDialog() { CTrDialog::OnInitDialog(); - m_bNoExtensionCheck = !!AfxGetApp()->GetProfileInt(_T("Plugins"), _T("UnpackDontCheckExtension"), false); + m_bNoExtensionCheck = GetOptionsMgr()->GetBool(OPT_PLUGINS_UNPACK_DONT_CHECK_EXTENSION); prepareListbox(); -- 2.11.0 From 85a6f34cea88c31ae2c7a07a09227b39594fd9c3 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sun, 24 Feb 2019 19:49:03 +0900 Subject: [PATCH 15/16] Reduce unnecessary drawing --- Src/ChildFrm.cpp | 18 +++++++++--------- Src/ImgMergeFrm.cpp | 8 +++++--- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Src/ChildFrm.cpp b/Src/ChildFrm.cpp index 395d5357d..c0ffcbcdb 100644 --- a/Src/ChildFrm.cpp +++ b/Src/ChildFrm.cpp @@ -258,6 +258,15 @@ bool CChildFrame::EnsureValidDockState(CDockState& state) void CChildFrame::ActivateFrame(int nCmdShow) { + // load docking positions and sizes + CDockState pDockState; + pDockState.LoadState(_T("Settings")); + if (EnsureValidDockState(pDockState)) // checks for valid so won't ASSERT + SetDockState(pDockState); + // for the dimensions of the diff and location pane, use the CSizingControlBar loader + m_wndLocationBar.LoadState(_T("Settings")); + m_wndDetailBar.LoadState(_T("Settings")); + if (!m_bActivated) { m_bActivated = true; @@ -275,15 +284,6 @@ void CChildFrame::ActivateFrame(int nCmdShow) } CMDIChildWnd::ActivateFrame(nCmdShow); - - // load docking positions and sizes - CDockState pDockState; - pDockState.LoadState(_T("Settings")); - if (EnsureValidDockState(pDockState)) // checks for valid so won't ASSERT - SetDockState(pDockState); - // for the dimensions of the diff and location pane, use the CSizingControlBar loader - m_wndLocationBar.LoadState(_T("Settings")); - m_wndDetailBar.LoadState(_T("Settings")); } BOOL CChildFrame::DestroyWindow() diff --git a/Src/ImgMergeFrm.cpp b/Src/ImgMergeFrm.cpp index d2f1c043f..096c9f383 100644 --- a/Src/ImgMergeFrm.cpp +++ b/Src/ImgMergeFrm.cpp @@ -623,11 +623,8 @@ void CImgMergeFrame::SavePosition() void CImgMergeFrame::OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd) { - CMDIChildWnd::OnMDIActivate(bActivate, pActivateWnd, pDeactivateWnd); if (bActivate) { - GetMainFrame()->PostMessage(WM_USER + 1); - CDockState pDockState; pDockState.LoadState(_T("Settings-ImgMergeFrame")); if (EnsureValidDockState(pDockState)) // checks for valid so won't ASSERT @@ -635,6 +632,11 @@ void CImgMergeFrame::OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDe // for the dimensions of the diff and location pane, use the CSizingControlBar loader m_wndLocationBar.LoadState(_T("Settings-ImgMergeFrame")); } + CMDIChildWnd::OnMDIActivate(bActivate, pActivateWnd, pDeactivateWnd); + if (bActivate) + { + GetMainFrame()->PostMessage(WM_USER + 1); + } } void CImgMergeFrame::OnClose() -- 2.11.0 From fb9c6e3344fbbe83fbb8f460442998589d81214b Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sun, 24 Feb 2019 23:09:54 +0900 Subject: [PATCH 16/16] Update release notes and changelog for 2.16.1 --- Docs/Users/ChangeLog.txt | 66 +++++++++++++++++++++++++++++++ Docs/Users/ReleaseNotes.html | 92 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 153 insertions(+), 5 deletions(-) diff --git a/Docs/Users/ChangeLog.txt b/Docs/Users/ChangeLog.txt index 446c9a7e9..6d60797a1 100644 --- a/Docs/Users/ChangeLog.txt +++ b/Docs/Users/ChangeLog.txt @@ -1,3 +1,69 @@ +WinMerge 2.16.1 + General: + - Updated the copyright year to 2019, actually (GitHub #110) + - Prevent splitter view from claiming input focus (GitHub #127) + - Contributors.txt: Changed EOL from Unix (LF) to Windows (CR LF), + because not shows correctly in Windows Notepad. (Bitbucket PR #17) + Open dialog: + - Alternatively to Swap buttons, allow drag & drop between filetype + icons (GitHub #118) + - Expose cleaner moving/resizing behavior esp. in non-maximized + state (GitHub #119) + - Avoid retaining bogus filetype icons from previous selections (GitHub #122) + File compare: + - Bugfix: Extra blank displayed after left/right single/double + quotes (Bitbucket #134) + - Bugfix: Click doesn't trigger document to scroll in Location pane under + circumstance (Bitbucket #140) + - Bugfix: Frustrating text selection bug (GitHub #109) + - Bugfix: Left and Right files swap after losing focus + v2.16.0.0 (sf.net #2213) + - Bugfix: WinMerge 2.16.0.0 Unicoe X64 version displaying + Microsoft Visual C++ Runtime Library Asset in DiffWraper.CPP + line 984 (sf.net #2214) + - Bugfix: Cancelation of selection range with reverse indent (sf.net #2215) + - Bugfix: upward and downward search not work correctly + - Bugifx: Fix menu accelerator conflict + - Add File/Recompare As/Image menu item + - Add support for merging word level diffs in selection + Demo: https://i.gyazo.com/af18960bd1f121213a2cd9287cae9cf4.gif + Folder compare: + - Bugfix: Unique files are not shown (Bitbucket #138) + - Bugfix: Improve Hard-IO error handling, other bug fixes, cleanup, + tweaks (GitHub #120) + Archive Support: + - Upgraded to 7-zip 18.06 (Bitbucket #119) + Options dialog: + - Bugfix: Widen the width of labels in Options dialog (GitHub#108) + - Bugfix: view settings make winmerge crash (Bitbucket #109) + - Bugfix: 64bit version can't browse between option pages (Bitbucket #128) + - Bugfix: Shell Integration "Enable Advanced Menu" disabled on new + install (Bitbucket #137) + - Bugfix: Binary File options don't change from default (Bitbucket #135) + Shell extension: + - Bugfix: CreateTranslatedRcFiles needs an update (GitHub #113) + Translations: + - Update Brazilian Portuguese translation (GitHub #108) + - Update Swedish translation (sf.net #3035, GitHub #112, #114) + - Update Lithuanian translation (Bitbucket PR #7, #8, #27) + - Update Russian translation (Bitbucket PR #9-#26, #139) + - Update Bulgarian translation (Bitbucket PR #28) + - Update Turkish translation (sf.net #3036) + - Update Japanese translation + - Remove now unneeded MergeLang.dll + Manual: + - Bugfix: Some fixes in the manual (GitHub #116) + - Bugifx: end of line documentation (sf.net #2211) + - Clarification as per + https://github.com/WinMerge/winmerge-v2/issues/41 (GitHub #126) + Internals: + - Remove `nFinalNullLines` checking, disabled by an earlier + commit (GitHub #111) + - Various minor updates, plus preparation for VS2019 (GitHub #115) + - DiffTextBuffer: Create Unicode temp files (makes EscapeControlChars() + obsolete) (GitHub #123) + - Don't pass `DIFFITEM *` by casting to `uintptr_t` (GitHub #124, #125) + WinMerge 2.16.0 General: - Bugfix: Disabled icon on toolbar not gray out when running on XP diff --git a/Docs/Users/ReleaseNotes.html b/Docs/Users/ReleaseNotes.html index f30fbbdaa..1a4d1cbd8 100644 --- a/Docs/Users/ReleaseNotes.html +++ b/Docs/Users/ReleaseNotes.html @@ -49,25 +49,107 @@ -

WinMerge 2.16.0 Release Notes

+

WinMerge 2.16.1 Release Notes

-

November 2018

+

February 2019

About This Release

-This is a WinMerge 2.16 stable release. This release replaces earlier WinMerge -stable releases as a recommended release. +This is a WinMerge beta release which is meant for preview the current state of +WinMerge development. This release is not recommended for the production.

Please submit bug reports to our bug-tracker.

+

What Is New in 2.16.1 beta?

+ +

General

+
    +
  • Updated the copyright year to 2019, actually (GitHub #110)
  • +
  • Prevent splitter view from claiming input focus (GitHub #127)
  • +
  • Contributors.txt: Changed EOL from Unix (LF) to Windows (CR LF), because not shows correctly in Windows Notepad. (Bitbucket PR #17)
  • +
+ +

Open dialog

+
    +
  • Alternatively to Swap buttons, allow drag & drop between filetype icons (GitHub #118)
  • +
  • Expose cleaner moving/resizing behavior esp. in non-maximized state (GitHub #119)
  • +
  • Avoid retaining bogus filetype icons from previous selections (GitHub #122)
  • +
+ +

File compare

+
    +
  • Bugfix: Extra blank displayed after left/right single/double quotes (Bitbucket #134)
  • +
  • Bugfix: Click doesn't trigger document to scroll in Location pane under circumstance (Bitbucket #140)
  • +
  • Bugfix: Frustrating text selection bug (GitHub #109)
  • +
  • Bugfix: Left and Right files swap after losing focus v2.16.0.0 (sf.net #2213)
  • +
  • Bugfix: WinMerge 2.16.0.0 Unicoe X64 version displaying Microsoft Visual C++ Runtime Library Asset in DiffWraper.CPP line 984 (sf.net #2214)
  • +
  • Bugfix: Cancelation of selection range with reverse indent (sf.net #2215)
  • +
  • Bugfix: upward and downward search not work correctly
  • +
  • Bugifx: Fix menu accelerator conflict
  • +
  • Add File/Recompare As/Image menu item
  • +
  • Add support for merging word level diffs in selection Demo
  • +
+ +

Folder compare

+
    +
  • Bugfix: Unique files are not shown (Bitbucket #138)
  • +
  • Bugfix: Improve Hard-IO error handling, other bug fixes, cleanup, tweaks (GitHub #120)
  • +
+ +

Archive Support

+
    +
  • Upgraded to 7-zip 18.06 (Bitbucket #119)
  • +
+ +

Options dialog

+
    +
  • Bugfix: Widen the width of labels in Options dialog (GitHub#108)
  • +
  • Bugfix: view settings make winmerge crash (Bitbucket #109)
  • +
  • Bugfix: 64bit version can't browse between option pages (Bitbucket #128)
  • +
  • Bugfix: Shell Integration "Enable Advanced Menu" disabled on new install (Bitbucket #137)
  • +
  • Bugfix: Binary File options don't change from default (Bitbucket #135)
  • +
+ +

Shell extension

+
    +
  • Bugfix: CreateTranslatedRcFiles needs an update (GitHub #113)
  • +
+ +

Translations

+
    +
  • Update Brazilian Portuguese translation (GitHub #108)
  • +
  • Update Swedish translation (sf.net #3035, GitHub #112, #114)
  • +
  • Update Lithuanian translation (Bitbucket PR #7, #8, #27)
  • +
  • Update Russian translation (Bitbucket PR #9-#26, #139)
  • +
  • Update Bulgarian translation (Bitbucket PR #28)
  • +
  • Update Turkish translation (sf.net #3036)
  • +
  • Update Japanese translation
  • +
  • Remove now unneeded MergeLang.dll
  • +
+ +

Manual

+
    +
  • Bugfix: Some fixes in the manual (GitHub #116)
  • +
  • Bugifx: end of line documentation (sf.net #2211)
  • +
  • Clarification as per https://github.com/WinMerge/winmerge-v2/issues/41 (GitHub #126)
  • +
+ +

Internals

+
    +
  • Remove `nFinalNullLines` checking, disabled by an earlier commit (GitHub #111)
  • +
  • Various minor updates, plus preparation for VS2019 (GitHub #115)
  • +
  • DiffTextBuffer: Create Unicode temp files (makes EscapeControlChars() obsolete) (GitHub #123)
  • +
  • Don't pass `DIFFITEM *` by casting to `uintptr_t` (GitHub #124, #125)
  • +
+

What Is New in 2.16.0?

General

-- 2.11.0