1
0
Fork 0
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:
jules 2009-04-24 09:23:48 +00:00
parent 4570818cc0
commit 44938b9cd0
12 changed files with 238 additions and 60 deletions

View file

@ -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();
}
}