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 <JPEWhacker@gmail.com> Tested-by: Silvan Jegen <s.jegen@gmail.com> Reviewed-by: Jan Arne Petersen <janarne@gmail.com>
This commit is contained in:
parent
dd61625d18
commit
8093fd5db2
|
@ -49,6 +49,7 @@ struct text_entry {
|
||||||
struct window *window;
|
struct window *window;
|
||||||
char *text;
|
char *text;
|
||||||
int active;
|
int active;
|
||||||
|
bool panel_visible;
|
||||||
uint32_t cursor;
|
uint32_t cursor;
|
||||||
uint32_t anchor;
|
uint32_t anchor;
|
||||||
struct {
|
struct {
|
||||||
|
@ -499,8 +500,10 @@ text_input_leave(void *data,
|
||||||
text_entry_commit_and_reset(entry);
|
text_entry_commit_and_reset(entry);
|
||||||
entry->active--;
|
entry->active--;
|
||||||
|
|
||||||
if (!entry->active)
|
if (!entry->active) {
|
||||||
zwp_text_input_v1_hide_input_panel(text_input);
|
zwp_text_input_v1_hide_input_panel(text_input);
|
||||||
|
entry->panel_visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
widget_schedule_redraw(entry->widget);
|
widget_schedule_redraw(entry->widget);
|
||||||
}
|
}
|
||||||
|
@ -699,6 +702,7 @@ text_entry_create(struct editor *editor, const char *text)
|
||||||
entry->window = editor->window;
|
entry->window = editor->window;
|
||||||
entry->text = strdup(text);
|
entry->text = strdup(text);
|
||||||
entry->active = 0;
|
entry->active = 0;
|
||||||
|
entry->panel_visible = false;
|
||||||
entry->cursor = strlen(text);
|
entry->cursor = strlen(text);
|
||||||
entry->anchor = entry->cursor;
|
entry->anchor = entry->cursor;
|
||||||
entry->text_input =
|
entry->text_input =
|
||||||
|
@ -787,7 +791,12 @@ text_entry_activate(struct text_entry *entry,
|
||||||
struct wl_surface *surface = window_get_wl_surface(entry->window);
|
struct wl_surface *surface = window_get_wl_surface(entry->window);
|
||||||
|
|
||||||
if (entry->click_to_show && entry->active) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue