Skip to content

Commit

Permalink
example/toplevel-monitor: Bind outputs
Browse files Browse the repository at this point in the history
This allows us to get events about the outputs associated with the
toplevel.
  • Loading branch information
ids1024 committed Jul 31, 2024
1 parent bd65e0f commit de2fead
Showing 1 changed file with 40 additions and 3 deletions.
43 changes: 40 additions & 3 deletions client-toolkit/examples/toplevel-monitor.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
use cosmic_client_toolkit::toplevel_info::{ToplevelInfoHandler, ToplevelInfoState};
use cosmic_protocols::toplevel_info::v1::client::zcosmic_toplevel_handle_v1;
use sctk::registry::{ProvidesRegistryState, RegistryState};
use wayland_client::{globals::registry_queue_init, Connection, QueueHandle};
use sctk::{
output::{OutputHandler, OutputState},
registry::{ProvidesRegistryState, RegistryState},
};
use wayland_client::{globals::registry_queue_init, protocol::wl_output, Connection, QueueHandle};

struct AppData {
output_state: OutputState,
registry_state: RegistryState,
toplevel_info_state: ToplevelInfoState,
}
Expand All @@ -13,7 +17,38 @@ impl ProvidesRegistryState for AppData {
&mut self.registry_state
}

sctk::registry_handlers!();
sctk::registry_handlers!(OutputState);
}

// Need to bind output globals just so toplevel can get output events
impl OutputHandler for AppData {
fn output_state(&mut self) -> &mut OutputState {
&mut self.output_state
}

fn new_output(
&mut self,
_conn: &Connection,
_qh: &QueueHandle<Self>,
output: wl_output::WlOutput,
) {
}

fn update_output(
&mut self,
_conn: &Connection,
_qh: &QueueHandle<Self>,
_output: wl_output::WlOutput,
) {
}

fn output_destroyed(
&mut self,
_conn: &Connection,
_qh: &QueueHandle<Self>,
output: wl_output::WlOutput,
) {
}
}

impl ToplevelInfoHandler for AppData {
Expand Down Expand Up @@ -65,6 +100,7 @@ fn main() {

let registry_state = RegistryState::new(&globals);
let mut app_data = AppData {
output_state: OutputState::new(&globals, &qh),
toplevel_info_state: ToplevelInfoState::new(&registry_state, &qh),
registry_state,
};
Expand All @@ -74,5 +110,6 @@ fn main() {
}
}

sctk::delegate_output!(AppData);
sctk::delegate_registry!(AppData);
cosmic_client_toolkit::delegate_toplevel_info!(AppData);

0 comments on commit de2fead

Please sign in to comment.