feat: add support for resize hooks on WidgetLists
This commit is contained in:
		
							parent
							
								
									e0c78a975e
								
							
						
					
					
						commit
						1489a96013
					
				
					 1 changed files with 10 additions and 4 deletions
				
			
		| 
						 | 
					@ -24,6 +24,8 @@ widgets: ArrayList(WidgetState),
 | 
				
			||||||
layout: Layout,
 | 
					layout: Layout,
 | 
				
			||||||
direction: Direction,
 | 
					direction: Direction,
 | 
				
			||||||
box: ?Widget.Box = null,
 | 
					box: ?Widget.Box = null,
 | 
				
			||||||
 | 
					on_resize: *const fn (ctx: ?*anyopaque, self: *Self, pos_: Widget.Box) void = on_resize_default,
 | 
				
			||||||
 | 
					on_resize_ctx: ?*anyopaque = null,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn createH(a: Allocator, parent: Widget, name: [:0]const u8, layout_: Layout) !*Self {
 | 
					pub fn createH(a: Allocator, parent: Widget, name: [:0]const u8, layout_: Layout) !*Self {
 | 
				
			||||||
    const self: *Self = try a.create(Self);
 | 
					    const self: *Self = try a.create(Self);
 | 
				
			||||||
| 
						 | 
					@ -166,14 +168,18 @@ fn get_loc_b(self: *Self, pos: *Widget.Box) *usize {
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn resize(self: *Self, pos: Widget.Box) void {
 | 
					 | 
				
			||||||
    return self.handle_resize(pos);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
fn refresh_layout(self: *Self) void {
 | 
					fn refresh_layout(self: *Self) void {
 | 
				
			||||||
    return if (self.box) |box| self.handle_resize(box);
 | 
					    return if (self.box) |box| self.handle_resize(box);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub fn resize(self: *Self, pos: Widget.Box) void {
 | 
				
			||||||
 | 
					    return self.on_resize(self.on_resize_ctx, self, pos);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn on_resize_default(_: ?*anyopaque, self: *Self, pos: Widget.Box) void {
 | 
				
			||||||
 | 
					    self.handle_resize(pos);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn handle_resize(self: *Self, pos_: Widget.Box) void {
 | 
					pub fn handle_resize(self: *Self, pos_: Widget.Box) void {
 | 
				
			||||||
    self.box = pos_;
 | 
					    self.box = pos_;
 | 
				
			||||||
    var pos = pos_;
 | 
					    var pos = pos_;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue