-
Notifications
You must be signed in to change notification settings - Fork 168
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
sakura.iniがない状態で起動した時にマウスホイールでフォントサイズが変更できない問題を修正 #1536
sakura.iniがない状態で起動した時にマウスホイールでフォントサイズが変更できない問題を修正 #1536
Conversation
SonarCloud Quality Gate failed. |
✅ Build sakura 1.0.3442 completed (commit 662bc8b689 by @suconbu) |
結局、挿入したコードのバグだと言ってます? ちゃんと読めていませんが 無効値だったら値を入れるってのは初期化ですよね? だとすると、問題あるのは拡大縮小のコードじゃないと思います。 |
おかしな状態に合わせて修正する必要はなく、もし「1」がおかしいのであればまずこちらを是正、という進め方も浮かびましたが、今回は劣化させてしまった状態で置いておきたくないという思いから、先に「2」の修正 PR 出させてもらいました。 |
うーむ・・・。このまま進めていいんじゃないでしょうか。 困っていること拡大・縮小が動かないことがある。 原因基準サイズが無効であるために、サイズ変更を検出できない。 対策基準サイズは lfHeight から算出するように改める。(このPRの提案内容。) その他考慮事項設定で lfHeight を変更した直後の動きがスムーズかチェックしとくべきなのかも知れません。 |
一応ハッキリさせときます。
原因分析と対策内容から確認すべき内容は自明なので「省略」でも構わない気がします。 |
遅くなりましたがテスト内容を書きました。二項目とも OK です。 分岐が増えたことで「複雑度高い」と指摘が出ていますが、
|
PR本文にテスト内容が反映されていないみたいです。 |
すみません💧更新しました。 |
ありがとうございました。マージいたします。 |
PR の目的
sakura.ini が置かれていない状態でサクラエディタを起動した後、Ctrl + マウスホイール操作をしてもフォントサイズが 100% のまま変更できない問題を修正します。
※この問題は #1513 の反映後 (73d4fe7 以降) から発生
カテゴリ
PR の背景
#1513 (comment) にて報告頂いた問題の修正です。
PR のメリット
不具合が解消されます。
PR のデメリット (トレードオフとかあれば)
特にありません。
仕様・動作説明
Ctrl + マウスホイール操作時の処理概要
CViewCommander::Command_SETFONTSIZE
にてマウスホイールの回転方向に応じた相対指定によるフォントサイズ設定が行われます。この相対指定時にはその時点の共通設定またはタイプ別設定のフォントサイズを基準値とし、それにズーム倍率を乗算したものを変更後のフォントサイズ候補として算出します。
算出されたフォントサイズが変更前と異なる場合に限り、そのサイズを一時適用フォントサイズとしてして設定、エディタに反映します。
フォントサイズ変更ができない理由について
sakura.ini が置かれていない状態でサクラエディタを起動した時には、LOGFONT 構造体のフォントサイズとして 10pt 相当の値が設定される一方、ポイント単位のサイズを保持する変数
CommonSetting_View::m_nPointSize
には 0 (無効値) が設定されます。sakura/sakura_core/env/CShareData.cpp
Line 198 in 73d4fe7
sakura/sakura_core/env/CShareData.cpp
Line 561 in 73d4fe7
相対指定時における基準値となる
CommonSetting_View::m_nPointSize
が 0 の場合、ズーム倍率を適用した後のフォントサイズも必ず 0 となるため、サイズ変更なしとしてフォントサイズの反映がスキップされます。結果、マウスホイール操作に対して何も反応がない状態となります。
対策方法
CViewCommander::Command_SETFONTSIZE
において、相対指定時の基準値が 0 (無効値) の場合には、LOGFONT 構造体の lfHeight の値から pt 単位のフォントサイズを算出してそれを基準値として使うようにします。また、もし lfHeight から得たフォントサイズも 0 となる場合には、設定可能なフォントサイズの下限値 (=1pt) を基準値とします。
PR の影響範囲
テスト内容
sakura.ini がない状態で起動させた直後の動作を確認します。
関連 issue, PR
#1513
参考資料