マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

簡易テキストエディタ作成 その12

前回、タッチイベントでキャレットを移動させると思った場所にいかないと書いたが、見落としてる場所があった。ルーラを表示してるのだからルーラの幅を引かないといけないんだった。何をやっているのだろう…

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);
}