libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
scrollarea.h
Go to the documentation of this file.
1
8#pragma once
9
11#include <promeki/tui/widget.h>
12
14
20class TuiScrollArea : public TuiWidget {
21 PROMEKI_OBJECT(TuiScrollArea, TuiWidget)
22 public:
24 ~TuiScrollArea() override;
25
26 void setContentWidget(TuiWidget *widget);
27 TuiWidget *contentWidget() const { return _contentWidget; }
28
29 int scrollX() const { return _scrollX; }
30 int scrollY() const { return _scrollY; }
31
32 void setScrollX(int val);
33 void setScrollY(int val);
34 void scrollTo(int x, int y);
35
36 Size2Di32 sizeHint() const override;
37
38 protected:
39 void paintEvent(TuiPaintEvent *e) override;
40 void keyEvent(KeyEvent *e) override;
41 void resizeEvent(TuiResizeEvent *e) override;
42
43 private:
44 TuiWidget *_contentWidget = nullptr;
45 int _scrollX = 0;
46 int _scrollY = 0;
47
48 void clampScroll();
49};
50
Event delivered when a key is pressed or released.
Definition keyevent.h:22
Dynamic array container wrapping std::vector.
Definition list.h:40
Base object for promeki.
Definition objectbase.h:129
ObjectBase * parent() const
Returns the parent object, if one. nullptr if none.
Definition objectbase.h:258
Event delivered when a TUI widget needs to repaint.
Definition widget.h:28
Event delivered when a TUI widget is resized.
Definition widget.h:37
Container that scrolls content larger than its viewport.
Definition scrollarea.h:20
void paintEvent(TuiPaintEvent *e) override
Called to paint the widget. Override in subclasses.
void keyEvent(KeyEvent *e) override
Called on keyboard input. Override in subclasses.
void resizeEvent(TuiResizeEvent *e) override
Called when the widget is resized. Override in subclasses.
Size2Di32 sizeHint() const override
Returns the preferred size. Override in subclasses.
Base class for all TUI widgets.
Definition widget.h:88
int x() const
Returns the X coordinate relative to parent.
Definition widget.h:107
int y() const
Returns the Y coordinate relative to parent.
Definition widget.h:110
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19