From d774dc68ff15891ab97b22dd116959f2fd55af93 Mon Sep 17 00:00:00 2001 From: ozone10 Date: Mon, 20 Feb 2023 00:14:10 +0100 Subject: [PATCH] Restore prev value if tab size is 0 on focus lost --- .../WinControls/Preference/preferenceDlg.cpp | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp index d75c8cc21dab..81d528281b0c 100644 --- a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp +++ b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp @@ -3038,6 +3038,43 @@ intptr_t CALLBACK LanguageSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA break; } } + break; + } + + case EN_KILLFOCUS: + { + switch (LOWORD(wParam)) + { + case IDC_EDIT_TABSIZEVAL: + { + const auto tabSize = ::GetDlgItemInt(_hSelf, IDC_EDIT_TABSIZEVAL, nullptr, FALSE); + + if (tabSize < 1) + { + const bool useDefaultTab = isCheckedOrNot(IDC_CHECK_DEFAULTTABVALUE); + const size_t index = ::SendDlgItemMessage(_hSelf, IDC_LIST_TABSETTNG, LB_GETCURSEL, 0, 0); + auto prevSize = nppGUI._tabSize; + if (!useDefaultTab && index > 0) + { + Lang* lang = nppParam.getLangFromIndex(index - 1); + if (lang != nullptr && lang->_tabSize > 0) + { + prevSize = lang->_tabSize; + } + } + + ::SetDlgItemInt(_hSelf, IDC_EDIT_TABSIZEVAL, prevSize, FALSE); + return TRUE; + } + return FALSE; + } + + default: + { + break; + } + } + break; } default: