From 79f02ba0448c559e37539ece389aea8ec7e5a173 Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Fri, 14 May 2021 12:05:52 +0300 Subject: InputWidget: Rewrap when width changes --- src/ui/inputwidget.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ui/inputwidget.c b/src/ui/inputwidget.c index 6639f957..d9985a8b 100644 --- a/src/ui/inputwidget.c +++ b/src/ui/inputwidget.c @@ -114,6 +114,7 @@ struct Impl_InputWidget { iArray text; /* iChar[] */ iArray oldText; /* iChar[] */ iArray lines; + int lastUpdateWidth; iString hint; iString srcHint; int leftPadding; @@ -239,6 +240,7 @@ static void clearLines_InputWidget_(iInputWidget *d) { } static void updateLines_InputWidget_(iInputWidget *d) { + d->lastUpdateWidth = d->widget.rect.size.x; clearLines_InputWidget_(d); if (d->maxLen) { /* Everything on a single line. */ @@ -339,6 +341,7 @@ void init_InputWidget(iInputWidget *d, size_t maxLen) { d->cursor = 0; d->lastCursor = 0; d->cursorLine = 0; + d->lastUpdateWidth = 0; d->verticalMoveX = -1; /* TODO: Use this. */ d->inFlags = eatEscape_InputWidgetFlag | enterKeyEnabled_InputWidgetFlag; iZap(d->mark); @@ -1007,7 +1010,7 @@ static iBool processEvent_InputWidget_(iInputWidget *d, const SDL_Event *ev) { updateMetrics_InputWidget_(d); updateLinesAndResize_InputWidget_(d); } - else if (isResize_UserEvent(ev)) { + else if (isResize_UserEvent(ev) || d->lastUpdateWidth != w->rect.size.x) { d->inFlags |= needUpdateBuffer_InputWidgetFlag; if (d->inFlags & isUrl_InputWidgetFlag) { /* Restore/omit the default scheme if necessary. */ -- cgit v1.2.3