From dd0687a1015aad977c4b92c54b3f2c94ede4dc28 Mon Sep 17 00:00:00 2001 From: "METANEOCORTEX\\Kotti" Date: Tue, 27 Sep 2022 23:51:07 +0200 Subject: [PATCH] +fix: margin/bookmark context menu and view --- language/common_res.h | 1 + language/np3_de_de/menu_de_de.rc | 12 +++++---- language/np3_en_us/menu_en_us.rc | 10 ++++--- src/Config/Config.cpp | 5 ++-- src/Edit.c | 4 +-- src/Notepad3.c | 46 ++++++++++++++++---------------- src/Styles.c | 25 ++++++++--------- src/Styles.h | 6 ++--- src/TypeDefs.h | 3 ++- src/Version.h | 2 +- 10 files changed, 61 insertions(+), 53 deletions(-) diff --git a/language/common_res.h b/language/common_res.h index 280b211bd..8976dc1bf 100644 --- a/language/common_res.h +++ b/language/common_res.h @@ -776,6 +776,7 @@ #define IDM_VIEW_CHGHIST_MARGIN 41059 // SC_CHANGE_HISTORY_ENABLED | SC_CHANGE_HISTORY_MARKERS #define IDM_VIEW_CHGHIST_DOCTXT 41060 // SC_CHANGE_HISTORY_ENABLED | SC_CHANGE_HISTORY_INDICATORS #define IDM_VIEW_CHGHIST_ALL 41061 // SC_CHANGE_HISTORY_ENABLED | SC_CHANGE_HISTORY_MARKERS | SC_CHANGE_HISTORY_INDICATORS +#define IDM_VIEW_CHGHIST_TOGGLE_MARGIN 41062 // keep Scintilla(SC) order #define IDM_SET_RENDER_TECH_GDI 42000 // SC_TECHNOLOGY_DEFAULT(0) diff --git a/language/np3_de_de/menu_de_de.rc b/language/np3_de_de/menu_de_de.rc index 4d0964442..6ea12ff9b 100644 --- a/language/np3_de_de/menu_de_de.rc +++ b/language/np3_de_de/menu_de_de.rc @@ -350,12 +350,12 @@ BEGIN MENUITEM "Zeige Leerzeichen\tCtrl+Shift+8", IDM_VIEW_SHOWBLANKS MENUITEM "Zeige Zeilenumbrüche\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR - POPUP "Change History Marker" + POPUP "Änderungshistorie Markierung" BEGIN - MENUITEM "Hide All Change Markers", IDM_VIEW_CHGHIST_NONE - MENUITEM "Show in Margin only", IDM_VIEW_CHGHIST_MARGIN - MENUITEM "Show in Document only", IDM_VIEW_CHGHIST_DOCTXT - MENUITEM "Show All Change Markers", IDM_VIEW_CHGHIST_ALL + MENUITEM "Keine Änderungs-Markierung", IDM_VIEW_CHGHIST_NONE + MENUITEM "Zeige Änderungen am Rand", IDM_VIEW_CHGHIST_MARGIN + MENUITEM "Zeige Änderungen im Dokument", IDM_VIEW_CHGHIST_DOCTXT + MENUITEM "Zeige alle Änderungen", IDM_VIEW_CHGHIST_ALL END MENUITEM SEPARATOR MENUITEM "H&yperlink Indikator\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS @@ -392,6 +392,7 @@ BEGIN MENUITEM SEPARATOR MENUITEM "Zeilen &Nummern\tCtrl+Shift+N", IDM_VIEW_LINENUMBERS MENUITEM "&Lesezeichen Rand\tCtrl+Shift+M", IDM_VIEW_BOOKMARK_MARGIN + MENUITEM "Änderungsmarkierungs Rand", IDM_VIEW_CHGHIST_TOGGLE_MARGIN MENUITEM SEPARATOR POPUP "Code &Faltung" BEGIN @@ -590,6 +591,7 @@ BEGIN MENUITEM "Code Faltung", IDM_VIEW_FOLDING MENUITEM "Zeilen Nummern", IDM_VIEW_LINENUMBERS MENUITEM "Lesezeichen Rand", IDM_VIEW_BOOKMARK_MARGIN + MENUITEM "Änderungsmarkierungs Rand", IDM_VIEW_CHGHIST_TOGGLE_MARGIN END POPUP "+" BEGIN diff --git a/language/np3_en_us/menu_en_us.rc b/language/np3_en_us/menu_en_us.rc index 8c37cd1f7..9fa8d7e7d 100644 --- a/language/np3_en_us/menu_en_us.rc +++ b/language/np3_en_us/menu_en_us.rc @@ -352,10 +352,10 @@ BEGIN MENUITEM SEPARATOR POPUP "Change History Marker" BEGIN - MENUITEM "Hide All Change Markers", IDM_VIEW_CHGHIST_NONE - MENUITEM "Show in Margin only", IDM_VIEW_CHGHIST_MARGIN - MENUITEM "Show in Document only", IDM_VIEW_CHGHIST_DOCTXT - MENUITEM "Show All Change Markers", IDM_VIEW_CHGHIST_ALL + MENUITEM "No Change Markers", IDM_VIEW_CHGHIST_NONE + MENUITEM "Show in Margin only", IDM_VIEW_CHGHIST_MARGIN + MENUITEM "Show in Document only", IDM_VIEW_CHGHIST_DOCTXT + MENUITEM "Show All Change Markers", IDM_VIEW_CHGHIST_ALL END MENUITEM SEPARATOR MENUITEM "&Hyperlink Hotspots\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS @@ -392,6 +392,7 @@ BEGIN MENUITEM SEPARATOR MENUITEM "Line &Numbers\tCtrl+Shift+N", IDM_VIEW_LINENUMBERS MENUITEM "Bookmark &Margin\tCtrl+Shift+M", IDM_VIEW_BOOKMARK_MARGIN + MENUITEM "ChangeHistory Margin", IDM_VIEW_CHGHIST_TOGGLE_MARGIN MENUITEM SEPARATOR POPUP "&Folding" BEGIN @@ -590,6 +591,7 @@ BEGIN MENUITEM "Folding", IDM_VIEW_FOLDING MENUITEM "Line Numbers", IDM_VIEW_LINENUMBERS MENUITEM "Bookmark Margin", IDM_VIEW_BOOKMARK_MARGIN + MENUITEM "ChangeHistory Margin", IDM_VIEW_CHGHIST_TOGGLE_MARGIN END POPUP "+" BEGIN diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp index 8725f444a..7a572b6e6 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -1508,7 +1508,8 @@ void LoadSettings() GET_BOOL_VALUE_FROM_INISECTION(MatchBraces, true); GET_BOOL_VALUE_FROM_INISECTION(AutoCloseTags, false); GET_INT_VALUE_FROM_INISECTION(HighlightCurrentLine, 1, 0, 2); - GET_INT_VALUE_FROM_INISECTION(ShowChangeHistory, ChgHist_ON | ChgHist_MARGIN, ChgHist_NONE, ChgHist_ALL); + GET_INT_VALUE_FROM_INISECTION(ChangeHistoryMode, ChgHist_ON | ChgHist_MARGIN, ChgHist_NONE, ChgHist_ALL); + GET_BOOL_VALUE_FROM_INISECTION(ChangeHistoryMargin, true); GET_BOOL_VALUE_FROM_INISECTION(HyperlinkHotspot, true); GET_BOOL_VALUE_FROM_INISECTION(ShowHypLnkToolTip, false); GET_INT_VALUE_FROM_INISECTION(ColorDefHotspot, 2, 0, 3); @@ -1964,7 +1965,7 @@ static bool _SaveSettings(bool bForceSaveSettings) SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, MatchBraces); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, AutoCloseTags); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, HighlightCurrentLine); - SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, ShowChangeHistory); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, ChangeHistoryMode); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, HyperlinkHotspot); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, ColorDefHotspot); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, ScrollPastEOF); diff --git a/src/Edit.c b/src/Edit.c index c3b5acec0..378a61f47 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -8112,7 +8112,7 @@ void EditFoldMarkedLineRange(HWND hwnd, bool bHideLines) Lexer_SetFoldingAvailability(Style_GetCurrentLexerPtr()); FocusedView.ShowCodeFolding = Settings.ShowCodeFolding; Lexer_SetFoldingProperties(FocusedView.CodeFoldingAvailable); - Style_SetFolding(hwnd, FocusedView.CodeFoldingAvailable && FocusedView.ShowCodeFolding); + Style_UpdateFoldingMargin(hwnd, FocusedView.CodeFoldingAvailable && FocusedView.ShowCodeFolding); Sci_ColouriseAll(); EditMarkAllOccurrences(hwnd, true); } else { // ===== fold lines without marker ===== @@ -8120,7 +8120,7 @@ void EditFoldMarkedLineRange(HWND hwnd, bool bHideLines) FocusedView.CodeFoldingAvailable = true; FocusedView.ShowCodeFolding = true; Lexer_SetFoldingFocusedView(); - Style_SetFolding(hwnd, true); + Style_UpdateFoldingMargin(hwnd, true); int const baseLevel = SC_FOLDLEVELBASE; diff --git a/src/Notepad3.c b/src/Notepad3.c index 52a7bb621..274958aae 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -3658,11 +3658,7 @@ LRESULT MsgContextMenu(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) else { ScreenToClient(Globals.hwndEdit, &pt); } - - DocPos const iCurrentPos = SciCall_PositionFromPoint(pt.x, pt.y); - DocLn const curLn = SciCall_LineFromPosition(iCurrentPos); - int const bitmask = SciCall_MarkerGet(curLn) & (OCCURRENCE_MARKER_BITMASK() | BITMASK_GEN(int, SC_MARKNUM_HISTORY_REVERTED_TO_ORIGIN, 4)); - imenu = (bitmask && ((Settings.FocusViewMarkerMode & FVMM_LN_BACKGR) || !Settings.ShowBookmarkMargin)) ? MNU_MARGIN : MNU_EDIT; + imenu = bMargin ? MNU_MARGIN : MNU_EDIT; if (imenu == MNU_EDIT) { // modify configured items @@ -3674,8 +3670,10 @@ LRESULT MsgContextMenu(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) ModifyMenu(hStdCtxMenu, CMD_WEBACTION2, MF_BYCOMMAND | MF_STRING, CMD_WEBACTION2, Settings2.WebTmpl2MenuName); } } + // back to screen coordinates for menu display ClientToScreen(Globals.hwndEdit, &pt); + } break; case IDC_TOOLBAR: @@ -3718,8 +3716,7 @@ LRESULT MsgContextMenu(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) } if (imenu != MNU_NONE) { - TrackPopupMenuEx(GetSubMenu(hMenuCtx, imenu), - TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x + 1, pt.y + 1, hwnd, NULL); + TrackPopupMenuEx(GetSubMenu(hMenuCtx, imenu), TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x + 1, pt.y + 1, hwnd, NULL); } DestroyMenu(hMenuCtx); @@ -4137,8 +4134,9 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) CheckCmd(hmenu, IDM_VIEW_WORDWRAP, Globals.fvCurFile.bWordWrap); CheckCmd(hmenu, IDM_VIEW_LONGLINEMARKER, Settings.MarkLongLines); CheckCmd(hmenu, IDM_VIEW_SHOWINDENTGUIDES, Settings.ShowIndentGuides); - CheckCmd(hmenu, IDM_VIEW_LINENUMBERS, Settings.ShowLineNumbers); - CheckCmd(hmenu, IDM_VIEW_BOOKMARK_MARGIN, Settings.ShowBookmarkMargin); + CheckCmd(hmenu, IDM_VIEW_LINENUMBERS, SciCall_GetMarginWidthN(MARGIN_SCI_LINENUM) > 0); + CheckCmd(hmenu, IDM_VIEW_BOOKMARK_MARGIN, SciCall_GetMarginWidthN(MARGIN_SCI_BOOKMRK) > 0); + CheckCmd(hmenu, IDM_VIEW_CHGHIST_TOGGLE_MARGIN, SciCall_GetMarginWidthN(MARGIN_SCI_CHGHIST) > 0); CheckCmd(hmenu, IDM_VIEW_CHASING_DOCTAIL, FileWatching.MonitoringLog); CheckCmd(hmenu, IDM_VIEW_MARKOCCUR_ONOFF, IsMarkOccurrencesEnabled()); @@ -4166,7 +4164,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) CheckCmd(hmenu, IDM_VIEW_HYPERLINKHOTSPOTS, Settings.HyperlinkHotspot); - int const chState = Settings.ShowChangeHistory; + int const chState = Settings.ChangeHistoryMode; i = IDM_VIEW_CHGHIST_NONE; i += ((chState & ChgHist_ON) && (chState & ChgHist_MARGIN)) ? 1 : 0; i += ((chState & ChgHist_ON) && (chState & ChgHist_DOCTXT)) ? 2 : 0; @@ -5901,7 +5899,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case IDM_VIEW_FOLDING: Settings.ShowCodeFolding = !Settings.ShowCodeFolding; FocusedView.ShowCodeFolding = Settings.ShowCodeFolding; - Style_SetFolding(Globals.hwndEdit, FocusedView.ShowCodeFolding); + Style_UpdateFoldingMargin(Globals.hwndEdit, FocusedView.ShowCodeFolding); if (!FocusedView.ShowCodeFolding) { EditToggleFolds(EXPAND, true); } @@ -5957,29 +5955,31 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) int const chgHistState = SciCall_GetChangeHistory() & ChgHist_ON; switch (set) { case 0: - Settings.ShowChangeHistory = chgHistState & ~(ChgHist_MARGIN | ChgHist_DOCTXT); + Settings.ChangeHistoryMode = chgHistState & ~(ChgHist_MARGIN | ChgHist_DOCTXT); break; case 1: - Settings.ShowChangeHistory = (chgHistState | ChgHist_MARGIN) & ~ChgHist_DOCTXT; + Settings.ChangeHistoryMode = (chgHistState | ChgHist_MARGIN) & ~ChgHist_DOCTXT; break; case 2: - Settings.ShowChangeHistory = (chgHistState | ChgHist_DOCTXT) & ~ChgHist_MARGIN; + Settings.ChangeHistoryMode = (chgHistState | ChgHist_DOCTXT) & ~ChgHist_MARGIN; break; case 3: - Settings.ShowChangeHistory = chgHistState | (ChgHist_MARGIN | ChgHist_DOCTXT); + Settings.ChangeHistoryMode = chgHistState | (ChgHist_MARGIN | ChgHist_DOCTXT); break; default: break; } - SciCall_SetChangeHistory(Settings.ShowChangeHistory); - Style_SetChangeHistory(Globals.hwndEdit, ((Settings.ShowChangeHistory & ChgHist_ON) && (Settings.ShowChangeHistory & ChgHist_MARGIN))); + SciCall_SetChangeHistory(Settings.ChangeHistoryMode); + Style_UpdateChangeHistoryMargin(Globals.hwndEdit); UpdateMargins(true); break; - - } break; + case IDM_VIEW_CHGHIST_TOGGLE_MARGIN: + Settings.ChangeHistoryMargin = !Settings.ChangeHistoryMargin; + UpdateMargins(true); + break; case IDM_VIEW_HYPERLINKHOTSPOTS: Settings.HyperlinkHotspot = !Settings.HyperlinkHotspot; @@ -10050,9 +10050,9 @@ void UpdateMargins(const bool bForce) } else { SciCall_SetMarginWidthN(MARGIN_SCI_LINENUM, 0); } - Style_SetBookmark(Globals.hwndEdit, Settings.ShowBookmarkMargin); - Style_SetChangeHistory(Globals.hwndEdit, ((Settings.ShowChangeHistory & ChgHist_ON) && (Settings.ShowChangeHistory & ChgHist_MARGIN))); - Style_SetFolding(Globals.hwndEdit, (FocusedView.CodeFoldingAvailable && FocusedView.ShowCodeFolding)); + Style_UpdateBookmarkMargin(Globals.hwndEdit); + Style_UpdateChangeHistoryMargin(Globals.hwndEdit); + Style_UpdateFoldingMargin(Globals.hwndEdit, (FocusedView.CodeFoldingAvailable && FocusedView.ShowCodeFolding)); bShowLnNums = Settings.ShowLineNumbers; prevLineCount = currLineCount; } @@ -10132,7 +10132,7 @@ void UndoRedoRecordingStart() _UndoRedoActionMap(-1, NULL); SciCall_SetUndoCollection(true); SetSavePoint(); - SciCall_SetChangeHistory(SC_CHANGE_HISTORY_ENABLED | Settings.ShowChangeHistory); + SciCall_SetChangeHistory(SC_CHANGE_HISTORY_ENABLED | Settings.ChangeHistoryMode); UpdateMargins(true); } diff --git a/src/Styles.c b/src/Styles.c index 9efea17c5..d432d1b1e 100644 --- a/src/Styles.c +++ b/src/Styles.c @@ -1586,10 +1586,10 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) Style_HighlightCurrentLine(hwnd, Settings.HighlightCurrentLine); // bookmark line or marker - Style_SetBookmark(hwnd, Settings.ShowBookmarkMargin); + Style_UpdateBookmarkMargin(hwnd); // Change History - Style_SetChangeHistory(Globals.hwndEdit, ((Settings.ShowChangeHistory & ChgHist_ON) && (Settings.ShowChangeHistory & ChgHist_MARGIN))); + Style_UpdateChangeHistoryMargin(Globals.hwndEdit); // Hyperlink (URL) indicators Style_SetUrlHotSpot(hwnd); @@ -2032,29 +2032,30 @@ static int _GetMarkerMarginWidth(HWND hwnd) //============================================================================= // -// Style_SetFolding() +// Style_UpdateFoldingMargin() // -void Style_SetFolding(HWND hwnd, bool bShowMargin) +void Style_UpdateFoldingMargin(HWND hwnd, bool bShowMargin) { SciCall_SetMarginWidthN(MARGIN_SCI_FOLDING, (bShowMargin ? _GetMarkerMarginWidth(hwnd) : 0)); } //============================================================================= // -// Style_SetBookmark() +// Style_UpdateBookmarkMargin() // -void Style_SetBookmark(HWND hwnd, bool bShowMargin) +void Style_UpdateBookmarkMargin(HWND hwnd) { - SciCall_SetMarginWidthN(MARGIN_SCI_BOOKMRK, (bShowMargin ? _GetMarkerMarginWidth(hwnd) + 4 : 0)); + SciCall_SetMarginWidthN(MARGIN_SCI_BOOKMRK, (Settings.ShowBookmarkMargin ? _GetMarkerMarginWidth(hwnd) + 4 : 0)); } //============================================================================= // -// Style_SetChangeHistory() +// Style_UpdateChangeHistoryMargin() // -void Style_SetChangeHistory(HWND hwnd, bool bShowMargin) +void Style_UpdateChangeHistoryMargin(HWND hwnd) { + bool const bShowMargin = Settings.ChangeHistoryMargin && ((Settings.ChangeHistoryMode & ChgHist_ON) && (Settings.ChangeHistoryMode & ChgHist_MARGIN)); SciCall_SetMarginWidthN(MARGIN_SCI_CHGHIST, (bShowMargin ? _GetMarkerMarginWidth(hwnd) + 4 : 0)); } @@ -2159,7 +2160,7 @@ void Style_SetMargin(HWND hwnd, LPCWSTR lpszStyle) /// iStyle == STYLE_LINENUMBE //SciCall_MarkerSetBack(SC_MARKNUM_HISTORY_REVERTED_TO_ORIGIN, clrMarginBack); //SciCall_MarkerSetBack(SC_MARKNUM_HISTORY_SAVED, clrMarginBack); //SciCall_MarkerSetBack(SC_MARKNUM_HISTORY_REVERTED_TO_MODIFIED, clrMarginBack); - Style_SetChangeHistory(Globals.hwndEdit, ((Settings.ShowChangeHistory & ChgHist_ON) && (Settings.ShowChangeHistory & ChgHist_MARGIN))); + Style_UpdateChangeHistoryMargin(Globals.hwndEdit); // --- Code folding --- SciCall_SetMarginBackN(MARGIN_SCI_FOLDING, clrMarginBack); @@ -2227,8 +2228,8 @@ void Style_SetMargin(HWND hwnd, LPCWSTR lpszStyle) /// iStyle == STYLE_LINENUMBE } // set width - Style_SetBookmark(hwnd, Settings.ShowBookmarkMargin); - Style_SetFolding(hwnd, (FocusedView.CodeFoldingAvailable && FocusedView.ShowCodeFolding)); + Style_UpdateBookmarkMargin(hwnd); + Style_UpdateFoldingMargin(hwnd, (FocusedView.CodeFoldingAvailable && FocusedView.ShowCodeFolding)); } diff --git a/src/Styles.h b/src/Styles.h index 65b832bf7..e509c06e7 100644 --- a/src/Styles.h +++ b/src/Styles.h @@ -63,9 +63,9 @@ void Style_SetUrlHotSpot(HWND hwnd); void Style_SetInvisible(HWND hwnd, bool); //void Style_SetReadonly(HWND hwnd, bool); void Style_HighlightCurrentLine(HWND hwnd, int); -void Style_SetFolding(HWND hwnd, bool bShowMargin); -void Style_SetBookmark(HWND hwnd, bool bShowMargin); -void Style_SetChangeHistory(HWND hwnd, bool bShowMargin); +void Style_UpdateFoldingMargin(HWND hwnd, bool bShowMargin); +void Style_UpdateBookmarkMargin(HWND hwnd); +void Style_UpdateChangeHistoryMargin(HWND hwnd); void Style_SetMargin(HWND hwnd, LPCWSTR lpszStyle); bool Style_SetLexerFromFile(HWND hwnd,const HPATHL hpath); bool Style_MaybeBinaryFile(HWND hwnd, const HPATHL hpath); diff --git a/src/TypeDefs.h b/src/TypeDefs.h index a119cf15d..e876c3486 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -568,7 +568,8 @@ typedef struct SETTINGS_T { bool MatchBraces; bool AutoCloseTags; int HighlightCurrentLine; - int ShowChangeHistory; + int ChangeHistoryMode; + bool ChangeHistoryMargin; bool HyperlinkHotspot; int ColorDefHotspot; bool ScrollPastEOF; diff --git a/src/Version.h b/src/Version.h index 0b6394b79..940c941e9 100644 --- a/src/Version.h +++ b/src/Version.h @@ -78,7 +78,7 @@ #if defined(_MSC_VER) #if (_MSC_VER == 1933) #if (_MSC_FULL_VER >= 193331630) - #define VER_CPL MS Visual C++ 2022 v17.3.4 + #define VER_CPL MS Visual C++ 2022 v17.3.(4-5) #elif (_MSC_FULL_VER >= 193331629) #define VER_CPL MS Visual C++ 2022 v17.3.(0-3) #endif