34 lines
754 B
C++
34 lines
754 B
C++
|
#include "ScrollContainer.hpp"
|
||
|
#include "src/Styles.hpp"
|
||
|
#include <iostream>
|
||
|
#include <memory>
|
||
|
|
||
|
namespace Raven {
|
||
|
|
||
|
void ScrollContainer::on_layout() {
|
||
|
if (!m_target)
|
||
|
return;
|
||
|
|
||
|
m_target->rect().set_x(-m_scroll.x());
|
||
|
m_target->rect().set_y(-m_scroll.y());
|
||
|
}
|
||
|
|
||
|
std::shared_ptr<Widget> ScrollContainer::make_target() {
|
||
|
m_target = add<Raven::Widget>();
|
||
|
m_target->set_style(style());
|
||
|
m_target->rect().update();
|
||
|
|
||
|
return m_target;
|
||
|
}
|
||
|
|
||
|
void ScrollContainer::on_mouse_button(MouseButtonEvent &event) {
|
||
|
if (event.did_scroll_down()) {
|
||
|
set_scroll(Point(m_scroll.x(), m_scroll.y() + m_scroll_step));
|
||
|
} else if (event.did_scroll_up()) {
|
||
|
set_scroll(Point(m_scroll.x(), m_scroll.y() - m_scroll_step));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|