//============================================================================== void ComponentMovementWatcher::componentParentHierarchyChanged (Component&) { if (component != nullptr && ! reentrant) { const ScopedValueSetter<bool> setter (reentrant, true); ComponentPeer* const peer = component->getPeer(); const uint32 peerID = peer != nullptr ? peer->getUniqueID() : 0; if (peerID != lastPeerID) { componentPeerChanged(); if (component == nullptr) return; lastPeerID = peerID; } unregister(); registerWithParentComps(); componentMovedOrResized (*component, true, true); if (component != nullptr) componentVisibilityChanged (*component); } }
void ComponentMovementWatcher::componentVisibilityChanged (Component&) { if (component != nullptr) { const bool isShowingNow = component->isShowing(); if (wasShowing != isShowingNow) { wasShowing = isShowingNow; componentVisibilityChanged(); } } }
void componentMovedOrResized (bool /*wasMoved*/, bool /*wasResized*/) { Component& comp = *getComponent(); if (isAttached (comp) != canBeAttached (comp)) componentVisibilityChanged(); if (comp.getWidth() > 0 && comp.getHeight() > 0 && context.nativeContext != nullptr) { if (CachedImage* const c = CachedImage::get (comp)) c->updateViewportSize (true); context.nativeContext->updateWindowPosition (comp.getTopLevelComponent() ->getLocalArea (&comp, comp.getLocalBounds())); } }
void componentPeerChanged() { detach(); componentVisibilityChanged(); }