Havoc Pennington wrote:
> 
> > How to read the index of the currently selected item?
> 
> I think you can't do that now; you have to connect to "activate" on
> each menu item. This is fixed in GTK 1.4, which has a
> gtk_option_menu_get_history () corresponding to
> gtk_option_menu_set_history (). Unfortunately that doesn't help you
> for the present.

After some tinkering I came up with an ugly, but legal
and working solution.

Hopefully this will help others in the same situation.

Almer. S. Tigelaar.

/**
 * option_menu_index:
 * @optionmenu: a gtkoptionmenu
 * 
 * Tries to find out (in an ugly way) the selected
 * item in @optionmenu
 * 
 * Return value: the selected index
 **/
static int
option_menu_index (GtkOptionMenu *optionmenu)
{
        GtkMenu *menu;
        GtkMenuItem *selected;
        GList *iterator;
        int index = -1;
        int i = 0;

        g_return_val_if_fail (optionmenu != NULL, -1);
        
        menu = (GtkMenu *) gtk_option_menu_get_menu (optionmenu);
        iterator = GTK_MENU_SHELL (menu)->children;
        selected = (GtkMenuItem *) gtk_menu_get_active (menu);
        
        while (iterator) {
                
                if (iterator->data == selected) {
                
                        index = i;
                        break;
                }
                
                iterator = iterator->next;
                i++;
        }

        return index;
}

-- 
To unsubscribe: mail -s unsubscribe [EMAIL PROTECTED] < /dev/null

Reply via email to