| 254 | } |
| 255 | |
| 256 | void UITabWidget::invalidate( Node* invalidator ) { |
| 257 | // Only invalidate if the invalidator is actually visible in the current active tab. |
| 258 | if ( NULL != invalidator ) { |
| 259 | if ( invalidator == mTabScroll || mTabScroll->inParentTreeOf( invalidator ) ) { |
| 260 | if ( NULL != mNodeDrawInvalidator ) { |
| 261 | mNodeDrawInvalidator->invalidate( this ); |
| 262 | } else if ( NULL != mSceneNode ) { |
| 263 | mSceneNode->invalidate( this ); |
| 264 | } |
| 265 | } else if ( invalidator == mNodeContainer || invalidator == mTabBar || |
| 266 | invalidator == mTabSwitcher || mTabBar->inParentTreeOf( invalidator ) ) { |
| 267 | mNodeDrawInvalidator->invalidate( mNodeContainer ); |
| 268 | } else if ( invalidator->getParent() == mNodeContainer ) { |
| 269 | if ( invalidator->isVisible() ) |
| 270 | mNodeDrawInvalidator->invalidate( mNodeContainer ); |
| 271 | } else { |
| 272 | Node* container = invalidator->getParent(); |
| 273 | while ( container->getParent() != NULL && container->getParent() != mNodeContainer ) { |
| 274 | container = container->getParent(); |
| 275 | } |
| 276 | if ( container->getParent() == mNodeContainer && container->isVisible() ) { |
| 277 | mNodeDrawInvalidator->invalidate( mNodeContainer ); |
| 278 | } |
| 279 | } |
| 280 | } else if ( NULL != mNodeDrawInvalidator ) { |
| 281 | mNodeDrawInvalidator->invalidate( this ); |
| 282 | } else if ( NULL != mSceneNode ) { |
| 283 | mSceneNode->invalidate( this ); |
| 284 | } |
| 285 | } |
| 286 | |
| 287 | bool UITabWidget::applyProperty( const StyleSheetProperty& attribute ) { |
| 288 | if ( !checkPropertyDefinition( attribute ) ) |
nothing calls this directly
no test coverage detected