diff options
Diffstat (limited to 'src/components/Scrollbar.cpp')
| -rw-r--r-- | src/components/Scrollbar.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/components/Scrollbar.cpp b/src/components/Scrollbar.cpp index ac713e9..730d2ec 100644 --- a/src/components/Scrollbar.cpp +++ b/src/components/Scrollbar.cpp @@ -16,6 +16,8 @@ Scrollbar::Scrollbar(Status *s, bool IsHorizontal) : Component(s) { DragX = 0; DragY = 0; + CanvasWidth = 0; + CanvasHeight = 0; Trigger = false; } @@ -35,6 +37,15 @@ void Scrollbar::Refresh() { bar.width = bg.width; bar.height = bg.height; + // Check if resize, in this case, reset everything (avoid bugs). + // Not that this will be executed during first draw also but it is fine: + if((CanvasWidth != status->CanvasWidth) || (CanvasWidth != status->CanvasWidth)){ + status->ScrollX=0; + status->ScrollY=0; + bar.x=bg.x; + bar.y=bg.y; + } + // Compute move table canvas double MTCanvasHeight = status->CanvasHeight - status->ScrollbarWidth; double MTCanvasWidth = status->CanvasWidth - status->ScrollbarWidth; @@ -107,6 +118,9 @@ void Scrollbar::Refresh() { elements.clear(); elements.push_back(bg); elements.push_back(bar); + // Update cache: + CanvasWidth = status->CanvasWidth; + CanvasHeight = status->CanvasHeight; } void Scrollbar::Focus(double XorY){ |
