diff --git a/src/scrollable-node.c b/src/scrollable-node.c index b3f9c56..b7c83fc 100644 --- a/src/scrollable-node.c +++ b/src/scrollable-node.c @@ -1,5 +1,6 @@ #include "scrollable-node.h" #include "node.h" +#include "window.h" #include #include #include @@ -42,7 +43,9 @@ int scrollable_handle(UINode *node, enum UIEvent ev, size_t d, void *p) if (n->y_scroll > scroll_end) { n->y_scroll = scroll_end; } - node_request_relayout(n->node.parent); + target->rect.x = n->x_scroll ? -n->x_scroll : 0; + target->rect.y = n->y_scroll ? -n->y_scroll : 0; + window_invalidate_node(node->window, node); break; } case UI_EVENT_RELAYOUT: { @@ -60,8 +63,6 @@ int scrollable_handle(UINode *node, enum UIEvent ev, size_t d, void *p) } else if (target->height_policy == UI_SIZE_POLICY_GROW) { target->rect.h = node->parent->rect.h; } - target->rect.x = n->x_scroll ? -n->x_scroll : 0; - target->rect.y = n->y_scroll ? -n->y_scroll : 0; node_dispatch(target, UI_EVENT_RELAYOUT, 0, NULL); break; }