SideBySide2: Fix transfer of focus into comment box

Focus needs to be transferred after the browser event loop returns.
I don't recall specifically why this is necessary, but without the
defer the new comment box does not have focus.

Setting the cursor position immediately after transferring focus
appears to work, so these tasks can be combined together.

Change-Id: Ic28a1ba8d346779f20b4aef0bd794469377c3ddc
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.java
index c618bbe..4a95018 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.java
@@ -24,7 +24,7 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.RepeatingCommand;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.dom.client.BlurEvent;
 import com.google.gwt.event.dom.client.ClickEvent;
@@ -183,23 +183,24 @@
 
     setRangeHighlight(edit);
     if (edit) {
-      final String msg = comment.message() != null
+      String msg = comment.message() != null
           ? comment.message().trim()
           : "";
       editArea.setValue(msg);
-      editArea.setFocus(true);
       cancel.setVisible(!isNew());
       expandText();
       editAreaHeight = editArea.getOffsetHeight();
-      if (msg.length() > 0) {
-        Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
-          @Override
-          public boolean execute() {
-            editArea.setCursorPos(msg.length());
-            return false;
+
+      final int len = msg.length();
+      Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+        @Override
+        public void execute() {
+          editArea.setFocus(true);
+          if (len > 0) {
+            editArea.setCursorPos(len);
           }
-        }, 0);
-      }
+        }
+      });
     } else {
       expandTimer.cancel();
       resizeTimer.cancel();