I finally got around to to setting up a new Linux environment (Ubuntu 11.10, running under VirtualBox).
The good news is that building went without a hitch. The better news (for me) is that my previously untested Datagram socket extensions worked first try.
However, I get a very strange behavior with the maximise button. Not just on my app, but with the JuceDemo as well.
Initially, resizing works correctly. As does minimize and resume.
The maximize button behaves as expected in that it takes the window full size of the desktop and the graphic for the maximizeButton changes. However, if you try to ‘un maximize’, you’re stuck. The button will change, and the window will very briefly resume width/height (though anchored to upper left corner of screen). Then it will shoot back to full screen. And it’s stuck. You can try manually resizing, but shortly after you start the window shoots back to full size.
I did a little spelunking, and it appears the the problem is that a ConfigureNotify event comes in with x,y,w,h set to full screen. The send_event flag in the configure event is true. There only appear to be four XSendEvent calls in juce_linux_Windowing.cpp, and the only one seemingly called (twice) is in the toFront method when the button is clicked.
It’s not clear to me why this would generate a synthetic ConfigureNotify event. I vaguely remember a bunch of rules about gravity and relative coordinates with synthetic ConfigureNotify events, but it’s been ages since I dealt with XWindow hell.
The native window title bar appears to be broken for maximize as well. The full screen behavior is as expected, with the native title bar vanishing, but the title bar doesn’t do the ‘popup’ for restore.
I’ll try to muck with a different gui, like gnome, tomorrow, but since it built clean from the tip, it seemed worth mentioning even though it still isn’t clear to me what is going on.