diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/views/console/shell/ShellPane.java b/src/gwt/src/org/rstudio/studio/client/workbench/views/console/shell/ShellPane.java index 441ce798051..dbbd62ff979 100644 --- a/src/gwt/src/org/rstudio/studio/client/workbench/views/console/shell/ShellPane.java +++ b/src/gwt/src/org/rstudio/studio/client/workbench/views/console/shell/ShellPane.java @@ -539,6 +539,9 @@ public String processCommandEntry() String promptText = prompt_.getElement().getInnerText(); String commandText = input_.getCode(); input_.setInputText(""); + // Force render to avoid subtle command movement in the console, caused + // by the prompt disappearing before the input line does + input_.forceImmediateRender(); prompt_.setHTML(""); SpanElement pendingPrompt = Document.get().createSpanElement(); diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/views/source/editors/text/AceEditor.java b/src/gwt/src/org/rstudio/studio/client/workbench/views/source/editors/text/AceEditor.java index 1ff2f9d058b..458d76ad0e5 100644 --- a/src/gwt/src/org/rstudio/studio/client/workbench/views/source/editors/text/AceEditor.java +++ b/src/gwt/src/org/rstudio/studio/client/workbench/views/source/editors/text/AceEditor.java @@ -730,6 +730,11 @@ public void scrollToCursor(ScrollPanel scrollPanel, int padding) padding); } + public void forceImmediateRender() + { + widget_.getEditor().getRenderer().forceImmediateRender(); + } + private final HandlerManager handlers_ = new HandlerManager(this); private final AceEditorWidget widget_; private CompletionManager completionManager_; diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/views/source/editors/text/ace/Renderer.java b/src/gwt/src/org/rstudio/studio/client/workbench/views/source/editors/text/ace/Renderer.java index d65895db0b7..88c0665ab5a 100644 --- a/src/gwt/src/org/rstudio/studio/client/workbench/views/source/editors/text/ace/Renderer.java +++ b/src/gwt/src/org/rstudio/studio/client/workbench/views/source/editors/text/ace/Renderer.java @@ -96,4 +96,8 @@ public native final void scrollToY(int scrollTop) /*-{ public native final void scrollToX(int scrollLeft) /*-{ this.scrollToX(scrollLeft); }-*/; + + public native final void forceImmediateRender() /*-{ + this.$renderChanges(this.CHANGE_FULL); + }-*/; }