aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2007-04-18 06:58:19 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2007-04-18 06:58:19 +0000
commit47c360cde636ce70fff46f5e3376e27813503ab6 (patch)
tree996ed6e5c421094c95767bb1772afccec972de32
parent78e180871a5f15d2bda91b6549b034fc8a2c7a53 (diff)
downloadvaadin-framework-47c360cde636ce70fff46f5e3376e27813503ab6.tar.gz
vaadin-framework-47c360cde636ce70fff46f5e3376e27813503ab6.zip
fixes #510
svn changeset:1272/svn branch:trunk
-rw-r--r--src/com/itmill/toolkit/Application.java22
-rw-r--r--src/com/itmill/toolkit/terminal/web/AjaxApplicationManager.java25
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();