mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-19 14:16:46 -06:00
56 lines
1 KiB
C++
56 lines
1 KiB
C++
#ifndef _AutoScroller_AutoScroller_hpp_
|
|
#define _AutoScroller_AutoScroller_hpp_
|
|
|
|
#include "AutoScroller.h"
|
|
|
|
template<class C>
|
|
AutoScroller<C>::AutoScroller()
|
|
{
|
|
EnableScroll();
|
|
scroll.WhenScroll = THISBACK(OnScroll);
|
|
Add(pane.TopPos(0).LeftPos(0));
|
|
SetPaneSize(GetSize());
|
|
}
|
|
|
|
template<class C>
|
|
void AutoScroller<C>::OnScroll()
|
|
{
|
|
Point tl(-scroll.GetX(), -scroll.GetY());
|
|
Rect r = pane.GetRect();
|
|
Rect _r(tl, r.GetSize());
|
|
pane.SetRect(_r);
|
|
}
|
|
|
|
template<class C>
|
|
void AutoScroller<C>::Layout()
|
|
{
|
|
Size sz = GetSize();
|
|
if(sz != scroll.GetPage())
|
|
scroll.SetPage(sz);
|
|
}
|
|
|
|
template<class C>
|
|
void AutoScroller<C>::SetPaneSize(const Size & sz)
|
|
{
|
|
Ctrl::LogPos logp;
|
|
logp.x = ParentCtrl::PosLeft(0, sz.cx);
|
|
logp.y = ParentCtrl::PosTop(0, sz.cy);
|
|
pane.SetPos(logp);
|
|
scroll.SetTotal(sz);
|
|
}
|
|
|
|
template<class C>
|
|
void AutoScroller<C>::EnableScroll(bool b)
|
|
{
|
|
if(b)
|
|
AddFrame(scroll.AutoHide());
|
|
else
|
|
RemoveFrame(scroll);
|
|
scroll.x.Enable(b);
|
|
scroll.y.Enable(b);
|
|
return;
|
|
scroll.Show(b);
|
|
Layout();
|
|
}
|
|
|
|
#endif
|