検索ダイアログと置換ダイアログを横方向にリサイズ出来るように変更#1706
Conversation
| ✅ Build sakura 1.0.3866 completed (commit 8e0144094f by @beru) |
| 先に #687 を完了させるべきと思います。 |
| 個人的には、要らないと思います。 サクラエディタには「標準にない検索機能」が実装されているので検索ダイアログがカスタム実装されていますが、検索ダイアログはもともとWindows標準に存在しています。個人的には現状のフルカスタマイズを、標準との機能差分のみを実装するシンプルな形に整理していく方向にしたいです。 このPRは「フルカスタマイズの機能を増やそうぜ!」なので逆方向ですね。 横方向にリサイズ可能とする
見切れ対策の方法論
windows標準の検索ダイアログはどちらにも対応していません。 「対応しない」と「両対応する」の二択で考えるのがいいんじゃないかと思います。 |
実は自分も検索ダイアログと置換ダイアログに関して言えば不要な気はします。普通はそんな長い文字列で検索とか置換しないですし…。じゃあなんで実装したのかというとGrepとGrep置換のダイアログに関して同様の対処を行いたいので下準備的に行いました。GrepとGrep置換のダイアログの検索場所(フォルダのパス)は場合によっては結構長くなりがちなので、見切れないようにもう少し横に長く表示させたい場合があるかもしれません。 とはいえダイアログの横幅を可変にしないでも、テキストボックスの表示が見切れている場合にマウスカーソルを置いたらツールチップで表示するという対策とかで十分なのかもしれません。
検索ダイアログはもともとWindows標準に存在しているというのは認識していませんでしたが https://docs.microsoft.com/en-us/windows/win32/api/commdlg/nf-commdlg-findtextw なお Microsoftは今はWinUI 3を開発してますが一体どうなることやら…。
あまり使われていない機能ならば削減する方向性でも良いと思います。もしくはデフォルトではそのオプションを非表示とかですね。
処理内容を読み取りにくいと思いますが、自分なりに考慮はしているつもりです。
折り返し表示は今のダイアログ方式ではちょっと実現が難しいですね。というかその発想がありませんでした。 なお検索と置換に関してはVisual StudioもVSCodeもダイアログを表示するのではなくてエディタ領域の右上に小さいUI領域が出ます。VSCodeではこれの事を https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace 慣れのせいかこの方式の方が総合的に優れているかなと今は感じています。サクラエディタは多数のオプションをラベル付きのコントロールで表示しているので、面積を取りますね。GrepとGrep置換は特にそうです。 VSCodeはデフォルトで表示するオプションを絞ってアイコン表示で済ませているので面積を取りません。 じゃあサクラエディタの検索や置換やGrep, Grep置換ダイアログのレイアウトを大きく変えたいのかというと、色々大変そうだし自分はやりたくはないなぁというのが正直なところです。 |
これは見落としでした。スミマセン。
そうです。CのAPI関数は既にdeprecatedですが、比較的最近(vistaが出たときくらい)に新しいCOMインターフェースが提供されて置き換わったと思っています。
あれ?visual studio はダイアログが出るような・・・(Ctrl + Shift + F リサイズ可能にすると、狭い領域に表示させるオプション項目のUIデザイン変更とかの話をしないといけない気がしていて、そのへんをやりだすと収集がつかないのかなぁと思っていました。 最近の流行(?)からするとチェックボックスとかラジオボタンとかは使わない方向な気がします。 Grep/Grep置換のUIは、ここ一年のうちに何度か変えたような気がするので、 |
それらの WindowsAPI は deprecated 扱いではないですよ。 あとWindows Vistaから登場したCommon Item Dialogはファイルダイアログぐらいでそれ以外のコモンダイアログは置き換わってないです。
Ctrl + Shift + F キー押しで表示されるそれは Ctrl + F キーや Ctrl + Hキーを押すとエディタの右上に表示されるのが、サクラエディタでいう検索や置換相当かなと。
そうなのでこのPRの実装では最小サイズは元のサイズにしています。もっと縮めて小さくしたいという思いには応えません。
Windows 2000 : クラシックスタイル 流れを追ってみました。Windowsの標準コントロールだとFluent Design Systemには対応出来ないですね。
そうですね。Grepダイアログなんかは表示サイズが大きいのでウィンドウの縦横サイズを縮められるようにしたいですね。あれ?でもそれは実装が大変そう…。 |
| SonarCloud Quality Gate failed. |
| ✅ Build sakura 1.0.3869 completed (commit eb45c07634 by @beru) |
| 小話
Windows 2000 UXテーマ非対応(xp以降で「クラシックスタイル」と呼称される形式) Windows 10のUIには別な呼称があるのかも知れないです。 |
| #include "StdAfx.h" | ||
| #include <algorithm> | ||
| #include <memory> | ||
| #include <WinUser.h> |
There was a problem hiding this comment.
記憶が大分怪しいのですが、WinUser.hはwindows.hの一部なので、直接インクルードしないもののような気がするのですが、どうでしょうか。
インクルード順とかの関係によっては、問題になるかもしれないので。
| 少なくとも、英語版リソースのほうで、WS_THICKFRAMEの対応が漏れてる気がします。 |
PR の目的
検索ダイアログと置換ダイアログを横方向にリサイズ出来るように変更するのが目的です。
カテゴリ
PR の背景
テキストボックスに入力する文字列が長くなった場合に見切れて表示されるので確認がしにくいかもしれないと思って対策を入れました。
PR のメリット
テキストボックスに入力する文字列が長い場合にダイアログの横幅を広げる事で確認がしやすくなる。
PR のデメリット (トレードオフとかあれば)
ダイアログをリサイズ後にダイアログを閉じて開きなおすとサイズが元に戻ってしまう
仕様・動作説明
変更前は検索ダイアログと置換ダイアログのリサイズが行えませんでした。
変更後は横方向にリサイズ出来るようになります。
PR の影響範囲
CDialog::DispatchEventから呼び出す仮想関数を追加しました。派生クラスでそれらの仮想関数を override する事で該当機能を実現しています。テスト内容
テスト1
手順
関連 issue, PR
参考資料
https://devblogs.microsoft.com/oldnewthing/20031107-00/?p=41923