apprt/gtk: hook up search-changed to start a search

pull/9756/head
Mitchell Hashimoto 2025-11-29 15:16:29 -08:00
parent 0d32e7d814
commit fc9b578ef4
No known key found for this signature in database
GPG Key ID: 523D5DC389D273BC
4 changed files with 29 additions and 0 deletions

View File

@ -60,6 +60,18 @@ pub const SearchOverlay = extern struct {
void,
);
};
/// Emitted when the search text changes (debounced).
pub const @"search-changed" = struct {
pub const name = "search-changed";
pub const connect = impl.connect;
const impl = gobject.ext.defineSignal(
name,
Self,
&.{?[*:0]const u8},
void,
);
};
};
const Private = struct {
@ -90,6 +102,11 @@ pub const SearchOverlay = extern struct {
signals.@"stop-search".impl.emit(self, null, .{}, null);
}
fn searchChanged(entry: *gtk.SearchEntry, self: *Self) callconv(.c) void {
const text = entry.as(gtk.Editable).getText();
signals.@"search-changed".impl.emit(self, null, .{text}, null);
}
//---------------------------------------------------------------
// Virtual methods
@ -144,6 +161,7 @@ pub const SearchOverlay = extern struct {
// Template Callbacks
class.bindTemplateCallback("stop_search", &stopSearch);
class.bindTemplateCallback("search_changed", &searchChanged);
// Properties
gobject.ext.registerProperties(class, &.{
@ -152,6 +170,7 @@ pub const SearchOverlay = extern struct {
// Signals
signals.@"stop-search".impl.register(.{});
signals.@"search-changed".impl.register(.{});
// Virtual methods
gobject.Object.virtual_methods.dispose.implement(class, &dispose);

View File

@ -3196,6 +3196,13 @@ pub const Surface = extern struct {
_ = self.private().gl_area.as(gtk.Widget).grabFocus();
}
fn searchChanged(_: *SearchOverlay, needle: ?[*:0]const u8, self: *Self) callconv(.c) void {
const surface = self.core() orelse return;
_ = surface.performBindingAction(.{ .search = std.mem.sliceTo(needle orelse "", 0) }) catch |err| {
log.warn("unable to perform search action err={}", .{err});
};
}
const C = Common(Self, Private);
pub const as = C.as;
pub const ref = C.ref;
@ -3269,6 +3276,7 @@ pub const Surface = extern struct {
class.bindTemplateCallback("should_border_be_shown", &closureShouldBorderBeShown);
class.bindTemplateCallback("should_unfocused_split_be_shown", &closureShouldUnfocusedSplitBeShown);
class.bindTemplateCallback("search_stop", &searchStop);
class.bindTemplateCallback("search_changed", &searchChanged);
// Properties
gobject.ext.registerProperties(class, &.{

View File

@ -22,6 +22,7 @@ template $GhosttySearchOverlay: Adw.Bin {
width-chars: 20;
hexpand: true;
stop-search => $stop_search();
search-changed => $search_changed();
}
Label match_label {

View File

@ -152,6 +152,7 @@ Overlay terminal_page {
halign: end;
valign: start;
stop-search => $search_stop();
search-changed => $search_changed();
}
[overlay]