fix: transient windows appear as 1x1 sized
This commit is contained in:
parent
81a49e8290
commit
7961c97d2f
|
@ -774,7 +774,7 @@ impl WindowServerBackend for XLib {
|
||||||
if new_pos.is_some() {
|
if new_pos.is_some() {
|
||||||
mask |= xlib::CWX | xlib::CWY;
|
mask |= xlib::CWX | xlib::CWY;
|
||||||
}
|
}
|
||||||
if new_size.is_some() {
|
if new_size.is_some() && wc.width > 1 && wc.height > 1 {
|
||||||
mask |= xlib::CWWidth | xlib::CWHeight;
|
mask |= xlib::CWWidth | xlib::CWHeight;
|
||||||
}
|
}
|
||||||
if new_border.is_some() {
|
if new_border.is_some() {
|
||||||
|
|
22
src/state.rs
22
src/state.rs
|
@ -425,11 +425,11 @@ where
|
||||||
self.button_event(&event);
|
self.button_event(&event);
|
||||||
}
|
}
|
||||||
WindowEvent::MapRequestEvent(MapEvent { window }) => {
|
WindowEvent::MapRequestEvent(MapEvent { window }) => {
|
||||||
|
self.backend.handle_event(event);
|
||||||
|
|
||||||
if !self.clients.contains(&window) {
|
if !self.clients.contains(&window) {
|
||||||
self.new_client(window);
|
self.new_client(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.backend.handle_event(event);
|
|
||||||
}
|
}
|
||||||
WindowEvent::UnmapEvent(event) => {
|
WindowEvent::UnmapEvent(event) => {
|
||||||
self.clients.remove(&event.window);
|
self.clients.remove(&event.window);
|
||||||
|
@ -444,8 +444,17 @@ where
|
||||||
WindowEvent::ConfigureEvent(ConfigureEvent {
|
WindowEvent::ConfigureEvent(ConfigureEvent {
|
||||||
window, ..
|
window, ..
|
||||||
}) => {
|
}) => {
|
||||||
if !self.clients.contains(&window) {
|
match self.clients.get(&window) {
|
||||||
self.backend.handle_event(event);
|
ClientEntry::Tiled(client)
|
||||||
|
| ClientEntry::Floating(client) => {
|
||||||
|
self.backend.configure_window(
|
||||||
|
window,
|
||||||
|
Some(client.size),
|
||||||
|
Some(client.position),
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
ClientEntry::Vacant => self.backend.handle_event(event),
|
||||||
}
|
}
|
||||||
// TODO
|
// TODO
|
||||||
// match self.clients.get(&event.window).into_option() {
|
// match self.clients.get(&event.window).into_option() {
|
||||||
|
@ -520,7 +529,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
fn rotate_virtual_screen(&mut self, dir: Direction) {
|
fn rotate_virtual_screen(&mut self, dir: Direction) {
|
||||||
info!("rotateing VS: {:?}", dir);
|
info!("rotating VS: {:?}", dir);
|
||||||
|
|
||||||
match dir {
|
match dir {
|
||||||
Direction::West(n) => self.clients.rotate_left(n),
|
Direction::West(n) => self.clients.rotate_left(n),
|
||||||
|
@ -713,6 +722,7 @@ where
|
||||||
None,
|
None,
|
||||||
Some(self.clients.get_border()),
|
Some(self.clients.get_border()),
|
||||||
);
|
);
|
||||||
|
|
||||||
self.clients.insert(client).unwrap();
|
self.clients.insert(client).unwrap();
|
||||||
self.arrange_clients();
|
self.arrange_clients();
|
||||||
|
|
||||||
|
@ -800,8 +810,6 @@ where
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MoveResizeInfo::Resize(info) => {
|
MoveResizeInfo::Resize(info) => {
|
||||||
info!("do_resize: {:#?}", info);
|
|
||||||
|
|
||||||
let (x, y) = (
|
let (x, y) = (
|
||||||
event.position.x - info.starting_cursor_pos.x,
|
event.position.x - info.starting_cursor_pos.x,
|
||||||
event.position.y - info.starting_cursor_pos.y,
|
event.position.y - info.starting_cursor_pos.y,
|
||||||
|
|
Loading…
Reference in a new issue