Make button widget unicode-aware (spacing)

This commit is contained in:
Dan Schwarz 2023-04-04 19:43:36 -04:00 committed by Daniel Schwarz
parent eb8033ce46
commit 524115e2f5
1 changed files with 3 additions and 2 deletions

View File

@ -1,4 +1,5 @@
import urwid import urwid
from wcwidth import wcswidth
class Clickable: class Clickable:
@ -40,12 +41,12 @@ class Button(urwid.AttrWrap):
"""Styled button.""" """Styled button."""
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
button = urwid.Button(*args, **kwargs) button = urwid.Button(*args, **kwargs)
padding = urwid.Padding(button, width=len(args[0]) + 4) padding = urwid.Padding(button, width=wcswidth(args[0]) + 4)
return super().__init__(padding, "button", "button_focused") return super().__init__(padding, "button", "button_focused")
def set_label(self, *args, **kwargs): def set_label(self, *args, **kwargs):
self.original_widget.original_widget.set_label(*args, **kwargs) self.original_widget.original_widget.set_label(*args, **kwargs)
self.original_widget.width = len(args[0]) + 4 self.original_widget.width = wcswidth(args[0]) + 4
class CheckBox(urwid.AttrWrap): class CheckBox(urwid.AttrWrap):