core: surface sends search total/progress to apprt
parent
c20af77f98
commit
7320b234b4
|
|
@ -804,6 +804,14 @@ pub fn close(self: *Surface) void {
|
||||||
self.rt_surface.close(self.needsConfirmQuit());
|
self.rt_surface.close(self.needsConfirmQuit());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns a mailbox that can be used to send messages to this surface.
|
||||||
|
inline fn surfaceMailbox(self: *Surface) Mailbox {
|
||||||
|
return .{
|
||||||
|
.surface = self,
|
||||||
|
.app = .{ .rt_app = self.rt_app, .mailbox = &self.app.mailbox },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/// Forces the surface to render. This is useful for when the surface
|
/// Forces the surface to render. This is useful for when the surface
|
||||||
/// is in the middle of animation (such as a resize, etc.) or when
|
/// is in the middle of animation (such as a resize, etc.) or when
|
||||||
/// the render timer is managed manually by the apprt.
|
/// the render timer is managed manually by the apprt.
|
||||||
|
|
@ -1069,6 +1077,22 @@ pub fn handleMessage(self: *Surface, msg: Message) !void {
|
||||||
log.warn("apprt failed to notify command finish={}", .{err});
|
log.warn("apprt failed to notify command finish={}", .{err});
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
.search_total => |v| {
|
||||||
|
_ = try self.rt_app.performAction(
|
||||||
|
.{ .surface = self },
|
||||||
|
.search_total,
|
||||||
|
.{ .total = v },
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
.search_selected => |v| {
|
||||||
|
_ = try self.rt_app.performAction(
|
||||||
|
.{ .surface = self },
|
||||||
|
.search_selected,
|
||||||
|
.{ .selected = v },
|
||||||
|
);
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1378,17 +1402,36 @@ fn searchCallback_(
|
||||||
} },
|
} },
|
||||||
.forever,
|
.forever,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Send the selected index to the surface mailbox
|
||||||
|
_ = self.surfaceMailbox().push(
|
||||||
|
.{ .search_selected = sel.idx },
|
||||||
|
.forever,
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
// Reset our selected match
|
// Reset our selected match
|
||||||
_ = self.renderer_thread.mailbox.push(
|
_ = self.renderer_thread.mailbox.push(
|
||||||
.{ .search_selected_match = null },
|
.{ .search_selected_match = null },
|
||||||
.forever,
|
.forever,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Reset the selected index
|
||||||
|
_ = self.surfaceMailbox().push(
|
||||||
|
.{ .search_selected = null },
|
||||||
|
.forever,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
try self.renderer_thread.wakeup.notify();
|
try self.renderer_thread.wakeup.notify();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
.total_matches => |total| {
|
||||||
|
_ = self.surfaceMailbox().push(
|
||||||
|
.{ .search_total = total },
|
||||||
|
.forever,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
// When we quit, tell our renderer to reset any search state.
|
// When we quit, tell our renderer to reset any search state.
|
||||||
.quit => {
|
.quit => {
|
||||||
_ = self.renderer_thread.mailbox.push(
|
_ = self.renderer_thread.mailbox.push(
|
||||||
|
|
@ -1403,12 +1446,20 @@ fn searchCallback_(
|
||||||
.forever,
|
.forever,
|
||||||
);
|
);
|
||||||
try self.renderer_thread.wakeup.notify();
|
try self.renderer_thread.wakeup.notify();
|
||||||
|
|
||||||
|
// Reset search totals in the surface
|
||||||
|
_ = self.surfaceMailbox().push(
|
||||||
|
.{ .search_total = null },
|
||||||
|
.forever,
|
||||||
|
);
|
||||||
|
_ = self.surfaceMailbox().push(
|
||||||
|
.{ .search_selected = null },
|
||||||
|
.forever,
|
||||||
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
// Unhandled, so far.
|
// Unhandled, so far.
|
||||||
.total_matches,
|
.complete => {},
|
||||||
.complete,
|
|
||||||
=> {},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,12 @@ pub const Message = union(enum) {
|
||||||
/// The scrollbar state changed for the surface.
|
/// The scrollbar state changed for the surface.
|
||||||
scrollbar: terminal.Scrollbar,
|
scrollbar: terminal.Scrollbar,
|
||||||
|
|
||||||
|
/// Search progress update
|
||||||
|
search_total: ?usize,
|
||||||
|
|
||||||
|
/// Selected search index change
|
||||||
|
search_selected: ?usize,
|
||||||
|
|
||||||
pub const ReportTitleStyle = enum {
|
pub const ReportTitleStyle = enum {
|
||||||
csi_21_t,
|
csi_21_t,
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue