backend/wayland: Support running without toplevel manager protocol
This commit is contained in:
parent
77ff4e62e9
commit
94ec10686e
2 changed files with 17 additions and 13 deletions
|
|
@ -53,7 +53,7 @@ pub struct AppData {
|
|||
screencopy_state: ScreencopyState,
|
||||
seat_state: SeatState,
|
||||
shm_state: Shm,
|
||||
toplevel_manager_state: ToplevelManagerState,
|
||||
toplevel_manager_state: Option<ToplevelManagerState>,
|
||||
sender: mpsc::Sender<Event>,
|
||||
capture_filter: CaptureFilter,
|
||||
captures: RefCell<HashMap<CaptureSource, Arc<Capture>>>,
|
||||
|
|
@ -78,27 +78,31 @@ impl AppData {
|
|||
let info = self.toplevel_info_state.info(&toplevel_handle);
|
||||
if let Some(cosmic_toplevel) = info.and_then(|x| x.cosmic_toplevel.as_ref()) {
|
||||
for seat in self.seat_state.seats() {
|
||||
self.toplevel_manager_state
|
||||
.manager
|
||||
.activate(cosmic_toplevel, &seat);
|
||||
if let Some(state) = &self.toplevel_manager_state {
|
||||
state.manager.activate(cosmic_toplevel, &seat);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Cmd::CloseToplevel(toplevel_handle) => {
|
||||
let info = self.toplevel_info_state.info(&toplevel_handle);
|
||||
if let Some(cosmic_toplevel) = info.and_then(|x| x.cosmic_toplevel.as_ref()) {
|
||||
self.toplevel_manager_state.manager.close(cosmic_toplevel);
|
||||
if let Some(state) = &self.toplevel_manager_state {
|
||||
state.manager.close(cosmic_toplevel);
|
||||
}
|
||||
}
|
||||
}
|
||||
Cmd::MoveToplevelToWorkspace(toplevel_handle, workspace_handle, output) => {
|
||||
let info = self.toplevel_info_state.info(&toplevel_handle);
|
||||
if let Some(cosmic_toplevel) = info.and_then(|x| x.cosmic_toplevel.as_ref()) {
|
||||
if self.toplevel_manager_state.manager.version() >= 2 {
|
||||
self.toplevel_manager_state.manager.move_to_ext_workspace(
|
||||
cosmic_toplevel,
|
||||
&workspace_handle,
|
||||
&output,
|
||||
);
|
||||
if let Some(state) = &self.toplevel_manager_state {
|
||||
if state.manager.version() >= 2 {
|
||||
state.manager.move_to_ext_workspace(
|
||||
cosmic_toplevel,
|
||||
&workspace_handle,
|
||||
&output,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -240,7 +244,7 @@ fn start(conn: Connection) -> mpsc::Receiver<Event> {
|
|||
dmabuf_state,
|
||||
workspace_state: WorkspaceState::new(®istry_state, &qh), // Create before toplevel info state
|
||||
toplevel_info_state: ToplevelInfoState::new(®istry_state, &qh),
|
||||
toplevel_manager_state: ToplevelManagerState::new(®istry_state, &qh),
|
||||
toplevel_manager_state: ToplevelManagerState::try_new(®istry_state, &qh),
|
||||
screencopy_state: ScreencopyState::new(&globals, &qh),
|
||||
registry_state,
|
||||
seat_state: SeatState::new(&globals, &qh),
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ impl ToplevelInfoHandler for AppData {
|
|||
|
||||
impl ToplevelManagerHandler for AppData {
|
||||
fn toplevel_manager_state(&mut self) -> &mut ToplevelManagerState {
|
||||
&mut self.toplevel_manager_state
|
||||
self.toplevel_manager_state.as_mut().unwrap()
|
||||
}
|
||||
|
||||
fn capabilities(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue