Esempio n. 1
0
// Actions to be performed after any command
void TextEdit::postProcessCommand() {
    if (m_Window == 0)  // Window is destroyed => return
        return;

    if (textChanged)
        textSaved = false;

    // Scroll the window to the cursor, if necessary
    if (cursorX < windowX || cursorX > windowX + windowWidth - 1 || cursorY < windowY || cursorY > windowY + windowHeight - 1)
    {
        // Cursor is removed at the moment!
        scrollToCursor();
    }

    // Set pointer in the text
    text.setPointer(cursorY);

    inputDisabled = false;

    drawCursor(cursorX, cursorY, true, true);
    drawStatusLine(true);
}
Esempio n. 2
0
bool TextArea::handleEvent(Ion::Events::Event event) {
  if (m_delegate != nullptr && m_delegate->textAreaDidReceiveEvent(this, event)) {
    return true;
  } else if (Responder::handleEvent(event)) {
    // The only event Responder handles is 'Toolbox' displaying.
    return true;
  } else if (event == Ion::Events::Left) {
    return setCursorLocation(cursorLocation()-1);
  } else if (event == Ion::Events::Right) {
    return setCursorLocation(cursorLocation()+1);
  } else if (event == Ion::Events::Up) {
    contentView()->moveCursorGeo(0, -1);
  } else if (event == Ion::Events::Down) {
    contentView()->moveCursorGeo(0, 1);
  } else if (event == Ion::Events::ShiftLeft) {
    contentView()->moveCursorGeo(-INT_MAX/2, 0);
  } else if (event == Ion::Events::ShiftRight) {
    contentView()->moveCursorGeo(INT_MAX/2, 0);
  } else if (event == Ion::Events::Backspace) {
    return removeChar();
  } else if (event.hasText()) {
    return handleEventWithText(event.text());
  } else if (event == Ion::Events::EXE) {
    return handleEventWithText("\n");
  } else if (event == Ion::Events::Clear) {
    if (!contentView()->removeEndOfLine()) {
      contentView()->removeStartOfLine();
    }
  } else if (event == Ion::Events::Paste) {
    return handleEventWithText(Clipboard::sharedClipboard()->storedText());
  } else {
    return false;
  }
  scrollToCursor();
  return true;
}