summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxVerevkin <maxxverrr@gmail.com>2023-03-25 17:57:28 +0200
committerMaxVerevkin <maxxverrr@gmail.com>2023-03-25 17:57:28 +0200
commit703c3972bf50d7ac8521c15ae6fec603e5e279b6 (patch)
treef5f45b2ca297c9fa31a6f45a0d25e2c87bd57704
parente8be49463a9748567453e6d007a808fc16b16ade (diff)
downloadi3bar-mango-703c3972bf50d7ac8521c15ae6fec603e5e279b6.tar.gz
update wayrs_utils
-rw-r--r--Cargo.lock4
-rw-r--r--Cargo.toml2
-rw-r--r--src/state.rs43
3 files changed, 23 insertions, 26 deletions
diff --git a/Cargo.lock b/Cargo.lock
index dd8552f..710c561 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -966,9 +966,9 @@ dependencies = [
[[package]]
name = "wayrs-utils"
-version = "0.3.0"
+version = "0.4.0-beta.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daa3c9ec2f3a343a2b8495c8e61dcee3672d7ee15ebbb60327f7e05a0cb29413"
+checksum = "6a2950db7610db7119bdb2b3ea5983dc01c2303e511e3a193959b5ed2d7f1854"
dependencies = [
"memmap2",
"shmemfdrs",
diff --git a/Cargo.toml b/Cargo.toml
index cc4e55c..41c0f11 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -16,7 +16,7 @@ memchr = "2"
thiserror = "1.0.38"
wayrs-client = { version = "0.4", features = ["tokio"] }
-wayrs-utils = { version = "0.3", features = ["cursor", "shm_alloc", "seats"] }
+wayrs-utils = { version = "0.4.0-beta.0", features = ["cursor", "shm_alloc", "seats"] }
wayrs-protocols = { version = "0.4", features = ["wlr-layer-shell-unstable-v1", "viewporter", "fractional-scale-v1"] }
[dependencies.tokio]
diff --git a/src/state.rs b/src/state.rs
index 02a9e80..2cead3d 100644
--- a/src/state.rs
+++ b/src/state.rs
@@ -7,7 +7,7 @@ use std::future::pending;
use wayrs_client::connection::Connection;
use wayrs_client::global::{Global, GlobalExt, Globals, GlobalsExt};
use wayrs_client::proxy::Proxy;
-use wayrs_utils::cursor::CursorTheme;
+use wayrs_utils::cursor::{CursorImage, CursorTheme, ThemedPointer};
use wayrs_utils::seats::{SeatHandler, Seats};
use wayrs_utils::shm_alloc::ShmAlloc;
@@ -29,13 +29,13 @@ pub struct State {
pub shared_state: SharedState,
- cursor_theme: Option<CursorTheme>,
+ default_cursor: Option<CursorImage>,
}
struct Pointer {
seat: WlSeat,
pointer: WlPointer,
- cursor_surface: WlSurface,
+ themed_pointer: ThemedPointer,
current_surface: Option<WlSurface>,
x: f64,
y: f64,
@@ -61,11 +61,11 @@ impl State {
let wl_shm = globals.bind(conn, 1..=1).expect("could not bind wl_shm");
- let mut cursor_theme = CursorTheme::new(None, None);
- let cursor_theme_ok = cursor_theme
- .ensure_cursor_is_loaded("default")
+ let cursor_theme = CursorTheme::new(None, None);
+ let default_cursor = cursor_theme
+ .get_image("default")
.map_err(|e| error = Err(e.into()))
- .is_ok();
+ .ok();
let mut this = Self {
wl_compositor: globals.bind(conn, 4..=5).unwrap(),
@@ -87,7 +87,7 @@ impl State {
wm_info_provider: wm_info_provider::bind_wayland(conn, globals, wm_info_cb),
},
- cursor_theme: cursor_theme_ok.then_some(cursor_theme),
+ default_cursor,
};
globals
@@ -233,10 +233,11 @@ impl SeatHandler for State {
fn pointer_added(&mut self, conn: &mut Connection<Self>, seat: WlSeat) {
assert!(seat.version() >= 5);
+ let pointer = seat.get_pointer_with_cb(conn, wl_pointer_cb);
self.pointers.push(Pointer {
seat,
- pointer: seat.get_pointer_with_cb(conn, wl_pointer_cb),
- cursor_surface: self.wl_compositor.create_surface(conn),
+ pointer,
+ themed_pointer: ThemedPointer::new(conn, pointer, self.wl_compositor),
current_surface: None,
x: 0.0,
y: 0.0,
@@ -250,7 +251,7 @@ impl SeatHandler for State {
let pointer_i = self.pointers.iter().position(|p| p.seat == seat).unwrap();
let pointer = self.pointers.swap_remove(pointer_i);
pointer.pointer.release(conn);
- pointer.cursor_surface.destroy(conn);
+ pointer.themed_pointer.destroy(conn);
}
}
@@ -406,18 +407,14 @@ fn wl_pointer_cb(
pointer.current_surface = Some(bar.surface);
pointer.x = args.surface_x.as_f64();
pointer.y = args.surface_y.as_f64();
- if let Some(cursor_theme) = &mut state.cursor_theme {
- cursor_theme
- .set_cursor(
- conn,
- &mut state.shared_state.shm,
- "default",
- bar.scale,
- args.serial,
- pointer.cursor_surface,
- pointer.pointer,
- )
- .unwrap();
+ if let Some(default_cursor) = &state.default_cursor {
+ pointer.themed_pointer.set_cursor(
+ conn,
+ &mut state.shared_state.shm,
+ default_cursor,
+ bar.scale,
+ args.serial,
+ );
}
}
Event::Leave(_) => pointer.current_surface = None,