From 86ca98c38afc5071f7ea7eccceb01ff3c57069bf Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Mon, 11 Apr 2022 13:11:56 +0200 Subject: [PATCH] autocommit 2022-04-11 13:11:56 CEST --- default-config/src/lib.rs | 2 ++ src/compositor.rs | 1 + src/ifs/wl_output.rs | 2 +- src/ifs/wl_seat/event_handling.rs | 1 - src/ifs/wl_surface/xdg_surface/xdg_toplevel.rs | 8 ++++++++ src/ifs/zxdg_output_v1.rs | 7 ++++--- src/logger.rs | 8 ++------ src/state.rs | 1 + src/tasks/connector.rs | 2 ++ src/tree/container.rs | 1 + src/xwayland/xwm.rs | 2 +- 11 files changed, 23 insertions(+), 12 deletions(-) diff --git a/default-config/src/lib.rs b/default-config/src/lib.rs index f1feba53..5df9baef 100644 --- a/default-config/src/lib.rs +++ b/default-config/src/lib.rs @@ -145,6 +145,8 @@ pub fn configure() { ); timer.on_tick(update_status); } + + Command::new("mako").spawn(); } config!(configure); diff --git a/src/compositor.rs b/src/compositor.rs index 8b197569..d69fb4ed 100644 --- a/src/compositor.rs +++ b/src/compositor.rs @@ -132,6 +132,7 @@ fn main_(forker: Rc, logger: Arc, _args: &RunArgs) -> Resul }), handler: Cell::new(None), connected: Cell::new(true), + name: "Dummy".to_string(), }), 0, &backend::Mode { diff --git a/src/ifs/wl_output.rs b/src/ifs/wl_output.rs index e6b45578..f2fdd1d5 100644 --- a/src/ifs/wl_output.rs +++ b/src/ifs/wl_output.rs @@ -107,11 +107,11 @@ impl WlOutputGlobal { binding.send_mode(); binding.send_scale(); binding.send_done(); - binding.client.flush(); let xdg = binding.xdg_outputs.lock(); for xdg in xdg.values() { xdg.send_updates(); } + binding.client.flush(); } } } diff --git a/src/ifs/wl_seat/event_handling.rs b/src/ifs/wl_seat/event_handling.rs index 893e60a2..a729e1af 100644 --- a/src/ifs/wl_seat/event_handling.rs +++ b/src/ifs/wl_seat/event_handling.rs @@ -215,7 +215,6 @@ impl WlSeatGlobal { fn key_event(&self, key: u32, state: KeyState) { let (state, xkb_dir) = { - log::info!("{} {:?}", key, state); let mut pk = self.pressed_keys.borrow_mut(); match state { KeyState::Released => { diff --git a/src/ifs/wl_surface/xdg_surface/xdg_toplevel.rs b/src/ifs/wl_surface/xdg_surface/xdg_toplevel.rs index cecc9480..06ec845d 100644 --- a/src/ifs/wl_surface/xdg_surface/xdg_toplevel.rs +++ b/src/ifs/wl_surface/xdg_surface/xdg_toplevel.rs @@ -282,11 +282,19 @@ impl XdgToplevel { fn set_fullscreen(&self, parser: MsgParser<'_, '_>) -> Result<(), SetFullscreenError> { let _req: SetFullscreen = self.xdg.surface.client.parse(self, parser)?; + self.states.borrow_mut().insert(STATE_FULLSCREEN); + let rect = self.xdg.absolute_desired_extents.get(); + self.send_configure_checked(rect.width(), rect.height()); + self.xdg.do_send_configure(); Ok(()) } fn unset_fullscreen(&self, parser: MsgParser<'_, '_>) -> Result<(), UnsetFullscreenError> { let _req: UnsetFullscreen = self.xdg.surface.client.parse(self, parser)?; + self.states.borrow_mut().remove(&STATE_FULLSCREEN); + let rect = self.xdg.absolute_desired_extents.get(); + self.send_configure_checked(rect.width(), rect.height()); + self.xdg.do_send_configure(); Ok(()) } diff --git a/src/ifs/zxdg_output_v1.rs b/src/ifs/zxdg_output_v1.rs index a629844d..85478a6d 100644 --- a/src/ifs/zxdg_output_v1.rs +++ b/src/ifs/zxdg_output_v1.rs @@ -11,7 +11,6 @@ use { thiserror::Error, }; -#[allow(dead_code)] pub const NAME_SINCE: u32 = 2; #[allow(dead_code)] pub const DESCRIPTION_SINCE: u32 = 2; @@ -46,7 +45,6 @@ impl ZxdgOutputV1 { self.client.event(Done { self_id: self.id }); } - #[allow(dead_code)] pub fn send_name(&self, name: &str) { self.client.event(Name { self_id: self.id, @@ -66,7 +64,10 @@ impl ZxdgOutputV1 { let pos = self.output.global.position(); self.send_logical_position(pos.x1(), pos.y1()); self.send_logical_size(pos.width(), pos.height()); - if self.version >= NO_DONE_SINCE || self.output.version < SEND_DONE_SINCE { + if self.version >= NAME_SINCE { + self.send_name(&self.output.global.connector.name); + } + if self.version >= NO_DONE_SINCE && self.output.version >= SEND_DONE_SINCE { self.output.send_done(); } else { self.send_done(); diff --git a/src/logger.rs b/src/logger.rs index 0f5d817f..58d65994 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -112,10 +112,7 @@ impl Logger { fn create_log_dir() -> BString { let mut log_dir = match dirs::data_local_dir() { Some(d) => d, - None => { - eprintln!("Error: $HOME is not set"); - std::process::exit(1); - } + None => fatal!("Error: $HOME is not set"), }; log_dir.push("jay"); let res = DirBuilder::new() @@ -123,12 +120,11 @@ fn create_log_dir() -> BString { .mode(0o755) .create(&log_dir); if let Err(e) = res { - eprintln!( + fatal!( "Error: Could not create log directory {}: {}", log_dir.display(), ErrorFmt(e) ); - std::process::exit(1); } log_dir.into_os_string().into_vec().into() } diff --git a/src/state.rs b/src/state.rs index 52913679..b61f71ec 100644 --- a/src/state.rs +++ b/src/state.rs @@ -93,6 +93,7 @@ pub struct ConnectorData { pub connector: Rc, pub handler: Cell>>, pub connected: Cell, + pub name: String, } pub struct OutputData { diff --git a/src/tasks/connector.rs b/src/tasks/connector.rs index b4767af7..473a351c 100644 --- a/src/tasks/connector.rs +++ b/src/tasks/connector.rs @@ -19,6 +19,7 @@ pub fn handle(state: &Rc, connector: &Rc) { connector: connector.clone(), handler: Default::default(), connected: Cell::new(false), + name: connector.kernel_id().to_string(), }); let oh = ConnectorHandler { id, @@ -120,6 +121,7 @@ impl ConnectorHandler { if let Some(config) = self.state.config.get() { config.connector_connected(self.id); } + on.update_render_data(); self.state.root.outputs.set(self.id, on.clone()); self.state.add_global(&global); 'outer: loop { diff --git a/src/tree/container.rs b/src/tree/container.rs index f46af40b..e624652a 100644 --- a/src/tree/container.rs +++ b/src/tree/container.rs @@ -690,6 +690,7 @@ impl ContainerNode { child.node.clone().do_focus(&seat, Direction::Unspecified); } self.mono_child.set(Some(child.clone())); + child.node.set_visible(true); self.schedule_layout(); } else { } diff --git a/src/xwayland/xwm.rs b/src/xwayland/xwm.rs index cea92e01..62089311 100644 --- a/src/xwayland/xwm.rs +++ b/src/xwayland/xwm.rs @@ -593,7 +593,7 @@ impl Wm { { Ok(ty) if ty == ATOM_STRING && data.info.utf8_title.get() => return, Ok(ty) if ty == ATOM_STRING => {} - Ok(ty) if ty == self.atoms.COMPOUND_TEXT => {} // used by java. assume utf-8. + Ok(ty) if ty == self.atoms.COMPOUND_TEXT => return, // used by java. Ok(ty) if ty == self.atoms.UTF8_STRING => { data.info.utf8_title.set(true); }