From 47c360cde636ce70fff46f5e3376e27813503ab6 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Wed, 18 Apr 2007 06:58:19 +0000 Subject: [PATCH] fixes #510 svn changeset:1272/svn branch:trunk --- src/com/itmill/toolkit/Application.java | 22 ++++++++++++++++ .../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; + } + } /** *

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(); -- 2.39.5