fix:core:Do not handle accesskeys for disabled OSDs or when the user is in the menu
authortegzed <tegzed@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 29 Aug 2011 19:19:03 +0000 (19:19 +0000)
committertegzed <tegzed@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 29 Aug 2011 19:19:03 +0000 (19:19 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@4728 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/navit/graphics.c
navit/navit/graphics.h
navit/navit/osd.c

index 8aadea0..52e8d8b 100644 (file)
@@ -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 <>
index f18b7e3..f0ccea4 100644 (file)
@@ -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);
index ec38b99..4aed5c2 100644 (file)
@@ -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);
 }