◀一般トップへ
  • 1865 改行記号の真ん中にカーソルが
    • 1961 RE: 改行記号の真ん中にカーソルが
      • 1967 RE2: 改行記号の真ん中にカーソルが
  • [1865] 改行記号の真ん中にカーソルが みく 2002年05月16日 21:24


    以下の手順で再現します。
    ・サクラエディタで編集し行末にカーソルがある状態で終了する。
    ・別のエディタで同じ行を編集し2バイト以上削除して保存する。
    ・サクラエディタで開く。
    カーソルが改行記号の真ん中に出現します。

    多分、内部保持CDocLineの行データに改行文字が1文字分あるのに
    それを考慮してないためだと思うのですが。
    • [1961] RE: 改行記号の真ん中にカーソルが みく 2002年06月01日 13:23


      多分これ↓で直るはず。

      GetLengthWithoutEOL() に const を付けます。
      CaretPos_Phys2Log()で行長取得で m_nLength の代わりに GetLengthWithoutEOL() を使います。

      -----

      CLayout.h
      int GetLengthWithoutEOL() const { return m_nLength - (m_cEol.GetLen() ? 1 : 0); };

      CLayoutMgr.cpp:CaretPos_Phys2Log()
      //nDataLen = pLayout->m_nLength;
      nDataLen = pLayout->GetLengthWithoutEOL();
      • [1967] RE2: 改行記号の真ん中にカーソルが やざき 2002年06月04日 21:45


        >CLayout.h
        > int GetLengthWithoutEOL() const { return m_nLength - (m_cEol.GetLen() ? 1 : 0); };
        >
        >CLayoutMgr.cpp:CaretPos_Phys2Log()
        > //nDataLen = pLayout->m_nLength;
        > nDataLen = pLayout->GetLengthWithoutEOL();

        取り込みました。Thanx!