Skip to content

Commit 13eaf09

Browse files
authored
Replace generic paramaters with ScrollableWidget to reduce segfaults in examples, compiled with -prod (#598)
1 parent 4a153ae commit 13eaf09

File tree

1 file changed

+25
-57
lines changed

1 file changed

+25
-57
lines changed

src/interface_scrollable.v

+25-57
Original file line numberDiff line numberDiff line change
@@ -117,31 +117,21 @@ pub fn scrollview_add[T](mut w T) {
117117
// TODO: documentation
118118
pub fn scrollview_widget_set_orig_xy(w Widget, reset_offset bool) {
119119
if w is Stack {
120-
if has_scrollview(w) {
121-
scrollview_set_orig_xy(w, reset_offset)
122-
}
120+
scrollview_set_orig_xy(w, reset_offset)
123121
for child in w.children {
124122
scrollview_widget_set_orig_xy(child, reset_offset)
125123
}
126124
} else if w is CanvasLayout {
127-
if has_scrollview(w) {
128-
scrollview_set_orig_xy(w, reset_offset)
129-
}
125+
scrollview_set_orig_xy(w, reset_offset)
130126
for child in w.children {
131127
scrollview_widget_set_orig_xy(child, reset_offset)
132128
}
133129
} else if w is ListBox {
134-
if has_scrollview(w) {
135-
scrollview_set_orig_xy(w, reset_offset)
136-
}
130+
scrollview_set_orig_xy(w, reset_offset)
137131
} else if w is ChunkView {
138-
if has_scrollview(w) {
139-
scrollview_set_orig_xy(w, reset_offset)
140-
}
132+
scrollview_set_orig_xy(w, reset_offset)
141133
} else if w is TextBox {
142-
if has_scrollview(w) {
143-
scrollview_set_orig_xy(w, reset_offset)
144-
}
134+
scrollview_set_orig_xy(w, reset_offset)
145135
} else if w is Group {
146136
// if has_scrollview(w) {
147137
// scrollview_set_orig_xy(w)
@@ -150,9 +140,7 @@ pub fn scrollview_widget_set_orig_xy(w Widget, reset_offset bool) {
150140
scrollview_widget_set_orig_xy(child, reset_offset)
151141
}
152142
} else if w is BoxLayout {
153-
if has_scrollview(w) {
154-
scrollview_set_orig_xy(w, reset_offset)
155-
}
143+
scrollview_set_orig_xy(w, reset_offset)
156144
for child in w.children {
157145
scrollview_widget_set_orig_xy(child, reset_offset)
158146
}
@@ -207,7 +195,7 @@ fn has_parent_scrolling(w Widget) bool {
207195
}
208196

209197
// TODO: documentation
210-
pub fn scrollview_set_orig_xy[T](w &T, reset_offset bool) {
198+
pub fn scrollview_set_orig_xy(w &ScrollableWidget, reset_offset bool) {
211199
if has_scrollview(w) {
212200
mut sv := w.scrollview
213201
// rest values
@@ -234,32 +222,24 @@ pub fn scrollview_set_orig_xy[T](w &T, reset_offset bool) {
234222
// TODO: documentation
235223
pub fn scrollview_widget_save_offset(w Widget) {
236224
if w is Stack {
237-
if has_scrollview(w) {
238-
scrollview_save_offset(w)
239-
}
225+
scrollview_save_offset(w)
240226
for child in w.children {
241227
scrollview_widget_save_offset(child)
242228
}
243229
} else if w is CanvasLayout {
244-
if has_scrollview(w) {
245-
scrollview_save_offset(w)
246-
}
230+
scrollview_save_offset(w)
247231
for child in w.children {
248232
scrollview_widget_save_offset(child)
249233
}
250234
} else if w is ListBox {
251-
if has_scrollview(w) {
252-
scrollview_save_offset(w)
253-
}
235+
scrollview_save_offset(w)
254236
} else if w is TextBox {
255-
if has_scrollview(w) {
256-
scrollview_save_offset(w)
257-
}
237+
scrollview_save_offset(w)
258238
}
259239
}
260240

261241
// TODO: documentation
262-
pub fn scrollview_save_offset[T](w &T) {
242+
pub fn scrollview_save_offset(w &ScrollableWidget) {
263243
if has_scrollview(w) {
264244
mut sv := w.scrollview
265245
// Save prev values
@@ -271,32 +251,24 @@ pub fn scrollview_save_offset[T](w &T) {
271251
// TODO: documentation
272252
pub fn scrollview_widget_restore_offset(w Widget, orig bool) {
273253
if w is Stack {
274-
if has_scrollview(w) {
275-
scrollview_restore_offset(w, orig)
276-
}
254+
scrollview_restore_offset(w, orig)
277255
for child in w.children {
278256
scrollview_widget_restore_offset(child, orig)
279257
}
280258
} else if w is CanvasLayout {
281-
if has_scrollview(w) {
282-
scrollview_restore_offset(w, orig)
283-
}
259+
scrollview_restore_offset(w, orig)
284260
for child in w.children {
285261
scrollview_widget_restore_offset(child, orig)
286262
}
287263
} else if w is ListBox {
288-
if has_scrollview(w) {
289-
scrollview_restore_offset(w, orig)
290-
}
264+
scrollview_restore_offset(w, orig)
291265
} else if w is TextBox {
292-
if has_scrollview(w) {
293-
scrollview_restore_offset(w, orig)
294-
}
266+
scrollview_restore_offset(w, orig)
295267
}
296268
}
297269

298270
// TODO: documentation
299-
pub fn scrollview_restore_offset[T](w &T, orig bool) {
271+
pub fn scrollview_restore_offset(w &ScrollableWidget, orig bool) {
300272
if has_scrollview(w) {
301273
mut sv := w.scrollview
302274
sv.update_active()
@@ -320,17 +292,17 @@ pub fn scrollview_restore_offset[T](w &T, orig bool) {
320292
}
321293

322294
// TODO: documentation
323-
pub fn scrollview_delegate_parent_scrollview[T](mut w T) {
295+
pub fn scrollview_delegate_parent_scrollview(mut w Widget) {
324296
parent := w.parent
325-
if parent is Stack {
297+
if parent is Stack && mut w is ScrollableWidget {
326298
w.scrollview = parent.scrollview
327-
} else if parent is CanvasLayout {
299+
} else if parent is CanvasLayout && mut w is ScrollableWidget {
328300
w.scrollview = parent.scrollview
329301
}
330302
}
331303

332304
// TODO: documentation
333-
pub fn scrollview_update[T](w &T) {
305+
pub fn scrollview_update(w &ScrollableWidget) {
334306
if has_scrollview(w) {
335307
mut sv := w.scrollview
336308
sv.update()
@@ -340,17 +312,15 @@ pub fn scrollview_update[T](w &T) {
340312
// TODO: documentation
341313
pub fn scrollview_widget_update(w Widget) {
342314
if w is Stack {
343-
if has_scrollview(w) {
344-
scrollview_update(w)
345-
}
315+
scrollview_update(w)
346316
for child in w.children {
347317
scrollview_widget_update(child)
348318
}
349319
}
350320
}
351321

352322
// TODO: documentation
353-
pub fn scrollview_update_active[T](w &T) {
323+
pub fn scrollview_update_active(w &ScrollableWidget) {
354324
if has_scrollview(w) {
355325
mut sv := w.scrollview
356326
sv.update_active()
@@ -360,9 +330,7 @@ pub fn scrollview_update_active[T](w &T) {
360330
// TODO: documentation
361331
pub fn scrollview_widget_update_active(w Widget) {
362332
if w is Stack {
363-
if has_scrollview(w) {
364-
scrollview_update_active(w)
365-
}
333+
scrollview_update_active(w)
366334
for child in w.children {
367335
scrollview_widget_update_active(child)
368336
}
@@ -391,7 +359,7 @@ pub fn scrollview_draw_begin[T](mut w T, d DrawDevice) {
391359
}
392360

393361
// TODO: documentation
394-
pub fn scrollview_draw_end[T](w &T, d DrawDevice) {
362+
pub fn scrollview_draw_end(w &ScrollableWidget, d DrawDevice) {
395363
if has_scrollview(w) {
396364
sv := w.scrollview
397365
sv.draw_device(d)

0 commit comments

Comments
 (0)