From: Jouni Koivuviita Date: Fri, 26 Oct 2007 12:22:50 +0000 (+0000) Subject: Window closing now done before component update (quick fix, proper fix should be... X-Git-Tag: 6.7.0.beta1~5776 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=f82cfa5bdd6cb77f3c44d646d2dd831c15c7bb81;p=vaadin-framework.git Window closing now done before component update (quick fix, proper fix should be done on server side). svn changeset:2598/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java index 435d9e9a4d..adae8e218c 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java @@ -13,6 +13,7 @@ import com.google.gwt.user.client.ui.Widget; import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; import com.itmill.toolkit.terminal.gwt.client.Paintable; import com.itmill.toolkit.terminal.gwt.client.UIDL; +import com.itmill.toolkit.terminal.gwt.client.Util; /** * "Sub window" component. @@ -169,14 +170,14 @@ public class IWindow extends PopupPanel implements Paintable, ScrollListener { public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { this.id = uidl.getId(); this.client = client; - - if (client.updateComponent(this, uidl, false)) - return; - + if (uidl.hasAttribute("invisible")) { this.hide(); return; } + + if (client.updateComponent(this, uidl, false)) + return; // Initialize the width from UIDL if (uidl.hasVariable("width")) { @@ -274,12 +275,15 @@ public class IWindow extends PopupPanel implements Paintable, ScrollListener { bringToFront(); } Element target = DOM.eventGetTarget(event); - if (dragging || DOM.compare(header, target)) + if (dragging || DOM.compare(header, target)) { onHeaderEvent(event); - else if (resizing || DOM.compare(resizeBox, target)) + DOM.eventCancelBubble(event, true); + } else if (resizing || DOM.compare(resizeBox, target)) { onResizeEvent(event); - else if (DOM.compare(target, closeBox) && type == Event.ONCLICK) { + DOM.eventCancelBubble(event, true); + } else if (DOM.compare(target, closeBox) && type == Event.ONCLICK) { onCloseClick(); + DOM.eventCancelBubble(event, true); } } @@ -310,6 +314,7 @@ public class IWindow extends PopupPanel implements Paintable, ScrollListener { } break; default: + DOM.eventPreventDefault(event); break; } } @@ -328,6 +333,8 @@ public class IWindow extends PopupPanel implements Paintable, ScrollListener { client.updateVariable(id, "width", w, false); client.updateVariable(id, "height", h, false); } + // Update child widget dimensions + Util.runAncestorsLayout(this); } public void setWidth(String width) {