Fix flickering issue if Doc is modified outside Notepad++
Fixes #2010, fixes #1018, fixes #1761, closes #2952
This commit is contained in:
parent
701d1f79d7
commit
beda685dc6
@ -5001,6 +5001,18 @@ void Notepad_plus::notifyBufferChanged(Buffer * buffer, int mask)
|
|||||||
// Then we ask user to update
|
// Then we ask user to update
|
||||||
didDialog = true;
|
didDialog = true;
|
||||||
|
|
||||||
|
// This section deal with the flicking issue which was caused by f2cd779 (discussed in detail @ #1018)
|
||||||
|
// Idea is :
|
||||||
|
// 1. First get the current caret position.
|
||||||
|
// 2. Send WM_LBUTTONDOWN and WM_LBUTTONUP message (which acts as double click at 0,0)
|
||||||
|
// 3. Now set caret back to original position.
|
||||||
|
//
|
||||||
|
auto curPos = _pEditView->execute(SCI_GETCURRENTPOS);
|
||||||
|
::PostMessage(_pEditView->getHSelf(), WM_LBUTTONDOWN, 0, 0);
|
||||||
|
::PostMessage(_pEditView->getHSelf(), WM_LBUTTONUP, 0, 0);
|
||||||
|
::PostMessage(_pEditView->getHSelf(), SCI_SETSEL, curPos, curPos);
|
||||||
|
// Now the flickering issue is not seen.
|
||||||
|
|
||||||
if (doReloadOrNot(buffer->getFullPathName(), buffer->isDirty()) != IDYES)
|
if (doReloadOrNot(buffer->getFullPathName(), buffer->isDirty()) != IDYES)
|
||||||
break; //abort
|
break; //abort
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user