--- nono/wx/wxlogmonitor.h 2026/04/29 17:04:56 1.1.1.6 +++ nono/wx/wxlogmonitor.h 2026/04/29 17:05:44 1.1.1.11 @@ -4,11 +4,17 @@ // Licensed under nono-license.txt // +// +// ログモニター +// + #pragma once #include "wxsubwindow.h" -#include "wxtextscreen.h" +#include "wxscrollbar.h" +#include "wxmonitor.h" +class Logger; class WXLogMonitor; // モニター部分 @@ -32,6 +38,8 @@ class LogMonitor : public Object private: WXLogMonitor *parent {}; + Logger *logger {}; + // ログ全体の行数(上限) const int backlog = 10000; @@ -45,21 +53,24 @@ class LogMonitor : public Object wxCSConv conv { "CP932" }; }; -// // ログウィンドウ -// -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&); @@ -73,11 +84,10 @@ class WXLogMonitor : public WXVResizeSub // スクロール処理 void DoScroll(int pos); - // ウィンドウサイズ再計算 - void DoSize() override; + WXMonitorPanel *screen {}; // スクロールバー - wxScrollBar *vscroll {}; + WXScrollBar *vscroll {}; int col {}; int row {}; @@ -91,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 {}; };