--- nono/wx/wxsubwindow.h 2026/04/29 17:05:08 1.1.1.9 +++ nono/wx/wxsubwindow.h 2026/04/29 17:05:48 1.1.1.12 @@ -33,40 +33,38 @@ class WXSubWindow : public wxFrame int style); WXSubWindow(wxWindow *parent, wxWindowID id, const wxString& name) : WXSubWindow(parent, id, name, DEFAULT_STYLE) { } - virtual ~WXSubWindow() override; + ~WXSubWindow() override; // フォントサイズ変更 virtual void FontChanged(); - // ウィンドウサイズ再計算 (継承先による) - virtual void DoSize(); - - private: - void OnClose(wxCloseEvent& event); - - wxDECLARE_EVENT_TABLE(); -}; + void Fit() override; + bool Layout() override; + protected: + // 自前レイアウト方式を使うことを宣言する。 + void SetMyLayout(); -// 縦リサイズ可能なサブウィンドウ -class WXVResizeSubWindow : public WXSubWindow -{ - using inherited = WXSubWindow; - public: - WXVResizeSubWindow(wxWindow *parent, wxWindowID id, const wxString& name); - virtual ~WXVResizeSubWindow() override; + // 自前レイアウト方式のサイズに関する情報を取得する。 + virtual bool GetMySizeHints(wxSize *newsz, wxSize *minsz, wxSize *maxsz, + wxSize *incsz); + + // 自前レイアウト。 + // false を返したら子コントロールを配置してよい。 + bool MyLayout(); - bool Layout() override; + // Sizer のためにオリジナルのほうのレイアウトを呼ぶ場合に使う。 + bool BaseLayout() { return inherited::Layout(); } - // フォントサイズ変更 - void FontChanged() override; + private: + void OnClose(wxCloseEvent& event); - void DoSize() override; + wxSize DoMySizeHints(); - protected: - // テキストパネル - WXTextScreen *screen {}; + // 自前レイアウト方式用。 + bool my_layout {}; // 自前方式を使う場合は true + bool my_layout_pass2 {}; // 1パス目/2パス目の区別用。 + wxSize prev_border {}; // 前回のウィンドウマネージャ装飾サイズ - // 高さの固定分 - int fixed_height {}; + wxDECLARE_EVENT_TABLE(); };