// 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); }
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; }