Browse Source

Fixed a bug where a mouse enter event wouldn't be sent to the Component under the mouse when exiting a modal loop and where mouse exit events were being sent when a modal loop was active

tags/2021-05-28
ed 8 years ago
parent
commit
ce14b66763
1 changed files with 14 additions and 0 deletions
  1. +14
    -0
      modules/juce_gui_basics/components/juce_Component.cpp

+ 14
- 0
modules/juce_gui_basics/components/juce_Component.cpp View File

@@ -1755,6 +1755,13 @@ void Component::exitModalState (const int returnValue)
ModalComponentManager& mcm = *ModalComponentManager::getInstance();
mcm.endModal (this, returnValue);
mcm.bringModalComponentsToFront();
// If the mouse is over another Component when we exit the modal state then send a mouse enter event
if (MouseInputSource* mouse = Desktop::getInstance().getMouseSource (0))
{
if (Component* c = mouse->getComponentUnderMouse())
c->internalMouseEnter (*mouse, mouse->getScreenPosition(), Time::getCurrentTime());
}
}
else
{
@@ -2406,6 +2413,13 @@ void Component::internalMouseEnter (MouseInputSource source, Point<float> relati
void Component::internalMouseExit (MouseInputSource source, Point<float> relativePos, Time time)
{
if (isCurrentlyBlockedByAnotherModalComponent())
{
// if something else is modal, always just show a normal mouse cursor
source.showMouseCursor (MouseCursor::NormalCursor);
return;
}
if (flags.repaintOnMouseActivityFlag)
repaint();


Loading…
Cancel
Save