Exemplo n.º 1
0
Handle
Widget_selectedWidget( Handle self, Bool set, Handle widget)
{
    if ( var-> stage > csFrozen) return nilHandle;

    if ( !set) {
        if ( var-> stage <= csNormal) {
            Handle foc = apc_widget_get_focused();
            PWidget  f = ( PWidget) foc;
            while( f) {
                if (( Handle) f == self) return foc;
                f = ( PWidget) f-> owner;
            }
        }
        return nilHandle;

        /* classic solution should be recursive and inheritant call */
        /* of get_selected() here, when Widget would return state of */
        /* child-group selected state until Widget::selected() called; */
        /* thus, each of them would call apc_widget_get_focused - that's expensive, */
        /* so that's the reason not to use classic object model here. */
    }

    if ( widget) {
        if ( PWidget( widget)-> owner == self)
            CWidget( widget)-> set_selected( widget, true);
    } else {
        /* give selection up to hierarchy chain */
        Handle s = self;
        while ( s) {
            if ( CWidget( s)-> get_selectable( s)) {
                CWidget( s)-> set_selected( s, true);
                break;
            }
            s = PWidget( s)-> owner;
        }
    }
    return nilHandle;
}
Exemplo n.º 2
0
Handle
Application_get_focused_widget( Handle self)
{
   return apc_widget_get_focused();
}