* Copyright 2006, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Ingo Weinhold <bonefish@cs.tu-berlin.de>
*/
#include "Scroller.h"
#include <stdio.h>
#include <Point.h>
#include <Rect.h>
#include "Scrollable.h"
Scroller::Scroller()
: fScrollTarget(NULL),
fScrollingEnabled(true)
{
}
Scroller::~Scroller()
{
}
void
Scroller::SetScrollTarget(Scrollable* target)
{
Scrollable* oldTarget = fScrollTarget;
if (oldTarget != target) {
fScrollTarget = NULL;
if (oldTarget && oldTarget->ScrollSource() == this)
oldTarget->SetScrollSource(NULL);
fScrollTarget = target;
if (target && target->ScrollSource() != this)
target->SetScrollSource(this);
ScrollTargetChanged(oldTarget, target);
}
}
Scrollable*
Scroller::ScrollTarget() const
{
return fScrollTarget;
}
void
Scroller::SetDataRect(BRect dataRect)
{
if (fScrollTarget)
fScrollTarget->SetDataRect(dataRect);
}
BRect
Scroller::DataRect() const
{
if (fScrollTarget)
return fScrollTarget->DataRect();
return BRect();
}
void
Scroller::SetScrollOffset(BPoint offset)
{
if (fScrollTarget)
fScrollTarget->SetScrollOffset(offset);
}
BPoint
Scroller::ScrollOffset() const
{
if (fScrollTarget)
return fScrollTarget->ScrollOffset();
return BPoint(0.0, 0.0);
}
void
Scroller::SetVisibleSize(float width, float height)
{
if (fScrollTarget)
fScrollTarget->SetVisibleSize(width, height);
}
BRect
Scroller::VisibleBounds() const
{
if (fScrollTarget)
return fScrollTarget->VisibleBounds();
return BRect();
}
BRect
Scroller::VisibleRect() const
{
if (fScrollTarget)
return fScrollTarget->VisibleRect();
return BRect();
}
void
Scroller::SetScrollingEnabled(bool enabled)
{
fScrollingEnabled = enabled;
}
bool
Scroller::IsScrolling() const
{
return false;
}
void
Scroller::DataRectChanged(BRect , BRect )
{
}
void
Scroller::ScrollOffsetChanged(BPoint , BPoint )
{
}
void
Scroller::VisibleSizeChanged(float , float ,
float , float )
{
}
void
Scroller::ScrollTargetChanged(Scrollable* ,
Scrollable* )
{
}