OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/undo/undo_manager.h" | 5 #include "components/undo/undo_manager.h" |
6 | 6 |
| 7 #include <utility> |
| 8 |
7 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
8 #include "base/logging.h" | 10 #include "base/logging.h" |
9 #include "components/undo/undo_manager_observer.h" | 11 #include "components/undo/undo_manager_observer.h" |
10 #include "components/undo/undo_operation.h" | 12 #include "components/undo/undo_operation.h" |
11 #include "grit/components_strings.h" | 13 #include "grit/components_strings.h" |
12 #include "ui/base/l10n/l10n_util.h" | 14 #include "ui/base/l10n/l10n_util.h" |
13 | 15 |
14 namespace { | 16 namespace { |
15 | 17 |
16 // Maximum number of changes that can be undone. | 18 // Maximum number of changes that can be undone. |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 } | 83 } |
82 | 84 |
83 void UndoManager::AddUndoOperation(scoped_ptr<UndoOperation> operation) { | 85 void UndoManager::AddUndoOperation(scoped_ptr<UndoOperation> operation) { |
84 if (IsUndoTrakingSuspended()) { | 86 if (IsUndoTrakingSuspended()) { |
85 RemoveAllOperations(); | 87 RemoveAllOperations(); |
86 operation.reset(); | 88 operation.reset(); |
87 return; | 89 return; |
88 } | 90 } |
89 | 91 |
90 if (group_actions_count_) { | 92 if (group_actions_count_) { |
91 pending_grouped_action_->AddOperation(operation.Pass()); | 93 pending_grouped_action_->AddOperation(std::move(operation)); |
92 } else { | 94 } else { |
93 UndoGroup* new_action = new UndoGroup(); | 95 UndoGroup* new_action = new UndoGroup(); |
94 new_action->AddOperation(operation.Pass()); | 96 new_action->AddOperation(std::move(operation)); |
95 AddUndoGroup(new_action); | 97 AddUndoGroup(new_action); |
96 } | 98 } |
97 } | 99 } |
98 | 100 |
99 void UndoManager::StartGroupingActions() { | 101 void UndoManager::StartGroupingActions() { |
100 if (!group_actions_count_) | 102 if (!group_actions_count_) |
101 pending_grouped_action_.reset(new UndoGroup()); | 103 pending_grouped_action_.reset(new UndoGroup()); |
102 ++group_actions_count_; | 104 ++group_actions_count_; |
103 } | 105 } |
104 | 106 |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 // Limit the number of undo levels so the undo stack does not grow unbounded. | 217 // Limit the number of undo levels so the undo stack does not grow unbounded. |
216 if (GetActiveUndoGroup()->size() > kMaxUndoGroups) | 218 if (GetActiveUndoGroup()->size() > kMaxUndoGroups) |
217 GetActiveUndoGroup()->erase(GetActiveUndoGroup()->begin()); | 219 GetActiveUndoGroup()->erase(GetActiveUndoGroup()->begin()); |
218 | 220 |
219 NotifyOnUndoManagerStateChange(); | 221 NotifyOnUndoManagerStateChange(); |
220 } | 222 } |
221 | 223 |
222 ScopedVector<UndoGroup>* UndoManager::GetActiveUndoGroup() { | 224 ScopedVector<UndoGroup>* UndoManager::GetActiveUndoGroup() { |
223 return performing_undo_ ? &redo_actions_ : &undo_actions_; | 225 return performing_undo_ ? &redo_actions_ : &undo_actions_; |
224 } | 226 } |
OLD | NEW |