Button clicked issue with juce 1.54.27


#1

I just updated my juce library from 1.53.94 to 1.54.27 and i noticed that ButtonClicked is no longer called on Reaper 64. [latest version 4.12, on Mac OSX 10.6]
It must come from the Component::isMouseOver() function that used to return true before and that returns false now.

Version 1.53.94:

[code]bool Component::isMouseOver (const bool includeChildren) const
{
if (flags.mouseOverFlag)
return true;

if (includeChildren)
{
    Desktop& desktop = Desktop::getInstance();

    for (int i = desktop.getNumMouseSources(); --i >= 0;)
    {
        Component* const c = desktop.getMouseSource(i)->getComponentUnderMouse();

        if (isParentOf (c) && c->flags.mouseOverFlag) // (mouseOverFlag checked in case it's being dragged outside the comp)
            return true;
    }
}

return false;

}
[/code]

Version 1.54.27:

[code]//==============================================================================
bool Component::isMouseOver (const bool includeChildren) const
{
const Desktop& desktop = Desktop::getInstance();

for (int i = desktop.getNumMouseSources(); --i >= 0;)
{
    const MouseInputSource* const mi = desktop.getMouseSource(i);

    Component* const c = mi->getComponentUnderMouse();

    if ((c == this || (includeChildren && isParentOf (c)))
          && c->reallyContains (c->getLocalPoint (nullptr, mi->getScreenPosition()), false))
        return true;
}

return false;

}[/code]

reallyContains should return true but doesn’t, consequently none of my buttons work… so it’s a bit annoying.

In Cubase 32 or 64 bit and Repaer 32-bit, it works though. Very odd


#2

Very odd. Maybe they’re buggering-about with the view coordinates or something?

Can you see whether it’s reallyContains() that’s failing, or whether it’s just being given the wrong coordinates to check?


#3

It seems to me that the coordinates checked in reallyContains are wrong.
When i check twice the coordinates for a same button, the values are completly different.
So I guess they are relative to something but not to the component.


#4

I confirm the issue with reaper 64-bit on macos – it happens only with the VST, not with the 64-bit audio unit.

The Y coordinate of the localpoint computed in Component::isMouseOver seems to be false:

Button::mouseDown: x=123 8
Component::isMouseOver: getScreenPosition=1485 155 -> localPoint: 123 34 -> reallyContains: 0


#5

Hmm, sounds like it’s being offset by the size of a title bar… I think I may actually have changed the way it converts global->local coords since 1.54 though - could be worth trying the modules branch in case this is already sorted.


#6

Oh I forgot to mention it, but I tested with the latest modules branch, so the issue is still there


#7

Is this one sorted out? I have the same issue with my 64 bits VST version of my plugin.

Harrie


#8

[quote=“Harrie Munnik”]Is this one sorted out? I have the same issue with my 64 bits VST version of my plugin.
[/quote]

I just tell people to use the 64-bit AU, which works reasonably stable in Reaper 64/OSX.

Sean Costello


#9

No, it’s not!
I updated my Juce library to 2.0.16, and the problem is still there!
I hoped it would be ok by now!
It’s been more than two months that I noticed it.
Hey Jules, are you planning to fix it soon ?


#10

Probably related to this

http://www.rawmaterialsoftware.com/viewtopic.php?t=8506&p=48205#p48205