@ -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 ) {
entry - > panel_visible = ! entry - > panel_visible ;
if ( entry - > panel_visible )
zwp_text_input_v1_show_input_panel ( entry - > text_input ) ;
zwp_text_input_v1_show_input_panel ( entry - > text_input ) ;
else
zwp_text_input_v1_hide_input_panel ( entry - > text_input ) ;
return ;
return ;
}
}