diff options
Diffstat (limited to 'navit/gui/internal/gui_internal_menu.c')
-rw-r--r-- | navit/gui/internal/gui_internal_menu.c | 61 |
1 files changed, 55 insertions, 6 deletions
diff --git a/navit/gui/internal/gui_internal_menu.c b/navit/gui/internal/gui_internal_menu.c index 7769953b9..33def9983 100644 --- a/navit/gui/internal/gui_internal_menu.c +++ b/navit/gui/internal/gui_internal_menu.c @@ -91,10 +91,31 @@ gui_internal_prune_menu_count(struct gui_priv *this, int count, int render) } } + +/** + * @brief Initializes a GUI screen + * + * This method initializes the internal GUI's screen on which all other elements (such as HTML menus, + * dialogs or others) are displayed. + * + * It sets up a view hierarchy, which includes a title bar and a client area to hold widgets defined by + * the caller. + * + * @param this The GUI instance + * @param label The label to display in the top bar + * + * @return The container for caller-defined widgets + */ struct widget * gui_internal_menu(struct gui_priv *this, const char *label) { struct widget *menu,*w,*w1,*topbox; + struct padding *padding = NULL; + + if (this->gra) { + padding = graphics_get_data(this->gra, "padding"); + } else + dbg(lvl_warning, "cannot get padding: this->gra is NULL\n"); gui_internal_search_idle_end(this); topbox=gui_internal_box_new_with_label(this, 0, label); @@ -102,8 +123,18 @@ gui_internal_menu(struct gui_priv *this, const char *label) topbox->h=this->root.h; gui_internal_widget_append(&this->root, topbox); menu=gui_internal_box_new(this, gravity_left_center|orientation_vertical); - menu->w=this->root.w; - menu->h=this->root.h; + + if (padding) { + menu->p.x = padding->left; + menu->p.y = padding->top; + menu->w = topbox->w - padding->left - padding->right; + menu->h = topbox->h - padding->top - padding->bottom; + } else { + menu->p.x = 0; + menu->p.y = 0; + menu->w = topbox->w; + menu->h = topbox->h; + } menu->background=this->background; gui_internal_apply_config(this); topbox->menu_data=g_new0(struct menu_data, 1); @@ -134,8 +165,17 @@ gui_internal_menu(struct gui_priv *this, const char *label) } if (this->flags & 192) { menu=gui_internal_box_new(this, gravity_left_center|orientation_vertical); - menu->w=this->root.w; - menu->h=this->root.h; + if (padding) { + menu->p.x = padding->left; + menu->p.y = padding->top; + menu->w = topbox->w - padding->left - padding->right; + menu->h = topbox->h - padding->top - padding->bottom; + } else { + menu->p.x = 0; + menu->p.y = 0; + menu->w = topbox->w; + menu->h = topbox->h; + } w1=gui_internal_time_help(this); gui_internal_widget_append(menu, w1); w1=gui_internal_box_new(this, gravity_center|orientation_horizontal_vertical|flags_expand|flags_fill); @@ -147,8 +187,17 @@ gui_internal_menu(struct gui_priv *this, const char *label) gui_internal_widget_reset_pack(this, topbox); topbox->w=this->root.w; topbox->h=this->root.h; - menu->w=this->root.w; - menu->h=this->root.h; + if (padding) { + menu->p.x = padding->left; + menu->p.y = padding->top; + menu->w = topbox->w - padding->left - padding->right; + menu->h = topbox->h - padding->top - padding->bottom; + } else { + menu->p.x = 0; + menu->p.y = 0; + menu->w = topbox->w; + menu->h = topbox->h; + } return w; } |