--- nono/wx/wxsoftkey.cpp 2026/04/29 17:04:53 1.1.1.6 +++ nono/wx/wxsoftkey.cpp 2026/04/29 17:04:56 1.1.1.7 @@ -28,7 +28,6 @@ wxBEGIN_EVENT_TABLE(WXSoftKeyPanel, inhe EVT_LEFT_DCLICK(WXSoftKeyPanel::OnLeftDClick) EVT_RIGHT_DOWN(WXSoftKeyPanel::OnRightDown) EVT_PAINT(WXSoftKeyPanel::OnPaint) - EVT_SIZE(WXSoftKeyPanel::OnSize) EVT_TIMER(wxID_ANY, WXSoftKeyPanel::OnTimer) wxEND_EVENT_TABLE() @@ -47,6 +46,8 @@ WXSoftKeyPanel::WXSoftKeyPanel(wxWindow std::fill(last_pressed.begin(), last_pressed.end(), true); last_modifier = (Modifier)-1; + DoSize(); + // このパネルへのキー入力はメインビューへのキー入力と同じ。 Connect(wxEVT_KEY_UP, wxKeyEventHandler(WXMainView::OnKeyUp), NULL, gMainView); @@ -130,18 +131,6 @@ WXSoftKeyPanel::DoSize() wxSize size(u_width * unit, u_height * unit); SetClientSize(size); SetMinClientSize(size); -} - -// サイズ変更イベント -void -WXSoftKeyPanel::OnSize(wxSizeEvent& event) -{ - // Mac ではウィンドウ作成時に 0 以下の値が来ることがある - // GTK では 1 で来ることがある - const wxSize& size = event.GetSize(); - if (size.x <= 1 || size.y <= 1) { - return; - } // ビットマップ作成 bitmap.Create(size.x, size.y); @@ -564,8 +553,6 @@ WXLunaSoftKeyPanel::WXLunaSoftKeyPanel(w .LED = { UD_RED }, }; } - - DoSize(); } // デストラクタ @@ -752,8 +739,6 @@ WXX68kSoftKeyPanel::WXX68kSoftKeyPanel(w .Border = *wxBLACK, .LED = { UD_RED, UD_YELLOW_GREEN }, }; - - DoSize(); } // デストラクタ @@ -803,7 +788,7 @@ WXX68kSoftKeyPanel::DrawLED(wxDC& dc, co WXX68kSoftKeyPanel::keydata { // +- 0以上なら LED 番号 // X Y W H C L KeyCode 通常 SHIFT - { 2, L0, 10, H, 0,-1, KC_BREAK, { "BRK" } }, + { 2, L0, 10, H, 0,-1, KC_BREAK, { "\x4\x5\x6\x7" } }, { 15, L0, 10, H, 0,-1, KC_COPY, { "COPY" } }, { 29, LF, 12, 6, 0,-1, KC_F1, { "F1" } }, { 41, LF, 12, 6, 0,-1, KC_F2, { "F2" } }, @@ -920,7 +905,7 @@ WXX68kSoftKeyPanel::keydata { { 193, L4, 10, H, 0,-1, KC_PAD_1, { "1" } }, { 203, L4, 10, H, 0,-1, KC_PAD_2, { "2" } }, { 213, L4, 10, H, 0,-1, KC_PAD_3, { "3" } }, - { 223, L4, 10, HT,0,-1, KC_PAD_enter, { "ENT" } }, + { 223, L4, 10, HT,0,-1, KC_PAD_enter, { "\xb\xc\xd\xe" } }, { 193, L5, 10, H, 0,-1, KC_PAD_0, { "0" } }, { 203, L5, 10, H, 0,-1, KC_PAD_comma, { "," } }, { 213, L5, 10, H, 0,-1, KC_PAD_decimal, { "." } }, @@ -935,16 +920,20 @@ WXX68kSoftKeyPanel::keydata { // // コンストラクタ -WXSoftKeyWindow::WXSoftKeyWindow(wxWindow *parent, wxWindowID id, - vmtype_t vmtype) - : inherited(parent, id, _("Software Keyboard")) +WXSoftKeyWindow::WXSoftKeyWindow(wxWindow *parent, vmtype_t vmtype) + : inherited(parent, wxID_ANY, _("Software Keyboard")) { + wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL); + if (vmtype == VMTYPE_X68030) { panel = new WXX68kSoftKeyPanel(this); } else { panel = new WXLunaSoftKeyPanel(this); } + topsizer->Add(panel, 0, wxEXPAND); + + SetSizer(topsizer); // 大きさをそれに固定 Fit(); }