1 #ifndef YSCROLLVIEW_H 2 #define YSCROLLVIEW_H 3 4 #include "ywindow.h" 5 #include "ypointer.h" 6 7 class YScrollBar; 8 class YScrollBarListener; 9 10 class YScrollable { 11 public: 12 virtual unsigned contentWidth() = 0; 13 virtual unsigned contentHeight() = 0; 14 protected: ~YScrollable()15 virtual ~YScrollable() {} 16 }; 17 18 class YScrollView: public YWindow { 19 public: 20 YScrollView(YWindow* aParent, YScrollable* scroll = nullptr); 21 22 void setView(YScrollable* l); 23 void setListener(YScrollBarListener* l); 24 getVerticalScrollBar()25 YScrollBar* getVerticalScrollBar() { return scrollVert; } getHorizontalScrollBar()26 YScrollBar* getHorizontalScrollBar() { return scrollHoriz; } getScrollable()27 YScrollable* getScrollable() { return scrollable; } 28 29 void layout(); 30 void configure(const YRect2& r) override ; paint(Graphics & g,const YRect & r)31 void paint(Graphics& g, const YRect& r) override { } repaint()32 void repaint() override { } 33 void handleExpose(const XExposeEvent& expose) override; 34 bool handleScrollKeys(const XKeyEvent& key); 35 36 protected: 37 void getGap(int& dx, int& dy); 38 39 private: 40 YScrollable* scrollable; 41 osmart<YScrollBar> scrollVert; 42 osmart<YScrollBar> scrollHoriz; 43 }; 44 45 #endif 46 47 // vim: set sw=4 ts=4 et: 48