MCPcopy Create free account
hub / github.com/axmolengine/axmol / handleDeleteKeyEvent

Method handleDeleteKeyEvent

core/ui/UITextFieldEx.cpp:675–734  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

673}
674
675void TextFieldEx::handleDeleteKeyEvent()
676{
677 if (!_editable || !this->_enabled || 0 == _charCount)
678 {
679 axbeep(0);
680 return;
681 }
682
683 size_t len = _inputText.length();
684 if (0 == len || _insertPosUtf8 == _charCount)
685 {
686 axbeep(0);
687 // there is no string
688 // __updateCursorPosition();
689 return;
690 }
691
692 // get the delete byte number
693 size_t deleteLen = 1; // default, erase 1 byte
694
695 while ((_inputText.length() > _insertPos + deleteLen) && 0x80 == (0xC0 & _inputText.at(_insertPos + deleteLen)))
696 {
697 ++deleteLen;
698 }
699
700 // if (_delegate && _delegate->onTextFieldDeleteBackward(this, _inputText.c_str() + len - deleteLen,
701 // static_cast<int>(deleteLen)))
702 //{
703 // // delegate doesn't wan't to delete backwards
704 // return;
705 // }
706
707 // if all text deleted, show placeholder string
708 if (len <= deleteLen)
709 {
710 _inputText.clear();
711 _charCount = 0;
712 _renderLabel->setTextColor(_colorSpaceHolder);
713 _renderLabel->setString(_placeHolder);
714
715 __updateCursorPosition();
716
717 // this->contentDirty = true;
718
719 if (this->onTextModify)
720 this->onTextModify();
721 return;
722 }
723
724 // set new input text
725 std::string text = _inputText; // (inputText.c_str(), len - deleteLen);
726 text.erase(_insertPos, deleteLen);
727
728 // __moveCursor(-1);
729
730 this->setString(text);
731
732 if (this->onTextModify)

Callers 1

enableIMEMethod · 0.95

Calls 6

setStringMethod · 0.95
lengthMethod · 0.45
atMethod · 0.45
clearMethod · 0.45
setTextColorMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected