diff options
author | Lionel AINS <lains@caramail.com> | 2018-11-16 08:34:57 +0100 |
---|---|---|
committer | Lionel AINS <lains@caramail.com> | 2018-11-16 08:34:57 +0100 |
commit | 7562c5a8f9b404168f7fceeb9ecd202c63586f4f (patch) | |
tree | ceb36397250c77539983163f554d1462e24e4535 /navit/gui/internal | |
parent | 91e6a05e1520926a9c5897fca4b64bdcf11791ad (diff) | |
download | navit-7562c5a8f9b404168f7fceeb9ecd202c63586f4f.tar.gz |
Creating gui_internal_menu_needs_resizing() function from existing code
Diffstat (limited to 'navit/gui/internal')
-rw-r--r-- | navit/gui/internal/gui_internal.c | 7 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_menu.c | 23 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_menu.h | 1 |
3 files changed, 25 insertions, 6 deletions
diff --git a/navit/gui/internal/gui_internal.c b/navit/gui/internal/gui_internal.c index 74cadce7b..abe67af33 100644 --- a/navit/gui/internal/gui_internal.c +++ b/navit/gui/internal/gui_internal.c @@ -2698,11 +2698,8 @@ static void gui_internal_resize(void *data, int wnew, int hnew) { gui_internal_setup(this); - if (this->root.w != wnew || this->root.h != hnew) { - this->root.w=wnew; - this->root.h=hnew; - changed=1; - } + changed=gui_internal_menu_needs_resizing(this, &(this->root), wnew, hnew); + /* * If we're drawing behind system bars on Android, watching for actual size changes will not catch * fullscreen toggle events. As a workaround, always assume a size change if padding is supplied. diff --git a/navit/gui/internal/gui_internal_menu.c b/navit/gui/internal/gui_internal_menu.c index 40eb66690..98a2c338e 100644 --- a/navit/gui/internal/gui_internal_menu.c +++ b/navit/gui/internal/gui_internal_menu.c @@ -17,6 +17,27 @@ extern char *version; +/** + * @brief Utility function to check if a menu widget is adapted to the display size or needs resizing (if so, the widget dimensions will be set to match those of the display + * + * @param this The GUI instance + * @param w The menu widget (top widget that should spawn over the entire display) + * @param wdisp The width of the display to check the widget against + * @param hdisp The width of the display to check the widget against + * + * @return true if widget w has the same size as the provided display dimensions + */ + +int gui_internal_menu_needs_resizing(struct gui_priv *this, struct widget *w, int wdisp, int hdisp) { + if (w->w != wdisp || w->h != hdisp) { + w->w=wdisp; + w->h=hdisp; + return 1; + } else { + return 0; + } +} + void gui_internal_menu_destroy(struct gui_priv *this, struct widget *w) { struct menu_data *menu_data=w->menu_data; if (menu_data) { @@ -85,7 +106,7 @@ static void gui_internal_prune_menu_do(struct gui_priv *this, struct widget *w, /* Destroy all menus, backwards, starting from the end until we reach widget w, and redraw widget w */ while ((l = g_list_last(this->root.children))) { wd=l->data; - if (wd == w) { + if (wd == w) { /* This is the widget we want to bring back to display (all subsequent widgets will be destroyed in the loop) */ void (*redisplay)(struct gui_priv *priv, struct widget *widget, void *data); if (!render) return; diff --git a/navit/gui/internal/gui_internal_menu.h b/navit/gui/internal/gui_internal_menu.h index 7bbf7892a..85ab4ff78 100644 --- a/navit/gui/internal/gui_internal_menu.h +++ b/navit/gui/internal/gui_internal_menu.h @@ -2,6 +2,7 @@ struct gui_priv; struct menu_data; struct widget; +int gui_internal_menu_needs_resizing(struct gui_priv *this, struct widget *w, int wdisp, int hdisp); void gui_internal_menu_destroy(struct gui_priv *this, struct widget *w); int gui_internal_widget_reload_href(struct gui_priv *this, struct widget *w); void gui_internal_prune_menu(struct gui_priv *this, struct widget *w); |