Overriding closeButtonPressed event so JUCEApplication is minimized instead of getting closed


#1

Hello,

I’m trying to implement minimization of an application when ‘X’ button is being pressed from the toolbar (on both Mac & Windows platforms).
I see that closeButtonPressed() method is being called as a result of any application closure flow, without any clear way to override/filter the exact action being taken for closure. I want to filter out the toolbar close button pressing from the other terminating actions and call setMinimised(true) instead.

Thanks in advance,
Amitai


#2

If you’re not using the native title bar in your application then you can use the DocumentWindow::getCloseButton() method to add a listener to the button that is returned and then minimise your window in the buttonClicked() callback.

Ed


#3

Hi Ed,

Thanks for answering. I’ve tried that already. The pointer I get is always Null for some reason. It seems impossible to use getCloseButton() for this purpose. By the way, while doing that I saw that JUCE throws an assertion when trying to register as a listener to buttons from a DocumentWindow-derived object.

Thanks,
Amitai


#4

Are you using the native title bar? The DocumentWindow only returns a valid pointer to a Button object if you’re using JUCE’s title bar otherwise it will return nullptr. Try calling setUsingNativeTitleBar (false) in the constructor of your DocumentWindow subclass.

Ed


#5

I tried to use setUsingNativeTitleBar (false) and it is working indeed. Why does it work like this? I want to use the native title bar and still get the close button event.