diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-18 22:12:23 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-18 22:12:23 +0000 |
commit | 6fd590a396053436257c5f3e8aa586f9aba6ca6e (patch) | |
tree | dffcc0cd71df16be00ba7dd0508da67d8fcf9999 | |
parent | 4f5bca2563a596e8248542da65d68dd87facc0c4 (diff) | |
download | chromium_src-6fd590a396053436257c5f3e8aa586f9aba6ca6e.zip chromium_src-6fd590a396053436257c5f3e8aa586f9aba6ca6e.tar.gz chromium_src-6fd590a396053436257c5f3e8aa586f9aba6ca6e.tar.bz2 |
Two changes to make treeview consistant with how it previously behaved:
. escape while editing cancel edits.
. Clicking commits edits.
BUG=196490
TEST=see bug
R=sadrul@chromium.org
Review URL: https://chromiumcodereview.appspot.com/12918008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188848 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ui/views/controls/tree/tree_view.cc | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/ui/views/controls/tree/tree_view.cc b/ui/views/controls/tree/tree_view.cc index 06351a4..30e030b 100644 --- a/ui/views/controls/tree/tree_view.cc +++ b/ui/views/controls/tree/tree_view.cc @@ -169,8 +169,9 @@ void TreeView::StartEditing(TreeModelNode* node) { if (focus_manager_) focus_manager_->AddFocusChangeListener(this); - // Accelerate the return key to commit the pending edit. + // Accelerators to commit/cancel edit. AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE)); + AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE)); } void TreeView::CancelEdit() { @@ -187,8 +188,8 @@ void TreeView::CancelEdit() { editor_->SetVisible(false); SchedulePaint(); - // Remove the return key accelerator when there is no pending edit. RemoveAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE)); + RemoveAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE)); } void TreeView::CommitEdit() { @@ -326,8 +327,13 @@ gfx::Size TreeView::GetPreferredSize() { } bool TreeView::AcceleratorPressed(const ui::Accelerator& accelerator) { - DCHECK_EQ(accelerator.key_code(), ui::VKEY_RETURN); - CommitEdit(); + if (accelerator.key_code() == ui::VKEY_RETURN) { + CommitEdit(); + } else { + DCHECK_EQ(ui::VKEY_ESCAPE, accelerator.key_code()); + CancelEdit(); + RequestFocus(); + } return true; } @@ -558,11 +564,13 @@ void TreeView::OnBlur() { } bool TreeView::OnClickOrTap(const ui::LocatedEvent& event) { + CommitEdit(); + RequestFocus(); + int row = (event.y() - kVerticalInset) / row_height_; int depth; InternalNode* node = GetNodeByRow(row, &depth); if (node) { - RequestFocus(); gfx::Rect bounds(GetBoundsForNodeImpl(node, row, depth)); if (bounds.Contains(event.location())) { int relative_x = event.x() - bounds.x(); |