diff options
Diffstat (limited to 'src/output.rs')
| -rw-r--r-- | src/output.rs | 38 |
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; } } |
