diff options
author | Manuel Bachmann <manuel.bachmann@open.eurogiciel.org> | 2014-05-31 18:01:29 +0200 |
---|---|---|
committer | Manuel Bachmann <manuel.bachmann@open.eurogiciel.org> | 2014-05-31 18:01:29 +0200 |
commit | df953852830e918d63196fbdbfe207c6591c8068 (patch) | |
tree | 6a0917ff366160084e08a9bdc8ba7c17daedfb80 | |
parent | aabdd023f7e2bfd6c9a625d75334658332e73a19 (diff) | |
download | libwlmessage-df953852830e918d63196fbdbfe207c6591c8068.tar.gz libwlmessage-df953852830e918d63196fbdbfe207c6591c8068.tar.bz2 libwlmessage-df953852830e918d63196fbdbfe207c6591c8068.zip |
Return selected button and entered text, as intended.
Remove dead code.
Suppress annoying warning message.
Signed-off-by: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org>
-rw-r--r-- | libwlmessage.c | 59 | ||||
-rw-r--r-- | toytoolkit/window.c | 4 | ||||
-rw-r--r-- | wlmessage_test.c | 8 |
3 files changed, 35 insertions, 36 deletions
diff --git a/libwlmessage.c b/libwlmessage.c index bb69bbc..d95bbda 100644 --- a/libwlmessage.c +++ b/libwlmessage.c @@ -20,7 +20,6 @@ struct message_window { char *title; int frame_type; /* for titlebuttons */ int resizable; - cairo_surface_t *icon; struct entry *entry; int buttons_nb; @@ -54,9 +53,10 @@ struct entry { }; struct wlmessage { + struct display *display; struct message_window *message_window; struct wl_text_input_manager *text_input_manager; - int default_value; + int return_value; int timeout; }; @@ -239,9 +239,7 @@ text_input_keysym(void *data, } if (sym == XKB_KEY_Return) { - //fprintf (stdout, entry->text); - wlmessage_destroy (entry->message_window->wlmessage); - exit (entry->message_window->wlmessage->default_value); + display_exit (entry->message_window->wlmessage->display); } widget_schedule_redraw (entry->widget); @@ -411,12 +409,11 @@ entry_redraw_handler (struct widget *widget, void *data) } void -button_send_activate (struct button *button, int value) +button_send_activate (struct button *button) { - if (button->message_window->entry) - fprintf (stdout, button->message_window->entry->text); - wlmessage_destroy (button->message_window->wlmessage); - exit (value); + button->message_window->wlmessage->return_value = button->value; + + display_exit (button->message_window->wlmessage->display); } static void @@ -433,7 +430,7 @@ button_click_handler(struct widget *widget, button->pressed = 1; } else { button->pressed = 0; - button_send_activate (button, button->value); + button_send_activate (button); } } @@ -458,7 +455,7 @@ button_touch_up_handler(struct widget *widget, struct input *input, button->focused = 0; widget_schedule_redraw (widget); - button_send_activate (button, button->value); + button_send_activate (button); } static int @@ -539,14 +536,8 @@ key_handler (struct window *window, struct input *input, uint32_t time, if (state == WL_KEYBOARD_KEY_STATE_RELEASED) return; - if (sym == XKB_KEY_Return || sym == XKB_KEY_KP_Enter) { -#if 0 - if (entry) - fprintf (stdout, entry->text); -#endif - wlmessage_destroy (message_window->wlmessage); - exit (message_window->wlmessage->default_value); - } + if (sym == XKB_KEY_Return || sym == XKB_KEY_KP_Enter) + display_exit (message_window->wlmessage->display); if (entry && entry->active) { switch (sym) { @@ -937,7 +928,7 @@ wlmessage_set_default_button (struct wlmessage *wlmessage, int index) wl_list_for_each (button, &message_window->button_list, link) { if (button->value == index) - wlmessage->default_value = button->value; + wlmessage->return_value = button->value; } } @@ -1000,22 +991,22 @@ wlmessage_show (struct wlmessage *wlmessage, char **input_text) return 0; struct message_window *message_window = wlmessage->message_window; - struct display *display = NULL; struct entry *entry; struct button *button; int extended_width = 0; int lines_nb = 0; - display = display_create (NULL, NULL); - if (!display) { + wlmessage->display = NULL; + wlmessage->display = display_create (NULL, NULL); + if (!wlmessage->display) { fprintf (stderr, "Failed to connect to a Wayland compositor !\n"); - return -1; // HUH ? + return -1; /* HUH ? */ } if (wlmessage->timeout) - display_set_timeout (display, wlmessage->timeout); + display_set_timeout (wlmessage->display, wlmessage->timeout); - message_window->window = window_create (display); + message_window->window = window_create (wlmessage->display); message_window->widget = window_frame_create (message_window->window, message_window->frame_type, message_window->resizable, message_window); @@ -1056,11 +1047,15 @@ wlmessage_show (struct wlmessage *wlmessage, char **input_text) 280 + lines_nb*16 + (!message_window->entry ? 0 : 1)*32 + (!message_window->buttons_nb ? 0 : 1)*32); - display_set_user_data (display, wlmessage); - display_set_global_handler (display, global_handler); - display_run (display); + display_set_user_data (wlmessage->display, wlmessage); + display_set_global_handler (wlmessage->display, global_handler); + display_run (wlmessage->display); + + display_destroy (wlmessage->display); - return 0; + if (input_text && message_window->entry) + *input_text = strdup (message_window->entry->text); + return wlmessage->return_value; } struct wlmessage * @@ -1069,7 +1064,7 @@ wlmessage_create () struct wlmessage *wlmessage; wlmessage = xzalloc (sizeof *wlmessage); - wlmessage->default_value = 0; + wlmessage->return_value = 0; wlmessage->timeout = 0; wlmessage->message_window = xzalloc (sizeof *wlmessage->message_window); diff --git a/toytoolkit/window.c b/toytoolkit/window.c index b5fb180..dc2ff3b 100644 --- a/toytoolkit/window.c +++ b/toytoolkit/window.c @@ -5362,9 +5362,9 @@ display_destroy_inputs(struct display *display) void display_destroy(struct display *display) { - if (!wl_list_empty(&display->window_list)) + /*if (!wl_list_empty(&display->window_list)) fprintf(stderr, "toytoolkit warning: %d windows exist.\n", - wl_list_length(&display->window_list)); + wl_list_length(&display->window_list));*/ if (!wl_list_empty(&display->deferred_list)) fprintf(stderr, "toytoolkit warning: deferred tasks exist.\n"); diff --git a/wlmessage_test.c b/wlmessage_test.c index 481d5f1..4eec0f6 100644 --- a/wlmessage_test.c +++ b/wlmessage_test.c @@ -16,10 +16,14 @@ int main (int argc, char *argv[]) wlmessage_set_textfield (wlmessage, "MyText"); wlmessage_add_button (wlmessage, 1, "Ok"); wlmessage_add_button (wlmessage, 0, "Cancel"); - wlmessage_set_default_button (wlmessage, 0); + wlmessage_set_default_button (wlmessage, 1); int result; - result = wlmessage_show (wlmessage, NULL); + char *text; + result = wlmessage_show (wlmessage, &text); + + printf ("Button : %d\n", result); + printf ("Text : %s\n", text); wlmessage_destroy (wlmessage); |