--- nono/wx/wxscrollbar.h 2026/04/29 17:05:16 1.1.1.2 +++ nono/wx/wxscrollbar.h 2026/04/29 17:05:19 1.1.1.3 @@ -10,26 +10,31 @@ #pragma once -#include "wxbitmappanel.h" +#include "wxtextpanel.h" wxDECLARE_EVENT(NONO_EVT_SCROLL, wxScrollEvent); -class WXScrollBar : public WXBitmapPanel +class WXScrollBar : public WXTextPanel { - using inherited = WXBitmapPanel; + using inherited = WXTextPanel; public: WXScrollBar(wxWindow *parent, wxWindowID id, long style); ~WXScrollBar() override; + void FontChanged() override; + void SetScrollParam(int pos_, int thumbsize_, int range_, int pagesize_); - void SetThumbPosition(int pos_); + bool SetThumbPosition(int pos_); int GetThumbPosition() const { return thumbpos; } int GetThumbSize() const { return thumbsize; } int GetRange() const { return range; } + // コントロールの主方向(スクロール方向)の最小ピクセル数 + int GetMinLength() const; + void Draw() override; private: @@ -37,9 +42,6 @@ class WXScrollBar : public WXBitmapPanel void OnMouse(wxMouseEvent& event); void OnTimer(wxTimerEvent& event); - // つまみの位置を計算して再描画 - void RefreshThumb(); - // つまみの位置を変更する (内部用) void MoveThumb(int pos_); @@ -49,6 +51,7 @@ class WXScrollBar : public WXBitmapPanel int thumbpos {}; // つまみの上(左)位置 int thumbsize {}; // つまみのサイズ + int thumbmin {}; // つまみの最小サイズ int range {}; // スクロール領域の高さ(幅) int pagesize {}; // ページアップ、ダウンの移動量