Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(642)

Side by Side Diff: ui/webui/resources/js/cr/ui/focus_grid.js

Issue 1128953004: Fix regression where rows could become non-focusable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.define('cr.ui', function() { 5 cr.define('cr.ui', function() {
6 /** 6 /**
7 * A class to manage grid of focusable elements in a 2D grid. For example, 7 * A class to manage grid of focusable elements in a 2D grid. For example,
8 * given this grid: 8 * given this grid:
9 * 9 *
10 * focusable [focused] focusable (row: 0, col: 1) 10 * focusable [focused] focusable (row: 0, col: 1)
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 this.ignoreFocusChange_ = false; 132 this.ignoreFocusChange_ = false;
133 return; 133 return;
134 } 134 }
135 135
136 var target = assertInstanceof(e.target, Node); 136 var target = assertInstanceof(e.target, Node);
137 if (this.getRowIndexForTarget(target) != -1) 137 if (this.getRowIndexForTarget(target) != -1)
138 this.lastFocused = target; 138 this.lastFocused = target;
139 }, 139 },
140 140
141 /** 141 /**
142 * Add a FocusRow to this grid. This needs to be called AFTER adding columns 142 * Add a FocusRow to this grid. Row is added at the end.
Dan Beam 2015/05/12 01:28:42 Adds |row| to the end of this grid.
hcarmona 2015/05/12 02:00:47 Done.
143 * to the row. This is so that TAB focus can be properly enabled in the
144 * columns.
145 * @param {cr.ui.FocusRow} row The row that needs to be added to this grid. 143 * @param {cr.ui.FocusRow} row The row that needs to be added to this grid.
146 */ 144 */
147 addRow: function(row) { 145 addRow: function(row) {
148 row.delegate = row.delegate || this.delegate_; 146 this.addRowBefore(row, null);
149 this.rows.push(row);
150 }, 147 },
151 148
152 /** 149 /**
150 * Add a FocusRow to this grid in order. Adds at the end if |nextRow| is
Dan Beam 2015/05/12 01:28:42 Add -> Adds
hcarmona 2015/05/12 02:00:47 Done.
151 * not in the list of rows.
152 * @param {cr.ui.FocusRow} row The row that needs to be added to this grid.
Dan Beam 2015/05/12 01:28:42 !cr.ui.FocusRow for |row|
hcarmona 2015/05/12 02:00:47 Done.
153 * @param {cr.ui.FocusRow} nextRow The row that should follow |row|.
154 */
155 addRowBefore: function(row, nextRow) {
156 row.delegate = row.delegate || this.delegate_;
157
158 var nextRowIndex = this.rows.indexOf(nextRow);
159 if (nextRowIndex == -1) {
Dan Beam 2015/05/12 01:28:42 no curlies
hcarmona 2015/05/12 02:00:47 Done.
160 this.rows.push(row);
161 } else {
162 this.rows.splice(nextRowIndex, 0, row);
163 }
164 },
165
166 /**
167 * Removes a row from the focus row. No-op if row is not in the grid.
168 * @param {cr.ui.FocusRow} row The row that needs to be removed.
169 */
170 removeRow: function(row) {
171 var nextRowIndex = this.rows.indexOf(row);
172 if (nextRowIndex > -1) {
Dan Beam 2015/05/12 01:28:42 no curlies
hcarmona 2015/05/12 02:00:47 Done.
173 this.rows.splice(nextRowIndex, 1);
174 }
175 },
176
177 /**
153 * Makes sure that at least one row is active. Should be called once, after 178 * Makes sure that at least one row is active. Should be called once, after
154 * adding all rows to FocusGrid. 179 * adding all rows to FocusGrid.
155 */ 180 */
156 ensureRowActive: function() { 181 ensureRowActive: function() {
157 if (this.rows.length == 0) 182 if (this.rows.length == 0)
158 return; 183 return;
159 184
160 for (var i = 0; i < this.rows.length; ++i) { 185 for (var i = 0; i < this.rows.length; ++i) {
161 if (this.rows[i].isActive()) 186 if (this.rows[i].isActive())
162 return; 187 return;
163 } 188 }
164 189
165 this.rows[0].makeActive(true); 190 this.rows[0].makeActive(true);
166 }, 191 },
167 }; 192 };
168 193
169 return { 194 return {
170 FocusGrid: FocusGrid, 195 FocusGrid: FocusGrid,
171 }; 196 };
172 }); 197 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698