アウトライン解析画面をエディタ画面にドッキングできるようにしてみました。
■主な追加機能
・画面配置を上下左右/フローティングから選択可能
(アウトライン画面の「▼」ボタンから)
・「起動時に表示」オプションを追加(「▼」ボタンから)
・ドッキング時のタイトルバーに「更新」ボタンを追加
・ファイル切替や設定変更時には自動的に再解析を実行
-「(無題)」からファイルを読んだとき
-「閉じて(無題)」「閉じて開く」「開き直す」
-アウトライン解析方法の設定変更時
-別のタイプへの設定切替え時
■ドッキング時の仕様
・ツリーやリストの配色はビューのテキスト色に同期
・タイトルバーに「更新」「設定(▼)」「閉じる」の各ボタン
・クリックでジャンプ
・ダブルクリックでフォーカス移動
・矢印キーでツリー/リスト上のカーソル移動
・Spaceキーでジャンプ
・Enterキーでジャンプ&フォーカス移動
・F11(アウトライン解析)でビューから移動/Escでビューに戻る
■フローティング時の仕様
・「設定(▼)」ボタンを追加
・操作性は概ね従来と同じ
-ツリーやリストの配色は Windows 標準色
-ジャンプ/フォーカス移動ともダブルクリック/Enter
・Spaceキーでジャンプ(機能追加)
■その他変更点(ドッキング・フローティング共通)
・ダブルクリックではツリーの展開・縮小をしないように変更
・ツリー上のダブルクリックに伴う横スクロールを抑える
・リストビューでも隠れて見えない文字をツールチップ表示
・名前ソートでは大文字小文字を区別しないように変更
★保留事項(当面はやる予定なし)
・タイトルバーのドラッグアンドドロップで配置変更
・編集操作による変更箇所の自動反映(アウトラインの自動追従)
★制限事項
・ドッキング時の「更新」ボタンのマークは OS バージョン依存
-Vista, Win7 では Windows ロゴマーク
-2K, XP では縦長の長方形マーク
("Marlett"フォントの文字割当ての相違)
アウトライン解析画面のドッキング機能追加
書き漏らした分です。
■主な追加機能
・ソート順を記憶する(文書タイプ単位)
試行錯誤しながら一気に書き上げたのでまだ何か漏れているかもしれませんが。。。
設定をタイプ別に変更
New@DockOutline_2.patch
・起動時に表示
・ドッキングモード(左/右/上/下/フの5種類)
「起動時に表示」は手動で明示選択するのではなく、
直近の状態を自動で引き継ぐようにして、メニューからは削除しました。
なお、各モードでのアウトライン画面の幅や高さは共通設定にしています。
また、ドッキングモード変更やサイズ変更は既に開いているファイルにも
自動で反映するようにしました。
あと、細かいバグ修正が入っています。
仕様的には概ねこの方向で確定し、今後は自身で普段使いしながら
気が付いた細部挙動を詰めていこうと思います。
SDI画面ではサイズ等の変更を同期させない
SDIモードのときは、既に開いているファイルウィンドウには
何も同期を入れないようにしてみました。
(でも、むしろバグ潰しが主体)
→ New@DockOutline_3.patch
ちょっと調べた秀丸では、
・ドッキング位置やサイズは共通設定
・表示/非表示の引き継ぎはタイプ別
みたい。
特にオプションは見当たらなかったけど、あるのかな?
何にせよ仕様検討が机上の空論で終わらないよう、
今はちゃんと動くコードベースを用意しないと。。。
設定を多様化
コード整理&各種Windowsバージョンで動作確認しました。
上記の作業に意外と大きなつまずきがなかったので、
ついでに設定の多様化もしてみました。
→New@DockOutline_4.patch
・ドッキング時の配置を同期する/しない
・ドッキング時の配置を共通継承/タイプ別継承
上記を組み合わると4種類になります。
自分の小さい脳味噌ではこれが管理可能な上限数かも。
これ以上だと混乱して動作確認がしんどいかな...
動作確認はOSバージョンの違いで問題が出そうな箇所を重点的に見ました。
ANSIビルド:95/98/Me
UNICODEビルド(x86):NT4.0/2000/XP/Vista/Win7(32bit/64bit)
UNICODEビルド(x64):Win7(64bit)
の各環境でひととおり実行。
95/NT4.0はそのままでは動かないので、
古いPSDKのNewapis.hと、Patchesのほうに置いておいた
VS2005のWin95対応用パッチで対処。
(正式対応にする気はないけど、動くとより安心なので試した)
問題は次の2点があったけど、対策済みです。
・NT4.0でツリービューのアイテムの左側が真っ黒になる
・Win7(64bit)でタイトルバーの文字列が下にずれる
もっと高い壁に当たって2~3週間くらいかかるかと思ってたけど
意外と順調でした。
可読性向上のための修正
机上チェックがてら、可読性向上のための修正を施しました。
→ New@DockOutline_4_1.patch
仕様変更やバグ修正は特にありません。
修正点:
・ドッキングサイズ変更の処理手順が入り組んで複雑になっていたのを修正
・分割バーによるサイズ変更時の確定サイズを微修正
・コメント、変数名、変数型(BOOL/boolなど)の見直しと修正
配置可能矩形の取得誤りを修正
タイトルバーのドラッグアンドドロップで配置変更
保留のつもりでいた「タイトルバーのドラッグアンドドロップで配置変更」もできるようにしてみました。
→New@DockOutline_5.patch
フローティングにしておきたいのに場所によってはドッキングしようとするのが鬱陶しい、
という場合のために、「ドッキング禁止」モードも追加しました。
「フローティング」モードはエディタの四辺近辺にドラッグするとドッキングします。
「ドッキング禁止」モードは「フローティング」と見た目は同じでもドラッグでのドッキングはしません。
ちなみに、「フローティング」モードでも Ctrl キーを押しながらドラッグすればドッキングしません。
「ドラッグアンドドロップで配置変更」の描画改善等
主に「タイトルバーのドラッグアンドドロップで配置変更」近辺で、
いろいろと改善・バグ修正・コード整理しました。(機能追加は特になし)
→New@DockOutline_5_1.patch
以前との主な違い
・ドラッグ移動中の矩形描画で極力ゴミが残らないように
・ドロップ後にフローティングになる場合、記憶していた以前のサイズに戻すように
コンテキストメニュー表示機能の追加・改善など
少しだけ手を加え、再度各種OSバージョンでテストしました。
→ New@DockOutline_5_2.patch
動作確認したOSは前回と同様、
Win95,98,Me,NT4.0,2000,Xp,Vista,Win7(32/64bit)
です。
バグ修正は1箇所だけでした。
まぁ、安定動作している気がします。(^^)
■ 前回(5_1)からの変更点
・「▼」ボタンのツールチップ表示を「設定」から「ウィンドウの位置」に変更
・コンテキストメニュー表示機能の追加・改善
-タイトルバー上では「▼」ボタンと同じ[ウィンドウの位置]メニューを表示する
-ツリー/リスト上では[更新]/[コピー]/[ウィンドウの位置]/[閉じる]のメニューを表示する
・[順序(&S)]の表示位置を少し右に移動した
・ドロップ先矩形描画のコード整理
・タイトルバー以外の空き場所(例えば[順序(&S)]あたり)でドラッグが開始できてしまうのを修正
印刷プレビューでドッキングアウトラインが表示されたままになるのを修正
印刷プレビューにしてもドッキングアウトラインが表示されたままになっているのを修正しました。
→ New@DockOutline_5_3.patch
そこまで配慮が行き届いていなかった。orz...
他に、印刷プレビュー操作とは関係無い検索・置換ダイアログも表示されたままになっているようなので、
印刷プレビューの期間は消すようにしました。
grepダイアログは今のところモーダルでしか出していないようですが、CEditWnd::MessageLoop()では
モードレスでもいけるようになっているので、それにあわせて印刷プレビュー時の表示切替の対象にしています。
補完ダイアログはCEditWnd::MessageLoop()にはあるけどビューがフォーカスを失えば勝手に消えるし、
消えているのを出しなおす必要も無さそうなので対象外にしています。
印刷プレビューでの動作修正2
印刷プレビューの問題修正2
→New@DockOutline_5_4.patch
まだ次の問題が残っていたので修正しました。
ドッキング配置を同期する設定で印刷プレビュー表示し、
他画面でアウトラインをフローティング→ドッキングにした場合に
印刷プレビュー画面を閉じてもドッキングしていない。
配置切替時にもブックマーク表示が維持されるように
ブックマークを表示しているときの配置切替ではブックマーク表示が維持されるよう、
細かい挙動を調整しました。
→ New@DockOutline_5_5.patch
例えば、ブックマークを表示している状態でファイルを再ロードすると
これまでのではアウトライン解析表示に切り替わっていましたが、
ブックマーク表示を維持するようにしました。
rev1801でコミットしました。