| 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> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 // UndoGroup ------------------------------------------------------------------ | 23 // UndoGroup ------------------------------------------------------------------ |
| 24 | 24 |
| 25 UndoGroup::UndoGroup() | 25 UndoGroup::UndoGroup() |
| 26 : undo_label_id_(IDS_BOOKMARK_BAR_UNDO), | 26 : undo_label_id_(IDS_BOOKMARK_BAR_UNDO), |
| 27 redo_label_id_(IDS_BOOKMARK_BAR_REDO) { | 27 redo_label_id_(IDS_BOOKMARK_BAR_REDO) { |
| 28 } | 28 } |
| 29 | 29 |
| 30 UndoGroup::~UndoGroup() { | 30 UndoGroup::~UndoGroup() { |
| 31 } | 31 } |
| 32 | 32 |
| 33 void UndoGroup::AddOperation(scoped_ptr<UndoOperation> operation) { | 33 void UndoGroup::AddOperation(std::unique_ptr<UndoOperation> operation) { |
| 34 if (operations_.empty()) { | 34 if (operations_.empty()) { |
| 35 set_undo_label_id(operation->GetUndoLabelId()); | 35 set_undo_label_id(operation->GetUndoLabelId()); |
| 36 set_redo_label_id(operation->GetRedoLabelId()); | 36 set_redo_label_id(operation->GetRedoLabelId()); |
| 37 } | 37 } |
| 38 operations_.push_back(operation.release()); | 38 operations_.push_back(operation.release()); |
| 39 } | 39 } |
| 40 | 40 |
| 41 void UndoGroup::Undo() { | 41 void UndoGroup::Undo() { |
| 42 for (ScopedVector<UndoOperation>::reverse_iterator ri = operations_.rbegin(); | 42 for (ScopedVector<UndoOperation>::reverse_iterator ri = operations_.rbegin(); |
| 43 ri != operations_.rend(); ++ri) { | 43 ri != operations_.rend(); ++ri) { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 undo_actions_.empty() ? IDS_BOOKMARK_BAR_UNDO | 75 undo_actions_.empty() ? IDS_BOOKMARK_BAR_UNDO |
| 76 : undo_actions_.back()->get_undo_label_id()); | 76 : undo_actions_.back()->get_undo_label_id()); |
| 77 } | 77 } |
| 78 | 78 |
| 79 base::string16 UndoManager::GetRedoLabel() const { | 79 base::string16 UndoManager::GetRedoLabel() const { |
| 80 return l10n_util::GetStringUTF16( | 80 return l10n_util::GetStringUTF16( |
| 81 redo_actions_.empty() ? IDS_BOOKMARK_BAR_REDO | 81 redo_actions_.empty() ? IDS_BOOKMARK_BAR_REDO |
| 82 : redo_actions_.back()->get_redo_label_id()); | 82 : redo_actions_.back()->get_redo_label_id()); |
| 83 } | 83 } |
| 84 | 84 |
| 85 void UndoManager::AddUndoOperation(scoped_ptr<UndoOperation> operation) { | 85 void UndoManager::AddUndoOperation(std::unique_ptr<UndoOperation> operation) { |
| 86 if (IsUndoTrakingSuspended()) { | 86 if (IsUndoTrakingSuspended()) { |
| 87 RemoveAllOperations(); | 87 RemoveAllOperations(); |
| 88 operation.reset(); | 88 operation.reset(); |
| 89 return; | 89 return; |
| 90 } | 90 } |
| 91 | 91 |
| 92 if (group_actions_count_) { | 92 if (group_actions_count_) { |
| 93 pending_grouped_action_->AddOperation(std::move(operation)); | 93 pending_grouped_action_->AddOperation(std::move(operation)); |
| 94 } else { | 94 } else { |
| 95 UndoGroup* new_action = new UndoGroup(); | 95 UndoGroup* new_action = new UndoGroup(); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 | 182 |
| 183 void UndoManager::Undo(bool* performing_indicator, | 183 void UndoManager::Undo(bool* performing_indicator, |
| 184 ScopedVector<UndoGroup>* active_undo_group) { | 184 ScopedVector<UndoGroup>* active_undo_group) { |
| 185 // Check that action grouping has been correctly ended. | 185 // Check that action grouping has been correctly ended. |
| 186 DCHECK(!group_actions_count_); | 186 DCHECK(!group_actions_count_); |
| 187 | 187 |
| 188 if (active_undo_group->empty()) | 188 if (active_undo_group->empty()) |
| 189 return; | 189 return; |
| 190 | 190 |
| 191 base::AutoReset<bool> incoming_changes(performing_indicator, true); | 191 base::AutoReset<bool> incoming_changes(performing_indicator, true); |
| 192 scoped_ptr<UndoGroup> action(active_undo_group->back()); | 192 std::unique_ptr<UndoGroup> action(active_undo_group->back()); |
| 193 base::AutoReset<UndoGroup*> action_context(&undo_in_progress_action_, | 193 base::AutoReset<UndoGroup*> action_context(&undo_in_progress_action_, |
| 194 action.get()); | 194 action.get()); |
| 195 active_undo_group->weak_erase( | 195 active_undo_group->weak_erase( |
| 196 active_undo_group->begin() + active_undo_group->size() - 1); | 196 active_undo_group->begin() + active_undo_group->size() - 1); |
| 197 | 197 |
| 198 StartGroupingActions(); | 198 StartGroupingActions(); |
| 199 action->Undo(); | 199 action->Undo(); |
| 200 EndGroupingActions(); | 200 EndGroupingActions(); |
| 201 | 201 |
| 202 NotifyOnUndoManagerStateChange(); | 202 NotifyOnUndoManagerStateChange(); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 217 // 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. |
| 218 if (GetActiveUndoGroup()->size() > kMaxUndoGroups) | 218 if (GetActiveUndoGroup()->size() > kMaxUndoGroups) |
| 219 GetActiveUndoGroup()->erase(GetActiveUndoGroup()->begin()); | 219 GetActiveUndoGroup()->erase(GetActiveUndoGroup()->begin()); |
| 220 | 220 |
| 221 NotifyOnUndoManagerStateChange(); | 221 NotifyOnUndoManagerStateChange(); |
| 222 } | 222 } |
| 223 | 223 |
| 224 ScopedVector<UndoGroup>* UndoManager::GetActiveUndoGroup() { | 224 ScopedVector<UndoGroup>* UndoManager::GetActiveUndoGroup() { |
| 225 return performing_undo_ ? &redo_actions_ : &undo_actions_; | 225 return performing_undo_ ? &redo_actions_ : &undo_actions_; |
| 226 } | 226 } |
| OLD | NEW |