void insertText(const char * text, int len) { if (!strcmp(text, "\n")) { if (m_pCATextView->getReturnType() != CrossApp::CATextView::Default) { m_pCATextView->resignFirstResponder(); if (m_pCATextView->getDelegate()) { m_pCATextView->getDelegate()->textViewShouldReturn(m_pCATextView); } return; } } std::string cszAddText; cszAddText.append(text, len); if (m_curSelCharRange.first != m_curSelCharRange.second) { if (!textValueChanged(m_curSelCharRange.first, m_curSelCharRange.second - m_curSelCharRange.first, cszAddText)) return; } else { if (!textValueChanged(m_iCurPos, 0, cszAddText)) return; } execCurSelCharRange(); m_szText.insert(m_iCurPos, text, len); m_iCurPos += len; m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos); updateImage(); }
void deleteBackward() { CC_RETURN_IF(m_iCurPos == 0 || m_szText.empty()); if (m_curSelCharRange.first != m_curSelCharRange.second) { if (!textValueChanged(m_curSelCharRange.first, m_curSelCharRange.second - m_curSelCharRange.first, "")) return; CC_RETURN_IF(execCurSelCharRange()); } else { int nDeleteLen = 1; while (0x80 == (0xC0 & m_szText.at(m_iCurPos - nDeleteLen))) { ++nDeleteLen; } if (!textValueChanged(m_iCurPos, nDeleteLen, "")) return; m_iCurPos = MAX(m_iCurPos, nDeleteLen); m_szText.erase(m_iCurPos - nDeleteLen, nDeleteLen); m_iCurPos -= nDeleteLen; updateImage(); } }
void insertText(const char * text, int len) { if (!strcmp(text, "\n")) { getKeyBoradReturnCallBack(); CATextFieldDelegate* pDelegate = m_pTextFieldX->getDelegate(); if (m_pTextFieldX->isAllowkeyBoardHide()) { m_pTextFieldX->resignFirstResponder(); EndMouseMoveArr(); } if (pDelegate) { pDelegate->textFieldShouldReturn(m_pTextFieldX); } return; } if (m_sText.size() + len > m_pTextFieldX->getMaxLenght()) return; std::string cszAddText; cszAddText.append(text, len); if (m_curSelCharRange.first != m_curSelCharRange.second) { if (!textValueChanged(m_curSelCharRange.first, m_curSelCharRange.second - m_curSelCharRange.first, cszAddText)) return; } else { if (!textValueChanged(m_iCurPos, 0, cszAddText)) return; } execCurSelCharRange(); analyzeString(text, len); adjustCursorMove(); }
void deleteBackward() { CC_RETURN_IF(m_sText.empty() || m_iCurPos==0); if (m_pTextFieldX->isSecureTextEntry()) { clearText(); updateImage(); return; } if (m_curSelCharRange.first != m_curSelCharRange.second) { if (!textValueChanged(m_curSelCharRange.first, m_curSelCharRange.second - m_curSelCharRange.first, "")) return; CC_RETURN_IF(execCurSelCharRange()); } else { int nDeleteLen = 1; while (0x80 == (0xC0 & m_sText.at(m_iCurPos - nDeleteLen))) { ++nDeleteLen; } if (!textValueChanged(m_iCurPos, nDeleteLen, "")) return; m_sText.erase(m_iCurPos - nDeleteLen, nDeleteLen); m_iCurPos -= nDeleteLen; m_curSelCharRange = std::make_pair(m_iCurPos, m_iCurPos); m_vTextFiledChars.erase(m_vTextFiledChars.begin() + getStringCharCount(m_sText.substr(0, m_iCurPos))); adjustCursorMove(); } }