From 19144c79745e0c7e58a1ca522aa13936f6ecf993 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Mon, 22 Oct 2018 13:51:30 +0200 Subject: [PATCH] + fix: enable menu for aligning lines only if multiple lines are selected --- src/Notepad3.c | 23 +++++++++-------------- src/SciCall.h | 4 +++- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/Notepad3.c b/src/Notepad3.c index 2b5acef3b..ca05c7fd0 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -2621,16 +2621,14 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) { UNUSED(lParam); - //DocPos p; - bool b,e,s; - - HMENU hmenu = (HMENU)wParam; + HMENU const hmenu = (HMENU)wParam; bool const ro = SciCall_GetReadOnly(); DocPos const iCurPos = SciCall_GetCurrentPos(); DocLn const iCurLine = SciCall_LineFromPosition(iCurPos); int i = (int)StringCchLenW(Globals.CurrentFile,COUNTOF(Globals.CurrentFile)); + EnableCmd(hmenu,IDM_FILE_REVERT,i); EnableCmd(hmenu, CMD_RELOADASCIIASUTF8, i); EnableCmd(hmenu, CMD_RELOADFORCEDETECTION, i); @@ -2695,10 +2693,11 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) EnableCmd(hmenu,IDM_EDIT_UNDO,SciCall_CanUndo() && !ro); EnableCmd(hmenu,IDM_EDIT_REDO,SciCall_CanRedo() && !ro); - s = SciCall_IsSelectionEmpty(); - e = (SciCall_GetTextLength() == 0); - b = SciCall_CanPaste(); - + bool const s = SciCall_IsSelectionEmpty(); + bool const e = (SciCall_GetTextLength() == 0); + bool const b = SciCall_CanPaste(); + bool const mls = Sci_IsMultiLineSelection(); + EnableCmd(hmenu,IDM_EDIT_CUT, !e && !ro); // allow Ctrl-X w/o selection EnableCmd(hmenu,IDM_EDIT_COPY, !e); // allow Ctrl-C w/o selection @@ -2739,10 +2738,8 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) EnableCmd(hmenu, IDM_EDIT_COMPRESS_BLANKS, !ro); EnableCmd(hmenu, IDM_EDIT_MODIFYLINES, !ro); - EnableCmd(hmenu, IDM_EDIT_ALIGN, !ro); - EnableCmd(hmenu, IDM_EDIT_SORTLINES, - (SciCall_LineFromPosition(SciCall_GetSelectionEnd()) - - SciCall_LineFromPosition(SciCall_GetSelectionStart())) >= 1); + EnableCmd(hmenu, IDM_EDIT_ALIGN, mls && !ro); + EnableCmd(hmenu, IDM_EDIT_SORTLINES, mls && !ro); //EnableCmd(hmenu,IDM_EDIT_COLUMNWRAP,i /*&& IsWindowsNT()*/); EnableCmd(hmenu,IDM_EDIT_SPLITLINES,!s && !ro); @@ -2797,8 +2794,6 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) EnableCmd(hmenu, IDM_EDIT_INSERT_GUID, !ro); - e = (SciCall_GetTextLength() == 0); - EnableCmd(hmenu,IDM_EDIT_FIND, !e); EnableCmd(hmenu,IDM_EDIT_SAVEFIND, !e); EnableCmd(hmenu,IDM_EDIT_FINDNEXT, !e); diff --git a/src/SciCall.h b/src/SciCall.h index afba5dd47..398a5d8f4 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -466,7 +466,9 @@ DeclareSciCallR0(IsIMEModeCJK, ISIMEMODECJK, bool) DeclareSciCallR0(IsSelectionEmpty, GETSELECTIONEMPTY, bool) DeclareSciCallR0(IsSelectionRectangle, SELECTIONISRECTANGLE, bool) -#define Sci_IsSingleLineSelection() (SciCall_LineFromPosition(SciCall_GetCurrentPos()) == SciCall_LineFromPosition(SciCall_GetAnchor())) +#define Sci_IsSingleLineSelection() (SciCall_LineFromPosition(SciCall_GetSelectionEnd()) == SciCall_LineFromPosition(SciCall_GetSelectionStart())) +#define Sci_IsMultiLineSelection() ((SciCall_LineFromPosition(SciCall_GetSelectionEnd()) - SciCall_LineFromPosition(SciCall_GetSelectionStart())) >= 1) + #define Sci_IsForwardSelection() (SciCall_GetAnchor() <= SciCall_GetCurrentPos()) #define Sci_GetEOLLen() ((SciCall_GetEOLMode() == SC_EOL_CRLF) ? 2 : 1)