From 179061a4c9d2f3a35b0a15eba0de71e1db17756e Mon Sep 17 00:00:00 2001 From: Kin Blas Date: Tue, 1 Feb 2011 17:14:15 -0800 Subject: [PATCH] Fix for Issue #678 - Select list offset above top of screen. - Wait for the "silentscroll" event before setting focus. This avoids the "feature" where the browser will automatically offset rendering of a container to make sure whatever has focus is visible. --- js/jquery.mobile.forms.select.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/js/jquery.mobile.forms.select.js b/js/jquery.mobile.forms.select.js index 7a17c498..57a265d0 100644 --- a/js/jquery.mobile.forms.select.js +++ b/js/jquery.mobile.forms.select.js @@ -412,7 +412,14 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { }); } - self.menuPage.one('pageshow',focusMenuItem); + self.menuPage.one('pageshow', function() { + // silentScroll() is called whenever a page is shown to restore + // any previous scroll position the page may have had. We need to + // wait for the "silentscroll" event before setting focus to avoid + // the browser's "feature" which offsets rendering to make sure + // whatever has focus is in view. + $(window).one("silentscroll", function(){ focusMenuItem(); }); + }); self.menuType = "page"; self.menuPageContent.append( self.list );