+
+void menu_entry_render(MenuEntry *self)
+{
+ Menu *menu = self->parent;
+ Appearance *a;
+
+ switch (self->render_type) {
+ case MenuEntryRenderType_Submenu:
+ /* TODO: submenu mask */
+ case MenuEntryRenderType_Boolean:
+ /* TODO: boolean check */
+ a = self->enabled ? (self->hilite ? self->a_hilite : self->a_item)
+ : self->a_disabled;
+ break;
+ case MenuEntryRenderType_None:
+ a = self->enabled ? (self->hilite ? self->a_hilite : self->a_item )
+ : self->a_disabled;
+ break;
+ case MenuEntryRenderType_Separator:
+ a = self->a_item;
+ break;
+
+ default:
+ g_message("unhandled render_type");
+ a = !self->enabled ? self->a_disabled :
+ (self->hilite &&
+ (self->action || self->render_type == MenuEntryRenderType_Submenu) ?
+ self->a_hilite : self->a_item);
+ break;
+ }
+
+ RECT_SET(a->area, 0, 0, menu->size.width,
+ menu->item_h);
+ RECT_SET(a->texture[0].position, menu->bullet_w,
+ 0, menu->size.width - 2 * menu->bullet_w,
+ menu->item_h);
+
+ XMoveResizeWindow(ob_display, self->item, 0, self->y,
+ menu->size.width, menu->item_h);
+ a->surface.data.planar.parent = menu->a_items;
+ a->surface.data.planar.parentx = 0;
+ a->surface.data.planar.parenty = self->y;
+
+ paint(self->item, a);
+}