diff options
Diffstat (limited to 'src/gui/StaticPage.cpp')
-rw-r--r-- | src/gui/StaticPage.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/gui/StaticPage.cpp b/src/gui/StaticPage.cpp new file mode 100644 index 0000000..78fa497 --- /dev/null +++ b/src/gui/StaticPage.cpp @@ -0,0 +1,33 @@ +#include "../../include/gui/StaticPage.hpp" + +namespace gsr { + bool StaticPage::on_event(mgl::Event &event, mgl::Window &window, mgl::vec2f offset) { + const mgl::vec2f draw_pos = position + offset; + offset = draw_pos; + + // Process widgets by visibility (backwards) + for(auto it = widgets.rbegin(), end = widgets.rend(); it != end; ++it) { + if(!(*it)->on_event(event, window, offset)) + return false; + } + + return true; + } + + void StaticPage::draw(mgl::Window &window, mgl::vec2f offset) { + const mgl::vec2f draw_pos = position + offset; + offset = draw_pos; + + for(auto &widget : widgets) { + if(widget->move_to_top) { + widget->move_to_top = false; + std::swap(widget, widgets.back()); + } + widget->draw(window, offset); + } + + for(auto &widget : widgets) { + widget->draw(window, offset); + } + } +}
\ No newline at end of file |