前回、タッチイベントでキャレットを移動させると思った場所にいかないと書いたが、見落としてる場所があった。ルーラを表示してるのだからルーラの幅を引かないといけないんだった。何をやっているのだろう…
private void caretMove(){ int tx = touchX + viewInfo.getInt(ConstName.SCROLL_X) - viewInfo.getInt(ConstName.ROW_RULER_WIDTH); int ty = touchY + viewInfo.getInt(ConstName.SCROLL_Y); int row = (ty - 4) / fontSize; if(row >= document.getLineCount()){ row = document.getLineCount() - 1; } int mx = 0; int column = 0; String line = document.getLine(row); for(char c : line.toCharArray()){ mx += paint.measureText(Character.toString(c)); if(mx >= tx){ break; } column++; } caret.move(column, row); }