Skip to content

マウス選択の挙動の変化 #468

@ttdoda

Description

@ttdoda

5.1

  • 文字の左半分にポインタあるとき
    • 前方(左)にポインタが移動すると
      • 左の文字の左半分にポインタが到達すると
        • 左ボタンを押したときの左の文字が選択される
    • 後方(右)にポインタが移動すると
      • 右の文字の右半分にポインタが到達すると
        • 左ボタンを押したときの右の文字が選択される
  • 文字の右半分にポインタあるとき
    • 前方(左)にポインタが移動すると
      • この文字の右半分にポインタが到達すると
        • この文字(左ボタンを押したときの文字)が選択される
    • 後方(右)にポインタが移動すると
      • 右の文字の右半分にポインタが到達すると
        • この文字(左ボタンを押したときの右の文字)が選択される

Originally posted by @zmatsuo in #244

この文字のどの位置で選択を始めたかで挙動が違う(選択開始位置を半文字分ずらす)のは、
選択範囲を文字と文字の間で指定していると考えると分かりやすいと思います。
ドラッグで選択される文字の範囲も、この文字間を指定するという考えで調整されています。

この選択開始位置を半文字分ずらすという処理ですが、判定方法が LeftHalfOfDBCS()
置き換えられる事によって e91f4dcBuffChangeSelect()が、 1951576BuffChangeSelect()
行わなくなりました。

上記二つの修正の結果、選択位置の指定方法が文字間から文字に変わったと言えると思います。
しかし文字による指定と考えた場合、選択範囲の決まり方の一部が不自然になりました。

  • マウスを左(もしくは上)にドラッグした時に、選択開始した文字が選択に含まれない
    • これの派生として、行の右端の文字を左方向へのドラッグで選択出来ない
      • 正確には次の行の先頭の文字から開始すれば可能だが不自然
  • マウスを右(もしくは下)にドラッグした時に、マウスポインタの位置の文字が選択されない

個人的には文字間を選択する挙動が好みなのですが、文字を選択する挙動のままにする場合は
選択範囲の文字の決め方を修正する必要が有ると思います。

以下、余談

5.2, 5.3でウィンドウアクティベート時に文字が選択され易くなったのは、判定方法が
BuffStartSelect()BuffChangeSelect()で異なる為、同じ位置でも異なる結果が得られて
マウスが動いたとみなされていたのだと思います。
(バックグラウンド状態からのアクティベート時はBuffChangeSelect()も呼ばれる?)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions