sakura
sakura copied to clipboard
検索ダイアログと置換ダイアログを横方向にリサイズ出来るように変更
PR の目的
検索ダイアログと置換ダイアログを横方向にリサイズ出来るように変更するのが目的です。
カテゴリ
- 仕様変更
PR の背景
テキストボックスに入力する文字列が長くなった場合に見切れて表示されるので確認がしにくいかもしれないと思って対策を入れました。
PR のメリット
テキストボックスに入力する文字列が長い場合にダイアログの横幅を広げる事で確認がしやすくなる。
PR のデメリット (トレードオフとかあれば)
ダイアログをリサイズ後にダイアログを閉じて開きなおすとサイズが元に戻ってしまう
仕様・動作説明
変更前は検索ダイアログと置換ダイアログのリサイズが行えませんでした。
変更後は横方向にリサイズ出来るようになります。
PR の影響範囲
CDialog::DispatchEvent
から呼び出す仮想関数を追加しました。派生クラスでそれらの仮想関数を override する事で該当機能を実現しています。
テスト内容
テスト1
手順
関連 issue, PR
参考資料
https://devblogs.microsoft.com/oldnewthing/20031107-00/?p=41923
:white_check_mark: Build sakura 1.0.3866 completed (commit https://github.com/sakura-editor/sakura/commit/8e0144094f by @beru)
先に #687 を完了させるべきと思います。
個人的には、要らないと思います。
サクラエディタには「標準にない検索機能」が実装されているので検索ダイアログがカスタム実装されていますが、検索ダイアログはもともとWindows標準に存在しています。個人的には現状のフルカスタマイズを、標準との機能差分のみを実装するシンプルな形に整理していく方向にしたいです。
このPRは「フルカスタマイズの機能を増やそうぜ!」なので逆方向ですね。
横方向にリサイズ可能とする リサイズなので、日本語でいう「伸縮」を考えておかないといかんです。
- 「伸ばす」に関してはこの対応で良いと思います。
- 「縮める」に関しては考慮が入ってないと思います。 最小幅を決め打ってやればよいと思いますが、現状は「考慮なし」に見えます。
見切れ対策の方法論 方法論は大きく分けて2つあります。
- 表示幅を拡げる 「幅が足りない」に対して「拡げる」のは妥当な作戦です。
- 折り返し表示する 必要かどうかは別にして、Webではよく採られる作戦です。
windows標準の検索ダイアログはどちらにも対応していません。 vscodeの検索ペインは両対応です。
「対応しない」と「両対応する」の二択で考えるのがいいんじゃないかと思います。 ※当面「必要なし」がぼくの見解ですが。
個人的には、要らないと思います。
実は自分も検索ダイアログと置換ダイアログに関して言えば不要な気はします。普通はそんな長い文字列で検索とか置換しないですし…。じゃあなんで実装したのかというとGrepとGrep置換のダイアログに関して同様の対処を行いたいので下準備的に行いました。GrepとGrep置換のダイアログの検索場所(フォルダのパス)は場合によっては結構長くなりがちなので、見切れないようにもう少し横に長く表示させたい場合があるかもしれません。
とはいえダイアログの横幅を可変にしないでも、テキストボックスの表示が見切れている場合にマウスカーソルを置いたらツールチップで表示するという対策とかで十分なのかもしれません。
サクラエディタには「標準にない検索機能」が実装されているので検索ダイアログがカスタム実装されていますが、検索ダイアログはもともとWindows標準に存在しています。
検索ダイアログはもともとWindows標準に存在しているというのは認識していませんでしたが FindText
や ReplaceText
WindowsAPI の事ですかね?
https://docs.microsoft.com/en-us/windows/win32/api/commdlg/nf-commdlg-findtextw https://docs.microsoft.com/en-us/windows/win32/api/commdlg/nf-commdlg-replacetextw
なお Comdlg32.dll
はもう拡張されないでしょうね。Vistaで後継のCommon Item Dialogが登場しましたが、検索や置換への対処ではないですね。カラーピッカーやフォント選択も古いままです。個人的にはここらへんのUIはソフトによって色々な味付けがあると思うので標準品でなくてもよいと思います。もちろん標準品で良いものがあればそれを使いたいですが。
Microsoftは今はWinUI 3を開発してますが一体どうなることやら…。
個人的には現状のフルカスタマイズを、標準との機能差分のみを実装するシンプルな形に整理していく方向にしたいです。
あまり使われていない機能ならば削減する方向性でも良いと思います。もしくはデフォルトではそのオプションを非表示とかですね。
このPRは「フルカスタマイズの機能を増やそうぜ!」なので逆方向ですね。
横方向にリサイズ可能とする リサイズなので、日本語でいう「伸縮」を考えておかないといかんです。
* 「伸ばす」に関してはこの対応で良いと思います。 * 「縮める」に関しては考慮が入ってないと思います。 最小幅を決め打ってやればよいと思いますが、現状は「考慮なし」に見えます。
処理内容を読み取りにくいと思いますが、自分なりに考慮はしているつもりです。WM_SIZING
のハンドラの OnSizing
メソッドでデフォルトサイズ(WM_INITDIALOG
メッセージのハンドラの OnInitDialog
で取得しているウィンドウのサイズ)より小さくならないように対処を加えています。
見切れ対策の方法論 方法論は大きく分けて2つあります。
* 表示幅を拡げる 「幅が足りない」に対して「拡げる」のは妥当な作戦です。 * 折り返し表示する 必要かどうかは別にして、Webではよく採られる作戦です。
windows標準の検索ダイアログはどちらにも対応していません。 vscodeの検索ペインは両対応です。
「対応しない」と「両対応する」の二択で考えるのがいいんじゃないかと思います。 ※当面「必要なし」がぼくの見解ですが。
折り返し表示は今のダイアログ方式ではちょっと実現が難しいですね。というかその発想がありませんでした。
なお検索と置換に関してはVisual StudioもVSCodeもダイアログを表示するのではなくてエディタ領域の右上に小さいUI領域が出ます。VSCodeではこれの事を Find Widget
というようです。
https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace
慣れのせいかこの方式の方が総合的に優れているかなと今は感じています。サクラエディタは多数のオプションをラベル付きのコントロールで表示しているので、面積を取りますね。GrepとGrep置換は特にそうです。
VSCodeはデフォルトで表示するオプションを絞ってアイコン表示で済ませているので面積を取りません。>
や ...
アイコンを押した時にUIが広がって追加のオプション指定を行うような作りになっていて、デフォルトではあまり面積を取らない表示になっているのでシンプル感があります。
じゃあサクラエディタの検索や置換やGrep, Grep置換ダイアログのレイアウトを大きく変えたいのかというと、色々大変そうだし自分はやりたくはないなぁというのが正直なところです。
処理内容を読み取りにくいと思いますが、自分なりに考慮はしているつもりです。
WM_SIZING
のハンドラのOnSizing
メソッドでデフォルトサイズ(WM_INITDIALOG
メッセージのハンドラのOnInitDialog
で取得しているウィンドウのサイズ)より小さくならないように対処を加えています。
これは見落としでした。スミマセン。
検索ダイアログはもともとWindows標準に存在しているというのは認識していませんでしたが
FindText
やReplaceText
WindowsAPI の事ですかね?
そうです。CのAPI関数は既にdeprecatedですが、比較的最近(vistaが出たときくらい)に新しいCOMインターフェースが提供されて置き換わったと思っています。
なお検索と置換に関してはVisual StudioもVSCodeもダイアログを表示するのではなくてエディタ領域の右上に小さいUI領域が出ます。VSCodeではこれの事を
Find Widget
というようです。
あれ?visual studio はダイアログが出るような・・・(Ctrl + Shift + F VSCodeはHTML+javascriptで作ってるらしいので、改行表示とか余裕ですよね。
リサイズ可能にすると、狭い領域に表示させるオプション項目のUIデザイン変更とかの話をしないといけない気がしていて、そのへんをやりだすと収集がつかないのかなぁと思っていました。
最近の流行(?)からするとチェックボックスとかラジオボタンとかは使わない方向な気がします。 なんかスイッチみたいなUIを使ったりしますよね。
Grep/Grep置換のUIは、ここ一年のうちに何度か変えたような気がするので、 「もうちょっといい感じに」という調整を続けて入れてみてもよいと思います。
検索ダイアログはもともとWindows標準に存在しているというのは認識していませんでしたが
FindText
やReplaceText
WindowsAPI の事ですかね?そうです。CのAPI関数は既にdeprecatedですが、比較的最近(vistaが出たときくらい)に新しいCOMインターフェースが提供されて置き換わったと思っています。
それらの WindowsAPI は deprecated 扱いではないですよ。 時代遅れで obsolete ですが、将来的にも互換性の為に無くならないと思います。
あとWindows Vistaから登場したCommon Item Dialogはファイルダイアログぐらいでそれ以外のコモンダイアログは置き換わってないです。
あれ?visual studio はダイアログが出るような・・・(Ctrl + Shift + F
Ctrl + Shift + F キー押しで表示されるそれは Find and Replace
というタイトルで表示されるダイアログで Find in Files
や Replace in Files
のタブがありますが、サクラエディタでいうとGrep的な処理を行います。
Ctrl + F キーや Ctrl + Hキーを押すとエディタの右上に表示されるのが、サクラエディタでいう検索や置換相当かなと。
リサイズ可能にすると、狭い領域に表示させるオプション項目のUIデザイン変更とかの話をしないといけない気がしていて、そのへんをやりだすと収集がつかないのかなぁと思っていました。
そうなのでこのPRの実装では最小サイズは元のサイズにしています。もっと縮めて小さくしたいという思いには応えません。
最近の流行(?)からするとチェックボックスとかラジオボタンとかは使わない方向な気がします。 なんかスイッチみたいなUIを使ったりしますよね。
Windows 2000 : クラシックスタイル Windows XP : Visual Style Windows Vista, Windows 7 : Windows Aero Windows 8 : フラットデザイン Android : 2014年にGoogleがMaterial Designを提唱 Windows 10 : 2017年にMicrosoftがFluent Design Systemを発表(Windows 10のFall Creators Update(1709)で導入された
流れを追ってみました。Windowsの標準コントロールだとFluent Design Systemには対応出来ないですね。 Win UIなら大丈夫そうですが使った事無いのでよくわかりません。
Grep/Grep置換のUIは、ここ一年のうちに何度か変えたような気がするので、 「もうちょっといい感じに」という調整を続けて入れてみてもよいと思います。
そうですね。Grepダイアログなんかは表示サイズが大きいのでウィンドウの縦横サイズを縮められるようにしたいですね。あれ?でもそれは実装が大変そう…。
:white_check_mark: Build sakura 1.0.3869 completed (commit https://github.com/sakura-editor/sakura/commit/eb45c07634 by @beru)
小話
Windows 2000 : クラシックスタイル Windows XP : Visual Style Windows Vista, Windows 7 : Windows Aero Windows 8 : フラットデザイン Android : 2014年にGoogleがMaterial Designを提唱 Windows 10 : 2017年にMicrosoftがFluent Design Systemを発表(Windows 10のFall Creators Update(1709)で導入された
Windows 2000 UXテーマ非対応(xp以降で「クラシックスタイル」と呼称される形式) Windows XP 「Luna UI」(青いやつ、どっかの草原の絵が有名) Windows Vista, Windows 7 「Aero Glass」(半透明のやつ) Windows 8 「Modern UI」(ストアアプリ風) Windows 10 「Aero Glass」(現行、黒モードに対応)
Windows 10のUIには別な呼称があるのかも知れないです。
少なくとも、英語版リソースのほうで、WS_THICKFRAMEの対応が漏れてる気がします。