NativeWindow and AIR

Anyone following us on Twitter may have seen an interesting issue we uncovered relating to the latest version of Adobe AIR (2.6.0.19140), the Bamboo SDK and the NativeWindow class.

The problem:
CustomChrome windows rely on interaction to the NativeWindow class.  One method is to import the NativeWindow components and name your own instance in the application.  That way, when you want to move, minimize or close (or any of the functions that you would associate with NativeWindow) you simply call your named instance.
However, what we found – doing it this way will cause your application to no longer receive Bamboo Events.

That’s right!  No pressure sensitivity.  No pen/eraser tip changes.  Nothing.

Strangely, all you have to do is make calls to “stage.NativeWindow.<blah>”, completely remove any other references and everything’s happy again.
(Except my scalp… and the hair that I pulled out to get to the bottom of this!)

Now, whilst this solves CustomChrome windows in your own application – it seems to have broken the Bamboo Development Centre!
It simply will not open.
When we run it, there’s the application in the task bar… but it’s invisible.  Sort of a Window-Ninja, if you will.  You can even get the minimize/maximize animation, but still it’s not displaying.  And I can’t even re-install the AIR package, as it’s telling me it’s corrupt.  Yet this is the one that worked prior to the AIR update.

And simultaneously – or coincidently, whichever way you want to look at it – the Bamboo Dock stopped working!  Although this appears to be because, for some strange reason, BambooCore.exe refuses to run automagically after a system reboot.
You can easily navigate to the install path and fire the executable manually… but it’s definitely a strange one.

 

A little digging and you can find that in this latest update of AIR that there is a change to the NativeWindow class… a VERY significant change.  This new one allows you to have “owned” windows (the name made me chuckle, heh, ‘I pwned your window’… moving swiftly on).
I wouldn’t have thought that the changes to allow this functionality would break other applications… or would they?  Not knowing how these other tools were built – just how to get into them for our benefit – it’s difficult to speculate.

I would postulate: Gremlins.
As Holmes says “when you have eliminated the impossible, whatever remains, however improbable, must be the truth?”

___________________________________