diff options
-rw-r--r-- | compatibility-client/src/main/java/com/vaadin/v7/client/ui/VCheckBox.java | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/compatibility-client/src/main/java/com/vaadin/v7/client/ui/VCheckBox.java b/compatibility-client/src/main/java/com/vaadin/v7/client/ui/VCheckBox.java index 9d4d52096c..ec6e02200e 100644 --- a/compatibility-client/src/main/java/com/vaadin/v7/client/ui/VCheckBox.java +++ b/compatibility-client/src/main/java/com/vaadin/v7/client/ui/VCheckBox.java @@ -16,7 +16,9 @@ package com.vaadin.v7.client.ui; +import com.google.gwt.core.client.Scheduler; import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.Style; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.DOM; @@ -106,4 +108,21 @@ public class VCheckBox extends com.google.gwt.user.client.ui.CheckBox public void setAriaInvalid(boolean invalid) { AriaHelper.handleInputInvalid(getCheckBoxElement(), invalid); } + + @Override + protected void onAttach() { + super.onAttach(); + + if (BrowserInfo.get().isSafari()) { + /* + * Sometimes Safari does not render checkbox correctly when + * attaching. Setting the visibility to hidden and a bit later + * restoring will make everything just fine. + */ + getElement().getStyle().setVisibility(Style.Visibility.HIDDEN); + Scheduler.get().scheduleFinally(() -> { + getElement().getStyle().setVisibility(Style.Visibility.VISIBLE); + }); + } + } } |