//============================================================================== 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 componentPeerChanged() override { componentMovedOrResized (true, true); #if JUCE_WIN_PER_MONITOR_DPI_AWARE if (auto* peer = owner.getTopLevelComponent()->getPeer()) peer->addScaleFactorListener (this); #endif }
void componentPeerChanged() { const bool isShowingNow = owner.isShowing(); if (wasShowing != isShowingNow) { wasShowing = isShowingNow; owner.setControlVisible (isShowingNow); } componentMovedOrResized (true, true); }
void LayoutLabel::setAttributedText (ScopedPointer<AttributedString> newText, const bool broadcastChangeMessage) { hideEditor (true); attributedTextValue = newText; repaint(); textWasChanged(); if (ownerComponent != nullptr) componentMovedOrResized (*ownerComponent, true, true); if (broadcastChangeMessage) callChangeListeners(); }
void Label::attachToComponent (Component* owner, const bool onLeft) { if (ownerComponent != nullptr) ownerComponent->removeComponentListener (this); ownerComponent = owner; leftOfOwnerComp = onLeft; if (ownerComponent != nullptr) { setVisible (owner->isVisible()); ownerComponent->addComponentListener (this); componentParentHierarchyChanged (*ownerComponent); componentMovedOrResized (*ownerComponent, true, true); } }
void ComponentMovementWatcher::componentMovedOrResized (Component&, bool wasMoved, bool wasResized) { if (component != nullptr) { if (wasMoved) { const Point<int> pos (component->getTopLevelComponent()->getLocalPoint (component, Point<int>())); wasMoved = lastBounds.getPosition() != pos; lastBounds.setPosition (pos); } wasResized = (lastBounds.getWidth() != component->getWidth() || lastBounds.getHeight() != component->getHeight()); lastBounds.setSize (component->getWidth(), component->getHeight()); if (wasMoved || wasResized) componentMovedOrResized (wasMoved, wasResized); } }
//============================================================================== void Label::setText (const String& newText, const bool broadcastChangeMessage) { hideEditor (true); if (lastTextValue != newText) { lastTextValue = newText; textValue = newText; repaint(); textWasChanged(); if (ownerComponent != nullptr) componentMovedOrResized (*ownerComponent, true, true); if (broadcastChangeMessage) callChangeListeners(); } }
bool Label::updateFromTextEditorContents (TextEditor& ed) { const String newText (ed.getText()); if (textValue.toString() != newText) { lastTextValue = newText; textValue = newText; repaint(); textWasChanged(); if (ownerComponent != nullptr) componentMovedOrResized (*ownerComponent, true, true); return true; } return false; }
//============================================================================== void Label::setText (const String& newText, const NotificationType notification) { hideEditor (true); if (lastTextValue != newText) { lastTextValue = newText; textValue = newText; repaint(); textWasChanged(); if (ownerComponent != nullptr) componentMovedOrResized (*ownerComponent, true, true); if (notification != dontSendNotification) callChangeListeners(); } }
void componentPeerChanged() { componentMovedOrResized (true, true); }
void nativeScaleFactorChanged (double /*newScaleFactor*/) override { componentMovedOrResized (true, true); }