offset(menu.open), XtRCallback, (XtPointer)NULL},
{XtNselect, XtCCallback, XtRCallback, sizeof(XtPointer),
offset(menu.select), XtRCallback, (XtPointer)NULL},
+ {XtNhighlightCallback, XtCCallback, XtRCallback, sizeof(XtPointer),
+ offset(menu.highlight), XtRCallback, (XtPointer)NULL},
{XtNmenu, XtCMenu, XtRPointer, sizeof(XtPointer),
offset(menu.contents), XtRImmediate, (XtPointer)NULL},
{XtNcursor, XtCCursor, XtRCursor, sizeof(Cursor),
if (new_selection && !new_selection->enabled)
new_selection = NULL;
+ /* Call callback when the hightlighted item changes. */
+ if (old_selection || new_selection)
+ XtCallCallbackList ((Widget)mw, mw->menu.highlight,
+ (XtPointer) new_selection);
+
/* updates old_state from new_state. It has to be done now because
display_menu (called below) uses the old_stack to know what to display. */
for (i = last_same + 1; i < new_depth; i++)
unsigned long pm = 0;
Display *dpy = XtDisplay ((Widget) mw);
Screen *screen = XtScreen ((Widget) mw);
- Colormap cmap = DefaultColormapOfScreen (screen);
+ Colormap cmap = mw->core.colormap;
XColor topc, botc;
int top_frobbed = 0, bottom_frobbed = 0;