]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixes #510
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 18 Apr 2007 06:58:19 +0000 (06:58 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 18 Apr 2007 06:58:19 +0000 (06:58 +0000)
svn changeset:1272/svn branch:trunk

src/com/itmill/toolkit/Application.java
src/com/itmill/toolkit/terminal/web/AjaxApplicationManager.java

index 4b08b4579d68c7dd6f12a362baa275e383c23533..5211a15c15a7ffdffc5f4bfb2c4224c0e334427f 100644 (file)
@@ -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>
index 29270595cf0c15ddc45d82a8135c707cb11073b6..9c43abd5b828b817bae5344e0c166773472f9fa1 100644 (file)
@@ -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();