jay-compositor 1.15.0

The Jay compositor
use crate::client::Client;
use crate::it::test_client::TestClient;
use crate::wire::WlSubsurfaceId;
use crate::wire::WlSurfaceId;
use std::rc::Rc;

pub struct TestSubsurface {
    pub id: WlSubsurfaceId,
    pub client: Rc<Client>,
}

impl TestSubsurface {
    pub fn set_position(&self, x: i32, y: i32) {
        self.client.send_wl_subsurface_set_position(self.id, x, y);
    }

    pub fn place_above(&self, surface: WlSurfaceId) {
        self.client.send_wl_subsurface_place_above(self.id, surface);
    }

    pub fn place_below(&self, surface: WlSurfaceId) {
        self.client.send_wl_subsurface_place_below(self.id, surface);
    }

    #[expect(unused)]
    pub fn set_sync(&self) {
        self.client.send_wl_subsurface_set_sync(self.id);
    }

    pub fn set_desync(&self) {
        self.client.send_wl_subsurface_set_desync(self.id);
    }
}

impl TestClient {
    pub fn get_subsurface(&self, surface: WlSurfaceId, parent: WlSurfaceId) -> Rc<TestSubsurface> {
        let id = self
            .client
            .send_wl_subcompositor_get_subsurface(surface, parent);
        Rc::new(TestSubsurface {
            id,
            client: self.client.clone(),
        })
    }
}