Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights |
| 4 * reserved. | 4 * reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 213 // Record the old selected objects. These will be used later when we compare | 213 // Record the old selected objects. These will be used later when we compare |
| 214 // against the new selected objects. | 214 // against the new selected objects. |
| 215 int old_start_pos = selection_start_pos_; | 215 int old_start_pos = selection_start_pos_; |
| 216 int old_end_pos = selection_end_pos_; | 216 int old_end_pos = selection_end_pos_; |
| 217 | 217 |
| 218 SelectedMap old_selected_map = | 218 SelectedMap old_selected_map = |
| 219 CollectSelectedMap(selection_start_, selection_end_, selection_end_pos_, | 219 CollectSelectedMap(selection_start_, selection_end_, selection_end_pos_, |
| 220 block_paint_invalidation_mode); | 220 block_paint_invalidation_mode); |
| 221 | 221 |
| 222 // Now clear the selection. | 222 // Now clear the selection. |
| 223 SelectedObjectMap::iterator old_objects_end = | 223 for (const auto& it : old_selected_map.object_map) |
|
yosin_UTC9
2017/05/15 07:05:09
nit: s/it/key_value/ or s/it/layout_object_and_sel
yoichio
2017/05/15 07:59:43
Done.
| |
| 224 old_selected_map.object_map.end(); | 224 it.key->SetSelectionStateIfNeeded(SelectionNone); |
| 225 for (SelectedObjectMap::iterator i = old_selected_map.object_map.begin(); | |
| 226 i != old_objects_end; ++i) | |
| 227 i->key->SetSelectionStateIfNeeded(SelectionNone); | |
| 228 | 225 |
| 229 // set selection start and end | 226 // set selection start and end |
| 230 selection_start_ = start; | 227 selection_start_ = start; |
| 231 selection_start_pos_ = start_pos; | 228 selection_start_pos_ = start_pos; |
| 232 selection_end_ = end; | 229 selection_end_ = end; |
| 233 selection_end_pos_ = end_pos; | 230 selection_end_pos_ = end_pos; |
| 234 | 231 |
| 235 // Update the selection status of all objects between m_selectionStart and | 232 // Update the selection status of all objects between m_selectionStart and |
| 236 // m_selectionEnd | 233 // m_selectionEnd |
| 237 if (start && start == end) { | 234 if (start && start == end) { |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 254 | 251 |
| 255 // Now that the selection state has been updated for the new objects, walk | 252 // Now that the selection state has been updated for the new objects, walk |
| 256 // them again and put them in the new objects list. | 253 // them again and put them in the new objects list. |
| 257 // TODO(editing-dev): |new_selected_map| doesn't really need to store the | 254 // TODO(editing-dev): |new_selected_map| doesn't really need to store the |
| 258 // SelectionState, it's just more convenient to have it use the same data | 255 // SelectionState, it's just more convenient to have it use the same data |
| 259 // structure as |old_selected_map|. | 256 // structure as |old_selected_map|. |
| 260 SelectedMap new_selected_map = | 257 SelectedMap new_selected_map = |
| 261 CollectSelectedMap(start, end, end_pos, kPaintInvalidationNewXOROld); | 258 CollectSelectedMap(start, end, end_pos, kPaintInvalidationNewXOROld); |
| 262 | 259 |
| 263 // Have any of the old selected objects changed compared to the new selection? | 260 // Have any of the old selected objects changed compared to the new selection? |
| 264 for (SelectedObjectMap::iterator i = old_selected_map.object_map.begin(); | 261 for (const auto& it : old_selected_map.object_map) { |
| 265 i != old_objects_end; ++i) { | 262 LayoutObject* obj = it.key; |
| 266 LayoutObject* obj = i->key; | |
| 267 SelectionState new_selection_state = obj->GetSelectionState(); | 263 SelectionState new_selection_state = obj->GetSelectionState(); |
| 268 SelectionState old_selection_state = i->value; | 264 SelectionState old_selection_state = it.value; |
| 269 if (new_selection_state != old_selection_state || | 265 if (new_selection_state != old_selection_state || |
| 270 (selection_start_ == obj && old_start_pos != selection_start_pos_) || | 266 (selection_start_ == obj && old_start_pos != selection_start_pos_) || |
| 271 (selection_end_ == obj && old_end_pos != selection_end_pos_)) { | 267 (selection_end_ == obj && old_end_pos != selection_end_pos_)) { |
| 272 obj->SetShouldInvalidateSelection(); | 268 obj->SetShouldInvalidateSelection(); |
| 273 new_selected_map.object_map.erase(obj); | 269 new_selected_map.object_map.erase(obj); |
| 274 } | 270 } |
| 275 } | 271 } |
| 276 | 272 |
| 277 // Any new objects that remain were not found in the old objects dict, and so | 273 // Any new objects that remain were not found in the old objects dict, and so |
| 278 // they need to be updated. | 274 // they need to be updated. |
| 279 SelectedObjectMap::iterator new_objects_end = | 275 for (const auto& it : new_selected_map.object_map) |
| 280 new_selected_map.object_map.end(); | 276 it.key->SetShouldInvalidateSelection(); |
| 281 for (SelectedObjectMap::iterator i = new_selected_map.object_map.begin(); | |
| 282 i != new_objects_end; ++i) | |
| 283 i->key->SetShouldInvalidateSelection(); | |
| 284 | 277 |
| 285 // Have any of the old blocks changed? | 278 // Have any of the old blocks changed? |
| 286 SelectedBlockMap::iterator old_blocks_end = old_selected_map.block_map.end(); | 279 for (const auto& it : old_selected_map.block_map) { |
| 287 for (SelectedBlockMap::iterator i = old_selected_map.block_map.begin(); | 280 LayoutBlock* block = it.key; |
| 288 i != old_blocks_end; ++i) { | |
| 289 LayoutBlock* block = i->key; | |
| 290 SelectionState new_selection_state = block->GetSelectionState(); | 281 SelectionState new_selection_state = block->GetSelectionState(); |
| 291 SelectionState old_selection_state = i->value; | 282 SelectionState old_selection_state = it.value; |
| 292 if (new_selection_state != old_selection_state) { | 283 if (new_selection_state != old_selection_state) { |
| 293 block->SetShouldInvalidateSelection(); | 284 block->SetShouldInvalidateSelection(); |
| 294 new_selected_map.block_map.erase(block); | 285 new_selected_map.block_map.erase(block); |
| 295 } | 286 } |
| 296 } | 287 } |
| 297 | 288 |
| 298 // Any new blocks that remain were not found in the old blocks dict, and so | 289 // Any new blocks that remain were not found in the old blocks dict, and so |
| 299 // they need to be updated. | 290 // they need to be updated. |
| 300 SelectedBlockMap::iterator new_blocks_end = new_selected_map.block_map.end(); | 291 for (const auto& it : new_selected_map.block_map) |
| 301 for (SelectedBlockMap::iterator i = new_selected_map.block_map.begin(); | 292 it.key->SetShouldInvalidateSelection(); |
| 302 i != new_blocks_end; ++i) | |
| 303 i->key->SetShouldInvalidateSelection(); | |
| 304 } | 293 } |
| 305 | 294 |
| 306 std::pair<int, int> LayoutSelection::SelectionStartEnd() { | 295 std::pair<int, int> LayoutSelection::SelectionStartEnd() { |
| 307 Commit(); | 296 Commit(); |
| 308 return std::make_pair(selection_start_pos_, selection_end_pos_); | 297 return std::make_pair(selection_start_pos_, selection_end_pos_); |
| 309 } | 298 } |
| 310 | 299 |
| 311 void LayoutSelection::ClearSelection() { | 300 void LayoutSelection::ClearSelection() { |
| 312 // For querying Layer::compositingState() | 301 // For querying Layer::compositingState() |
| 313 // This is correct, since destroying layout objects needs to cause eager paint | 302 // This is correct, since destroying layout objects needs to cause eager paint |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 434 | 423 |
| 435 o->SetShouldInvalidateSelection(); | 424 o->SetShouldInvalidateSelection(); |
| 436 } | 425 } |
| 437 } | 426 } |
| 438 | 427 |
| 439 DEFINE_TRACE(LayoutSelection) { | 428 DEFINE_TRACE(LayoutSelection) { |
| 440 visitor->Trace(frame_selection_); | 429 visitor->Trace(frame_selection_); |
| 441 } | 430 } |
| 442 | 431 |
| 443 } // namespace blink | 432 } // namespace blink |
| OLD | NEW |