diff --git a/modules/ve/ce/ve.ce.Surface.js b/modules/ve/ce/ve.ce.Surface.js index ec6300420f..681b5ea5d3 100644 --- a/modules/ve/ce/ve.ce.Surface.js +++ b/modules/ve/ce/ve.ce.Surface.js @@ -253,7 +253,13 @@ ve.ce.Surface.prototype.destroy = function () { * This is used when switching between surfaces, e.g. when closing a dialog window. */ ve.ce.Surface.prototype.focus = function () { - this.documentView.getDocumentNode().$[0].focus(); + var $document = this.documentView.getDocumentNode().$, + $window = $( ve.Element.static.getWindow( $document ) ), + scrollTop = $window.scrollTop(); + + $document[0].focus(); + // Calling focus sets the cursor to zero offset, so we need to restore scrollTop + $window.scrollTop( scrollTop ); this.focusedNode = null; this.onChange( null, this.surface.getModel().selection ); };