aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/Scrollbar.cpp14
-rw-r--r--src/components/Scrollbar.hpp2
2 files changed, 16 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){
diff --git a/src/components/Scrollbar.hpp b/src/components/Scrollbar.hpp
index fa49eca..c313c69 100644
--- a/src/components/Scrollbar.hpp
+++ b/src/components/Scrollbar.hpp
@@ -9,6 +9,8 @@ class Scrollbar : public Component {
Element bg,bar;
double DragY,DragX;
bool Trigger;
+ /// @brief Canvas size cache used to reset on resize
+ double CanvasWidth, CanvasHeight;
public:
Scrollbar(Status* s,bool IsHorizontal);
void Refresh();