Hi, My app uses spark ButtonBar with a custom skin (for first, middle, and last 
buttons), and I change the contents of the button bar a lot depending on 
various user selections. The icon in the button bar updates when the 
dataProvider changes, relying on a doPhasedInstantiationCallback() trigger to 
call measure() function in the first button's custom skin:

    override protected function measure():void {
        setButtonImage(); // set icon for button here
        super.measure();
    }

Certain combinations of changing the dataProvider for the ButtonBar result in 
the ButtonBar's first button icon not refreshing. The myButtonBar.dataProvider 
contents are always correct, but the measure() and validateDisplayList() are 
not called in the first button's custom skin when the dataProvider changes. 

This only effects the first button in the button bar, the other buttons update 
fine. It could be coincidence, but when the first button is selected in the 
button bar before the dataProvider update, and the first button (by default) is 
selected in new button bar after the dataProvider changes, there is no 
doPhasedInstantiationCallback() for the first button (although there are for 
the other buttons). When I click on a button other than the first button in the 
button bar, the first button's icon is refreshed.

Any idea how to force a doPhasedInstantiationCallback() for the first button? 

I tried myButtonBar.invalidateDisplayList() but this didn't result in calling 
the first button skin's validateDisplayList() function or trigger 
doPhasedInstantiationCallback() from what I can see.

I also tried to force a redraw using techniques like

    ArrayCollection(myButtonBar.dataProvider).refresh();

even using a CallLater(), but still no luck. The first button's skin functions 
are not invoked.

I've run out of ideas how to tackle this problem. Thanks in advance for any 
advice.

Reply via email to