From 40911121db4635feb817b19a7baff609b5f3298b Mon Sep 17 00:00:00 2001 From: mike-ward <mike@mike-ward.net> Date: Sun, 2 Mar 2025 10:31:59 -0600 Subject: [PATCH] Replace generic paramaters with ScrollableWidget to reduce seg faults using -prod --- src/interface_scrollable.v | 82 ++++++++++++-------------------------- 1 file changed, 25 insertions(+), 57 deletions(-) diff --git a/src/interface_scrollable.v b/src/interface_scrollable.v index fe3c57fa..662624ab 100644 --- a/src/interface_scrollable.v +++ b/src/interface_scrollable.v @@ -117,31 +117,21 @@ pub fn scrollview_add[T](mut w T) { // TODO: documentation pub fn scrollview_widget_set_orig_xy(w Widget, reset_offset bool) { if w is Stack { - if has_scrollview(w) { - scrollview_set_orig_xy(w, reset_offset) - } + scrollview_set_orig_xy(w, reset_offset) for child in w.children { scrollview_widget_set_orig_xy(child, reset_offset) } } else if w is CanvasLayout { - if has_scrollview(w) { - scrollview_set_orig_xy(w, reset_offset) - } + scrollview_set_orig_xy(w, reset_offset) for child in w.children { scrollview_widget_set_orig_xy(child, reset_offset) } } else if w is ListBox { - if has_scrollview(w) { - scrollview_set_orig_xy(w, reset_offset) - } + scrollview_set_orig_xy(w, reset_offset) } else if w is ChunkView { - if has_scrollview(w) { - scrollview_set_orig_xy(w, reset_offset) - } + scrollview_set_orig_xy(w, reset_offset) } else if w is TextBox { - if has_scrollview(w) { - scrollview_set_orig_xy(w, reset_offset) - } + scrollview_set_orig_xy(w, reset_offset) } else if w is Group { // if has_scrollview(w) { // scrollview_set_orig_xy(w) @@ -150,9 +140,7 @@ pub fn scrollview_widget_set_orig_xy(w Widget, reset_offset bool) { scrollview_widget_set_orig_xy(child, reset_offset) } } else if w is BoxLayout { - if has_scrollview(w) { - scrollview_set_orig_xy(w, reset_offset) - } + scrollview_set_orig_xy(w, reset_offset) for child in w.children { scrollview_widget_set_orig_xy(child, reset_offset) } @@ -207,7 +195,7 @@ fn has_parent_scrolling(w Widget) bool { } // TODO: documentation -pub fn scrollview_set_orig_xy[T](w &T, reset_offset bool) { +pub fn scrollview_set_orig_xy(w &ScrollableWidget, reset_offset bool) { if has_scrollview(w) { mut sv := w.scrollview // rest values @@ -234,32 +222,24 @@ pub fn scrollview_set_orig_xy[T](w &T, reset_offset bool) { // TODO: documentation pub fn scrollview_widget_save_offset(w Widget) { if w is Stack { - if has_scrollview(w) { - scrollview_save_offset(w) - } + scrollview_save_offset(w) for child in w.children { scrollview_widget_save_offset(child) } } else if w is CanvasLayout { - if has_scrollview(w) { - scrollview_save_offset(w) - } + scrollview_save_offset(w) for child in w.children { scrollview_widget_save_offset(child) } } else if w is ListBox { - if has_scrollview(w) { - scrollview_save_offset(w) - } + scrollview_save_offset(w) } else if w is TextBox { - if has_scrollview(w) { - scrollview_save_offset(w) - } + scrollview_save_offset(w) } } // TODO: documentation -pub fn scrollview_save_offset[T](w &T) { +pub fn scrollview_save_offset(w &ScrollableWidget) { if has_scrollview(w) { mut sv := w.scrollview // Save prev values @@ -271,32 +251,24 @@ pub fn scrollview_save_offset[T](w &T) { // TODO: documentation pub fn scrollview_widget_restore_offset(w Widget, orig bool) { if w is Stack { - if has_scrollview(w) { - scrollview_restore_offset(w, orig) - } + scrollview_restore_offset(w, orig) for child in w.children { scrollview_widget_restore_offset(child, orig) } } else if w is CanvasLayout { - if has_scrollview(w) { - scrollview_restore_offset(w, orig) - } + scrollview_restore_offset(w, orig) for child in w.children { scrollview_widget_restore_offset(child, orig) } } else if w is ListBox { - if has_scrollview(w) { - scrollview_restore_offset(w, orig) - } + scrollview_restore_offset(w, orig) } else if w is TextBox { - if has_scrollview(w) { - scrollview_restore_offset(w, orig) - } + scrollview_restore_offset(w, orig) } } // TODO: documentation -pub fn scrollview_restore_offset[T](w &T, orig bool) { +pub fn scrollview_restore_offset(w &ScrollableWidget, orig bool) { if has_scrollview(w) { mut sv := w.scrollview sv.update_active() @@ -320,17 +292,17 @@ pub fn scrollview_restore_offset[T](w &T, orig bool) { } // TODO: documentation -pub fn scrollview_delegate_parent_scrollview[T](mut w T) { +pub fn scrollview_delegate_parent_scrollview(mut w Widget) { parent := w.parent - if parent is Stack { + if parent is Stack && mut w is ScrollableWidget { w.scrollview = parent.scrollview - } else if parent is CanvasLayout { + } else if parent is CanvasLayout && mut w is ScrollableWidget { w.scrollview = parent.scrollview } } // TODO: documentation -pub fn scrollview_update[T](w &T) { +pub fn scrollview_update(w &ScrollableWidget) { if has_scrollview(w) { mut sv := w.scrollview sv.update() @@ -340,9 +312,7 @@ pub fn scrollview_update[T](w &T) { // TODO: documentation pub fn scrollview_widget_update(w Widget) { if w is Stack { - if has_scrollview(w) { - scrollview_update(w) - } + scrollview_update(w) for child in w.children { scrollview_widget_update(child) } @@ -350,7 +320,7 @@ pub fn scrollview_widget_update(w Widget) { } // TODO: documentation -pub fn scrollview_update_active[T](w &T) { +pub fn scrollview_update_active(w &ScrollableWidget) { if has_scrollview(w) { mut sv := w.scrollview sv.update_active() @@ -360,9 +330,7 @@ pub fn scrollview_update_active[T](w &T) { // TODO: documentation pub fn scrollview_widget_update_active(w Widget) { if w is Stack { - if has_scrollview(w) { - scrollview_update_active(w) - } + scrollview_update_active(w) for child in w.children { scrollview_widget_update_active(child) } @@ -391,7 +359,7 @@ pub fn scrollview_draw_begin[T](mut w T, d DrawDevice) { } // TODO: documentation -pub fn scrollview_draw_end[T](w &T, d DrawDevice) { +pub fn scrollview_draw_end(w &ScrollableWidget, d DrawDevice) { if has_scrollview(w) { sv := w.scrollview sv.draw_device(d)