--- nono/wx/wxdipswwindow.cpp 2026/04/29 17:05:16 1.1 +++ nono/wx/wxdipswwindow.cpp 2026/04/29 17:05:19 1.1.1.2 @@ -71,10 +71,6 @@ WXDipswWindow::WXDipswWindow(wxWindow *p for (int i = 0; i < ndipsw; i++) { auto *ctl = new WXScrollBar(this, ID_DIPSW(i), wxSB_VERTICAL); ctl->SetScrollParam(0, 1, 2, 1); - auto sz = ctl->GetClientSize(); - sz.y = sz.x * 5 / 3; // ちょっと伸ばす - ctl->SetClientSize(sz.x, sz.y); - ctl->SetMinClientSize(sz); swctl.push_back(ctl); // スクロールイベントをこっちに接続 @@ -82,7 +78,6 @@ WXDipswWindow::WXDipswWindow(wxWindow *p wxScrollEventHandler(WXDipswWindow::OnScroll), NULL, this); } - // DIPSW ボックス for (int n = 0; n < ndipsw / 8; n++) { if (n > 0) { @@ -107,8 +102,8 @@ WXDipswWindow::WXDipswWindow(wxWindow *p auto *vbox = new wxBoxSizer(wxVERTICAL); vbox->AddSpacer(3); vbox->Add(new wxStaticText(this, wxID_ANY, - string_format("%d", i + 1))); - vbox->Add(swctl[n * 8 + i]); + string_format("%d", i + 1)), 0, wxALIGN_CENTER_HORIZONTAL); + vbox->Add(swctl[n * 8 + i], 0, wxALIGN_CENTER_HORIZONTAL); vbox->AddSpacer(3); swbox->Add(vbox, 1, wxALIGN_CENTER); @@ -118,6 +113,7 @@ WXDipswWindow::WXDipswWindow(wxWindow *p } SetSizer(topsizer); + FontChanged(); DoSize(); // 現在値を反映 @@ -132,6 +128,25 @@ WXDipswWindow::~WXDipswWindow() { } +// フォントサイズ変更 +void +WXDipswWindow::FontChanged() +{ + // 子コントロールに先に反映させる + inherited::FontChanged(); + + // スクロールバーの幅はフォントサイズで変わるので、 + // 高さをそれに連動させる。 + wxSize size = swctl[0]->GetClientSize(); + size.y = size.x * 5 / 3; + for (auto *ctl : swctl) { + ctl->SetClientSize(size); + ctl->SetMinClientSize(size); + } + + DoSize(); +} + // スクロール位置変更通知 void WXDipswWindow::OnScroll(wxScrollEvent& event)