summaryrefslogtreecommitdiff
path: root/src/output.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/output.rs')
-rw-r--r--src/output.rs38
1 files changed, 24 insertions, 14 deletions
diff --git a/src/output.rs b/src/output.rs
index be9a29a..7c492ed 100644
--- a/src/output.rs
+++ b/src/output.rs
@@ -1,6 +1,6 @@
use wayrs_client::global::{Global, GlobalExt};
-use wayrs_client::protocol::*;
use wayrs_client::Connection;
+use wayrs_client::{protocol::*, EventCtx};
use crate::state::State;
@@ -27,26 +27,36 @@ impl Output {
}
}
-fn wl_output_cb(
- conn: &mut Connection<State>,
- state: &mut State,
- output: WlOutput,
- event: wl_output::Event,
-) {
- match event {
+fn wl_output_cb(ctx: EventCtx<State, WlOutput>) {
+ match ctx.event {
wl_output::Event::Name(name) => {
- let i = state
+ let i = ctx
+ .state
.pending_outputs
.iter()
- .position(|o| o.wl == output)
+ .position(|o| o.wl == ctx.proxy)
.unwrap();
- let output = state.pending_outputs.swap_remove(i);
- state.register_output(conn, output, name.to_str().expect("invalid output name"));
+ let output = ctx.state.pending_outputs.swap_remove(i);
+ ctx.state.register_output(
+ ctx.conn,
+ output,
+ name.to_str().expect("invalid output name"),
+ );
}
wl_output::Event::Scale(scale) => {
- if let Some(bar) = state.bars.iter_mut().find(|bar| bar.output.wl == output) {
+ if let Some(bar) = ctx
+ .state
+ .bars
+ .iter_mut()
+ .find(|bar| bar.output.wl == ctx.proxy)
+ {
bar.output.scale = scale as u32;
- } else if let Some(output) = state.pending_outputs.iter_mut().find(|o| o.wl == output) {
+ } else if let Some(output) = ctx
+ .state
+ .pending_outputs
+ .iter_mut()
+ .find(|o| o.wl == ctx.proxy)
+ {
output.scale = scale as u32;
}
}