Browse Source

Fixed some issues when using a touchscreen to interact with PopupMenus

tags/2021-05-28
ed 8 years ago
parent
commit
9f4648f856
2 changed files with 15 additions and 6 deletions
  1. +14
    -6
      modules/juce_gui_basics/menus/juce_PopupMenu.cpp
  2. +1
    -0
      modules/juce_gui_basics/native/juce_win32_Windowing.cpp

+ 14
- 6
modules/juce_gui_basics/menus/juce_PopupMenu.cpp View File

@@ -513,13 +513,21 @@ public:
MouseSourceState& getMouseState (MouseInputSource source)
{
MouseSourceState* mouseState = nullptr;
for (auto* ms : mouseSourceStates)
if (ms->source == source)
return *ms;
{
if (ms->source == source) mouseState = ms;
else if (ms->source.getType() != source.getType()) ms->stopTimer();
}
if (mouseState == nullptr)
{
mouseState = new MouseSourceState (*this, source);
mouseSourceStates.add (mouseState);
}
auto ms = new MouseSourceState (*this, source);
mouseSourceStates.add (ms);
return *ms;
return *mouseState;
}
//==============================================================================
@@ -999,7 +1007,7 @@ public:
};
//==============================================================================
class MouseSourceState : private Timer
class MouseSourceState : public Timer
{
public:
MouseSourceState (MenuWindow& w, MouseInputSource s)


+ 1
- 0
modules/juce_gui_basics/native/juce_win32_Windowing.cpp View File

@@ -2379,6 +2379,7 @@ private:
else if (isUp)
{
modsToSend = modsToSend.withoutMouseButtons();
currentModifiers = modsToSend;
currentTouches.clearTouch (touchIndex);
if (! currentTouches.areAnyTouchesActive())


Loading…
Cancel
Save