//==============================================================================
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);
    }
Beispiel #4
0
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();
}
Beispiel #5
0
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);
    }
}
Beispiel #7
0
//==============================================================================
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();
    }
}
Beispiel #8
0
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;
}
Beispiel #9
0
//==============================================================================
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);
 }