[7825] カーソル移動のバグ? 
2014/5/8 (木) 09:23:51 sawada
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)
サクラエディタ起動後、
"1" "Enter" "2" "Enter" "333" "Enter"
と入力後 "←" を押したままにしてオートリピートすると
カーソルが 1 の後ろ(右側)で止まる。
(1 の前に行かない)
一度 "←" を放してもう一度 "←" を押すと
1 の前(左側)に移動する。

Ver2.1.1.2 unicode
Win7 pro 32bit


[7826] Re:カーソル移動のバグ? 
2014/5/8 (木) 13:03:37 LR4
Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0
↓また当て推量ですが…

--- sakura_core/cmd/CViewCommander_Cursor.cpp	(リビジョン 3706)
+++ sakura_core/cmd/CViewCommander_Cursor.cpp	(作業コピー)
@@ -205,6 +205,10 @@
 				ptPos.x += it.getColumn() - it.getColumnDelta();
 				ptPos.y --;
 			} else {
+				if( 0 < nRepCount ){
+					GetCaret().MoveCursor( ptCaretMove, true, _CARETMARGINRATE, bUnderlineDoNotOFF );
+					GetCaret().m_nCaretPosX_Prev = GetCaret().GetCaretLayoutPos().GetX2();
+				}
 				nRes = 0;
 				break; // これ以上左に動けぬ。
 			}


[7827] Re2:カーソル移動のバグ? 
2014/5/8 (木) 18:22:00 もか
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
LR4さんのコードでパッチを登録しました
https://sourceforge.net/p/sakura-editor/patchunicode/813/
・左移動で左隅に移動することを確認
・左選択も正常に反映されることを確認


[7828] Re3:カーソル移動のバグ? 
2014/5/8 (木) 19:35:02 LR4
Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0
▼ もかさん
> LR4さんのコードでパッチを登録しました

ご確認ありがとうございます。
提示したコードとパッチではMoveCursorの第1引数に違いがあるようです。
ptPosではなくptCaretMoveを使うほうが良いのでは?と思いました。
※ptPosとした場合の実害についてはよくわかりませんが。(^^;;;


[7829] Re4:カーソル移動のバグ? 
2014/5/8 (木) 23:11:17 もか
INCM1.23a
すみません、下のほうからコピペしてきたら違っていたようです。
もっとも、ptPosもptCaretMoveも0,0を指しているはずなので、このif内では中身は同じです。
パッチを更新しました。


[7830] Re5:カーソル移動のバグ? 
2014/5/8 (木) 23:41:41 LR4
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
蛇足ですが、

> もっとも、ptPosもptCaretMoveも0,0を指しているはずなので、このif内では中身は同じです。

矩形選択を拡張している最中だとy!=0でもif内に入るかな?なんて思いました。さらに、折り返しインデントの設定が「論理行先頭」になっていて、カーソル位置が折り返し行頭に到達した場合はx!=0でも入りそうな気がするです。
なので、やはりptCaretMoveのほうが適切かと…

INCM/CMT
Cyclamen v3.81