Text: minor change to text prefix behavior

Don't keep the cursor at the start of the line,
this was creating a selection when adding a prefix without a selection.
This commit is contained in:
Campbell Barton 2019-08-10 04:25:22 +10:00
parent d20d9aa3e8
commit a571ff2c16
Notes: blender-bot 2023-02-14 11:34:30 +01:00
Referenced by issue #69593, VSE no update color of Color Effect Strip
Referenced by issue #69494, Crash on objdata.update()
Referenced by issue #68506, The video sequencer is becoming unresponsive Blender 2.80 (sub 75)
1 changed files with 14 additions and 8 deletions

View File

@ -1933,7 +1933,7 @@ bool txt_replace_char(Text *text, unsigned int add)
*/
static void txt_select_prefix(Text *text, const char *add)
{
int len, num, curc_old;
int len, num, curc_old, selc_old;
char *tmp;
const int indentlen = strlen(add);
@ -1941,6 +1941,7 @@ static void txt_select_prefix(Text *text, const char *add)
BLI_assert(!ELEM(NULL, text->curl, text->sell));
curc_old = text->curc;
selc_old = text->selc;
num = 0;
while (true) {
@ -1978,19 +1979,24 @@ static void txt_select_prefix(Text *text, const char *add)
num++;
}
}
if (!curc_old) {
text->curc = 0;
}
else {
text->curc = curc_old + indentlen;
}
while (num > 0) {
text->curl = text->curl->prev;
num--;
}
/* caller must handle undo */
/* Keep the cursor left aligned if we don't have a selection. */
if (curc_old == 0 && !(text->curl == text->sell && curc_old == selc_old)) {
if (text->curl == text->sell) {
if (text->curc == text->selc) {
text->selc = 0;
}
}
text->curc = 0;
}
else {
text->curc = curc_old + indentlen;
}
}
/**