commit - 0d2b1235479134adf59940ca6d8dd58de7ccfbd1
commit + 7144e44e93242badf2c30a61c79df6f21da288f4
blob - 92b62cc4386dc959713fd0ad0c418d2559a798e7
blob + 01654ac78cf8e589bbdc1b912be3fed650952b4b
--- river/LayerSurface.zig
+++ river/LayerSurface.zig
wlr_xdg_popup,
layer_surface.popup_tree,
layer_surface.popup_tree,
+ null,
) catch {
wlr_xdg_popup.resource.postNoMemory();
return;
blob - 3467210cb2acb56c94accfba034e043d232dc623
blob + 44982e6b538a6e2d9965316c79bdfee1079f15e5
--- river/XdgPopup.zig
+++ river/XdgPopup.zig
tree: *wlr.SceneTree,
+image_capture_tree: ?*wlr.SceneTree,
+
destroy: wl.Listener(void) = wl.Listener(void).init(handleDestroy),
commit: wl.Listener(*wlr.Surface) = wl.Listener(*wlr.Surface).init(handleCommit),
new_popup: wl.Listener(*wlr.XdgPopup) = wl.Listener(*wlr.XdgPopup).init(handleNewPopup),
wlr_xdg_popup: *wlr.XdgPopup,
root: *wlr.SceneTree,
parent: *wlr.SceneTree,
+ image_capture_parent: ?*wlr.SceneTree,
) error{OutOfMemory}!void {
const xdg_popup = try util.gpa.create(XdgPopup);
errdefer util.gpa.destroy(xdg_popup);
+ const image_capture_tree = if (image_capture_parent) |p|
+ try p.createSceneXdgSurface(wlr_xdg_popup.base)
+ else
+ null;
+
xdg_popup.* = .{
.wlr_xdg_popup = wlr_xdg_popup,
.root = root,
.tree = try parent.createSceneXdgSurface(wlr_xdg_popup.base),
+ .image_capture_tree = image_capture_tree,
};
wlr_xdg_popup.events.destroy.add(&xdg_popup.destroy);
wlr_xdg_popup,
xdg_popup.root,
xdg_popup.tree,
+ xdg_popup.image_capture_tree,
) catch {
wlr_xdg_popup.resource.postNoMemory();
return;
blob - 02c0537e15b1c24b9cf313a3919061945d9fffcf
blob + 340671a53456e064a3433b1551dd77144f7eafdb
--- river/XdgToplevel.zig
+++ river/XdgToplevel.zig
fn handleNewPopup(listener: *wl.Listener(*wlr.XdgPopup), wlr_xdg_popup: *wlr.XdgPopup) void {
const toplevel: *XdgToplevel = @fieldParentPtr("new_popup", listener);
- XdgPopup.create(wlr_xdg_popup, toplevel.view.popup_tree, toplevel.view.popup_tree) catch {
+ XdgPopup.create(
+ wlr_xdg_popup,
+ toplevel.view.popup_tree,
+ toplevel.view.popup_tree,
+ &toplevel.view.image_capture_scene.tree,
+ ) catch {
wlr_xdg_popup.resource.postNoMemory();
return;
};