--- nono/wx/wxmainview.h 2026/04/29 17:04:37 1.1.1.4 +++ nono/wx/wxmainview.h 2026/04/29 17:05:04 1.1.1.10 @@ -6,16 +6,17 @@ #pragma once -#include "wxheader.h" +#include "wxnono.h" #include -class WXMainView - : public wxPanel +class WXMainView : public wxPanel { using inherited = wxPanel; public: WXMainView(wxWindow *); - virtual ~WXMainView(); + virtual ~WXMainView() override; + + bool Init(); void DoRefresh(); void DoResize(double scale); @@ -25,6 +26,10 @@ class WXMainView // 現在のスケール (wxapp が初期値を指定するため static 変数にしてある) static double screen_scale; + // 文字入力モードを取得・設定 + bool GetCharInputMode() const { return is_charinput; } + void SetCharInputMode(bool enable); + // マウスモードを設定 void SetMouseMode(bool enable); // マウスモードを取得 (キャプチャされているなら true) @@ -32,13 +37,14 @@ class WXMainView // アクティベートイベント void OnActivate(wxActivateEvent& event); - private: - void OnPaint(wxPaintEvent& event); - - void DoPaint(wxDC &dc); - + // キー入力イベント (WXSoftKeyPanel からも呼ばれる) void OnKeyDown(wxKeyEvent& event); void OnKeyUp(wxKeyEvent& event); + void OnChar(wxKeyEvent& event); + + private: + void OnTimer(wxTimerEvent& event); + void OnPaint(wxPaintEvent& event); void OnMouse(wxMouseEvent& event); // 裏バッファ。 @@ -46,24 +52,23 @@ class WXMainView std::unique_ptr ImageBuf {}; // 仮想画面サイズ (ピクセル) - int rendwidth = 0; - int rendheight = 0; + int rendwidth {}; + int rendheight {}; // 実画面サイズ (ピクセル) - int viewwidth = 0; - int viewheight = 0; + int viewwidth {}; + int viewheight {}; // 共通キーコードを取得する int GetKeyCode(wxKeyEvent& event); -#if defined(__WXGTK__) - static const int keycode_table[0xd4]; -#elif defined(__WXOSX__) - static const int keycode_table[0x80]; -#endif + static const int keycode_table[0x190]; + + // 文字入力モードなら true + bool is_charinput {}; // マウスモード (キャプチャしていれば true) - bool mousemode = false; + bool mousemode {}; // 前回のマウス座標とボタン wxPoint prevpos {}; bool prevlb {}; @@ -71,13 +76,13 @@ class WXMainView bool prevrb {}; // WarpPointer() による移動検出用 - bool motion_by_warp_pointer = false; + bool motion_by_warp_pointer {}; // マウスカーソルを移動させる void MyWarpPointer(wxSize pos); - wxTimer paintTimer; - std::atomic paintRequested {}; - void OnTimer(wxTimerEvent& event); + // 再描画を律速する + wxTimer timer {}; + std::atomic paint_request {}; wxDECLARE_EVENT_TABLE(); };