Jump to page content

Bug of the moment 2007-11-23

I despair at the fact that I still develop software in the archaic REALbasic 3.5.2. I’ve just been trying out 5.5.5, the most recent version that my Macintosh will run, and the most recent version before REAL rebuilt the IDE itself in REALbasic, triggering a need for a 1 GHz processor to run it. After all, Visual C# Express runs rings around REALbasic 2006/2007, and yet Visual Studio is managed code, and REALbasic is compiled (or so we’re led to believe anyway).

Take a look at the following screenshot, and identify which program is currently frontmost:

View full-size screenshot

Fooled ya, huh? Great fun when I want to get to the desktop but the Properties palette is blocking my way.

REALbasic still has some of the disturbing bugs from 3.5.2, along with bonus bugs to make you even more cheerful. One such bonus bug is that, when you open a message dialog, and switch app and back, the taskbar disappears. Seriously.

Modal dialogs still use the wrong set-up procedure just as with 3.5.2, giving them a system (control) menu (which is incorrect practice) with absurd items:

I’ve cured this in my existing codebase by having Windows remove all the offending items with GetSystemMenu/RemoveMenu. The dialog box is not sizeable, but the system menu is confused due to – it seems – incorrect window set-up (the absence of DS_MODALFRAME during the CreateWindowEx call, at a guess), so you can ask to maximise a fixed-size (thin frame) dialog box.

All dialog boxes under Win32 are application-modal, despite the Win32 API appearing to have window modality long before Apple glamourised this with their “revolutionary” sheets. Poor modality persisted at least as late as REALbasic 2006 (I was keeping tabs on it through demos, and I think 2007r1 was where I gave up in despair at anything ever working properly). I’m not sure what to make of it. You can bring other application windows up via the taskbar, but they simply ding at you if you try to operate them, since a dialog attached to another window is in the way. Outlook Express at least raises that window for you.

It seems that REALbasic 2006’s draw-menubar-disabled bug also dates back to REALbasic 5 or earlier:

This is another damning indication of their refusal or just complete inability to either fix bugs or get a grip.

I have no idea if the current build of REALbasic 2007 fixes any of these bugs, but REALbasic 2006 was still drawing Macintosh column header boxes in Win32 listboxes, going right back to REALbasic 3’s failure to abstract listboxes out into the relevant native implementations. Unlike Apple, Microsoft were kind enough to provide developers with a column heading facility, but Apple made people roll their own, and this code made it over into Windows builds.

I do truly, deeply wish that REALbasic were good. If REAL had a clue, and were able to prioritise their work into making a solid runtime, instead of developing pointless features like a mind-blowingly slow sprite engine, and even a 3D engine, and focused instead on better native controls and window behaviour, better understanding of platform features (such as Win32 window modality and Mac zoom) and of course dynamic window layout to accommodate differing widget metrics, it would be a superb development platform.

The complete failure of REAL to create a worthwhile system depresses me, as it’s a solid demonstration of the validity of their dreams: that one codebase can compile into native builds for multiple target platforms. WxWidgets looks to be the next in line and one day, I should really give this a try. I don’t know if I could ever cope with C++, but WxWidgets seems to have got off on the right foot and it’s got to be worth investigating. The quality of some of the interfaces developed with it worries me, however, and the runtime is actually slower than REALbasic on my computer…

Posted 23rd November 2007 – Comments and questions?