diff options
author | Matti Tahvonen <matti.tahvonen@itmill.com> | 2007-04-18 06:58:19 +0000 |
---|---|---|
committer | Matti Tahvonen <matti.tahvonen@itmill.com> | 2007-04-18 06:58:19 +0000 |
commit | 47c360cde636ce70fff46f5e3376e27813503ab6 (patch) | |
tree | 996ed6e5c421094c95767bb1772afccec972de32 | |
parent | 78e180871a5f15d2bda91b6549b034fc8a2c7a53 (diff) | |
download | vaadin-framework-47c360cde636ce70fff46f5e3376e27813503ab6.tar.gz vaadin-framework-47c360cde636ce70fff46f5e3376e27813503ab6.zip |
fixes #510
svn changeset:1272/svn branch:trunk
-rw-r--r-- | src/com/itmill/toolkit/Application.java | 22 | ||||
-rw-r--r-- | src/com/itmill/toolkit/terminal/web/AjaxApplicationManager.java | 25 |
2 files changed, 37 insertions, 10 deletions
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; + } + } /** * <p> 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(); |