Skip to content

Commit 4ad9330

Browse files
committed
boxes/views: Initial focus set to search-box in EmojiPickerView.
The PanelSearcBox has been refactored to add a static caption for search. The EmojiPickerView is also updated to set the initial focus to the search-box(header) instead of emoji list(body). Some UI improvements have also been added, including popup_contrasts as used in other PopUp's. Tests amended.
1 parent f91f94b commit 4ad9330

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

tests/ui_tools/test_popups.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -773,7 +773,7 @@ def test_update_emoji_list(self, mocker, emoji_names, search_string,
773773
emojis_display_name = [
774774
emoji.emoji_name for emoji in self.emojis_display]
775775
assert emojis_display_name == assert_list
776-
assert self.emoji_picker_view.get_focus() == 'body'
776+
assert self.emoji_picker_view.get_focus() == 'header'
777777

778778
@pytest.mark.parametrize('key', keys_for_command('SEARCH_EMOJIS'))
779779
def test_keypress_search_emoji(self, key, mocker, widget_size):
@@ -790,7 +790,7 @@ def test_keypress_exit_called(self, key, mocker, widget_size,
790790
if allow_update:
791791
assert self.controller.exit_popup.called
792792
else:
793-
assert self.emoji_picker_view.get_focus() == 'body'
793+
assert self.emoji_picker_view.get_focus() == 'header'
794794

795795
def test_keypress_navigation(self, mocker, widget_size,
796796
navigation_key_expected_key_pair):

zulipterminal/ui_tools/boxes.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1564,14 +1564,18 @@ class PanelSearchBox(urwid.Edit):
15641564
"""
15651565

15661566
def __init__(self, panel_view: Any, search_command: str,
1567-
update_function: Callable[..., None]) -> None:
1567+
update_function: Callable[..., None],
1568+
fixed_search_caption: bool=False) -> None:
15681569
self.panel_view = panel_view
15691570
self.search_command = search_command
15701571
self.search_text = (
15711572
f"Search [{', '.join(keys_for_command(search_command))}]: "
15721573
)
15731574
urwid.connect_signal(self, 'change', update_function)
1574-
super().__init__(caption='', edit_text=self.search_text)
1575+
if not fixed_search_caption:
1576+
super().__init__(caption='', edit_text=self.search_text)
1577+
else:
1578+
super().__init__(caption=self.search_text, edit_text='')
15751579

15761580
def reset_search_text(self) -> None:
15771581
self.set_caption('')

zulipterminal/ui_tools/views.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1473,16 +1473,18 @@ def __init__(self, controller: Any, title: str, emoji_names: List[str],
14731473
self.emoji_buttons = self.generate_emoji_buttons(emoji_names)
14741474
self.emoji_search = PanelSearchBox(self,
14751475
'SEARCH_EMOJIS',
1476-
self.update_emoji_list)
1476+
self.update_emoji_list,
1477+
fixed_search_caption=True)
14771478
self.view.emoji_search = self.emoji_search
14781479
search_box = urwid.LineBox(
14791480
self.emoji_search, tlcorner='─', tline='', lline='',
14801481
trcorner='─', blcorner='─', rline='',
14811482
bline='─', brcorner='─'
14821483
)
1483-
self.allow_update_emoji_list = True
14841484
super().__init__(controller, self.emoji_buttons, 'ADD_REACTION',
14851485
self.width, title, header=[search_box])
1486+
self.set_focus('header')
1487+
self.allow_update_emoji_list = False
14861488

14871489
@asynch
14881490
def update_emoji_list(self, search_box: Any=None,
@@ -1512,15 +1514,20 @@ def update_emoji_list(self, search_box: Any=None,
15121514

15131515
def generate_emoji_buttons(self, emoji_names: List[str]
15141516
) -> List[EmojiButton]:
1515-
return [EmojiButton(self.controller, self.width, emoji_name,
1516-
self.message)
1517-
for emoji_name in emoji_names]
1517+
emoji_buttons = []
1518+
for index, emoji_name in enumerate(emoji_names):
1519+
emoji_buttons.append(urwid.AttrWrap(EmojiButton(
1520+
self.controller, self.width, emoji_name, self.message
1521+
), None if index % 2 else 'popup_contrast'))
1522+
return emoji_buttons
15181523

15191524
def keypress(self, size: urwid_Size, key: str) -> str:
15201525
if (is_command_key('SEARCH_EMOJIS', key)
15211526
and self.allow_update_emoji_list):
15221527
self.allow_update_emoji_list = False
15231528
self.emoji_search.set_edit_text('')
1529+
self.emoji_search.set_caption(
1530+
f"Search [{', '.join(keys_for_command('SEARCH_EMOJIS'))}]: ")
15241531
self.set_focus('header')
15251532
return key
15261533
elif (is_command_key('GO_BACK', key)

0 commit comments

Comments
 (0)