string widget: Allow multibyte characters
Currently render_string() truncates the text after n bytes, where n is the number of characters from the start of the rendering position to the right margin. Since the API already requires drivers to take care of proper truncating, this is not necessary. Signed-off-by: Harald Geyer <harald@ccbib.org>
This commit is contained in:
+1
-7
@@ -310,9 +310,6 @@ render_string(Widget *w, int left, int top, int right, int bottom, int fy)
|
||||
|
||||
if ((w != NULL) && (w->text != NULL) &&
|
||||
(w->x > 0) && (w->y > 0) && (w->y > fy) && (w->y <= bottom - top)) {
|
||||
int length;
|
||||
char str[BUFSIZE];
|
||||
|
||||
/*
|
||||
* FIXME: Could be a bug here? w->x is recalculated (On first
|
||||
* call only? Is it preserved between calls?) and first
|
||||
@@ -320,10 +317,7 @@ render_string(Widget *w, int left, int top, int right, int bottom, int fy)
|
||||
* strings totally off-screen. Is this on purpose? (M. Dolze)
|
||||
*/
|
||||
w->x = min(w->x, right - left);
|
||||
length = min(right - left - w->x + 1, sizeof(str)-1);
|
||||
strncpy(str, w->text, length);
|
||||
str[length] = '\0';
|
||||
drivers_string(w->x + left, w->y + top, str);
|
||||
drivers_string(w->x + left, w->y + top, w->text);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user