summaryrefslogtreecommitdiff
path: root/navit/gui/internal
diff options
context:
space:
mode:
authorLionel AINS <lains@caramail.com>2018-11-16 08:34:57 +0100
committerLionel AINS <lains@caramail.com>2018-11-16 08:34:57 +0100
commit7562c5a8f9b404168f7fceeb9ecd202c63586f4f (patch)
treeceb36397250c77539983163f554d1462e24e4535 /navit/gui/internal
parent91e6a05e1520926a9c5897fca4b64bdcf11791ad (diff)
downloadnavit-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.c7
-rw-r--r--navit/gui/internal/gui_internal_menu.c23
-rw-r--r--navit/gui/internal/gui_internal_menu.h1
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);