CTRPFのKeyboardについてのお話 マイナーすぎる3DS備忘録

CTRPFを作っていた時につまずいた時の話です。

 

何があったのか

いつからかCTRPFの選択式のキーボードは、このようにデフォルトで1番目の要素が選択されるようになっていました。

 

自分的に嫌なのでどうにか選択をクリアできないかと思い探してみると、

それっぽいのを見つけました。引数に-1を渡すとすべての選択が解除されると書いてあります。しかし正直に-1を渡してみると、3DSがクラッシュしてしまいました。書いてある通りPopulateもしています。

 

原因を探るべく、ChangeSelectedEntryのソースを見てみると、

entryの値をまともにチェックせずに配列のインデックスとして使ってました。entryに-1入れていいよって書いてたのに-1かチェックしてないなんて何事だよ。。。

 

しかしentryがキーボードの要素数より大きければ-1として扱われるみたいなので、

keyboard.ChangeSelectedEntry(INT_MAX);

と使えば-1を入れた時の本来の動作が期待できそうなので実行してみると、

無事、クラッシュすることなくすべての選択を解除することができました。

 

結論

-1の代わりにINT_MAXを使おう。

 

 

ChangeSelectedEntry実装したのは予想通りPabloさんでした。Pabloなにやってんだよ毎回やっぱNanquitasは神それでは。