From 2962cbd2dbba9af358cb44e9d0c97e3aecd0000a Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Fri, 25 Mar 2016 15:08:00 +0300 Subject: [PATCH] don't generate invokeLater runnable on each document change event (IDEA-153495) --- .../fileEditor/impl/text/TextEditorComponent.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorComponent.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorComponent.java index da2defd8fcea..0bb52db179e3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorComponent.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorComponent.java @@ -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; + } } }