feat: add Button widget and use it to build a menu with mouse support on the home screen
This commit is contained in:
parent
45307e3636
commit
8f360c8f28
6 changed files with 206 additions and 65 deletions
|
@ -21,6 +21,7 @@ const Commands = command.Collection(cmds);
|
|||
a: std.mem.Allocator,
|
||||
plane: nc.Plane,
|
||||
widgets: *WidgetList,
|
||||
widgets_widget: Widget,
|
||||
floating_views: WidgetStack,
|
||||
commands: Commands = undefined,
|
||||
statusbar: *Widget,
|
||||
|
@ -46,6 +47,7 @@ pub fn create(a: std.mem.Allocator, n: nc.Plane) !Widget {
|
|||
.a = a,
|
||||
.plane = n,
|
||||
.widgets = undefined,
|
||||
.widgets_widget = undefined,
|
||||
.floating_views = WidgetStack.init(a),
|
||||
.statusbar = undefined,
|
||||
.location_history = try location_history.create(),
|
||||
|
@ -54,6 +56,7 @@ pub fn create(a: std.mem.Allocator, n: nc.Plane) !Widget {
|
|||
const w = Widget.to(self);
|
||||
const widgets = try WidgetList.createV(a, w, @typeName(Self), .dynamic);
|
||||
self.widgets = widgets;
|
||||
self.widgets_widget = widgets.widget();
|
||||
try widgets.add(try Widget.empty(a, n, .dynamic));
|
||||
self.statusbar = try widgets.addP(try @import("status/statusbar.zig").create(a, w));
|
||||
self.resize();
|
||||
|
@ -320,8 +323,8 @@ pub fn get_editor(self: *Self) ?*ed.Editor {
|
|||
return self.editor;
|
||||
}
|
||||
|
||||
pub fn walk(self: *Self, walk_ctx: *anyopaque, f: Widget.WalkFn) bool {
|
||||
return if (self.floating_views.walk(walk_ctx, f)) true else self.widgets.walk(walk_ctx, f);
|
||||
pub fn walk(self: *Self, ctx: *anyopaque, f: Widget.WalkFn, w: *Widget) bool {
|
||||
return self.floating_views.walk(ctx, f) or self.widgets.walk(ctx, f, &self.widgets_widget) or f(ctx, w);
|
||||
}
|
||||
|
||||
fn create_editor(self: *Self) tp.result {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue