sakura icon indicating copy to clipboard operation
sakura copied to clipboard

マクロの Paste() が失敗する場合がある

Open yoshinrt opened this issue 6 months ago • 3 comments

問題内容

マクロの Paste() が失敗することがあるようです.

再現手順

SetDrawSwitch( 0 );
Cut();
Paste();
SetDrawSwitch( 1 );
ReDraw();

上記のマクロをキーに割り当て,EOF以外 の行で実行すると,Paste() の実行に失敗し警告音が鳴ります.

https://github.com/sakura-editor/sakura/blob/fe4cc6d17e0e9f0e58f13c6c3cca9147b7751e32/sakura_core/_os/CClipboard.cpp#L42-L46

で ::OpenClipboard() に失敗し,

https://github.com/sakura-editor/sakura/blob/fe4cc6d17e0e9f0e58f13c6c3cca9147b7751e32/sakura_core/view/CEditView.cpp#L2295-L2297

の if が成立してしまうようです.

再現頻度

  • https://github.com/sakura-editor/sakura/actions/runs/9992367305/artifacts/1715223953 で 100% 再現する
  • fe4cc6d17e0e9f0e58f13c6c3cca9147b7751e32 を手元でリリースビルド (x64) したもので 100% 再現する
  • デバッグビルド (x64) では再現しない
  • マクロ 1行目の SetDrawSwitch をコメントアウトすると再現しない
  • CEditView.cpp 2295行目にブレークを張って一時停止→再開すると,リリースビルドでも再現しない

以上から,タイミングに依存している気がします.環境によってはなかなか再現しないかもしれません.

問題のカテゴリ

  • プログラムの動作上の問題

環境情報

  • OS バージョン Windows 11 Pro 23H2

  • サクラエディタバージョン

サクラエディタ開発版(64bit) Ver. 2.4.2.6117 GHA (fe4cc6d17)
(GitHash fe4cc6d17e0e9f0e58f13c6c3cca9147b7751e32)
(GitURL https://github.com/sakura-editor/sakura)

      Compile Info: V_A641940 WPR WIN601/I800/C000/N601
      Last Modified: 2024/7/18 22:27:17
  • PC情報

スクリーンショット

yoshinrt avatar Aug 01 '24 14:08 yoshinrt