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

Side by Side Diff: chrome/browser/views/options/cookies_view.cc

Issue 12502: Fix selection after deleting cookies. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 12 years 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 #include <algorithm> 5 #include <algorithm>
6 6
7 #include "chrome/browser/views/options/cookies_view.h" 7 #include "chrome/browser/views/options/cookies_view.h"
8 8
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/time_format.h" 10 #include "base/time_format.h"
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 if (SelectedRowCount() <= 0) 273 if (SelectedRowCount() <= 0)
274 return; 274 return;
275 275
276 if (SelectedRowCount() == cookies_model_->RowCount()) { 276 if (SelectedRowCount() == cookies_model_->RowCount()) {
277 cookies_model_->RemoveAllShownCookies(); 277 cookies_model_->RemoveAllShownCookies();
278 return; 278 return;
279 } 279 }
280 280
281 // Remove the selected cookies. This iterates over the rows backwards, which 281 // Remove the selected cookies. This iterates over the rows backwards, which
282 // is required when calling RemoveCookies, see bug 2994. 282 // is required when calling RemoveCookies, see bug 2994.
283 int first_selected_row = -1; 283 int last_selected_view_row = -1;
284 int remove_count = 0;
284 for (views::TableView::iterator i = SelectionBegin(); 285 for (views::TableView::iterator i = SelectionBegin();
285 i != SelectionEnd(); ++i) { 286 i != SelectionEnd(); ++i) {
286 int selected_row = *i; 287 int selected_model_row = *i;
287 if (first_selected_row == -1) 288 ++remove_count;
288 first_selected_row = selected_row; 289 if (last_selected_view_row == -1) {
289 cookies_model_->RemoveCookies(selected_row, 1); 290 // Store the view row since the view to model mapping changes when
291 // we delete.
292 last_selected_view_row = model_to_view(selected_model_row);
293 }
294 cookies_model_->RemoveCookies(selected_model_row, 1);
290 } 295 }
291 // Keep an element selected 296
292 if (RowCount() > 0) 297 // Select the next row after the last row deleted (unless removing last row).
293 Select(std::min(RowCount() - 1, first_selected_row)); 298 DCHECK(RowCount() > 0);
299 Select(view_to_model(std::min(RowCount() - 1,
300 last_selected_view_row - remove_count + 1)));
294 } 301 }
295 302
296 void CookiesTableView::OnKeyDown(unsigned short virtual_keycode) { 303 void CookiesTableView::OnKeyDown(unsigned short virtual_keycode) {
297 if (virtual_keycode == VK_DELETE) 304 if (virtual_keycode == VK_DELETE)
298 RemoveSelectedCookies(); 305 RemoveSelectedCookies();
299 } 306 }
300 307
301 /////////////////////////////////////////////////////////////////////////////// 308 ///////////////////////////////////////////////////////////////////////////////
302 // CookieInfoView 309 // CookieInfoView
303 // 310 //
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
773 void CookiesView::ResetSearchQuery() { 780 void CookiesView::ResetSearchQuery() {
774 search_field_->SetText(EmptyWString()); 781 search_field_->SetText(EmptyWString());
775 UpdateSearchResults(); 782 UpdateSearchResults();
776 } 783 }
777 784
778 void CookiesView::UpdateForEmptyState() { 785 void CookiesView::UpdateForEmptyState() {
779 info_view_->ClearCookieDisplay(); 786 info_view_->ClearCookieDisplay();
780 remove_button_->SetEnabled(false); 787 remove_button_->SetEnabled(false);
781 remove_all_button_->SetEnabled(false); 788 remove_all_button_->SetEnabled(false);
782 } 789 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698