Skip to content

Commit d1713e5

Browse files
committed
Unicode character support in screen tab names
1 parent 48fff7f commit d1713e5

2 files changed

Lines changed: 5 additions & 3 deletions

File tree

Action.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,8 @@ Htop_Reaction Action_setScreenTab(State* st, int x) {
419419
int rem = x - SCREEN_TAB_MARGIN_LEFT;
420420
for (unsigned int i = 0; i < settings->nScreens; i++) {
421421
const char* tab = settings->screens[i]->heading;
422-
int width = rem >= bracketWidth ? (int)strnlen(tab, rem - bracketWidth + 1) : 0;
422+
const char* ptr = tab;
423+
int width = rem >= bracketWidth ? String_mbswidth(&ptr, SIZE_MAX, rem - bracketWidth + 1) : 0;
423424
if (width >= rem - bracketWidth + 1) {
424425
settings->ssIndex = i;
425426
setActiveScreen(settings, st, i);

ScreenManager.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,9 +177,10 @@ static inline bool drawTab(const int* y, int* x, int l, const char* name, bool c
177177
(*x)++;
178178
if (*x >= l)
179179
return false;
180-
int nameWidth = (int)strnlen(name, l - *x);
180+
const char* ptr = name;
181+
int nameWidth = String_mbswidth(&ptr, (size_t)INT_MAX, l - *x);
181182
attrset(CRT_colors[cur ? SCREENS_CUR_TEXT : SCREENS_OTH_TEXT]);
182-
mvaddnstr(*y, *x, name, nameWidth);
183+
mvaddnstr(*y, *x, name, (int)(ptr - name));
183184
*x += nameWidth;
184185
if (*x >= l)
185186
return false;

0 commit comments

Comments
 (0)