▼ ACさん
> 手元にある過去バージョンで試してみたところ、
> ver.2.1.1.2と ver.2.2.0.1の間で挙動が変わったようです。
>
再現方法を書いていただいたので、実機で検証してみました。
結論としてバグで、原因は設計不良みたいです。
とりあえず、調査報告をあげておきます。
過去バイナリとか持ってないのでバイナリはSVNソースからビルドしました。
ビルド環境はvs2005proのvc++です。
動作環境はwin8.1 pro x64です。
ver.2.1.1.4 (rev3825) ○再現せず
ver.2.1.1.4+ (rev3870) ○再現せず
ver.2.1.1.4+ (rev3871) △コンパイルエラーになった
ver.2.1.1.4+ (rev3872) △コンパイルエラーになった
ver.2.1.1.4+ (rev3873) ×再現
原因はrev3871~rev3873の変更です。
rev3871でコンパイルエラーになるバグを作りこんで
rev3873でコンパイルエラーを修正したようです。
rev3872は本件とはまったく関係のない軽微な仕様変更です。
★↓がrev3871のコミット時コメント
--
Fix: キャレットの更新でGetDrawSwitchフラグを見るように
[patchunicode:#913]
・マクロで高速にキャレットが更新されるので処理を省略するようにします。
--
マクロ絡みの動作でキャレットが更新されると困るケースがあったんですかね?
コミットコメントの内容からすると、
マクロ実行中はキャレット更新を抑制するように変更したい
というのが仕様のはずです。
rev3871~rev3873の変更内容を見ると、
特定条件下ではCCaret::ShowEditCaret()を呼び出しても、
キャレット位置を更新しないように修正しています。
変更仕様として読み取れる内容とは関係ない修正です。
効果が立証できない改善を残すより、実害のあるバグを潰すのが先だと思うので、
対応策としては、該当範囲の修正を一旦破棄するのがよいと思います。
もしキャレット更新のせいでマクロが遅くなるのなら
マクロ実行中はShowEditCaretを呼ばない、という対応を検討しましょう。
パッチのステータスがclosed(=完了)になっているのでこれを元に戻してやり直しですね。
https://sourceforge.net/p/sakura-editor/patchunicode/913/