mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r24519) -Codechange [FS#5203]: Refactor character removal code of text edit
This commit is contained in:
parent
ae28432e62
commit
bacad1478a
|
@ -27,11 +27,27 @@ bool GetClipboardContents(char *buffer, size_t buff_len);
|
||||||
int _caret_timer;
|
int _caret_timer;
|
||||||
|
|
||||||
|
|
||||||
/* Delete a character at the caret position in a text buf.
|
/**
|
||||||
* If backspace is set, delete the character before the caret,
|
* Checks if it is possible to delete a character.
|
||||||
* else delete the character after it. */
|
* @param backspace if set, delete the character before the caret,
|
||||||
|
* otherwise, delete the character after it.
|
||||||
|
* @return true if a character can be deleted in the given direction.
|
||||||
|
*/
|
||||||
|
bool Textbuf::CanDelChar(bool backspace)
|
||||||
|
{
|
||||||
|
return backspace ? this->caretpos != 0 : this->caretpos < this->bytes - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a character at the caret position in a text buf.
|
||||||
|
* @param backspace if set, delete the character before the caret,
|
||||||
|
* else delete the character after it.
|
||||||
|
* @warning You should ensure Textbuf::CanDelChar returns true before calling this function.
|
||||||
|
*/
|
||||||
void Textbuf::DelChar(bool backspace)
|
void Textbuf::DelChar(bool backspace)
|
||||||
{
|
{
|
||||||
|
assert(this->CanDelChar(backspace));
|
||||||
|
|
||||||
WChar c;
|
WChar c;
|
||||||
char *s = this->buf + this->caretpos;
|
char *s = this->buf + this->caretpos;
|
||||||
|
|
||||||
|
@ -60,12 +76,13 @@ void Textbuf::DelChar(bool backspace)
|
||||||
*/
|
*/
|
||||||
bool Textbuf::DeleteChar(int delmode)
|
bool Textbuf::DeleteChar(int delmode)
|
||||||
{
|
{
|
||||||
if (delmode == WKC_BACKSPACE && this->caretpos != 0) {
|
if (delmode == WKC_BACKSPACE || delmode == WKC_DELETE) {
|
||||||
this->DelChar(true);
|
bool backspace = delmode == WKC_BACKSPACE;
|
||||||
return true;
|
if (CanDelChar(backspace)) {
|
||||||
} else if (delmode == WKC_DELETE && this->caretpos < this->bytes - 1) {
|
this->DelChar(backspace);
|
||||||
this->DelChar(false);
|
return true;
|
||||||
return true;
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -39,6 +39,7 @@ struct Textbuf {
|
||||||
void UpdateSize();
|
void UpdateSize();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool CanDelChar(bool backspace);
|
||||||
void DelChar(bool backspace);
|
void DelChar(bool backspace);
|
||||||
bool CanMoveCaretLeft();
|
bool CanMoveCaretLeft();
|
||||||
WChar MoveCaretLeft();
|
WChar MoveCaretLeft();
|
||||||
|
|
Loading…
Reference in New Issue