import com.vaadin.terminal.gwt.client.ComponentState;
import com.vaadin.terminal.gwt.client.Connector;
import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangedEvent;
+import com.vaadin.terminal.gwt.client.LayoutManager;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.terminal.gwt.client.communication.ServerRpc;
import com.vaadin.terminal.gwt.client.communication.StateChangeEvent;
VAbstractSplitPanel splitPanel = getWidget();
splitPanel.setSplitPosition(splitPanel.position);
splitPanel.updateSizes();
+ // Report relative sizes in other direction for quicker propagation
+ for (ComponentConnector child : children) {
+ reportOtherDimension(child);
+ }
+ }
+
+ private void reportOtherDimension(ComponentConnector child) {
+ LayoutManager layoutManager = getLayoutManager();
+ if (this instanceof HorizontalSplitPanelConnector) {
+ if (child.isRelativeHeight()) {
+ int height = layoutManager.getInnerHeight(getWidget()
+ .getElement());
+ layoutManager.reportHeightAssignedToRelative(child, height);
+ }
+ } else {
+ if (child.isRelativeWidth()) {
+ int width = layoutManager.getInnerWidth(getWidget()
+ .getElement());
+ layoutManager.reportWidthAssignedToRelative(child, width);
+ }
+ }
}
@Override
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.BrowserInfo;
+import com.vaadin.terminal.gwt.client.ConnectorMap;
+import com.vaadin.terminal.gwt.client.LayoutManager;
import com.vaadin.terminal.gwt.client.Util;
import com.vaadin.terminal.gwt.client.VConsole;
import com.vaadin.terminal.gwt.client.ui.VAbstractSplitPanel.SplitterMoveHandler.SplitterMoveEvent;
DOM.setStyleAttribute(secondContainer, "left",
(pixelPosition + getSplitterSize()) + "px");
+ LayoutManager layoutManager = LayoutManager.get(client);
+ if (layoutManager.isLayoutRunning()) {
+ ConnectorMap connectorMap = ConnectorMap.get(client);
+ if (firstChild != null) {
+ layoutManager.reportWidthAssignedToRelative(
+ connectorMap.getConnector(firstChild),
+ pixelPosition);
+ }
+ if (secondChild != null) {
+ layoutManager.reportWidthAssignedToRelative(
+ connectorMap.getConnector(secondChild),
+ secondContainerWidth);
+ }
+ }
break;
case ORIENTATION_VERTICAL:
wholeSize = DOM.getElementPropertyInt(wrapper, "clientHeight");
DOM.setStyleAttribute(secondContainer, "top",
(pixelPosition + getSplitterSize()) + "px");
+ layoutManager = LayoutManager.get(client);
+ if (layoutManager.isLayoutRunning()) {
+ ConnectorMap connectorMap = ConnectorMap.get(client);
+ if (firstChild != null) {
+ layoutManager.reportHeightAssignedToRelative(
+ connectorMap.getConnector(firstChild),
+ pixelPosition);
+ }
+ if (secondChild != null) {
+ layoutManager.reportHeightAssignedToRelative(
+ connectorMap.getConnector(secondChild),
+ secondContainerHeight);
+ }
+ }
+
break;
}
-
}
void setFirstWidget(Widget w) {