Browse Source

Added an assertion to catch people using more than one TooltipWindow, which seems to be a common mistake

tags/2021-05-28
jules 7 years ago
parent
commit
a1b9900bae
1 changed files with 17 additions and 0 deletions
  1. +17
    -0
      modules/juce_gui_basics/windows/juce_TooltipWindow.cpp

+ 17
- 0
modules/juce_gui_basics/windows/juce_TooltipWindow.cpp View File

@@ -67,6 +67,10 @@ void TooltipWindow::updatePosition (const String& tip, Point<int> pos, Rectangle
setVisible (true); setVisible (true);
} }
#if JUCE_DEBUG
static Array<TooltipWindow*> activeTooltipWindows;
#endif
void TooltipWindow::displayTip (Point<int> screenPos, const String& tip) void TooltipWindow::displayTip (Point<int> screenPos, const String& tip)
{ {
jassert (tip.isNotEmpty()); jassert (tip.isNotEmpty());
@@ -97,6 +101,15 @@ void TooltipWindow::displayTip (Point<int> screenPos, const String& tip)
| ComponentPeer::windowIgnoresMouseClicks); | ComponentPeer::windowIgnoresMouseClicks);
} }
#if JUCE_DEBUG
activeTooltipWindows.addIfNotAlreadyThere (this);
for (auto* w : activeTooltipWindows)
if (w != this && w->tipShowing == tipShowing)
jassertfalse; // Looks like you have more than one TooltipWindow showing the same tip.
// Be careful not to create more than one instance of this class!
#endif
toFront (false); toFront (false);
} }
} }
@@ -121,6 +134,10 @@ void TooltipWindow::hideTip()
tipShowing.clear(); tipShowing.clear();
removeFromDesktop(); removeFromDesktop();
setVisible (false); setVisible (false);
#if JUCE_DEBUG
activeTooltipWindows.removeAllInstancesOf (this);
#endif
} }
} }


Loading…
Cancel
Save