don't generate invokeLater runnable on each document change event (IDEA-153495)

This commit is contained in:
Dmitry Batrak
2016-03-25 17:57:10 +03:00
parent dffea1772b
commit 2962cbd2db
@@ -288,11 +288,13 @@ class TextEditorComponent extends JBLoadingPanel implements DataProvider {
* We can reuse this runnable to decrease number of allocated object.
*/
private final Runnable myUpdateRunnable;
private boolean myUpdateScheduled;
public MyDocumentListener() {
myUpdateRunnable = new Runnable() {
@Override
public void run() {
myUpdateScheduled = false;
updateModifiedProperty();
}
};
@@ -300,8 +302,11 @@ class TextEditorComponent extends JBLoadingPanel implements DataProvider {
@Override
public void documentChanged(DocumentEvent e) {
// document's timestamp is changed later on undo or PSI changes
ApplicationManager.getApplication().invokeLater(myUpdateRunnable);
if (!myUpdateScheduled) {
// document's timestamp is changed later on undo or PSI changes
ApplicationManager.getApplication().invokeLater(myUpdateRunnable);
myUpdateScheduled = true;
}
}
}