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,
|
screencopy_state: ScreencopyState,
|
||||||
seat_state: SeatState,
|
seat_state: SeatState,
|
||||||
shm_state: Shm,
|
shm_state: Shm,
|
||||||
toplevel_manager_state: ToplevelManagerState,
|
toplevel_manager_state: Option<ToplevelManagerState>,
|
||||||
sender: mpsc::Sender<Event>,
|
sender: mpsc::Sender<Event>,
|
||||||
capture_filter: CaptureFilter,
|
capture_filter: CaptureFilter,
|
||||||
captures: RefCell<HashMap<CaptureSource, Arc<Capture>>>,
|
captures: RefCell<HashMap<CaptureSource, Arc<Capture>>>,
|
||||||
|
|
@ -78,27 +78,31 @@ impl AppData {
|
||||||
let info = self.toplevel_info_state.info(&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()) {
|
if let Some(cosmic_toplevel) = info.and_then(|x| x.cosmic_toplevel.as_ref()) {
|
||||||
for seat in self.seat_state.seats() {
|
for seat in self.seat_state.seats() {
|
||||||
self.toplevel_manager_state
|
if let Some(state) = &self.toplevel_manager_state {
|
||||||
.manager
|
state.manager.activate(cosmic_toplevel, &seat);
|
||||||
.activate(cosmic_toplevel, &seat);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Cmd::CloseToplevel(toplevel_handle) => {
|
Cmd::CloseToplevel(toplevel_handle) => {
|
||||||
let info = self.toplevel_info_state.info(&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()) {
|
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) => {
|
Cmd::MoveToplevelToWorkspace(toplevel_handle, workspace_handle, output) => {
|
||||||
let info = self.toplevel_info_state.info(&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()) {
|
if let Some(cosmic_toplevel) = info.and_then(|x| x.cosmic_toplevel.as_ref()) {
|
||||||
if self.toplevel_manager_state.manager.version() >= 2 {
|
if let Some(state) = &self.toplevel_manager_state {
|
||||||
self.toplevel_manager_state.manager.move_to_ext_workspace(
|
if state.manager.version() >= 2 {
|
||||||
cosmic_toplevel,
|
state.manager.move_to_ext_workspace(
|
||||||
&workspace_handle,
|
cosmic_toplevel,
|
||||||
&output,
|
&workspace_handle,
|
||||||
);
|
&output,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -240,7 +244,7 @@ fn start(conn: Connection) -> mpsc::Receiver<Event> {
|
||||||
dmabuf_state,
|
dmabuf_state,
|
||||||
workspace_state: WorkspaceState::new(®istry_state, &qh), // Create before toplevel info state
|
workspace_state: WorkspaceState::new(®istry_state, &qh), // Create before toplevel info state
|
||||||
toplevel_info_state: ToplevelInfoState::new(®istry_state, &qh),
|
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),
|
screencopy_state: ScreencopyState::new(&globals, &qh),
|
||||||
registry_state,
|
registry_state,
|
||||||
seat_state: SeatState::new(&globals, &qh),
|
seat_state: SeatState::new(&globals, &qh),
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ impl ToplevelInfoHandler for AppData {
|
||||||
|
|
||||||
impl ToplevelManagerHandler for AppData {
|
impl ToplevelManagerHandler for AppData {
|
||||||
fn toplevel_manager_state(&mut self) -> &mut ToplevelManagerState {
|
fn toplevel_manager_state(&mut self) -> &mut ToplevelManagerState {
|
||||||
&mut self.toplevel_manager_state
|
self.toplevel_manager_state.as_mut().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn capabilities(
|
fn capabilities(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue