void HTMLTextFormControlElement::setSelectionRange(int start, int end, TextFieldSelectionDirection direction, NeedToDispatchSelectEvent eventBehaviour, SelectionOption selectionOption) { if (openShadowRoot() || !isTextFormControl()) return; const int editorValueLength = static_cast<int>(innerEditorValue().length()); ASSERT(editorValueLength >= 0); end = std::max(std::min(end, editorValueLength), 0); start = std::min(std::max(start, 0), end); cacheSelection(start, end, direction); if (selectionOption == NotChangeSelection || (selectionOption == ChangeSelectionIfFocused && document().focusedElement() != this) || !inShadowIncludingDocument()) { if (eventBehaviour == DispatchSelectEvent) scheduleSelectEvent(); return; } LocalFrame* frame = document().frame(); HTMLElement* innerEditor = innerEditorElement(); if (!frame || !innerEditor) return; Position startPosition = positionForIndex(innerEditor, start); Position endPosition = start == end ? startPosition : positionForIndex(innerEditor, end); ASSERT(start == indexForPosition(innerEditor, startPosition)); ASSERT(end == indexForPosition(innerEditor, endPosition)); #if ENABLE(ASSERT) // startPosition and endPosition can be null position for example when // "-webkit-user-select: none" style attribute is specified. if (startPosition.isNotNull() && endPosition.isNotNull()) { ASSERT(startPosition.anchorNode()->shadowHost() == this && endPosition.anchorNode()->shadowHost() == this); } #endif // ENABLE(ASSERT) VisibleSelection newSelection; if (direction == SelectionHasBackwardDirection) newSelection.setWithoutValidation(endPosition, startPosition); else newSelection.setWithoutValidation(startPosition, endPosition); newSelection.setIsDirectional(direction != SelectionHasNoDirection); frame->selection().setSelection(newSelection, FrameSelection::DoNotAdjustInFlatTree | FrameSelection::CloseTyping | FrameSelection::ClearTypingStyle | (selectionOption == ChangeSelectionAndFocus ? 0 : FrameSelection::DoNotSetFocus)); if (eventBehaviour == DispatchSelectEvent) scheduleSelectEvent(); }
bool ImagePanel::mouseButtonEvent (const ivec2 & p, int /* button */, bool down, int /* modifiers */) { int index = indexForPosition (p); if (index >= 0 && mCallback && down) mCallback (index); return true; }
int HTMLTextFormControlElement::computeSelectionEnd() const { ASSERT(isTextFormControl()); LocalFrame* frame = document().frame(); if (!frame) return 0; return indexForPosition(innerEditorElement(), frame->selection().end()); }
int HTMLTextFormControlElement::computeSelectionStart() const { ASSERT(isTextFormControl()); Frame* frame = document().frame(); if (!frame) return 0; return indexForPosition(frame->selection().selection().start()); }
int HTMLTextFormControlElement::indexForVisiblePosition(const VisiblePosition& position) const { TextControlInnerTextElement* innerText = innerTextElement(); if (!innerText || !innerText->contains(position.deepEquivalent().anchorNode())) return 0; unsigned index = indexForPosition(position.deepEquivalent()); ASSERT(VisiblePosition(positionForIndex(innerTextElement(), index)) == position); return index; }
void ConfigPanelWidget::reset() { ui->spinBox_lineSize->setValue(mOldLineSize); ui->spinBox_lineCount->setValue(mOldLineCount); ui->comboBox_position->setCurrentIndex(indexForPosition(mOldScreenNum, mOldPosition)); fillComboBox_alignment(); ui->comboBox_alignment->setCurrentIndex(mOldAlignment + 1); ui->comboBox_lenghtType->setCurrentIndex(mOldLengthInPercents ? 0 : 1); widthTypeChanged(); ui->spinBox_length->setValue(mOldLength); }
bool ImagePanel::mouseMotionEvent (const ivec2 & p, const ivec2 & /* rel */, int /* button */, int /* modifiers */) { mMouseIndex = indexForPosition (p); return true; }