]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix initially selected CheckBox rendering in Safari (#11024)
authorTeemu Suo-Anttila <tsuoanttila@users.noreply.github.com>
Tue, 10 Jul 2018 08:14:05 +0000 (11:14 +0300)
committerTeemu Suo-Anttila <tsuoanttila@users.noreply.github.com>
Tue, 10 Jul 2018 09:50:43 +0000 (12:50 +0300)
client/src/main/java/com/vaadin/client/ui/VCheckBox.java

index e53bce5d4bd1fc147457f45061caa0cf591236cf..2c2df0a27ec48f498c49e2d5eae5947149da4282 100644 (file)
@@ -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);
+            });
+        }
+    }
 }