Next: , Previous: , Up: XPopup   [Contents][Index]


23.3.3 Other XPopup Routines

Note that most of the setpup/getpup routines are recursive in nature and the function will search the menu and all its submenus for the item.

It is possible to modify the display characteristics of a given XPopup item after its creation using the following routine

void fl_setpup_mode(int popup_id, int item_val, unsigned mode);

As usual popup_id is the XPopup ID as returned by fl_newpup() or fl_defpup() and item_val the value of the item. mode is one of FL PUP NONE, FL PUP GREY, FL PUP BOX or FL PUP RADIO (one of the later two can be bitwise ORed with FL_PUP_CHECK, as already discussed above.

To obtain the mode of a particular menu item, use the following routine

unsigned int fl_getpup_mode(int popup_id, int item_val)

This comes in handy to check if a binary or radio item is set

if (fl_getpup_mode(popupd, item_val) & FL_PUP_CHECK)
    /* item is set */

There exists also a routine that can be used to obtain an items text

const char *fl_getpup_text(int popup_id, int item_val);

In some situations, especially when the popup is activated by non-pointer events (e.g., as a result of a keyboard shortcut), the default placement of popups based on mouse location might not be adequate or appropriate, thus XPopup provides the following routine to override the default placement

void fl_setpup_position(int x, int y);

where x and y specify the location where the top-left corner of the popup should be. x and y must be given in screen coordinates (i.e., relative to the root window) with the origin at the top-left corner of the screen. This routine should be used immediately before invoking fl_dopup(), the position is not remembered afterwards.

If x or y is negative, the absolute value is taken to mean the desired location relative to the right or bottom corner of the popup (not the screen!).

Another function exists for controlling the positon of the popup. When the fuunction

void fl_setpup_align_bottom(void);

then the pop-up will appear with its lower right hand corner aligned aligned with the mouse position or, if also fl_setpup_position() is active, the postion set this way will be interpreted to mean the lower right hand position of the popu-up.

A radio item in a group can be initialized to be in "pushed" state by using %R. But you can also switch a such a radio item to "pushed state also programmatically using

void fl_setpup_selection(int popup_id, int item_val);

Of course, other radio items of the XPopup belonging to the same group are reset to "unpushed" state.

To obtain the number of items in a popup, use the following routine

int fl_getpup_items(int popup_id)

Next: , Previous: , Up: XPopup   [Contents][Index]