summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authortfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-30 00:44:09 +0000
committertfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-30 00:44:09 +0000
commitffffe93cb3fcff1ddbff35da546981f905d6fdb5 (patch)
tree69ae85348db8655766227ee4724b216481141e29 /chrome
parentced110c761f0a07d5dfa6cca07a890b66f0bd689 (diff)
downloadchromium_src-ffffe93cb3fcff1ddbff35da546981f905d6fdb5.zip
chromium_src-ffffe93cb3fcff1ddbff35da546981f905d6fdb5.tar.gz
chromium_src-ffffe93cb3fcff1ddbff35da546981f905d6fdb5.tar.bz2
AutoFill: Add support for multi-select and delete.
BUG=46075 TEST=see bug Review URL: http://codereview.chromium.org/2828014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51202 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/views/autofill_profiles_view_win.cc22
-rw-r--r--chrome/browser/views/autofill_profiles_view_win.h5
2 files changed, 17 insertions, 10 deletions
diff --git a/chrome/browser/views/autofill_profiles_view_win.cc b/chrome/browser/views/autofill_profiles_view_win.cc
index f010697..1647753 100644
--- a/chrome/browser/views/autofill_profiles_view_win.cc
+++ b/chrome/browser/views/autofill_profiles_view_win.cc
@@ -162,9 +162,17 @@ void AutoFillProfilesView::EditClicked() {
void AutoFillProfilesView::DeleteClicked() {
DCHECK(scroll_view_);
DCHECK(table_model_.get());
- int selected_item_index = scroll_view_->FirstSelectedRow();
- DCHECK(selected_item_index >= 0);
- table_model_->RemoveItem(selected_item_index);
+ DCHECK_GT(scroll_view_->SelectedRowCount(), 0);
+ int last_view_row = -1;
+ for (views::TableView::iterator i = scroll_view_->SelectionBegin();
+ i != scroll_view_->SelectionEnd(); ++i) {
+ last_view_row = scroll_view_->ModelToView(*i);
+ table_model_->RemoveItem(*i);
+ }
+ if (last_view_row >= table_model_->RowCount())
+ last_view_row = table_model_->RowCount() - 1;
+ if (last_view_row >= 0)
+ scroll_view_->Select(scroll_view_->ViewToModel(last_view_row));
UpdateButtonState();
}
@@ -180,9 +188,9 @@ void AutoFillProfilesView::UpdateButtonState() {
add_credit_card_button_->SetEnabled(personal_data_manager_->IsDataLoaded() &&
!child_dialog_opened_);
- int selected_item_index = scroll_view_->FirstSelectedRow();
- edit_button_->SetEnabled(selected_item_index >= 0 && !child_dialog_opened_);
- remove_button_->SetEnabled(selected_item_index >= 0 && !child_dialog_opened_);
+ int selected_row_count = scroll_view_->SelectedRowCount();
+ edit_button_->SetEnabled(selected_row_count == 1 && !child_dialog_opened_);
+ remove_button_->SetEnabled(selected_row_count > 0 && !child_dialog_opened_);
}
void AutoFillProfilesView::ChildWindowOpened() {
@@ -382,7 +390,7 @@ void AutoFillProfilesView::Init() {
columns.back().sortable = false;
scroll_view_ = new views::TableView(table_model_.get(), columns,
- views::TEXT_ONLY, true, true, true);
+ views::TEXT_ONLY, false, true, true);
scroll_view_->SetObserver(this);
add_address_button_ = new views::NativeButton(this,
diff --git a/chrome/browser/views/autofill_profiles_view_win.h b/chrome/browser/views/autofill_profiles_view_win.h
index cdeb1bc..20b60b6 100644
--- a/chrome/browser/views/autofill_profiles_view_win.h
+++ b/chrome/browser/views/autofill_profiles_view_win.h
@@ -193,6 +193,7 @@ class AutoFillProfilesView : public views::View,
const string16& new_contents);
bool IsValid() const;
+
protected:
// views::View methods:
virtual void ViewHierarchyChanged(bool is_add, views::View* parent,
@@ -204,6 +205,7 @@ class AutoFillProfilesView : public views::View,
// Only stub is needed, it is never called.
NOTREACHED();
}
+
private:
void UpdateButtons();
AutoFillProfilesView* autofill_view_;
@@ -392,7 +394,6 @@ class AutoFillProfilesView : public views::View,
// Find an index of the item in the model, -1 if not present.
int GetIndex(const std::wstring& value);
- protected:
private:
std::vector<std::wstring> cb_strings_;
@@ -418,8 +419,6 @@ class AutoFillProfilesView : public views::View,
void RemoveItem(int index);
void UpdateItem(int index);
- protected:
-
// TableModel members:
virtual int RowCount();
virtual std::wstring GetText(int row, int column_id);