diff options
author | Lionel AINS <lains@caramail.com> | 2018-10-29 08:25:19 +0100 |
---|---|---|
committer | Lionel AINS <lains@caramail.com> | 2018-10-29 08:25:19 +0100 |
commit | 91a8f7a2b661770453162241f5be38078f6565a3 (patch) | |
tree | 52c5ee9b53d9da68a9a3517088568d34684e39f2 /navit/gui | |
parent | 59948f00ece870973facf2df0e45afd0c3088702 (diff) | |
download | navit-91a8f7a2b661770453162241f5be38078f6565a3.tar.gz |
Adding virtual keyboard resize handler, improving resize for menu topbox
Diffstat (limited to 'navit/gui')
-rw-r--r-- | navit/gui/internal/gui_internal_keyboard.c | 11 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_menu.c | 26 |
2 files changed, 20 insertions, 17 deletions
diff --git a/navit/gui/internal/gui_internal_keyboard.c b/navit/gui/internal/gui_internal_keyboard.c index 4b2c64cd8..b0c87ce39 100644 --- a/navit/gui/internal/gui_internal_keyboard.c +++ b/navit/gui/internal/gui_internal_keyboard.c @@ -133,6 +133,16 @@ struct gui_internal_keyb_mode { -> datai = (mode & VKBD_MASK_7) | ((x) & VKBD_LAYOUT_MASK) #define SWCASE() MODE(gui_internal_keyb_modes[mode/8].case_mode) #define UMLAUT() MODE(gui_internal_keyb_modes[mode/8].umlaut_mode) + +static void gui_internal_keyboard_topbox_resize(struct gui_priv *this, struct widget *w, void *data, int neww, int newh) { + struct menu_data *md=gui_internal_menu_data(this); + struct widget *old_wkbdb = md->keyboard; + + dbg(lvl_error, "gui_internal_keyboard_topbox_resize called on %p with w=%d, h=%d", w, neww, newh); + dbg(lvl_error, "old keyboard widget was at %p", old_wkbdb); + gui_internal_keyboard_do(this, old_wkbdb, md->keyboard_mode); +} + /** * @brief Creates a new keyboard widget or switches the layout of an existing widget * @@ -176,6 +186,7 @@ gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode) wkbd->cols=8; wkbd->spx=0; wkbd->spy=0; + wkbd->on_resize=gui_internal_keyboard_topbox_resize; max_w=max_w/8; max_h=max_h/8; // Allows 3 results in the list when searching for Towns wkbd->p.y=max_h*2; diff --git a/navit/gui/internal/gui_internal_menu.c b/navit/gui/internal/gui_internal_menu.c index 7225c96b0..40eb66690 100644 --- a/navit/gui/internal/gui_internal_menu.c +++ b/navit/gui/internal/gui_internal_menu.c @@ -126,6 +126,8 @@ void gui_internal_prune_menu_count(struct gui_priv *this, int count, int render) void gui_internal_menu_topbox_resize(struct gui_priv *this, struct widget *w, void *data, int neww, int newh) { w->w=neww; w->h=newh; + gui_internal_box_resize(this, w, data, w->w, w->h); + /* Note: this widget and its children have been resized, a call to gui_internal_box_render() needs to be done by the caller */ } void gui_internal_menu_menu_resize(struct gui_priv *this, struct widget *w, void *data, int neww, int newh) { @@ -146,6 +148,8 @@ void gui_internal_menu_menu_resize(struct gui_priv *this, struct widget *w, void w->w = neww; w->h = newh; } + gui_internal_box_resize(this, w, data, w->w, w->h); + /* Note: this widget and its children have been resized, a call to gui_internal_box_render() needs to be done by the caller */ } /** @@ -262,26 +266,14 @@ void gui_internal_menu_render(struct gui_priv *this) { void gui_internal_menu_resize(struct gui_priv *this, int w, int h) { GList *l; - struct widget *menu; - struct widget *topbox; - struct widget *wb; + struct widget *menu_topwidget; gui_internal_apply_config(this); l=g_list_last(this->root.children); - menu=l->data; - /* Search for the topbox widget */ - l=g_list_first(menu->children); - topbox=l->data; - if (menu->on_resize) - menu->on_resize(this, menu, NULL, topbox->w, topbox->h); - if (topbox->on_resize) - topbox->on_resize(this, topbox, NULL, this->root.w, this->root.h); - l=topbox->children; - while (l) { - wb=l->data; - if (wb->on_resize) - wb->on_resize(this, wb, NULL, topbox->w, topbox->h); - l=g_list_next(l); + menu_topwidget=l->data; + if (menu_topwidget->on_resize) { + dbg(lvl_error, "Invoking resize handler for menu_topwidget at %p", menu_topwidget); + menu_topwidget->on_resize(this, menu_topwidget, NULL, this->root.w, this->root.h); } } |