Index: ui/views/controls/tree/tree_view.cc |
diff --git a/ui/views/controls/tree/tree_view.cc b/ui/views/controls/tree/tree_view.cc |
index 5e8afef73fb7e600743e77f9cf3f752b8377831c..9439646f755c17b0c05e5083b2bd7e10c8e3aa97 100644 |
--- a/ui/views/controls/tree/tree_view.cc |
+++ b/ui/views/controls/tree/tree_view.cc |
@@ -197,9 +197,11 @@ void TreeView::CommitEdit() { |
return; |
DCHECK(selected_node_); |
+ const bool editor_has_focus = editor_->HasFocus(); |
model_->SetTitle(GetSelectedNode(), editor_->text()); |
CancelEdit(); |
- RequestFocus(); |
+ if (editor_has_focus) |
+ RequestFocus(); |
} |
TreeModelNode* TreeView::GetEditingNode() { |
@@ -457,13 +459,11 @@ bool TreeView::HandleKeyEvent(Textfield* sender, |
} |
} |
-void TreeView::OnWillChangeFocus(View* focused_before, |
- View* focused_now) { |
+void TreeView::OnWillChangeFocus(View* focused_before, View* focused_now) { |
} |
-void TreeView::OnDidChangeFocus(View* focused_before, |
- View* focused_now) { |
- CancelEdit(); |
+void TreeView::OnDidChangeFocus(View* focused_before, View* focused_now) { |
+ CommitEdit(); |
} |
gfx::Point TreeView::GetKeyboardContextMenuLocation() { |