OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
259 | 259 |
260 if (newSelectionEnd > end) | 260 if (newSelectionEnd > end) |
261 newSelectionEnd += delta; | 261 newSelectionEnd += delta; |
262 else if (newSelectionEnd > start) | 262 else if (newSelectionEnd > start) |
263 newSelectionEnd = start + replacementLength; | 263 newSelectionEnd = start + replacementLength; |
264 } | 264 } |
265 | 265 |
266 setSelectionRange(newSelectionStart, newSelectionEnd, SelectionHasNoDirectio n); | 266 setSelectionRange(newSelectionStart, newSelectionEnd, SelectionHasNoDirectio n); |
267 } | 267 } |
268 | 268 |
269 void HTMLTextFormControlElement::setSelectionRange(int start, int end, const Str ing& directionString) | 269 void HTMLTextFormControlElement::setSelectionRange(unsigned start, unsigned end, const String& directionString) |
270 { | 270 { |
271 TextFieldSelectionDirection direction = SelectionHasNoDirection; | 271 TextFieldSelectionDirection direction = SelectionHasNoDirection; |
272 if (directionString == "forward") | 272 if (directionString == "forward") |
273 direction = SelectionHasForwardDirection; | 273 direction = SelectionHasForwardDirection; |
274 else if (directionString == "backward") | 274 else if (directionString == "backward") |
275 direction = SelectionHasBackwardDirection; | 275 direction = SelectionHasBackwardDirection; |
276 | 276 |
277 if (direction == SelectionHasNoDirection && document().frame() && document() .frame()->editor().behavior().shouldConsiderSelectionAsDirectional()) | 277 if (direction == SelectionHasNoDirection && document().frame() && document() .frame()->editor().behavior().shouldConsiderSelectionAsDirectional()) |
278 direction = SelectionHasForwardDirection; | 278 direction = SelectionHasForwardDirection; |
279 | 279 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
339 index += length; | 339 index += length; |
340 } else if (node->hasTagName(brTag)) { | 340 } else if (node->hasTagName(brTag)) { |
341 ++index; | 341 ++index; |
342 } | 342 } |
343 } | 343 } |
344 | 344 |
345 ASSERT(index >= 0); | 345 ASSERT(index >= 0); |
346 return index; | 346 return index; |
347 } | 347 } |
348 | 348 |
349 void HTMLTextFormControlElement::setSelectionRange(int start, int end, TextField SelectionDirection direction, NeedToDispatchSelectEvent eventBehaviour, Selectio nOption selectionOption) | 349 void HTMLTextFormControlElement::setSelectionRange(unsigned start, unsigned end, TextFieldSelectionDirection direction, NeedToDispatchSelectEvent eventBehaviour , SelectionOption selectionOption) |
350 { | 350 { |
351 if (openShadowRoot() || !isTextFormControl() || !inDocument()) | 351 if (openShadowRoot() || !isTextFormControl() || !inDocument()) |
352 return; | 352 return; |
353 | 353 |
354 const int editorValueLength = static_cast<int>(innerEditorValue().length()); | 354 const int editorValueLength = static_cast<int>(innerEditorValue().length()); |
philipj_slow
2015/08/12 13:20:03
Making this unsigned now would make more sense.
tanay.c
2015/08/14 05:39:11
Done.
| |
355 ASSERT(editorValueLength >= 0); | 355 ASSERT(editorValueLength >= 0); |
356 end = std::max(std::min(end, editorValueLength), 0); | 356 end = std::min<unsigned>(end, editorValueLength); |
357 start = std::min(std::max(start, 0), end); | 357 start = std::min<unsigned>(start, end); |
358 cacheSelection(start, end, direction); | 358 cacheSelection(start, end, direction); |
359 | 359 |
360 if (selectionOption == NotChangeSelection || (selectionOption == ChangeSelec tionIfFocused && document().focusedElement() != this)) { | 360 if (selectionOption == NotChangeSelection || (selectionOption == ChangeSelec tionIfFocused && document().focusedElement() != this)) { |
361 if (eventBehaviour == DispatchSelectEvent) | 361 if (eventBehaviour == DispatchSelectEvent) |
362 scheduleSelectEvent(); | 362 scheduleSelectEvent(); |
363 return; | 363 return; |
364 } | 364 } |
365 | 365 |
366 LocalFrame* frame = document().frame(); | 366 LocalFrame* frame = document().frame(); |
367 HTMLElement* innerEditor = innerEditorElement(); | 367 HTMLElement* innerEditor = innerEditorElement(); |
368 if (!frame || !innerEditor) | 368 if (!frame || !innerEditor) |
369 return; | 369 return; |
370 | 370 |
371 Position startPosition = positionForIndex(innerEditor, start); | 371 Position startPosition = positionForIndex(innerEditor, start); |
372 Position endPosition = start == end ? startPosition : positionForIndex(inner Editor, end); | 372 Position endPosition = start == end ? startPosition : positionForIndex(inner Editor, end); |
373 | 373 |
374 ASSERT(start == indexForPosition(innerEditor, startPosition)); | 374 ASSERT(start == (unsigned)indexForPosition(innerEditor, startPosition)); |
philipj_slow
2015/08/12 13:20:03
So indexForPosition() still returns int. It looks
tanay.c
2015/08/14 05:39:11
It may not be possible to find a clean cut boundar
| |
375 ASSERT(end == indexForPosition(innerEditor, endPosition)); | 375 ASSERT(end == (unsigned)indexForPosition(innerEditor, endPosition)); |
376 | 376 |
377 // startPosition and endPosition can be null position for example when | 377 // startPosition and endPosition can be null position for example when |
378 // "-webkit-user-select: none" style attribute is specified. | 378 // "-webkit-user-select: none" style attribute is specified. |
379 if (startPosition.isNotNull() && endPosition.isNotNull()) { | 379 if (startPosition.isNotNull() && endPosition.isNotNull()) { |
380 ASSERT(startPosition.anchorNode()->shadowHost() == this | 380 ASSERT(startPosition.anchorNode()->shadowHost() == this |
381 && endPosition.anchorNode()->shadowHost() == this); | 381 && endPosition.anchorNode()->shadowHost() == this); |
382 } | 382 } |
383 VisibleSelection newSelection; | 383 VisibleSelection newSelection; |
384 if (direction == SelectionHasBackwardDirection) | 384 if (direction == SelectionHasBackwardDirection) |
385 newSelection.setWithoutValidation(endPosition, startPosition); | 385 newSelection.setWithoutValidation(endPosition, startPosition); |
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1003 } | 1003 } |
1004 | 1004 |
1005 void HTMLTextFormControlElement::copyNonAttributePropertiesFromElement(const Ele ment& source) | 1005 void HTMLTextFormControlElement::copyNonAttributePropertiesFromElement(const Ele ment& source) |
1006 { | 1006 { |
1007 const HTMLTextFormControlElement& sourceElement = static_cast<const HTMLText FormControlElement&>(source); | 1007 const HTMLTextFormControlElement& sourceElement = static_cast<const HTMLText FormControlElement&>(source); |
1008 m_lastChangeWasUserEdit = sourceElement.m_lastChangeWasUserEdit; | 1008 m_lastChangeWasUserEdit = sourceElement.m_lastChangeWasUserEdit; |
1009 HTMLFormControlElement::copyNonAttributePropertiesFromElement(source); | 1009 HTMLFormControlElement::copyNonAttributePropertiesFromElement(source); |
1010 } | 1010 } |
1011 | 1011 |
1012 } // namespace blink | 1012 } // namespace blink |
OLD | NEW |