Browse Source

Close only combobox on escape, not the window (#12163)

Change-Id: I356e115b5cd96ba0a598178a15215654f2fd16bb
tags/7.1.1
Henri Sara 11 years ago
parent
commit
f7cc72df9b

+ 1
- 0
client/src/com/vaadin/client/ui/VFilterSelect.java View File

@@ -1537,6 +1537,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler,
break;
case KeyCodes.KEY_ESCAPE:
reset();
DOM.eventPreventDefault(DOM.eventGetCurrentEvent());
event.stopPropagation();
break;
case KeyCodes.KEY_ENTER:

+ 43
- 0
uitest/src/com/vaadin/tests/components/combobox/EscapeClosesComboboxNotWindow.java View File

@@ -0,0 +1,43 @@
package com.vaadin.tests.components.combobox;

import com.vaadin.event.ShortcutAction.KeyCode;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

/**
* Ticket #12163: when a combo box popup is open in a subwindow, escape should
* only close it and not the window, also on Safari 6.
*/
public class EscapeClosesComboboxNotWindow extends UI {
final Window window = new Window("Window");

@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);

Button button = new Button("Click Me");
button.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
final FormLayout content = new FormLayout();
ComboBox cb = new ComboBox();
cb.addItem("foo");
cb.addItem("bar");
content.addComponent(cb);
window.setContent(content);
window.setCloseShortcut(KeyCode.ESCAPE);
UI.getCurrent().addWindow(window);
}
});
layout.addComponent(button);
}

}

Loading…
Cancel
Save