summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-18 22:12:23 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-18 22:12:23 +0000
commit6fd590a396053436257c5f3e8aa586f9aba6ca6e (patch)
treedffcc0cd71df16be00ba7dd0508da67d8fcf9999 /ui
parent4f5bca2563a596e8248542da65d68dd87facc0c4 (diff)
downloadchromium_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
Diffstat (limited to 'ui')
-rw-r--r--ui/views/controls/tree/tree_view.cc18
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();