suggestion picker: a persistent layer to complement virtual keyboards like wvkbd
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -339,6 +339,7 @@ usage(char *argv0) { void hide(int sigint) { + if(keyboard.debug) fprintf(stderr, "hiding keyboard\n"); signal(SIGUSR1, hide); if (!layer_surface) { return; @@ -348,10 +349,13 @@ hide(int sigint) { wl_surface_destroy(draw_surf.surf); layer_surface = NULL; hidden = true; + // dispatch to make it disappear + wl_display_dispatch(display); } void show(int sigint) { + if(keyboard.debug) fprintf(stderr, "showing keyboard\n"); signal(SIGUSR2, show); if (layer_surface) { return; @@ -375,9 +379,12 @@ show(int sigint) { wl_display_roundtrip(display); drwsurf_flip(&draw_surf); hidden = false; + // Dispatch so that bar appears (and can take events). + wl_display_dispatch(display); } void toggle_visibility(int sigint) { + if(keyboard.debug) fprintf(stderr, "toggling visibility\n"); signal(SIGRTMIN, toggle_visibility); if (hidden) { show(sigint); @@ -442,11 +449,6 @@ main(int argc, char **argv) { } else if ((!strcmp(argv[i], "-h")) || (!strcmp(argv[i], "--help"))) { usage(argv[0]); exit(0); - } else if (!strcmp(argv[i], "-l")) { - if (i >= argc - 1) { - usage(argv[0]); - exit(1); - } } else if (!strcmp(argv[i], "-H")) { if (i >= argc - 1) { usage(argv[0]); @@ -520,8 +522,6 @@ main(int argc, char **argv) { fds[0].events = POLLIN; fds[1].fd = wl_display_get_fd(display); fds[1].events = POLLIN; - // Initial dispatch so that bar appears (and can take events). - wl_display_dispatch(display); while (run_display) { while(layer_surface && poll(fds, 2, -1) != -1) { if (fds[0].revents & POLLIN) { @@ -532,7 +532,9 @@ main(int argc, char **argv) { } wl_display_flush(display); } - wl_display_roundtrip(display); + if (layer_surface){ + wl_display_roundtrip(display); + } while (run_display && !layer_surface) { // Hidden sleep(1); |