[EU-FOSSA] Enhance the macroable detection to avoid crash
This commit is contained in:
parent
d7c942ee2f
commit
da2d14436c
@ -54,7 +54,7 @@ void Notepad_plus::macroPlayback(Macro macro)
|
|||||||
|
|
||||||
for (Macro::iterator step = macro.begin(); step != macro.end(); ++step)
|
for (Macro::iterator step = macro.begin(); step != macro.end(); ++step)
|
||||||
{
|
{
|
||||||
if (step->isPlayable())
|
if (step->isScintillaMacro())
|
||||||
step->PlayBack(this->_pPublicInterface, _pEditView);
|
step->PlayBack(this->_pPublicInterface, _pEditView);
|
||||||
else
|
else
|
||||||
_findReplaceDlg.execSavedCommand(step->_message, step->_lParameter, step->_sParameter);
|
_findReplaceDlg.execSavedCommand(step->_message, step->_lParameter, step->_sParameter);
|
||||||
|
@ -666,26 +666,34 @@ recordedMacroStep::recordedMacroStep(int iMessage, uptr_t wParam, uptr_t lParam,
|
|||||||
|
|
||||||
// code comes from Scintilla's Editor.cxx:
|
// code comes from Scintilla's Editor.cxx:
|
||||||
// void Editor::NotifyMacroRecord(unsigned int iMessage, uptr_t wParam, sptr_t lParam)
|
// void Editor::NotifyMacroRecord(unsigned int iMessage, uptr_t wParam, sptr_t lParam)
|
||||||
bool recordedMacroStep::isMacroable(unsigned int iMessage)
|
bool recordedMacroStep::isMacroable() const
|
||||||
{
|
{
|
||||||
// Enumerates all macroable messages
|
// Enumerates all macroable messages
|
||||||
switch (iMessage)
|
switch (_message)
|
||||||
{
|
{
|
||||||
|
case SCI_REPLACESEL: // (<unused>, const char *text)
|
||||||
|
case SCI_ADDTEXT: // (int length, const char *s)
|
||||||
|
case SCI_INSERTTEXT: // (int pos, const char *text)
|
||||||
|
case SCI_APPENDTEXT: // (int length, const char *s)
|
||||||
|
case SCI_SEARCHNEXT: // (int searchFlags, const char *text)
|
||||||
|
case SCI_SEARCHPREV: // (int searchFlags, const char *text)
|
||||||
|
{
|
||||||
|
if (_macroType == mtUseSParameter)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
case SCI_GOTOLINE: // (int line)
|
||||||
|
case SCI_GOTOPOS: // (int position)
|
||||||
|
case SCI_SETSELECTIONMODE: // (int mode)
|
||||||
case SCI_CUT:
|
case SCI_CUT:
|
||||||
case SCI_COPY:
|
case SCI_COPY:
|
||||||
case SCI_PASTE:
|
case SCI_PASTE:
|
||||||
case SCI_CLEAR:
|
case SCI_CLEAR:
|
||||||
case SCI_REPLACESEL:
|
|
||||||
case SCI_ADDTEXT:
|
|
||||||
case SCI_INSERTTEXT:
|
|
||||||
case SCI_APPENDTEXT:
|
|
||||||
case SCI_CLEARALL:
|
case SCI_CLEARALL:
|
||||||
case SCI_SELECTALL:
|
case SCI_SELECTALL:
|
||||||
case SCI_GOTOLINE:
|
|
||||||
case SCI_GOTOPOS:
|
|
||||||
case SCI_SEARCHANCHOR:
|
case SCI_SEARCHANCHOR:
|
||||||
case SCI_SEARCHNEXT:
|
|
||||||
case SCI_SEARCHPREV:
|
|
||||||
case SCI_LINEDOWN:
|
case SCI_LINEDOWN:
|
||||||
case SCI_LINEDOWNEXTEND:
|
case SCI_LINEDOWNEXTEND:
|
||||||
case SCI_PARADOWN:
|
case SCI_PARADOWN:
|
||||||
@ -761,7 +769,6 @@ bool recordedMacroStep::isMacroable(unsigned int iMessage)
|
|||||||
case SCI_HOMEDISPLAYEXTEND:
|
case SCI_HOMEDISPLAYEXTEND:
|
||||||
case SCI_LINEENDDISPLAY:
|
case SCI_LINEENDDISPLAY:
|
||||||
case SCI_LINEENDDISPLAYEXTEND:
|
case SCI_LINEENDDISPLAYEXTEND:
|
||||||
case SCI_SETSELECTIONMODE:
|
|
||||||
case SCI_LINEDOWNRECTEXTEND:
|
case SCI_LINEDOWNRECTEXTEND:
|
||||||
case SCI_LINEUPRECTEXTEND:
|
case SCI_LINEUPRECTEXTEND:
|
||||||
case SCI_CHARLEFTRECTEXTEND:
|
case SCI_CHARLEFTRECTEXTEND:
|
||||||
@ -778,7 +785,12 @@ bool recordedMacroStep::isMacroable(unsigned int iMessage)
|
|||||||
case SCI_MOVESELECTEDLINESDOWN:
|
case SCI_MOVESELECTEDLINESDOWN:
|
||||||
case SCI_SCROLLTOSTART:
|
case SCI_SCROLLTOSTART:
|
||||||
case SCI_SCROLLTOEND:
|
case SCI_SCROLLTOEND:
|
||||||
|
{
|
||||||
|
if (_macroType == mtUseLParameter)
|
||||||
return true;
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Filter out all others like display changes. Also, newlines are redundant
|
// Filter out all others like display changes. Also, newlines are redundant
|
||||||
// with char insert messages.
|
// with char insert messages.
|
||||||
|
@ -300,8 +300,8 @@ struct recordedMacroStep {
|
|||||||
bool isValid() const {
|
bool isValid() const {
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
bool isPlayable() const {return _macroType <= mtMenuCommand;};
|
bool isScintillaMacro() const {return _macroType <= mtMenuCommand;};
|
||||||
bool isMacroable(unsigned int iMessage);
|
bool isMacroable() const;
|
||||||
|
|
||||||
void PlayBack(Window* pNotepad, ScintillaEditView *pEditView);
|
void PlayBack(Window* pNotepad, ScintillaEditView *pEditView);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user