USB Select Todayのカーソルキーによるオペレーションに不具合がありましたので、これを修正した、1.03をリリースします。機能追加はなく、純粋なバグ修正のみです。バグレポートをお寄せくださったYOSHIさん、ありがとうございました。
お恥ずかしい話ですが、ボタンパネルの管理を、後付で無理無理つけたので、あちこちが歪んでいました。歪みを一掃すべく、ボタン管理のためのクラスを作って、タップやカーソルの移動をそのクラスで管理するようにしました。おかげでコードは大変すっきりしました。
泥縄式に、コードを追加するとやっぱりダメですね。
YOSHI
hiroさん、早速の対応有難うございます。
動作確認させて頂き直っているのを確認致しました。
これで、また便利になりましたね
本当に便利なプログラムを作成して頂き感謝にたえません、
これからもよろしくお願い致します。m(__)m
hiro
ご迷惑をおかけしました oTL
イイワケを書くと、そもそも、最初のコーディングのセンスが悪かったせいなのです。
ボタンは四つに決めウチで、タップされた位置から、ボタン番号を取り出して、対応する機能を呼び出すようにコーディングされていました。
それが、パネルの表示・非表示をつけたときに、ボタンのスロットを管理する配列を作って、表示されているボタンの機能番号をしまうようにしました。
例えば、ActiveSync(NDIS)とMass Storageが表示されている状態では、
g_btns[4] = {0, 2, -1, -1};
という状態になっている配列で、タップされた位置から機能番号を引き出す形に変わりました。
ここらまでは、まだよかったのですが、ここにキー操作がくわわった時点で破綻が起きました。カーソルが端にあるときに、反対の端へ移動させるケースで、コードが醜悪になり、更に、SELECTが入った時点での位置から機能コードを取り出す方法に間違いがあって……と、あまりの醜さに脳がコードを読むことを拒否しました。とほほ。
そのため、ボタンのアイコン、機能、表示されているか否か、表示されている場合にはその領域などを管理するクラスを作成して、これの配列を管理することとしました。(本当はコンテナクラスと反復子も作ろうと思ったのですが、コードが肥大しそうだったので、美しさとのトレードオフと取ってやめました。)
おかげで、すっきり、読みやすいコードになり、バグも混入の余地がなくなったというわけです。
(とかいって、また別のバグが見つかったらいやだなぁ)