Request: CallOutBox::refreshComponent made virtual


#1

Hi. I would like to use the CallOutBox with sharp corners, only to find that the place where the shape of the CallOutBox is generated is a private member function of the CallOutBox. Checked the LookAndFeel first, it just fills the shape that is generated by the CallOutBox.

I would like that method to be virtual so I can customize the shape of the popup. :) I could copy the whole calloutbox class and change it to my needs, and I'm sure there is some reasoning behind not making refreshComponent virtual.

What I really want to do is change this:

outline.addBubble (content.getBounds().toFloat().expanded (gap, gap), 
    getLocalBounds().toFloat(), 
    targetPoint - getPosition().toFloat(), 
    9.0f, arrowSize * 0.7f);

To this:

outline.addBubble (content.getBounds().toFloat().expanded (gap, gap), 
    getLocalBounds().toFloat(), 
    targetPoint - getPosition().toFloat(), 
    0.0f, arrowSize * 0.7f);

 

or just

    void refreshPath();

to

    virtual void refreshPath();

 

Would this be possible?

 


#2

Generally when you ask a library developer to "just" make a function virtual, the answer will be no! Although it seems like a small request, it exposes internal code so that users write code which depends on it, and therefore means that the library can't be refactored in the future.

In this case that's true, and I wouldn't make that method virtual. A better request would be some kind of LookAndFeel method to generate the path. Haven't time to do it right now, but pester us and we'll do it at some point!


#3

Ha, but removing a "virtual" is worse! Remember AudioSampleBuffer (I'm still not amused)...


#4

Yes, please move the CallOutBox Path generation into Look & Feel, or make it a settable property of the CallOutBox itself.

Regardless of method, it would be really helpful if CallOutBox could have completely rectangular corners instead of round!