Change-Id: I9ba142a35ab887bb3a71c7311064ebab77bc01batags/7.1.10
@@ -53,6 +53,11 @@ | |||
margin: 0; | |||
overflow: hidden; | |||
} | |||
.v-modal-window-open { | |||
overflow: hidden; | |||
} | |||
$font-size: 16px; | |||
$line-height: normal; | |||
@mixin base { |
@@ -22,6 +22,7 @@ import java.util.Comparator; | |||
import com.google.gwt.core.client.Scheduler; | |||
import com.google.gwt.core.client.Scheduler.ScheduledCommand; | |||
import com.google.gwt.dom.client.Document; | |||
import com.google.gwt.dom.client.Style; | |||
import com.google.gwt.dom.client.Style.Position; | |||
import com.google.gwt.dom.client.Style.Unit; | |||
@@ -67,6 +68,8 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, | |||
public static final String CLASSNAME = "v-window"; | |||
private static final String MODAL_WINDOW_OPEN_CLASSNAME = "v-modal-window-open"; | |||
private static final int STACKING_OFFSET_PIXELS = 15; | |||
public static final int Z_INDEX = 10000; | |||
@@ -528,10 +531,14 @@ public class VWindow extends VOverlay implements ShortcutActionHandlerOwner, | |||
getOverlayContainer().appendChild(getModalityCurtain()); | |||
} | |||
Document.get().getBody().addClassName(MODAL_WINDOW_OPEN_CLASSNAME); | |||
} | |||
private void hideModalityCurtain() { | |||
Document.get().getBody().removeClassName(MODAL_WINDOW_OPEN_CLASSNAME); | |||
modalityCurtain.removeFromParent(); | |||
if (BrowserInfo.get().isIE()) { | |||
// IE leaks memory in certain cases unless we release the reference | |||
// (#9197) |
@@ -0,0 +1,58 @@ | |||
/* | |||
* Copyright 2000-2013 Vaadin Ltd. | |||
* | |||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not | |||
* use this file except in compliance with the License. You may obtain a copy of | |||
* the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, software | |||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |||
* License for the specific language governing permissions and limitations under | |||
* the License. | |||
*/ | |||
package com.vaadin.tests.components.window; | |||
import com.vaadin.server.VaadinRequest; | |||
import com.vaadin.tests.components.AbstractTestUI; | |||
import com.vaadin.ui.VerticalLayout; | |||
import com.vaadin.ui.Window; | |||
/** | |||
* | |||
* @since 7.1.9 | |||
* @author Vaadin Ltd | |||
*/ | |||
public class ScrollingBodyElementWithModalOpened extends AbstractTestUI { | |||
@Override | |||
protected void setup(VaadinRequest request) { | |||
VerticalLayout verticalLayout = new VerticalLayout(); | |||
verticalLayout.setHeight("10000px"); | |||
Window window = new Window("Caption"); | |||
VerticalLayout layout = new VerticalLayout(); | |||
layout.setWidth("300px"); | |||
layout.setHeight("300px"); | |||
window.setContent(layout); | |||
addWindow(window); | |||
window.setModal(true); | |||
addComponent(verticalLayout); | |||
} | |||
@Override | |||
protected String getTestDescription() { | |||
return "Screen must not scroll with modal opened."; | |||
} | |||
@Override | |||
protected Integer getTicketNumber() { | |||
return 12899; | |||
} | |||
} |
@@ -0,0 +1,47 @@ | |||
/* | |||
* Copyright 2000-2013 Vaadin Ltd. | |||
* | |||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not | |||
* use this file except in compliance with the License. You may obtain a copy of | |||
* the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, software | |||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |||
* License for the specific language governing permissions and limitations under | |||
* the License. | |||
*/ | |||
package com.vaadin.tests.components.window; | |||
import org.junit.Test; | |||
import org.openqa.selenium.WebElement; | |||
import com.vaadin.testbench.By; | |||
import com.vaadin.testbench.commands.TestBenchElementCommands; | |||
import com.vaadin.tests.tb3.MultiBrowserTest; | |||
/** | |||
* | |||
* @since | |||
* @author Vaadin Ltd | |||
*/ | |||
public class ScrollingBodyElementWithModalOpenedTest extends MultiBrowserTest { | |||
@Test | |||
public void testWindowScrollbars() throws Exception { | |||
openTestURL(); | |||
WebElement bodyElement = driver.findElement(By | |||
.className("v-modal-window-open")); | |||
TestBenchElementCommands scrollable = testBenchElement(bodyElement); | |||
scrollable.scroll(1000); | |||
Thread.sleep(1000); | |||
compareScreen(getScreenshotBaseName()); | |||
} | |||
} |