Przeglądaj źródła

Allow a resize listener to fire a resize listener (#20338)

Change-Id: I6b045c3a693e88b3cba182ae9ea68cfa98c914b0
tags/7.7.4
Artur Signell 7 lat temu
rodzic
commit
ece3ac4f2f

+ 4
- 3
client/src/main/java/com/vaadin/client/LayoutManager.java Wyświetl plik

@@ -350,9 +350,12 @@ public class LayoutManager {

int firedListeners = 0;
if (!listenersToFire.isEmpty()) {
HashSet<Element> listenersCopy = new HashSet<Element>(
listenersToFire);
listenersToFire.clear();
firedListeners = listenersToFire.size();
Profiler.enter("Layout fire resize events");
for (Element element : listenersToFire) {
for (Element element : listenersCopy) {
Collection<ElementResizeListener> listeners = elementResizeListeners
.get(element);
if (listeners != null) {
@@ -393,8 +396,6 @@ public class LayoutManager {
"Layout fire resize events - listeners not null");
}
}
listenersToFire.clear();

Profiler.leave("Layout fire resize events");
}


+ 29
- 0
uitest/src/main/java/com/vaadin/tests/layoutmanager/ConcurrentModificationUI.java Wyświetl plik

@@ -0,0 +1,29 @@
package com.vaadin.tests.layoutmanager;

import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Panel;
import com.vaadin.ui.UI;

public class ConcurrentModificationUI extends UI {

@Override
protected void init(VaadinRequest request) {
Panel panel = new Panel();
setContent(panel);

FormLayout form = new FormLayout();
panel.setContent(form);

HorizontalLayout horizLyt = new HorizontalLayout();
form.addComponent(horizLyt);

CssLayout cssLyt = new CssLayout();
horizLyt.addComponent(cssLyt);
horizLyt.setComponentAlignment(cssLyt, Alignment.MIDDLE_LEFT);
}

}

+ 16
- 0
uitest/src/test/java/com/vaadin/tests/layoutmanager/ConcurrentModificationUITest.java Wyświetl plik

@@ -0,0 +1,16 @@
package com.vaadin.tests.layoutmanager;

import org.junit.Test;

import com.vaadin.tests.tb3.SingleBrowserTest;

public class ConcurrentModificationUITest extends SingleBrowserTest {

@Test
public void noExceptionWhenEnlarging() {
testBench().resizeViewPortTo(100, 100);
openTestURL("debug");
testBench().resizeViewPortTo(200, 200);
assertNoErrorNotifications();
}
}

Ładowanie…
Anuluj
Zapisz