diff --git a/PowerEditor/installer/nativeLang/english.xml b/PowerEditor/installer/nativeLang/english.xml
index 5048d71a7..66f1a0d8e 100644
--- a/PowerEditor/installer/nativeLang/english.xml
+++ b/PowerEditor/installer/nativeLang/english.xml
@@ -1052,11 +1052,11 @@ Translation note:
-
+
+
+
-
@@ -1785,6 +1785,7 @@ Click on "?" button on right to open website with User Manual."/>
+
diff --git a/PowerEditor/installer/nativeLang/english_customizable.xml b/PowerEditor/installer/nativeLang/english_customizable.xml
index a19a69f79..2b34cef03 100644
--- a/PowerEditor/installer/nativeLang/english_customizable.xml
+++ b/PowerEditor/installer/nativeLang/english_customizable.xml
@@ -1052,11 +1052,11 @@ Translation note:
-
+
+
+
-
@@ -1779,6 +1779,7 @@ Click on "?" button on right to open website with User Manual."/>
+
diff --git a/PowerEditor/installer/nativeLang/french.xml b/PowerEditor/installer/nativeLang/french.xml
index e475f6bb3..6b98ffc52 100644
--- a/PowerEditor/installer/nativeLang/french.xml
+++ b/PowerEditor/installer/nativeLang/french.xml
@@ -1049,11 +1049,11 @@ Translation note:
-
+
+
+
-
@@ -1781,6 +1781,7 @@ Cliquez sur le bouton "?" à droite pour ouvrir le site web du Manuel
+
diff --git a/PowerEditor/installer/nativeLang/taiwaneseMandarin.xml b/PowerEditor/installer/nativeLang/taiwaneseMandarin.xml
index 97c57fb64..7b567b895 100644
--- a/PowerEditor/installer/nativeLang/taiwaneseMandarin.xml
+++ b/PowerEditor/installer/nativeLang/taiwaneseMandarin.xml
@@ -1002,17 +1002,17 @@
-
+
-
+
+
+
-
@@ -1623,6 +1623,7 @@
2. 如果「停用自動換行」被啟動,在開啟一個大型文件時,「自動換行」將對所有文件停用。 你可以通過選單「檢視->自動換行」重新啟動這個功能。"/>
+
diff --git a/PowerEditor/src/NppBigSwitch.cpp b/PowerEditor/src/NppBigSwitch.cpp
index 49910ea7a..1a3e5c7fe 100644
--- a/PowerEditor/src/NppBigSwitch.cpp
+++ b/PowerEditor/src/NppBigSwitch.cpp
@@ -3152,19 +3152,40 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
case NPPM_INTERNAL_ENABLECHANGEHISTORY:
{
+ static bool stopActionUntilNextSession = false;
+
const ScintillaViewParams& svp = nppParam.getSVP();
- int enabledCH = svp._isChangeHistoryEnabled ? (SC_CHANGE_HISTORY_ENABLED | SC_CHANGE_HISTORY_MARKERS) : SC_CHANGE_HISTORY_DISABLED;
- _mainEditView.execute(SCI_SETCHANGEHISTORY, enabledCH);
- _subEditView.execute(SCI_SETCHANGEHISTORY, enabledCH);
+ int enabledCHFlag = SC_CHANGE_HISTORY_DISABLED;
+ if (svp._isChangeHistoryMarginEnabled || svp._isChangeHistoryIndicatorEnabled)
+ {
+ enabledCHFlag = SC_CHANGE_HISTORY_ENABLED;
- _mainEditView.showChangeHistoryMargin(svp._isChangeHistoryEnabled);
- _subEditView.showChangeHistoryMargin(svp._isChangeHistoryEnabled);
+ if (svp._isChangeHistoryMarginEnabled)
+ enabledCHFlag |= SC_CHANGE_HISTORY_MARKERS;
- enableCommand(IDM_SEARCH_CHANGED_PREV, svp._isChangeHistoryEnabled, MENU);
- enableCommand(IDM_SEARCH_CHANGED_NEXT, svp._isChangeHistoryEnabled, MENU);
- enableCommand(IDM_SEARCH_CLEAR_CHANGE_HISTORY, svp._isChangeHistoryEnabled, MENU);
+ if (svp._isChangeHistoryIndicatorEnabled)
+ enabledCHFlag |= SC_CHANGE_HISTORY_INDICATORS;
+ }
+ if (!stopActionUntilNextSession)
+ {
+ _mainEditView.execute(SCI_SETCHANGEHISTORY, enabledCHFlag);
+ _subEditView.execute(SCI_SETCHANGEHISTORY, enabledCHFlag);
+
+ if (enabledCHFlag == SC_CHANGE_HISTORY_DISABLED)
+ stopActionUntilNextSession = true;
+
+ _mainEditView.showChangeHistoryMargin(svp._isChangeHistoryMarginEnabled);
+ _subEditView.showChangeHistoryMargin(svp._isChangeHistoryMarginEnabled);
+
+ _mainEditView.redraw();
+ _subEditView.redraw();
+
+ enableCommand(IDM_SEARCH_CHANGED_PREV, svp._isChangeHistoryMarginEnabled || svp._isChangeHistoryIndicatorEnabled, MENU);
+ enableCommand(IDM_SEARCH_CHANGED_NEXT, svp._isChangeHistoryMarginEnabled || svp._isChangeHistoryIndicatorEnabled, MENU);
+ enableCommand(IDM_SEARCH_CLEAR_CHANGE_HISTORY, svp._isChangeHistoryMarginEnabled || svp._isChangeHistoryIndicatorEnabled, MENU);
+ }
return TRUE;
}
diff --git a/PowerEditor/src/NppIO.cpp b/PowerEditor/src/NppIO.cpp
index 431929de1..4f3217221 100644
--- a/PowerEditor/src/NppIO.cpp
+++ b/PowerEditor/src/NppIO.cpp
@@ -589,7 +589,8 @@ bool Notepad_plus::doReload(BufferID id, bool alert)
// many settings such as update status bar, clickable link etc.
activateBuffer(id, currentView(), true);
- if (NppParameters::getInstance().getSVP()._isChangeHistoryEnabled)
+ auto svp = NppParameters::getInstance().getSVP();
+ if (svp._isChangeHistoryMarginEnabled || svp._isChangeHistoryIndicatorEnabled)
clearChangesHistory();
return res;
diff --git a/PowerEditor/src/Parameters.cpp b/PowerEditor/src/Parameters.cpp
index ad1ca6c3e..a09cc44ec 100644
--- a/PowerEditor/src/Parameters.cpp
+++ b/PowerEditor/src/Parameters.cpp
@@ -6338,19 +6338,37 @@ void NppParameters::feedScintillaParam(TiXmlNode *node)
_svp._bookMarkMarginShow = false;
}
- // Bookmark Margin
- nm = element->Attribute(TEXT("isChangeHistoryEnabled"));
+ // Change History Margin
+ int chState = 0;
+ nm = element->Attribute(TEXT("isChangeHistoryEnabled"), &chState);
if (nm)
{
- if (!lstrcmp(nm, TEXT("yes")))
+ if (!lstrcmp(nm, TEXT("yes"))) // for the retro-compatibility
+ chState = 1;
+
+ _svp._isChangeHistoryEnabled4NextSession = static_cast(chState);
+ switch (chState)
{
- _svp._isChangeHistoryEnabled = true;
- _svp._isChangeHistoryEnabled4NextSession = true;
- }
- else if (!lstrcmp(nm, TEXT("no")))
- {
- _svp._isChangeHistoryEnabled = false;
- _svp._isChangeHistoryEnabled4NextSession = false;
+ case changeHistoryState::disable:
+ _svp._isChangeHistoryMarginEnabled = false;
+ _svp._isChangeHistoryIndicatorEnabled = false;
+ break;
+ case changeHistoryState::margin:
+ _svp._isChangeHistoryMarginEnabled = true;
+ _svp._isChangeHistoryIndicatorEnabled = false;
+ break;
+ case changeHistoryState::indicator:
+ _svp._isChangeHistoryMarginEnabled = false;
+ _svp._isChangeHistoryIndicatorEnabled = true;
+ break;
+ case changeHistoryState::marginIndicator:
+ _svp._isChangeHistoryMarginEnabled = true;
+ _svp._isChangeHistoryIndicatorEnabled = true;
+ break;
+ default:
+ _svp._isChangeHistoryMarginEnabled = true;
+ _svp._isChangeHistoryIndicatorEnabled = false;
+ _svp._isChangeHistoryEnabled4NextSession = changeHistoryState::marginIndicator;
}
}
@@ -6872,7 +6890,9 @@ bool NppParameters::writeScintillaParams()
(_svp._folderStyle == FOLDER_STYLE_CIRCLE)?TEXT("circle"):
(_svp._folderStyle == FOLDER_STYLE_NONE)?TEXT("none"):TEXT("box");
(scintNode->ToElement())->SetAttribute(TEXT("folderMarkStyle"), pFolderStyleStr);
- (scintNode->ToElement())->SetAttribute(TEXT("isChangeHistoryEnabled"), _svp._isChangeHistoryEnabled4NextSession ? TEXT("yes") : TEXT("no"));
+
+ (scintNode->ToElement())->SetAttribute(TEXT("isChangeHistoryEnabled"), _svp._isChangeHistoryEnabled4NextSession); // no -> 0 (disable), yes -> 1 (margin), yes ->2 (indicator), yes-> 3 (margin + indicator)
+
const TCHAR *pWrapMethodStr = (_svp._lineWrapMethod == LINEWRAP_ALIGNED)?TEXT("aligned"):
(_svp._lineWrapMethod == LINEWRAP_INDENT)?TEXT("indent"):TEXT("default");
(scintNode->ToElement())->SetAttribute(TEXT("lineWrapMethod"), pWrapMethodStr);
diff --git a/PowerEditor/src/Parameters.h b/PowerEditor/src/Parameters.h
index 8a18963e7..032f1c666 100644
--- a/PowerEditor/src/Parameters.h
+++ b/PowerEditor/src/Parameters.h
@@ -942,8 +942,11 @@ struct ScintillaViewParams
bool _lineNumberMarginShow = true;
bool _lineNumberMarginDynamicWidth = true;
bool _bookMarkMarginShow = true;
- bool _isChangeHistoryEnabled = true;
- bool _isChangeHistoryEnabled4NextSession = true;
+
+ bool _isChangeHistoryMarginEnabled = true;
+ bool _isChangeHistoryIndicatorEnabled = false;
+ changeHistoryState _isChangeHistoryEnabled4NextSession = changeHistoryState::margin; // no -> 0 (disable), yes -> 1 (margin), yes ->2 (indicator), yes-> 3 (margin + indicator)
+
folderStyle _folderStyle = FOLDER_STYLE_BOX; //"simple", "arrow", "circle", "box" and "none"
lineWrapMethod _lineWrapMethod = LINEWRAP_ALIGNED;
bool _foldMarginShow = true;
diff --git a/PowerEditor/src/ScintillaComponent/ScintillaEditView.cpp b/PowerEditor/src/ScintillaComponent/ScintillaEditView.cpp
index bca542c75..ab64cd9e6 100644
--- a/PowerEditor/src/ScintillaComponent/ScintillaEditView.cpp
+++ b/PowerEditor/src/ScintillaComponent/ScintillaEditView.cpp
@@ -2236,8 +2236,19 @@ void ScintillaEditView::activateBuffer(BufferID buffer, bool force)
NppParameters& nppParam = NppParameters::getInstance();
const ScintillaViewParams& svp = nppParam.getSVP();
- int enabledCH = svp._isChangeHistoryEnabled ? (SC_CHANGE_HISTORY_ENABLED | SC_CHANGE_HISTORY_MARKERS) : SC_CHANGE_HISTORY_DISABLED;
- execute(SCI_SETCHANGEHISTORY, enabledCH);
+
+ int enabledCHFlag = SC_CHANGE_HISTORY_DISABLED;
+ if (svp._isChangeHistoryMarginEnabled || svp._isChangeHistoryIndicatorEnabled)
+ {
+ enabledCHFlag = SC_CHANGE_HISTORY_ENABLED;
+
+ if (svp._isChangeHistoryMarginEnabled)
+ enabledCHFlag |= SC_CHANGE_HISTORY_MARKERS;
+
+ if (svp._isChangeHistoryIndicatorEnabled)
+ enabledCHFlag |= SC_CHANGE_HISTORY_INDICATORS;
+ }
+ execute(SCI_SETCHANGEHISTORY, enabledCHFlag);
if (isTextDirectionRTL() != buffer->isRTL())
changeTextDirection(buffer->isRTL());
diff --git a/PowerEditor/src/ScintillaComponent/ScintillaRef.h b/PowerEditor/src/ScintillaComponent/ScintillaRef.h
index 9852a49c0..98b94ea4f 100644
--- a/PowerEditor/src/ScintillaComponent/ScintillaRef.h
+++ b/PowerEditor/src/ScintillaComponent/ScintillaRef.h
@@ -15,11 +15,9 @@
// along with this program. If not, see .
-#ifndef SCINTILLA_REF_H
-#define SCINTILLA_REF_H
+#pragma once
+enum changeHistoryState { disable = 0, margin = 1, indicator = 2, marginIndicator = 3 };
enum folderStyle {FOLDER_TYPE, FOLDER_STYLE_SIMPLE, FOLDER_STYLE_ARROW, FOLDER_STYLE_CIRCLE, FOLDER_STYLE_BOX, FOLDER_STYLE_NONE};
enum lineWrapMethod {LINEWRAP_DEFAULT, LINEWRAP_ALIGNED, LINEWRAP_INDENT};
enum lineHiliteMode {LINEHILITE_NONE, LINEHILITE_HILITE, LINEHILITE_FRAME};
-
-#endif //SCINTILLA_REF_H
diff --git a/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.cpp b/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.cpp
index 289c6e867..648dcb2e5 100644
--- a/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.cpp
+++ b/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.cpp
@@ -939,7 +939,7 @@ std::pair WordStyleDlg::goToPreferencesSettings()
else if (style._styleDesc == TEXT("Change History margin"))
{
result.first = 3;
- result.second = IDC_CHECK_CHANGHISTORYMARGE;
+ result.second = IDC_CHECK_CHANGHISTORYMARGIN;
}
else if (style._styleDesc == TEXT("Fold") || style._styleDesc == TEXT("Fold active") || style._styleDesc == TEXT("Fold margin"))
{
diff --git a/PowerEditor/src/WinControls/Preference/preference.rc b/PowerEditor/src/WinControls/Preference/preference.rc
index 81da1a58a..dd6cbc02c 100644
--- a/PowerEditor/src/WinControls/Preference/preference.rc
+++ b/PowerEditor/src/WinControls/Preference/preference.rc
@@ -162,6 +162,7 @@ BEGIN
PUSHBUTTON "Reset",IDD_CUSTOMIZED_RESET_BUTTON,340,158,45,14
END
+
IDD_PREFERENCE_SUB_MARGING_BORDER_EDGE DIALOGEX 115, 10, 460, 205
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x1
@@ -172,20 +173,26 @@ BEGIN
CONTROL "Circle tree",IDC_RADIO_CIRCLE,"Button",BS_AUTORADIOBUTTON,31,63,62,10
CONTROL "None",IDC_RADIO_FOLDMARGENONE,"Button",BS_AUTORADIOBUTTON,31,92,61,10
CONTROL "Box tree",IDC_RADIO_BOX,"Button",BS_AUTORADIOBUTTON,31,77,61,10
- GROUPBOX "Vertical Edge Settings",IDC_VES_GB_STATIC,116,21,148,136,BS_CENTER
- LTEXT "Add your column marker by indicating its position with a decimal number.\nYou can define several column markers by using white space to separate the different numbers.",IDC_STATIC_MULTILNMODE_TIP,124,36,134,55
- EDITTEXT IDC_COLUMNPOS_EDIT,126,93,125,36,ES_MULTILINE
- CONTROL "Background mode",IDC_CHECK_EDGEBGMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,138,122,10
- GROUPBOX "Border Width",IDC_BORDERWIDTH_STATIC,22,112,83,45,BS_CENTER
- CONTROL "",IDC_BORDERWIDTH_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | TBS_TRANSPARENTBKGND | WS_TABSTOP,24,125,67,13
- LTEXT "0",IDC_BORDERWIDTHVAL_STATIC,92,126,12,8
- CONTROL "No edge",IDC_CHECK_NOEDGE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,142,60,10
+
+ GROUPBOX "Border Width",IDC_BORDERWIDTH_STATIC,22,121,83,47,BS_CENTER
+ CONTROL "",IDC_BORDERWIDTH_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | TBS_TRANSPARENTBKGND | WS_TABSTOP,24,134,67,13
+ LTEXT "0",IDC_BORDERWIDTHVAL_STATIC,92,135,12,8
+ CONTROL "No edge",IDC_CHECK_NOEDGE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,151,60,10
+
+ GROUPBOX "Vertical Edge Settings",IDC_VES_GB_STATIC,116,21,148,89,BS_CENTER
+ PUSHBUTTON "?",IDC_BUTTON_VES_TIP,181,33,16,14,NOT WS_TABSTOP
+ EDITTEXT IDC_COLUMNPOS_EDIT,126,51,125,36,ES_MULTILINE
+ CONTROL "Background mode",IDC_CHECK_EDGEBGMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,94,122,10
+
+ GROUPBOX "Change History",IDC_GB_CHANGHISTORY,116,121,148,47,BS_CENTER
+ CONTROL "Show in the margin",IDC_CHECK_CHANGHISTORYMARGIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,135,140,10
+ CONTROL "Show in the text",IDC_CHECK_CHANGHISTORYINDICATOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,150,140,10
+
GROUPBOX "Line Number",IDC_LINENUMBERMARGE_GB_STATIC,274,21,135,66,BS_CENTER
CONTROL "Display",IDC_CHECK_LINENUMBERMARGE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,281,35,85,10
CONTROL "Dynamic width",IDC_RADIO_DYNAMIC,"Button",BS_AUTORADIOBUTTON | WS_GROUP,293,51,110,10
CONTROL "Constant width",IDC_RADIO_CONSTANT,"Button",BS_AUTORADIOBUTTON,293,65,108,10
- CONTROL "Display Change History",IDC_CHECK_CHANGHISTORYMARGE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,163,150,10
- CONTROL "Display bookmark",IDC_CHECK_BOOKMARKMARGE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,281,163,150,10
+
GROUPBOX "Padding",IDC_PADDING_STATIC,274,94,135,63,BS_CENTER
RTEXT "Left",IDC_PADDINGLEFT_STATIC,280,108,45,8
CONTROL "",IDC_PADDINGLEFT_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | TBS_TRANSPARENTBKGND | WS_TABSTOP,328,107,67,13
@@ -196,6 +203,8 @@ BEGIN
RTEXT "Distraction Free",IDC_DISTRACTIONFREE_STATIC,275,140,72,8
CONTROL "",IDC_DISTRACTIONFREE_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | TBS_TRANSPARENTBKGND | WS_TABSTOP,348,139,47,13
LTEXT "0",IDC_DISTRACTIONFREEVAL_STATIC,396,140,12,8
+
+ CONTROL "Display bookmark",IDC_CHECK_BOOKMARKMARGE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,281,163,150,10
END
diff --git a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp
index 7bf35b3c8..9fb3dd174 100644
--- a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp
+++ b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp
@@ -241,6 +241,9 @@ intptr_t CALLBACK PreferenceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
if (_editing2SubDlg._tip != nullptr)
NppDarkMode::setDarkTooltips(_editing2SubDlg._tip, NppDarkMode::ToolTipsType::tooltip);
+ if (_marginsBorderEdgeSubDlg._verticalEdgeTip != nullptr)
+ NppDarkMode::setDarkTooltips(_marginsBorderEdgeSubDlg._verticalEdgeTip, NppDarkMode::ToolTipsType::tooltip);
+
for (auto& tip : _editing2SubDlg._tips)
{
if (tip != nullptr)
@@ -1130,13 +1133,13 @@ intptr_t CALLBACK EditingSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
intptr_t CALLBACK Editing2SubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM /*lParam*/)
{
- NppParameters& nppParam = NppParameters::getInstance();
- ScintillaViewParams& svp = (ScintillaViewParams&)nppParam.getSVP();
-
switch (message)
{
case WM_INITDIALOG:
{
+ NppParameters& nppParam = NppParameters::getInstance();
+ ScintillaViewParams& svp = const_cast(nppParam.getSVP());
+
// defaul => (svp._eolMode == svp.roundedRectangleText)
bool checkDefaultCRLF = true;
bool checkPlainTextCRLF = false;
@@ -1164,14 +1167,12 @@ intptr_t CALLBACK Editing2SubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
::SendDlgItemMessage(_hSelf, IDC_RADIO_PLEINTEXT_CRLF, BM_SETCHECK, checkPlainTextCRLF, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_WITHCUSTOMCOLOR_CRLF, BM_SETCHECK, checkWithColorCRLF, 0);
-
- NppParameters& nppParam = NppParameters::getInstance();
- ScintillaViewParams& svp = const_cast(nppParam.getSVP());
+
::SendDlgItemMessage(_hSelf, IDC_CHECK_MULTISELECTION, BM_SETCHECK, svp._multiSelection, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_COLUMN2MULTIEDITING, BM_SETCHECK, svp._columnSel2MultiEdit, 0);
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_COLUMN2MULTIEDITING), svp._multiSelection);
- NativeLangSpeaker* pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker();
+ NativeLangSpeaker* pNativeSpeaker = nppParam.getNativeLangSpeaker();
generic_string tip2show = pNativeSpeaker->getLocalizedStrFromID("eol-custom-color-tip", TEXT("Go to Style Configurator to change the default EOL custom color (\"EOL custom color\")."));
_tip = CreateToolTip(IDC_BUTTON_LAUNCHSTYLECONF_CRLF, _hSelf, _hInst, const_cast(tip2show.c_str()), pNativeSpeaker->isRTL());
@@ -1910,7 +1911,8 @@ void MarginsBorderEdgeSubDlg::initScintParam()
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_CONSTANT), svp._lineNumberMarginShow);
::SendDlgItemMessage(_hSelf, IDC_CHECK_BOOKMARKMARGE, BM_SETCHECK, svp._bookMarkMarginShow, 0);
- ::SendDlgItemMessage(_hSelf, IDC_CHECK_CHANGHISTORYMARGE, BM_SETCHECK, svp._isChangeHistoryEnabled, 0);
+ ::SendDlgItemMessage(_hSelf, IDC_CHECK_CHANGHISTORYMARGIN, BM_SETCHECK, svp._isChangeHistoryMarginEnabled, 0);
+ ::SendDlgItemMessage(_hSelf, IDC_CHECK_CHANGHISTORYINDICATOR, BM_SETCHECK, svp._isChangeHistoryIndicatorEnabled, 0);
::SendDlgItemMessage(_hSelf, IDC_CHECK_NOEDGE, BM_SETCHECK, !svp._showBorderEdge, 0);
bool canBeBg = svp._edgeMultiColumnPos.size() == 1;
@@ -1940,6 +1942,8 @@ void MarginsBorderEdgeSubDlg::initScintParam()
intptr_t CALLBACK MarginsBorderEdgeSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam)
{
NppParameters& nppParam = NppParameters::getInstance();
+ static bool changeHistoryWarningHasBeenGiven = false;
+
switch (message)
{
case WM_INITDIALOG :
@@ -1969,6 +1973,15 @@ intptr_t CALLBACK MarginsBorderEdgeSubDlg::run_dlgProc(UINT message, WPARAM wPar
::SendMessage(::GetDlgItem(_hSelf, IDC_DISTRACTIONFREE_SLIDER), TBM_SETPOS, TRUE, svp._distractionFreeDivPart);
::SetDlgItemInt(_hSelf, IDC_DISTRACTIONFREEVAL_STATIC, svp._distractionFreeDivPart, FALSE);
+ NativeLangSpeaker* pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker();
+ generic_string tipNote2Show = pNativeSpeaker->getLocalizedStrFromID("verticalEdge-tip", L"Add your column marker by indicating its position with a decimal number. You can define several column markers by using white space to separate the different numbers.");
+
+ _verticalEdgeTip = CreateToolTip(IDC_BUTTON_VES_TIP, _hSelf, _hInst, const_cast(tipNote2Show.c_str()), pNativeSpeaker->isRTL());
+ if (_verticalEdgeTip != nullptr)
+ {
+ // Make tip stay 30 seconds
+ ::SendMessage(_verticalEdgeTip, TTM_SETDELAYTIME, TTDT_AUTOPOP, MAKELPARAM((30000), (0)));
+ }
initScintParam();
return TRUE;
@@ -2055,23 +2068,65 @@ intptr_t CALLBACK MarginsBorderEdgeSubDlg::run_dlgProc(UINT message, WPARAM wPar
::SendMessage(_hParent, WM_COMMAND, IDM_VIEW_SYMBOLMARGIN, 0);
return TRUE;
- case IDC_CHECK_CHANGHISTORYMARGE:
+ case IDC_CHECK_CHANGHISTORYMARGIN:
{
- bool isChangeHistoryEnabled = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_CHECK_CHANGHISTORYMARGE, BM_GETCHECK, 0, 0));
- if (isChangeHistoryEnabled)
+ bool isMaginJustEnabled = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_CHECK_CHANGHISTORYMARGIN, BM_GETCHECK, 0, 0));
+ bool isIndicatorAlreadyEnabled = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_CHECK_CHANGHISTORYINDICATOR, BM_GETCHECK, 0, 0));
+
+ if (isMaginJustEnabled && !isIndicatorAlreadyEnabled) // In the case that both "in margin" & "in text" were disabled, but "in margin" is just enabled
{
- NativeLangSpeaker* pNativeSpeaker = nppParam.getNativeLangSpeaker();
- pNativeSpeaker->messageBox("ChangeHistoryEnabledWarning",
- _hSelf,
- TEXT("You have to restart Notepad++ to enable Change History."),
- TEXT("Notepad++ need to be relaunched"),
- MB_OK | MB_APPLMODAL);
- svp._isChangeHistoryEnabled4NextSession = true;
+ if (!changeHistoryWarningHasBeenGiven)
+ {
+ NativeLangSpeaker* pNativeSpeaker = nppParam.getNativeLangSpeaker();
+ pNativeSpeaker->messageBox("ChangeHistoryEnabledWarning",
+ _hSelf,
+ TEXT("You have to restart Notepad++ to enable Change History."),
+ TEXT("Notepad++ need to be relaunched"),
+ MB_OK | MB_APPLMODAL);
+
+ changeHistoryWarningHasBeenGiven = true;
+ }
+ svp._isChangeHistoryMarginEnabled = true;
+ svp._isChangeHistoryEnabled4NextSession = changeHistoryState::margin;
+ }
+ else // otherwise
+ {
+ svp._isChangeHistoryMarginEnabled = isMaginJustEnabled;
+ svp._isChangeHistoryEnabled4NextSession = (!isMaginJustEnabled && !isIndicatorAlreadyEnabled) ? changeHistoryState::disable :
+ (isMaginJustEnabled && isIndicatorAlreadyEnabled) ? changeHistoryState::marginIndicator :changeHistoryState::indicator;
+
+ ::SendMessage(::GetParent(_hParent), NPPM_INTERNAL_ENABLECHANGEHISTORY, 0, 0);
+ }
+ return TRUE;
+ }
+
+ case IDC_CHECK_CHANGHISTORYINDICATOR:
+ {
+ bool isIndicatorJustEnabled = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_CHECK_CHANGHISTORYINDICATOR, BM_GETCHECK, 0, 0));
+ bool isMaginAlreadyEnabled = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_CHECK_CHANGHISTORYMARGIN, BM_GETCHECK, 0, 0));
+
+ if (isIndicatorJustEnabled && !isMaginAlreadyEnabled) // In the case that both "in margin" & "in text" were disabled, but "in text" is just enabled
+ {
+ if (!changeHistoryWarningHasBeenGiven)
+ {
+ NativeLangSpeaker* pNativeSpeaker = nppParam.getNativeLangSpeaker();
+ pNativeSpeaker->messageBox("ChangeHistoryEnabledWarning",
+ _hSelf,
+ TEXT("You have to restart Notepad++ to enable Change History."),
+ TEXT("Notepad++ need to be relaunched"),
+ MB_OK | MB_APPLMODAL);
+
+ changeHistoryWarningHasBeenGiven = true;
+ }
+ svp._isChangeHistoryIndicatorEnabled = true;
+ svp._isChangeHistoryEnabled4NextSession = changeHistoryState::indicator;
}
else
{
- svp._isChangeHistoryEnabled = false;
- svp._isChangeHistoryEnabled4NextSession = false;
+ svp._isChangeHistoryIndicatorEnabled = isIndicatorJustEnabled;
+ svp._isChangeHistoryEnabled4NextSession = (!isIndicatorJustEnabled && !isMaginAlreadyEnabled) ? changeHistoryState::disable :
+ (isIndicatorJustEnabled && isMaginAlreadyEnabled) ? changeHistoryState::marginIndicator : changeHistoryState::margin;
+
::SendMessage(::GetParent(_hParent), NPPM_INTERNAL_ENABLECHANGEHISTORY, 0, 0);
}
return TRUE;
diff --git a/PowerEditor/src/WinControls/Preference/preferenceDlg.h b/PowerEditor/src/WinControls/Preference/preferenceDlg.h
index c4063c6eb..8f8235d2a 100644
--- a/PowerEditor/src/WinControls/Preference/preferenceDlg.h
+++ b/PowerEditor/src/WinControls/Preference/preferenceDlg.h
@@ -115,10 +115,13 @@ private:
class MarginsBorderEdgeSubDlg : public StaticDialog
{
+friend class PreferenceDlg;
public :
MarginsBorderEdgeSubDlg() = default;
private :
+ HWND _verticalEdgeTip = nullptr;
+
intptr_t CALLBACK run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam);
void initScintParam();
};
diff --git a/PowerEditor/src/WinControls/Preference/preference_rc.h b/PowerEditor/src/WinControls/Preference/preference_rc.h
index e746c0226..06b801971 100644
--- a/PowerEditor/src/WinControls/Preference/preference_rc.h
+++ b/PowerEditor/src/WinControls/Preference/preference_rc.h
@@ -122,7 +122,7 @@
#define IDC_CARETBLINKRATE_SLIDER (IDD_PREFERENCE_SUB_EDITING + 20)
#define IDC_CARETBLINKRATE_F_STATIC (IDD_PREFERENCE_SUB_EDITING + 21)
#define IDC_CARETBLINKRATE_S_STATIC (IDD_PREFERENCE_SUB_EDITING + 22)
- #define IDC_CHECK_CHANGHISTORYMARGE (IDD_PREFERENCE_SUB_EDITING + 23)
+ #define IDC_CHECK_CHANGHISTORYMARGIN (IDD_PREFERENCE_SUB_EDITING + 23)
#define IDC_DISTRACTIONFREE_SLIDER (IDD_PREFERENCE_SUB_EDITING + 24)
//#define IDC_CHECK_MULTISELECTION (IDD_PREFERENCE_SUB_EDITING + 25)
@@ -205,6 +205,9 @@
#define IDC_LINENUMBERMARGE_GB_STATIC (IDD_PREFERENCE_SUB_MARGING_BORDER_EDGE + 1)
#define IDC_RADIO_DYNAMIC (IDD_PREFERENCE_SUB_MARGING_BORDER_EDGE + 2)
#define IDC_RADIO_CONSTANT (IDD_PREFERENCE_SUB_MARGING_BORDER_EDGE + 3)
+ #define IDC_BUTTON_VES_TIP (IDD_PREFERENCE_SUB_MARGING_BORDER_EDGE + 4)
+ #define IDC_GB_CHANGHISTORY (IDD_PREFERENCE_SUB_MARGING_BORDER_EDGE + 5)
+ #define IDC_CHECK_CHANGHISTORYINDICATOR (IDD_PREFERENCE_SUB_MARGING_BORDER_EDGE + 6)
#define IDD_PREFERENCE_SUB_MISC 6300 //(IDD_PREFERENCE_BOX + 300)
#define IDC_TABSETTING_GB_STATIC (IDD_PREFERENCE_SUB_MISC + 1)