1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-07-01 16:57:45 +02:00

fix friendlist drawing bugs

This commit is contained in:
Jfreegman 2013-11-15 17:03:24 -05:00
parent 8bbd796755
commit 0f5fed577d

View File

@ -207,6 +207,10 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m)
{
curs_set(0);
werase(self->window);
int x, y;
getmaxyx(self->window, y, x);
bool fix_statuses = x != self->x; /* true if window x axis has changed */
if (max_friends_index == 0) {
wprintw(self->window, "Empty. Add some friends! :-)\n");
@ -250,22 +254,19 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m)
wattroff(self->window, COLOR_PAIR(colour) | A_BOLD);
wprintw(self->window, "]%s (", friends[f].name);
int x, y;
getmaxyx(self->window, y, x);
/* Reset friends[f].statusmsg on window resize */
if (x != self->x) {
if (fix_statuses) {
uint8_t statusmsg[TOX_MAX_STATUSMESSAGE_LENGTH] = {'\0'};
tox_copy_statusmessage(m, friends[f].num, statusmsg, TOX_MAX_STATUSMESSAGE_LENGTH);
snprintf(friends[f].statusmsg, sizeof(friends[f].statusmsg), "%s", statusmsg);
friends[f].statusmsg_len = tox_get_statusmessage_size(m, self->num);
friends[f].statusmsg_len = tox_get_statusmessage_size(m, f);
}
self->x = x;
/* Truncate note if it doesn't fit on one line */
uint16_t maxlen = x - getcurx(self->window) - 2;
if (friends[f].statusmsg_len > maxlen) {
friends[f].statusmsg[maxlen-3] = '\0';
strcat(friends[f].statusmsg, "...");
friends[f].statusmsg[maxlen] = '\0';
friends[f].statusmsg_len = maxlen;
}
@ -277,6 +278,7 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m)
}
}
self->x = x;
wrefresh(self->window);
}