예제 #1
0
void TBWidgetListener::InvokeWidgetFocusChanged(TBWidget *widget, bool focused)
{
	TBLinkListOf<TBWidgetListenerGlobalLink>::Iterator global_i = g_listeners.IterateForward();
	TBLinkListOf<TBWidgetListener>::Iterator local_i = widget->m_listeners.IterateForward();
	while (TBWidgetListener *listener = local_i.GetAndStep())
		listener->OnWidgetFocusChanged(widget, focused);
	while (TBWidgetListenerGlobalLink *link = global_i.GetAndStep())
		static_cast<TBWidgetListener*>(link)->OnWidgetFocusChanged(widget, focused);
}
예제 #2
0
void TBWidgetListener::InvokeWidgetRemove(TBWidget *parent, TBWidget *child)
{
	TBLinkListOf<TBWidgetListenerGlobalLink>::Iterator global_i = g_listeners.IterateForward();
	TBLinkListOf<TBWidgetListener>::Iterator local_i = parent->m_listeners.IterateForward();
	while (TBWidgetListener *listener = local_i.GetAndStep())
		listener->OnWidgetRemove(parent, child);
	while (TBWidgetListenerGlobalLink *link = global_i.GetAndStep())
		static_cast<TBWidgetListener*>(link)->OnWidgetRemove(parent, child);
}
예제 #3
0
bool TBWidgetListener::InvokeWidgetInvokeEvent(TBWidget *widget, const TBWidgetEvent &ev)
{
	bool handled = false;
	TBLinkListOf<TBWidgetListenerGlobalLink>::Iterator global_i = g_listeners.IterateForward();
	TBLinkListOf<TBWidgetListener>::Iterator local_i = widget->m_listeners.IterateForward();
	while (TBWidgetListener *listener = local_i.GetAndStep())
		handled |= listener->OnWidgetInvokeEvent(widget, ev);
	while (TBWidgetListenerGlobalLink *link = global_i.GetAndStep())
		handled |= static_cast<TBWidgetListener*>(link)->OnWidgetInvokeEvent(widget, ev);
	return handled;
}
예제 #4
0
void TBWidgetsAnimationManager::AbortAnimations(TBWidget *widget, TB_TYPE_ID type_id)
{
    TBLinkListOf<TBWidgetAnimationObject>::Iterator iter = widget_animations.IterateForward();
    while (TBWidgetAnimationObject *wao = iter.GetAndStep())
    {
        if (wao->m_widget == widget)
        {
            // Skip this animation if we asked for a specific (and
            // different) animation type.
            if (type_id != nullptr && !wao->IsOfTypeId(type_id))
                continue;

            // Abort the animation. This will both autoremove itself
            // and delete it, so no need to do it here.
            TBAnimationManager::AbortAnimation(wao, true);
        }
    }
}