Flash Builder 4でFlex 3互換モードを使うとポップアップが鏡像反転

いまさら気が付いたのですが、Flex SDK 3.x用に作ったアプリでも、Flash Builder 4 (Flex SDK 4.1)で高速にビルドすることができるらしい。
Flex 3互換性オプション(-compatibility-verion=3.0.0)を有効にしてコンパイルするだけ。以下の記事が詳しい。

http://www.adobe.com/devnet/flex/articles/flexbuilder3_to_flashbuilder4.html

で、やってみた。確かに50%ほどコンパイル速度が高速化されたし、アプリケーションの画面もちゃんと崩れずに表示された。やったね!

と思うのもつかの間、アプリの表示がなんかおかしい。なんか文字が左右反転してるとこがあるよ。あれ?

んで、調べてみたところ、どうもPopUpManagerによるポップアップの中身が全て鏡像反転してるっぽい。じつはComboBoxのリスト要素が全く表示されないという問題も起こるんだけど、これもポップアップの鏡像反転が原因。ComboBoxのリストパネルはポップアップなのでグラフィックとしては鏡像反転してるんだけど、ビットマップの反転時にフォントがレンダリングされなくなるので、中身が消えたように見える(埋め込みフォントを使うとちゃんと文字が鏡像反転して見えます)。

この問題って、普通にComboBox使ってるFlex 3.xアプリが全滅するので、果たしてFlex 3互換モードって出荷前にテストされているのかかなり不安になります。この機能って使って製品作って大丈夫だろうか…。

とはいえ、まぁ鏡像反転以外は無事に動いてる感じで、幸いなことにこの問題のワークアラウンドも存在します。

https://bugs.adobe.com/jira/browse/SDK-26473

以下のCSSをグローバルに追加するとよいらしい。

<mx:Style> 
   global{ 
     layoutDirection: "ltr"; 
    } 
</mx:Style> 

上記のスタイルをSDKに付属しているdefault-3.0.0.cssに直接追加してもいいらしいです。

Flex 3互換モード自体は出荷前にちゃんとテストされていたものの、cssだけうっかり間違ったバージョン入れちゃった…だといいんですが。