mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-02-03 03:30:06 +00:00
Improvements to modal event blocking for plugins; small bugfix for OwnedArrays.
This commit is contained in:
parent
4570818cc0
commit
44938b9cd0
12 changed files with 238 additions and 60 deletions
|
|
@ -1515,6 +1515,8 @@ void Component::exitModalState (const int returnValue)
|
|||
modalComponentStack.removeValue (this);
|
||||
|
||||
flags.currentlyModalFlag = false;
|
||||
|
||||
bringModalComponentToFront();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1551,6 +1553,34 @@ Component* JUCE_CALLTYPE Component::getCurrentlyModalComponent (int index) throw
|
|||
return c->isValidComponent() ? c : 0;
|
||||
}
|
||||
|
||||
void Component::bringModalComponentToFront()
|
||||
{
|
||||
ComponentPeer* lastOne = 0;
|
||||
|
||||
for (int i = 0; i < getNumCurrentlyModalComponents(); ++i)
|
||||
{
|
||||
Component* const c = getCurrentlyModalComponent (i);
|
||||
|
||||
if (c == 0)
|
||||
break;
|
||||
|
||||
ComponentPeer* peer = c->getPeer();
|
||||
|
||||
if (peer != 0 && peer != lastOne)
|
||||
{
|
||||
if (lastOne == 0)
|
||||
{
|
||||
peer->toFront (true);
|
||||
peer->grabFocus();
|
||||
}
|
||||
else
|
||||
peer->toBehind (lastOne);
|
||||
|
||||
lastOne = peer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void Component::setBroughtToFrontOnMouseClick (const bool shouldBeBroughtToFront) throw()
|
||||
{
|
||||
|
|
@ -2157,8 +2187,7 @@ void Component::removeComponentListener (ComponentListener* const listenerToRemo
|
|||
//==============================================================================
|
||||
void Component::inputAttemptWhenModal()
|
||||
{
|
||||
getTopLevelComponent()->toFront (true);
|
||||
|
||||
bringModalComponentToFront();
|
||||
getLookAndFeel().playAlertSound();
|
||||
}
|
||||
|
||||
|
|
@ -3085,9 +3114,7 @@ void Component::internalBroughtToFront()
|
|||
Component* const cm = getCurrentlyModalComponent();
|
||||
|
||||
if (cm != 0 && cm->getTopLevelComponent() != getTopLevelComponent())
|
||||
{
|
||||
cm->getTopLevelComponent()->toFront (true);
|
||||
}
|
||||
bringModalComponentToFront();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue