Chromium Code Reviews| 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')); |
| }, |
| /** |