Merge pull request #64 from paul-nameless/fix-filling-lower-right-corner-curses

Fix filling lower right corner is curses
This commit is contained in:
Nameless 2020-06-03 09:25:25 +08:00 committed by GitHub
commit f980eb3c96
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -401,7 +401,24 @@ class MsgView:
for attr, elem in zip(self._msg_attributes(selected), elements): for attr, elem in zip(self._msg_attributes(selected), elements):
if not elem: if not elem:
continue continue
self.win.addstr(line_num, column, elem, attr) lines = (column + len(elem)) // self.w
last_line = self.h == line_num + lines
# work around agaist curses behaviour, when you cant write
# char to the lower right coner of the window
# see https://stackoverflow.com/questions/21594778/how-to-fill-to-lower-right-corner-in-python-curses/27517397#27517397
if last_line:
start, stop = 0, self.w - column
for i in range(lines):
# insstr does not wraps long strings
self.win.insstr(
line_num + i,
column if not i else 0,
elem[start:stop],
attr,
)
start, stop = stop, stop + self.w
else:
self.win.addstr(line_num, column, elem, attr)
column += len(elem) column += len(elem)
self._refresh() self._refresh()