Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OSDN転載: キーワードヘルプで複数行の説明テキストを入れると2行目以降が表示されない。 #1353

Closed
5 tasks done
berryzplus opened this issue Jul 30, 2020 · 5 comments · Fixed by #1358

Comments

@berryzplus
Copy link
Contributor

berryzplus commented Jul 30, 2020

問題内容

対応しておきたいと思うので、OSDNから転載します。

https://osdn.net/projects/sakura-editor/forums/34071/42347/

キーワードヘルプ内の連続改行で表示エラー? (2020-05-15 19:19 by noname #84978)Reply
キーワードヘルプ用のファイル内の記述で「\n\n」のような改行の連続があると、それ以降の内容が表示されなくなるようです。(妙な余白が表示されます)

ごく最近気付いたためv2.4.0以降の現象かと思います。
「\n \n」のように空白を挟めば対処は可能ですが一応ご報告迄に。

再現手順

不明

再現頻度

不明

問題のカテゴリ

  • プログラムの動作上の問題
    • 正式リリース版

環境情報

  • OS バージョン
  • サクラエディタバージョン
  • PC情報

スクリーンショット

TODOリスト

  • キーワードヘルプってなんやねん!
  • 発生事象の確認
  • 再現手順の確認
  • 原因の特定
  • 対策の選定
@berryzplus
Copy link
Contributor Author

キーワードヘルプってなんやねん!

特定の単語にマウスカーソルを当てたときに、ポップアップヒントを表示する機能らしい。

たとえばこれ。

CHCP /// 現在のコード ページ番号を表示したり, 設定します.\n\nCHCP [nnn]\n\n nnn コード ページ番号を指定します.\n\nパラメータの指定がなければ, 現在のコード ページ番号が表示されます.

発生事象の確認

説明に書いてある通り。実例を見れば分かるはず。

CHCP /// 現在のコード ページ番号を表示したり, 設定します.\n\nCHCP [nnn]\n\n  nnn   コード ページ番号を指定します.\n\nパラメータの指定がなければ, 現在のコード ページ番号が表示されます.

この場合、現在のコード ページ番号を表示したり, 設定します. だけが表示されて、以降のコメントが表示されない。

再現手順の確認

  1. CHCP を含むバッチファイルを開く。
  2. CHCP にマウスカーソルを当てる。

インストーラーに付属する「ごく標準的なキーワードヘルプファイル」で再現しているようなので、再現率はおそらく100%。

@berryzplus
Copy link
Contributor Author

再現手順の補足

タイプ別設定のキーワードヘルプタブはこんな感じにします。

キーワードヘルプを表示させたときに、1行目しか表示されていません。

@berryzplus
Copy link
Contributor Author

期待結果

たぶん、こうなるのが正しい・・・。

@berryzplus
Copy link
Contributor Author

原因

このコードの260行目が原因です。

// 計測対象の文字列がブランクでない場合
if ( 0 < i - nLineBgn ) {
// 指定されたテキストを描画する
nHeight = ::DrawText( hdc, &pszText[nLineBgn], i - nLineBgn, &rc,
DT_WORDBREAK | DT_EXPANDTABS | DT_EXTERNALLEADING
);
}else{
// ダミー文字列の高さを取得する
nHeight = ::DrawText( hdc, szDummy, _countof(szDummy) - 1, &rc, DT_CALCRECT );
}

DrawText の呼出しにDT_CALCRECTを指定しているのが原因で、空行以降の描画幅が半角スペース1文字分に更新されてしまう結果、空行以降が描画されていない(ように見える)という現象です。

対策としては、DT_CALCRECTを適切な描画オプションに変えたらよいです。
DT_EXTERNALLEADINGに変えたらよいと思います。

@berryzplus berryzplus changed the title OSDN転載: キーワードヘルプ内の連続改行で表示エラー OSDN転載: キーワードヘルプで複数行の説明テキストを入れると2行目以降が表示されない。 Jul 31, 2020
@berryzplus
Copy link
Contributor Author

事象が分かるようにタイトルを書き換えてみました。
分からんかったらすまん・・・。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant