Sfoglia il codice sorgente

Fix for scrolling with modal opened. (#12899)

Change-Id: I9ba142a35ab887bb3a71c7311064ebab77bc01ba
tags/7.1.10
Felype Santiago Ferreira 10 anni fa
parent
commit
fbc48c6ab7

+ 5
- 0
WebContent/VAADIN/themes/base/base.scss Vedi File

@@ -53,6 +53,11 @@
margin: 0;
overflow: hidden;
}

.v-modal-window-open {
overflow: hidden;
}

$font-size: 16px;
$line-height: normal;
@mixin base {

+ 7
- 0
client/src/com/vaadin/client/ui/VWindow.java Vedi File

@@ -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)

+ 58
- 0
uitest/src/com/vaadin/tests/components/window/ScrollingBodyElementWithModalOpened.java Vedi File

@@ -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;
}
}

+ 47
- 0
uitest/src/com/vaadin/tests/components/window/ScrollingBodyElementWithModalOpenedTest.java Vedi File

@@ -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());
}

}

Loading…
Annulla
Salva