]> source.dussan.org Git - vaadin-framework.git/commitdiff
Added a window.prompt polyfill for Metro IE (#13367)
authorJuho Nurminen <juho@vaadin.com>
Fri, 21 Feb 2014 13:19:47 +0000 (15:19 +0200)
committerArtur Signell <artur@vaadin.com>
Fri, 28 Mar 2014 18:01:22 +0000 (18:01 +0000)
Makes metro versions of IE suggest switching to the desktop when
window.prompt is called

Change-Id: If794631b0fa633aac3572f241374ea8883671c85

client/src/com/vaadin/client/ApplicationConfiguration.java

index 1a5b0d836ff3fabc2b2fa1dd017ae25792cbb778..8023c8e50a69119a6807b7fd742fd503b964ec26 100644 (file)
@@ -605,6 +605,11 @@ public class ApplicationConfiguration implements EntryPoint {
             enableIOS6castFix();
         }
 
+        // Enable IE prompt fix (#13367)
+        if (browserInfo.isIE() && browserInfo.getBrowserMajorVersion() >= 10) {
+            enableIEPromptFix();
+        }
+
         // Prepare the debugging window
         if (isDebugMode()) {
             /*
@@ -681,6 +686,25 @@ public class ApplicationConfiguration implements EntryPoint {
           Math.min = function(a,b) {return (a < b === 1 < 2)? a : b}
     }-*/;
 
+    /**
+     * Make Metro versions of IE suggest switching to the desktop when
+     * window.prompt is called.
+     */
+    private static native void enableIEPromptFix()
+    /*-{
+        var prompt = $wnd.prompt;
+        $wnd.prompt = function () {
+            var result = prompt.apply($wnd, Array.prototype.slice.call(arguments));
+            if (result === undefined) {
+                // force the browser to suggest desktop mode
+                showModalDialog();
+                return null;
+            } else {
+                return result;
+            }
+        };
+    }-*/;
+
     /**
      * Registers that callback that the bootstrap javascript uses to start
      * applications once the widgetset is loaded and all required information is