From: Teemu Suo-Anttila Date: Tue, 10 Jul 2018 08:14:05 +0000 (+0300) Subject: Fix initially selected CheckBox rendering in Safari (#11024) X-Git-Tag: 8.5.0.beta2~1 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ba7e42c60b9618aabdfbb201cfcc2ae1b50c1bea;p=vaadin-framework.git Fix initially selected CheckBox rendering in Safari (#11024) --- diff --git a/client/src/main/java/com/vaadin/client/ui/VCheckBox.java b/client/src/main/java/com/vaadin/client/ui/VCheckBox.java index e53bce5d4b..2c2df0a27e 100644 --- a/client/src/main/java/com/vaadin/client/ui/VCheckBox.java +++ b/client/src/main/java/com/vaadin/client/ui/VCheckBox.java @@ -16,7 +16,9 @@ package com.vaadin.client.ui; +import com.google.gwt.core.client.Scheduler; import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.Style.Visibility; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Event; import com.vaadin.client.ApplicationConnection; @@ -116,4 +118,21 @@ public class VCheckBox extends com.google.gwt.user.client.ui.CheckBox errorIndicatorElement = null; } } + + @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(Visibility.HIDDEN); + Scheduler.get().scheduleFinally(() -> { + getElement().getStyle().setVisibility(Visibility.VISIBLE); + }); + } + } }