--- nono/wx/wxlogmonitor.h 2026/04/29 17:05:08 1.1.1.7 +++ nono/wx/wxlogmonitor.h 2026/04/29 17:05:44 1.1.1.11 @@ -12,7 +12,7 @@ #include "wxsubwindow.h" #include "wxscrollbar.h" -#include "wxtextscreen.h" +#include "wxmonitor.h" class Logger; class WXLogMonitor; @@ -54,18 +54,23 @@ class LogMonitor : public Object }; // ログウィンドウ -class WXLogMonitor : public WXVResizeSubWindow +class WXLogMonitor : public WXSubWindow { - using inherited = WXVResizeSubWindow; + using inherited = WXSubWindow; friend class LogMonitor; public: - WXLogMonitor(wxWindow *); - virtual ~WXLogMonitor() override; + explicit WXLogMonitor(wxWindow *); + ~WXLogMonitor() override; + + void FontChanged() override; + bool Layout() override; private: - // サイズ変更イベント - void OnSize(wxSizeEvent&); + void Fit() override; + + // 最大/最小サイズ設定 + wxSize DoSizeHints(); // マウスホイールイベント void OnMouseWheel(wxMouseEvent&); @@ -79,6 +84,8 @@ class WXLogMonitor : public WXVResizeSub // スクロール処理 void DoScroll(int pos); + WXMonitorPanel *screen {}; + // スクロールバー WXScrollBar *vscroll {}; @@ -94,9 +101,12 @@ class WXLogMonitor : public WXVResizeSub int lines {}; // モニター - Monitor monitor {}; + std::unique_ptr monitor /*{}*/; LogMonitor log {}; - // イベントテーブル - wxDECLARE_EVENT_TABLE(); + // 前回のウィンドウマージン (クライアント領域の外側) + wxSize oldmargin {}; + + // 謎のリサイズ対策 + bool layout_pass2 {}; };