dont go to disabled menu entries with keyboard shortcuts
authorDana Jansens <danakj@orodu.net>
Wed, 25 Apr 2007 18:26:02 +0000 (18:26 +0000)
committerDana Jansens <danakj@orodu.net>
Wed, 25 Apr 2007 18:26:02 +0000 (18:26 +0000)
fix some rendering of shortcuts

openbox/event.c
openbox/menuframe.c
render/font.c

index 4a60194..10b7816 100644 (file)
@@ -1331,7 +1331,8 @@ static void event_handle_menu_shortcut(XEvent *ev)
         ObMenuEntryFrame *e = it->data;
         gunichar entrykey = 0;
 
-        if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL)
+        if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
+            e->entry->data.normal.enabled)
             entrykey = e->entry->data.normal.shortcut;
         else if (e->entry->type == OB_MENU_ENTRY_TYPE_SUBMENU)
             entrykey = e->entry->data.submenu.submenu->shortcut;
index 9d635f9..7ca2136 100644 (file)
@@ -318,8 +318,9 @@ static void menu_entry_frame_render(ObMenuEntryFrame *self)
                    self->a_text_selected :
                    self->a_text_normal));
         text_a->texture[0].data.text.string = self->entry->data.normal.label;
-        if (self->frame->menu->show_all_shortcuts ||
-            self->entry->data.normal.shortcut > 0)
+        if (self->entry->data.normal.shortcut &&
+            (self->frame->menu->show_all_shortcuts ||
+             self->entry->data.normal.shortcut_position > 0))
         {
             text_a->texture[0].data.text.shortcut = TRUE;
             text_a->texture[0].data.text.shortcut_pos =
@@ -333,7 +334,9 @@ static void menu_entry_frame_render(ObMenuEntryFrame *self)
                   self->a_text_normal);
         sub = self->entry->data.submenu.submenu;
         text_a->texture[0].data.text.string = sub ? sub->title : "";
-        if (self->frame->menu->show_all_shortcuts || sub->shortcut > 0) {
+        if (sub->shortcut && (self->frame->menu->show_all_shortcuts ||
+                              sub->shortcut_position > 0))
+        {
             text_a->texture[0].data.text.shortcut = TRUE;
             text_a->texture[0].data.text.shortcut_pos = sub->shortcut_position;
         } else
index 1208e9e..8692a9d 100644 (file)
@@ -221,6 +221,13 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
 
     t->font->shortcut_underline->start_index = 0;
     t->font->shortcut_underline->end_index = 0;
+    /* the attributes are owned by the layout.
+       re-add the attributes to the layout after changing the
+       start and end index */
+    attrlist = pango_layout_get_attributes(t->font->layout);
+    pango_attr_list_ref(attrlist);
+    pango_layout_set_attributes(t->font->layout, attrlist);
+    pango_attr_list_unref(attrlist);
 
     if (t->shadow_offset_x || t->shadow_offset_y) {
         c.color.red = t->shadow_color->r | t->shadow_color->r << 8;
@@ -229,14 +236,6 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
         c.color.alpha = 0xffff * t->shadow_alpha / 255;
         c.pixel = t->shadow_color->pixel;
 
-        /* the attributes are owned by the layout.
-           re-add the attributes to the layout after changing the
-           start and end index */
-        attrlist = pango_layout_get_attributes(t->font->layout);
-        pango_attr_list_ref(attrlist);
-        pango_layout_set_attributes(t->font->layout, attrlist);
-        pango_attr_list_unref(attrlist);
-
         /* see below... */
         pango_xft_render_layout_line
             (d, &c, pango_layout_get_line(t->font->layout, 0),