From: Matti Tahvonen Date: Wed, 18 Apr 2007 06:58:19 +0000 (+0000) Subject: fixes #510 X-Git-Tag: 6.7.0.beta1~6431 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=47c360cde636ce70fff46f5e3376e27813503ab6;p=vaadin-framework.git fixes #510 svn changeset:1272/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/Application.java b/src/com/itmill/toolkit/Application.java index 4b08b4579d..5211a15c15 100644 --- a/src/com/itmill/toolkit/Application.java +++ b/src/com/itmill/toolkit/Application.java @@ -192,6 +192,28 @@ public abstract class Application implements URIHandler, Terminal.ErrorListener private String logoutURL = null; private Focusable pendingFocus; + + /** + * Flag to indicate if first ajax request is sent + */ + private boolean ajaxInitSent = false; + + /** + * This function should anly be called in AjaxApplicationManager to + * tell ajax engine (browser) that this is application restart. Returns + * true on first call, false on subsequent calls. + * + * TODO consider moving this to WebApplicationContext + * + * @return true if in ajax init state + */ + public boolean ajaxInit() { + if(this.ajaxInitSent) { + return false; + } else { + return this.ajaxInitSent = true; + } + } /** *

diff --git a/src/com/itmill/toolkit/terminal/web/AjaxApplicationManager.java b/src/com/itmill/toolkit/terminal/web/AjaxApplicationManager.java index 29270595cf..9c43abd5b8 100644 --- a/src/com/itmill/toolkit/terminal/web/AjaxApplicationManager.java +++ b/src/com/itmill/toolkit/terminal/web/AjaxApplicationManager.java @@ -56,7 +56,6 @@ import com.itmill.toolkit.terminal.DownloadStream; import com.itmill.toolkit.terminal.Paintable; import com.itmill.toolkit.terminal.URIHandler; import com.itmill.toolkit.terminal.Paintable.RepaintRequestEvent; -import com.itmill.toolkit.ui.AbstractComponent; import com.itmill.toolkit.ui.Component; import com.itmill.toolkit.ui.FrameWindow; import com.itmill.toolkit.ui.Window; @@ -305,15 +304,21 @@ public class AjaxApplicationManager implements } } - // add meta instruction for client to set focus if it is set - Paintable f = (Paintable) application.consumeFocus(); - if (f != null) { - paintTarget.startTag("meta"); - paintTarget.startTag("focus"); - paintTarget.addAttribute("pid", getPaintableId(f)); - paintTarget.endTag("focus"); - paintTarget.endTag("meta"); - } + // add meta instruction for client to set focus if it is set + Paintable f = (Paintable) application.consumeFocus(); + // .. or initializion (first uidl-request) + boolean init = application.ajaxInit(); + if(init || f != null) { + paintTarget.startTag("meta"); + if(init) + paintTarget.addAttribute("appInit", true); + if(f != null) { + paintTarget.startTag("focus"); + paintTarget.addAttribute("pid", getPaintableId(f)); + paintTarget.endTag("focus"); + } + paintTarget.endTag("meta"); + } paintTarget.close(); out.flush();