From 8093fd5db2e31230cd4ef18dfb9bb9df5cf6a8ff Mon Sep 17 00:00:00 2001 From: Joshua Watt Date: Sat, 24 Jun 2017 16:03:42 -0500 Subject: [PATCH] clients/editor: Toggle panel visibility on click If the --click-to-show option is specified, clicking an input field will toggle the input panel visiblity Signed-off-by: Joshua Watt Tested-by: Silvan Jegen Reviewed-by: Jan Arne Petersen --- clients/editor.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/clients/editor.c b/clients/editor.c index b63c5628..78d10d2c 100644 --- a/clients/editor.c +++ b/clients/editor.c @@ -49,6 +49,7 @@ struct text_entry { struct window *window; char *text; int active; + bool panel_visible; uint32_t cursor; uint32_t anchor; struct { @@ -499,8 +500,10 @@ text_input_leave(void *data, text_entry_commit_and_reset(entry); entry->active--; - if (!entry->active) + if (!entry->active) { zwp_text_input_v1_hide_input_panel(text_input); + entry->panel_visible = false; + } widget_schedule_redraw(entry->widget); } @@ -699,6 +702,7 @@ text_entry_create(struct editor *editor, const char *text) entry->window = editor->window; entry->text = strdup(text); entry->active = 0; + entry->panel_visible = false; entry->cursor = strlen(text); entry->anchor = entry->cursor; entry->text_input = @@ -787,7 +791,12 @@ text_entry_activate(struct text_entry *entry, struct wl_surface *surface = window_get_wl_surface(entry->window); if (entry->click_to_show && entry->active) { - zwp_text_input_v1_show_input_panel(entry->text_input); + entry->panel_visible = !entry->panel_visible; + + if (entry->panel_visible) + zwp_text_input_v1_show_input_panel(entry->text_input); + else + zwp_text_input_v1_hide_input_panel(entry->text_input); return; }