Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Side by Side Diff: Source/core/editing/InputMethodController.cpp

Issue 23467007: Have Range constructor take a Document reference in argument (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved.
3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 size_t numUnderlines = m_customCompositionUnderlines.size(); 301 size_t numUnderlines = m_customCompositionUnderlines.size();
302 for (size_t i = 0; i < numUnderlines; ++i) { 302 for (size_t i = 0; i < numUnderlines; ++i) {
303 m_customCompositionUnderlines[i].startOffset += baseOffset; 303 m_customCompositionUnderlines[i].startOffset += baseOffset;
304 m_customCompositionUnderlines[i].endOffset += baseOffset; 304 m_customCompositionUnderlines[i].endOffset += baseOffset;
305 } 305 }
306 if (baseNode->renderer()) 306 if (baseNode->renderer())
307 baseNode->renderer()->repaint(); 307 baseNode->renderer()->repaint();
308 308
309 unsigned start = std::min(baseOffset + selectionStart, extentOffset) ; 309 unsigned start = std::min(baseOffset + selectionStart, extentOffset) ;
310 unsigned end = std::min(std::max(start, baseOffset + selectionEnd), extentOffset); 310 unsigned end = std::min(std::max(start, baseOffset + selectionEnd), extentOffset);
311 RefPtr<Range> selectedRange = Range::create(&baseNode->document(), b aseNode, start, baseNode, end); 311 RefPtr<Range> selectedRange = Range::create(baseNode->document(), ba seNode, start, baseNode, end);
312 m_frame->selection().setSelectedRange(selectedRange.get(), DOWNSTREA M, false); 312 m_frame->selection().setSelectedRange(selectedRange.get(), DOWNSTREA M, false);
313 } 313 }
314 } 314 }
315 } 315 }
316 316
317 void InputMethodController::setCompositionFromExistingText(const Vector<Composit ionUnderline>& underlines, unsigned compositionStart, unsigned compositionEnd) 317 void InputMethodController::setCompositionFromExistingText(const Vector<Composit ionUnderline>& underlines, unsigned compositionStart, unsigned compositionEnd)
318 { 318 {
319 Node* editable = m_frame->selection().rootEditableElement(); 319 Node* editable = m_frame->selection().rootEditableElement();
320 Position base = m_frame->selection().base().downstream(); 320 Position base = m_frame->selection().base().downstream();
321 Node* baseNode = base.anchorNode(); 321 Node* baseNode = base.anchorNode();
(...skipping 28 matching lines...) Expand all
350 350
351 PassRefPtr<Range> InputMethodController::compositionRange() const 351 PassRefPtr<Range> InputMethodController::compositionRange() const
352 { 352 {
353 if (!m_compositionNode) 353 if (!m_compositionNode)
354 return 0; 354 return 0;
355 unsigned length = m_compositionNode->length(); 355 unsigned length = m_compositionNode->length();
356 unsigned start = std::min(m_compositionStart, length); 356 unsigned start = std::min(m_compositionStart, length);
357 unsigned end = std::min(std::max(start, m_compositionEnd), length); 357 unsigned end = std::min(std::max(start, m_compositionEnd), length);
358 if (start >= end) 358 if (start >= end)
359 return 0; 359 return 0;
360 return Range::create(&m_compositionNode->document(), m_compositionNode.get() , start, m_compositionNode.get(), end); 360 return Range::create(m_compositionNode->document(), m_compositionNode.get(), start, m_compositionNode.get(), end);
361 } 361 }
362 362
363 PlainTextOffsets InputMethodController::getSelectionOffsets() const 363 PlainTextOffsets InputMethodController::getSelectionOffsets() const
364 { 364 {
365 RefPtr<Range> range = m_frame->selection().selection().firstRange(); 365 RefPtr<Range> range = m_frame->selection().selection().firstRange();
366 if (!range) 366 if (!range)
367 return PlainTextOffsets(); 367 return PlainTextOffsets();
368 size_t location; 368 size_t location;
369 size_t length; 369 size_t length;
370 // FIXME: We should change TextIterator::getLocationAndLengthFromRange() ret urns PlainTextOffsets. 370 // FIXME: We should change TextIterator::getLocationAndLengthFromRange() ret urns PlainTextOffsets.
371 if (TextIterator::getLocationAndLengthFromRange(m_frame->selection().rootEdi tableElementOrTreeScopeRootNode(), range.get(), location, length)) 371 if (TextIterator::getLocationAndLengthFromRange(m_frame->selection().rootEdi tableElementOrTreeScopeRootNode(), range.get(), location, length))
372 return PlainTextOffsets(location, location + length); 372 return PlainTextOffsets(location, location + length);
373 return PlainTextOffsets(); 373 return PlainTextOffsets();
374 } 374 }
375 375
376 bool InputMethodController::setSelectionOffsets(const PlainTextOffsets& selectio nOffsets) 376 bool InputMethodController::setSelectionOffsets(const PlainTextOffsets& selectio nOffsets)
377 { 377 {
378 if (selectionOffsets.isNull()) 378 if (selectionOffsets.isNull())
379 return false; 379 return false;
380 // FIXME: We should move Editor::setSelectionOffsets() into InputMethodContr oller class. 380 // FIXME: We should move Editor::setSelectionOffsets() into InputMethodContr oller class.
381 return editor().setSelectionOffsets(selectionOffsets.start(), selectionOffse ts.end()); 381 return editor().setSelectionOffsets(selectionOffsets.start(), selectionOffse ts.end());
382 } 382 }
383 383
384 } // namespace WebCore 384 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698