2626
2727/* == Declarations ========================================================= */
2828
29- static bool _wlmtk_bordered_container_update_layout (
30- wlmtk_container_t * container_ptr );
29+ static void _wlmtk_bordered_element_layout (wlmtk_element_t * element_ptr );
3130
3231static wlmtk_rectangle_t * _wlmtk_bordered_create_border_rectangle (
3332 wlmtk_bordered_t * bordered_ptr );
@@ -38,9 +37,9 @@ static void _wlmtk_bordered_set_positions(wlmtk_bordered_t *bordered_ptr);
3837
3938/* == Data ================================================================= */
4039
41- /** Virtual method table: @ref wlmtk_container_t at @ref wlmtk_bordered_t. */
42- static const wlmtk_container_vmt_t bordered_container_vmt = {
43- .update_layout = _wlmtk_bordered_container_update_layout ,
40+ /** Virtual method table: @ref wlmtk_element_t at @ref wlmtk_bordered_t. */
41+ static const wlmtk_element_vmt_t bordered_element_vmt = {
42+ .layout = _wlmtk_bordered_element_layout ,
4443};
4544
4645/* == Exported methods ===================================================== */
@@ -55,8 +54,8 @@ bool wlmtk_bordered_init(wlmtk_bordered_t *bordered_ptr,
5554 if (!wlmtk_container_init (& bordered_ptr -> super_container )) {
5655 return false;
5756 }
58- bordered_ptr -> orig_super_container_vmt = wlmtk_container_extend (
59- & bordered_ptr -> super_container , & bordered_container_vmt );
57+ bordered_ptr -> orig_super_element_vmt = wlmtk_element_extend (
58+ wlmtk_bordered_element ( bordered_ptr ) , & bordered_element_vmt );
6059
6160 bordered_ptr -> element_ptr = element_ptr ;
6261 wlmtk_container_add_element (& bordered_ptr -> super_container ,
@@ -106,7 +105,11 @@ void wlmtk_bordered_set_style(wlmtk_bordered_t *bordered_ptr,
106105{
107106 bordered_ptr -> style = * style_ptr ;
108107
109- _wlmtk_bordered_container_update_layout (& bordered_ptr -> super_container );
108+ wlmtk_element_layout (wlmtk_bordered_element (bordered_ptr ));
109+ if (NULL != wlmtk_bordered_element (bordered_ptr )-> parent_container_ptr ) {
110+ wlmtk_container_invalidate_layout (
111+ wlmtk_bordered_element (bordered_ptr )-> parent_container_ptr );
112+ }
110113
111114 // Guard clause. Actually, if *any* of the rectangles was not created.
112115 if (NULL == bordered_ptr -> western_border_rectangle_ptr ) return ;
@@ -133,16 +136,14 @@ wlmtk_element_t *wlmtk_bordered_element(wlmtk_bordered_t *bordered_ptr)
133136/**
134137 * Updates the layout of the bordered element.
135138 *
136- * @param container_ptr
139+ * @param element_ptr
137140 */
138- bool _wlmtk_bordered_container_update_layout (
139- wlmtk_container_t * container_ptr )
141+ void _wlmtk_bordered_element_layout (wlmtk_element_t * element_ptr )
140142{
141143 wlmtk_bordered_t * bordered_ptr = BS_CONTAINER_OF (
142- container_ptr , wlmtk_bordered_t , super_container );
143-
144+ element_ptr , wlmtk_bordered_t , super_container . super_element );
145+ bordered_ptr -> orig_super_element_vmt . layout ( element_ptr );
144146 _wlmtk_bordered_set_positions (bordered_ptr );
145- return true;
146147}
147148
148149/* ------------------------------------------------------------------------- */
@@ -292,9 +293,8 @@ void test_init_fini(bs_test_t *test_ptr)
292293 0 , 2 , 2 , 20 );
293294
294295 // Update layout, test updated positions.
295- fe_ptr -> dimensions .width = 200 ;
296- fe_ptr -> dimensions .height = 120 ;
297- wlmtk_container_update_layout_and_pointer_focus (& bordered .super_container );
296+ wlmtk_fake_element_set_dimensions (fe_ptr , 200 , 120 );
297+ wlmtk_element_layout (wlmtk_bordered_element (& bordered ));
298298 test_rectangle_pos (
299299 test_ptr , bordered .northern_border_rectangle_ptr ,
300300 0 , 0 , 204 , 2 );
0 commit comments