From be73b76321f1d3407f751d12ac17bbc909947990 Mon Sep 17 00:00:00 2001 From: tegzed Date: Mon, 29 Aug 2011 19:19:03 +0000 Subject: [PATCH] fix:core:Do not handle accesskeys for disabled OSDs or when the user is in the menu git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@4728 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- navit/navit/graphics.c | 9 +++++++++ navit/navit/graphics.h | 1 + navit/navit/osd.c | 3 ++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/navit/navit/graphics.c b/navit/navit/graphics.c index 8aadea0..52e8d8b 100644 --- a/navit/navit/graphics.c +++ b/navit/navit/graphics.c @@ -59,6 +59,7 @@ //############################################################################################################## struct graphics { + struct graphics* parent; struct graphics_priv *priv; struct graphics_methods meth; char *default_font; @@ -72,6 +73,7 @@ struct graphics int colormgmt; int font_size; GList *selection; + int disabled; }; struct display_context @@ -270,6 +272,7 @@ struct graphics * graphics_overlay_new(struct graphics *parent, struct point *p, return NULL; this_=g_new0(struct graphics, 1); this_->priv=parent->meth.overlay_new(parent->priv, &this_->meth, p, w, h, alpha, wraparound); + this_->parent = parent; pr.lu.x=0; pr.lu.y=0; pr.rl.x=w; @@ -740,10 +743,16 @@ void graphics_get_text_bbox(struct graphics *this_, struct graphics_font *font, */ void graphics_overlay_disable(struct graphics *this_, int disable) { + this_->disabled = disable; if (this_->meth.overlay_disable) this_->meth.overlay_disable(this_->priv, disable); } +int graphics_is_disabled(struct graphics *this_) +{ + return this_->disabled || (this_->parent && this_->parent->disabled); +} + /** * FIXME * @param <> diff --git a/navit/navit/graphics.h b/navit/navit/graphics.h index f18b7e3..f0ccea4 100644 --- a/navit/navit/graphics.h +++ b/navit/navit/graphics.h @@ -170,6 +170,7 @@ void graphics_draw_rectangle_rounded(struct graphics *this_, struct graphics_gc void graphics_draw_text(struct graphics *this_, struct graphics_gc *gc1, struct graphics_gc *gc2, struct graphics_font *font, char *text, struct point *p, int dx, int dy); void graphics_get_text_bbox(struct graphics *this_, struct graphics_font *font, char *text, int dx, int dy, struct point *ret, int estimate); void graphics_overlay_disable(struct graphics *this_, int disable); +int graphics_is_disabled(struct graphics *this_); void graphics_draw_image(struct graphics *this_, struct graphics_gc *gc, struct point *p, struct graphics_image *img); int graphics_draw_drag(struct graphics *this_, struct point *p); void graphics_background_gc(struct graphics *this_, struct graphics_gc *gc); diff --git a/navit/navit/osd.c b/navit/navit/osd.c index ec38b99..4aed5c2 100644 --- a/navit/navit/osd.c +++ b/navit/navit/osd.c @@ -85,6 +85,7 @@ osd_set_attr(struct osd *osd, struct attr* attr) osd->osd_attrs=attr_generic_set_attr(osd->osd_attrs,attr); if(osd && osd->meth.set_attr) { osd->meth.set_attr(osd->priv, attr); + return 1; } return 0; } @@ -177,7 +178,7 @@ osd_std_keypress(struct osd_item *item, struct navit *nav, char *key) dbg(0,"accesskey:0x%02x\n",item->accesskey[i]); } #endif - if (item->accesskey && key && !strcmp(key, item->accesskey)) + if ( ! graphics_is_disabled(item->gr) && item->accesskey && key && !strcmp(key, item->accesskey)) osd_evaluate_command(item, nav); } -- 2.7.4