libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
scrollarea.h
Go to the documentation of this file.
1
8#pragma once
9
10#include <promeki/namespace.h>
11#include <promeki/tui/widget.h>
12
13PROMEKI_NAMESPACE_BEGIN
14
22class TuiScrollArea : public TuiWidget {
23 PROMEKI_OBJECT(TuiScrollArea, TuiWidget)
24 public:
25 TuiScrollArea(ObjectBase *parent = nullptr);
26 ~TuiScrollArea() override;
27
28 void setContentWidget(TuiWidget *widget);
29 TuiWidget *contentWidget() const { return _contentWidget; }
30
31 int scrollX() const { return _scrollX; }
32 int scrollY() const { return _scrollY; }
33
34 void setScrollX(int val);
35 void setScrollY(int val);
36 void scrollTo(int x, int y);
37
38 Size2Di32 sizeHint() const override;
39
40 protected:
41 void paintEvent(PaintEvent *e) override;
42 void keyPressEvent(KeyEvent *e) override;
43 void resizeEvent(ResizeEvent *e) override;
44
45 private:
46 TuiWidget *_contentWidget = nullptr;
47 int _scrollX = 0;
48 int _scrollY = 0;
49
50 void clampScroll();
51};
52
53PROMEKI_NAMESPACE_END
Container that scrolls content larger than its viewport.
Definition scrollarea.h:22
TUI-specific widget base class.
Definition widget.h:33