@@ -33,6 +33,10 @@ struct te_world_inspector {
3333 // NULL if not set yet.
3434 te_world * game_world ;
3535
36+ // Widgets for changing @ref is_3dobj_mode_selected.
37+ te_button_widget * button_3dobj ;
38+ te_button_widget * button_2dobj ;
39+
3640 // Valid while spawned, buttons that fill all available space (moved outside of the viewport if should not be visible).
3741 // Number of items in this array is @ref item_buttons_count.
3842 te_button_widget * * item_buttons ;
@@ -242,23 +246,30 @@ rebuild_item_list(te_world_inspector* inspector) {
242246static void
243247refresh_item_names (te_world_inspector * inspector ) {
244248 const float hpadding = theme_get_horizontal_padding () / theme_get_left_panel_width ();
249+ const float button_width = 1.0f - hpadding * 2.0f ;
250+ const float indent_size = hpadding ;
245251
246252 unsigned int button_idx = 0 ;
247253 for (unsigned int item_idx = inspector -> current_page * inspector -> item_buttons_count ;
248254 button_idx < inspector -> item_buttons_count && item_idx < inspector -> item_list_count ;
249255 button_idx ++ , item_idx ++ ) {
250256 te_button_widget * button = inspector -> item_buttons [button_idx ];
257+ te_world_item_info * info = & inspector -> item_list [item_idx ];
251258
252- // Fix pos of the button (in case it was hidden previously).
259+ // Fix pos of the button (in case it was hidden previously or had other indentation ).
253260 {
254261 te_widget * widget = button_widget_get_widget (button );
255262
256263 vec2 pos ;
257264 widget_get_relative_position (widget , pos );
258- pos [0 ] = hpadding ;
265+ pos [0 ] = hpadding + indent_size * ( float ) info -> indent ;
259266
260- widget_set_relative_position (
261- button_widget_get_widget (inspector -> item_buttons [button_idx ]), pos );
267+ vec2 size ;
268+ widget_get_relative_size (widget , size );
269+ size [0 ] = button_width - indent_size * (float )info -> indent ;
270+
271+ widget_set_relative_position (widget , pos );
272+ widget_set_relative_size (widget , size );
262273 }
263274
264275 unsigned int child_count ;
@@ -274,7 +285,6 @@ refresh_item_names(te_world_inspector* inspector) {
274285 break ;
275286 }
276287
277- te_world_item_info * info = & inspector -> item_list [item_idx ];
278288 const char * name = NULL ;
279289 switch (info -> type ) {
280290 case (TE_WIT_MODEL ): {
@@ -368,13 +378,27 @@ on_button_3dobj_clicked(te_button_widget* button) {
368378 te_world_inspector * inspector = widget_get_custom_ptr (button_widget_get_widget (button ));
369379 inspector -> is_3dobj_mode_selected = true;
370380 world_inspector_rebuild_list (inspector , inspector -> game_world );
381+
382+ vec4 color ;
383+ theme_get_accent_color (color );
384+ button_widget_set_color (button , color );
385+
386+ theme_get_button_color (color );
387+ button_widget_set_color (inspector -> button_2dobj , color );
371388}
372389
373390static void
374391on_button_2dobj_clicked (te_button_widget * button ) {
375392 te_world_inspector * inspector = widget_get_custom_ptr (button_widget_get_widget (button ));
376393 inspector -> is_3dobj_mode_selected = false;
377394 world_inspector_rebuild_list (inspector , inspector -> game_world );
395+
396+ vec4 color ;
397+ theme_get_accent_color (color );
398+ button_widget_set_color (button , color );
399+
400+ theme_get_button_color (color );
401+ button_widget_set_color (inspector -> button_3dobj , color );
378402}
379403
380404void
@@ -425,6 +449,7 @@ world_inspector_add(te_world_inspector* inspector, te_widget* left_panel) {
425449 // "3D objects" button ------------------
426450
427451 te_button_widget * button_3dobj = button_widget_create ();
452+ inspector -> button_3dobj = button_3dobj ;
428453 {
429454 te_widget * widget = button_widget_get_widget (button_3dobj );
430455 widget_set_custom_ptr (widget , inspector );
@@ -452,6 +477,7 @@ world_inspector_add(te_world_inspector* inspector, te_widget* left_panel) {
452477 // "2D objects" button ------------------
453478
454479 te_button_widget * button_2dobj = button_widget_create ();
480+ inspector -> button_2dobj = button_2dobj ;
455481 {
456482 te_widget * widget = button_widget_get_widget (button_2dobj );
457483 widget_set_custom_ptr (widget , inspector );
0 commit comments