package com.vaadin.client.ui;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
import com.vaadin.client.ApplicationConnection;
+import com.vaadin.client.BrowserInfo;
import com.vaadin.client.Util;
import com.vaadin.client.VTooltip;
(DOM.getEventsSunk(el) | VTooltip.TOOLTIP_EVENTS));
el = DOM.getNextSibling(el);
}
+
+ if (BrowserInfo.get().isWebkit()) {
+ // Webkit does not focus non-text input elements on click
+ // (#11854)
+ addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(ClickEvent event) {
+ setFocus(true);
+ }
+ });
+ }
}
@Override
package com.vaadin.client.ui;
-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.Element;
-import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.MouseEvent;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.Button;
import com.vaadin.client.BrowserInfo;
import com.vaadin.client.MouseEventDetailsBuilder;
import com.vaadin.client.Util;
-import com.vaadin.client.VConsole;
import com.vaadin.shared.MouseEventDetails;
import com.vaadin.shared.ui.button.ButtonServerRpc;
return;
}
- if (BrowserInfo.get().isSafari()) {
- VNativeButton.this.setFocus(true);
+ if (BrowserInfo.get().isWebkit()) {
+ // Webkit does not focus non-text input elements on click
+ // (#11854)
+ setFocus(true);
}
if (disableOnClick) {
setEnabled(false);
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ApplicationConnection;
+import com.vaadin.client.BrowserInfo;
import com.vaadin.client.UIDL;
import com.vaadin.client.Util;
import com.vaadin.shared.EventId;
public void onClick(ClickEvent event) {
super.onClick(event);
if (event.getSource() instanceof CheckBox) {
- final boolean selected = ((CheckBox) event.getSource()).getValue();
- final String key = optionsToKeys.get(event.getSource());
+ CheckBox source = (CheckBox) event.getSource();
+
+ if (BrowserInfo.get().isWebkit()) {
+ // Webkit does not focus non-text input elements on click
+ // (#11854)
+ source.setFocus(true);
+ }
+
+ final boolean selected = source.getValue();
+ final String key = optionsToKeys.get(source);
if (!isMultiselect()) {
selectedKeys.clear();
}
--- /dev/null
+package com.vaadin.tests.components.abstractfield;\r
+\r
+import java.util.Arrays;\r
+\r
+import com.vaadin.server.VaadinRequest;\r
+import com.vaadin.tests.components.AbstractTestUI;\r
+import com.vaadin.ui.CheckBox;\r
+import com.vaadin.ui.NativeButton;\r
+import com.vaadin.ui.OptionGroup;\r
+import com.vaadin.ui.TextField;\r
+\r
+public class FieldFocusOnClick extends AbstractTestUI {\r
+\r
+ @Override\r
+ protected void setup(VaadinRequest request) {\r
+ addComponent(new TextField(null, "TextField"));\r
+ addComponent(new CheckBox("CheckBox"));\r
+ addComponent(new OptionGroup(null,\r
+ Arrays.asList("Option 1", "Option 2")));\r
+ addComponent(new NativeButton("NativeButton"));\r
+ }\r
+\r
+ @Override\r
+ protected String getTestDescription() {\r
+ return "Webkit doesn't focus non-text input elements when clicked";\r
+ }\r
+\r
+ @Override\r
+ protected Integer getTicketNumber() {\r
+ return 11854;\r
+ }\r
+}
\ No newline at end of file