Index: chrome/browser/resources/login/user_pod_row.js |
diff --git a/chrome/browser/resources/login/user_pod_row.js b/chrome/browser/resources/login/user_pod_row.js |
index b6fbe379c1c7c0bde11dcca114e136ba8f6b1c2e..57bb80fb463d58514ca7086e27d6c2bc0b6b16f8 100644 |
--- a/chrome/browser/resources/login/user_pod_row.js |
+++ b/chrome/browser/resources/login/user_pod_row.js |
@@ -47,6 +47,15 @@ cr.define('login', function() { |
var POD_ROW_PADDING = 10; |
/** |
+ * Constants that define 'scrolling stops' when user pod rows are scrolled |
+ * into view with virtual keyboard shown. First index is total number of rows, |
+ * second index is focused pod row. See scrollFocusedPodIntoView(). |
+ * @type Array.<Array.<number>> |
+ * @const |
+ */ |
+ var USER_POD_ROW_SCROLL_STOPS = [[0.5], [0.25, 0.75], [0, 0.5, 1]]; |
dzhioev (left Google)
2014/05/21 17:30:32
We can have more than 3 rows of pods. What happens
Nikita (slow)
2014/05/22 15:11:50
Added dynamic calculation.
|
+ |
+ /** |
* Whether to preselect the first pod automatically on login screen. |
* @type {boolean} |
* @const |
@@ -156,6 +165,12 @@ cr.define('login', function() { |
UserPod.prototype = { |
__proto__: HTMLDivElement.prototype, |
+ // Column at which user pod is located. |
+ column_: -1, |
+ |
+ // Row at which user pod is located. |
+ row_: -1, |
+ |
/** @override */ |
decorate: function() { |
this.tabIndex = UserPodTabOrder.POD_INPUT; |
@@ -266,6 +281,28 @@ cr.define('login', function() { |
}, |
/** |
+ * User pod column. |
+ * @type {?number} |
+ */ |
+ set column(column) { |
+ this.column_ = column; |
+ }, |
+ get columns() { |
+ return this.column_; |
+ }, |
+ |
+ /** |
+ * User pod row. |
+ * @type {?number} |
+ */ |
+ set row(row) { |
+ this.row_ = row; |
+ }, |
+ get row() { |
+ return this.row_; |
+ }, |
+ |
+ /** |
* Gets signed in indicator element. |
* @type {!HTMLDivElement} |
*/ |
@@ -1374,6 +1411,14 @@ cr.define('login', function() { |
}, |
/** |
+ * Returns focused user pod. |
+ * @type {Object} |
+ */ |
+ get focusedPod() { |
dzhioev (left Google)
2014/05/21 17:30:32
Why did you add this getter? As I can see, you onl
Nikita (slow)
2014/05/22 15:11:50
Right, not needed in latest impl, removed.
|
+ return this.focusedPod_; |
+ }, |
+ |
+ /** |
* Returns all the pods in this pod row. |
* @type {NodeList} |
*/ |
@@ -1556,6 +1601,19 @@ cr.define('login', function() { |
}, |
/** |
+ * Scrolls focused user pod into view. |
+ */ |
+ scrollFocusedPodIntoView: function() { |
+ if (!this.focusedPod || |
+ this.focusedPod.column < 0 || this.focusedPod.row < 0) { |
+ return; |
+ } |
+ |
+ $('scroll-container').scrollTop = $('scroll-container').offsetHeight * |
+ USER_POD_ROW_SCROLL_STOPS[this.rows - 1][this.focusedPod.row]; |
+ }, |
+ |
+ /** |
* Rebuilds pod row using users_ and apps_ that were previously set or |
* updated. |
*/ |
@@ -1726,6 +1784,9 @@ cr.define('login', function() { |
var layout = this.calculateLayout_(); |
if (layout.columns != this.columns || layout.rows != this.rows) |
this.placePods_(); |
+ |
+ if (Oobe.getInstance().virtualKeyboardShown) |
+ this.scrollFocusedPodIntoView(); |
dzhioev (left Google)
2014/05/21 17:30:32
Did you try to make the same in |focusPod|, where
Nikita (slow)
2014/05/22 15:11:50
Since virtual keyboard shows up after some delay f
|
}, |
/** |
@@ -1804,8 +1865,8 @@ cr.define('login', function() { |
return; |
} |
pod.hidden = false; |
- var column = index % columns; |
- var row = Math.floor(index / columns); |
+ var column = pod.column = index % columns; |
+ var row = pod.row = Math.floor(index / columns); |
pod.left = POD_ROW_PADDING + column * (width + margin); |
pod.top = POD_ROW_PADDING + row * height; |
}); |
@@ -1821,7 +1882,7 @@ cr.define('login', function() { |
this.setAttribute('ncolumns', columns); |
}, |
get columns() { |
- return this.getAttribute('ncolumns'); |
+ return parseInt(this.getAttribute('ncolumns')); |
}, |
/** |
@@ -1833,7 +1894,7 @@ cr.define('login', function() { |
this.setAttribute('nrows', rows); |
}, |
get rows() { |
- return this.getAttribute('nrows'); |
+ return parseInt(this.getAttribute('nrows')); |
}, |
/** |