折れ線のクラス SGElementGroupLine におけるバグでした。
折れ線を構成する各線分には、それが有効であるか無効であるかのフラグを持たせています。上記のクラスでは、折れ線の一部を構成する線分をマウスでクリックしたときに、その線分が有効であれば、折れ線全体を選択状態に設定するという処理を行っています。
軸を対数スケールにした場合、例示したデータのように一部が欠けることがあり、そのような場合には該当する線分を非表示にするとともに、フラグを無効に設定しています。しかし、軸をリニアに設定したときに、全ての線分を有効に設定するという処理を忘れていたため、対数スケールで一度は無効に設定した線分を再び画面上に再表示したとき、その線分をマウスでクリックした場合でも無効と判定され、結果的に折れ線の選択処理が行われていませんでした。
尚、クリックに反応しないということは、左シングルクリックによる選択のみならず、ダブルクリックによるプロパティダイアログの表示や、右クリックによるポップアップメニューの表示も出来ないということです。
対策として、軸をリニアに設定したときには、全ての線分を有効にするという処理を付け加えました。これにより、軸のスケールに関わらず、画面上に表示されている全ての線分に対して、マウスクリックが有効となります。
修正したソースコードはCVSにコミット済みです。
バージョン 2.0.0 のリリースに伴い close します。
軸のスケールを対数に設定した後で再びリニアに戻すと、折れ線の一部をマウスでクリックしても、折れ線データ全体を選択できなくなる。
以下に再現方法を示す。
1.下記のデータを読み込ませて、スカラー型XYの折れ線グラフを表示する。
折れ線上の任意の線分をマウスでクリックすると、折れ線全体が選択されて、折れ線上にアンカーが表示されることを確認する。
2.Y軸のプロパティダイアログを表示して、Y軸のスケールを対数に変更する。
この操作により、上記データのX値の範囲 [3.0, 5.0] の間に存在する2本の線分は、その一部のY座標が負となるため、
画面上には表示されなくなる。
尚、このときも、画面上に表示されている線分をマウスでクリックすることで、折れ線全体が選択されてアンカーが
表示されることを確認する。
3.再びY軸のプロパティダイアログを表示して、Y軸のスケールをリニアに変更する。
この操作により、過程1の状態と同じように、折れ線の全ての線分が表示されることになる。
4.画面上に表示されている線分のうち、X値の範囲 [3.0, 5.0] の間に存在する2本の線分のいずれかをマウスでクリック
すると、画面上には線分が表示されているにも関わらず、折れ線全体が選択されない。