mirror of
https://github.com/zed-industries/zed.git
synced 2024-10-23 06:56:33 +00:00
gpui: Fix crash caused by ownership leak (#19185)
Some checks are pending
CI / Check formatting and spelling (push) Waiting to run
CI / (macOS) Run Clippy and tests (push) Waiting to run
CI / (Linux) Run Clippy and tests (push) Waiting to run
CI / (Linux) Build Remote Server (push) Waiting to run
CI / (Windows) Run Clippy and tests (push) Waiting to run
CI / Create a macOS bundle (push) Blocked by required conditions
CI / Create a Linux bundle (push) Blocked by required conditions
CI / Create arm64 Linux bundle (push) Blocked by required conditions
Deploy Docs / Deploy Docs (push) Waiting to run
Docs / Check formatting (push) Waiting to run
Some checks are pending
CI / Check formatting and spelling (push) Waiting to run
CI / (macOS) Run Clippy and tests (push) Waiting to run
CI / (Linux) Run Clippy and tests (push) Waiting to run
CI / (Linux) Build Remote Server (push) Waiting to run
CI / (Windows) Run Clippy and tests (push) Waiting to run
CI / Create a macOS bundle (push) Blocked by required conditions
CI / Create a Linux bundle (push) Blocked by required conditions
CI / Create arm64 Linux bundle (push) Blocked by required conditions
Deploy Docs / Deploy Docs (push) Waiting to run
Docs / Check formatting (push) Waiting to run
- Closes #18811 Release Notes: - N/A
This commit is contained in:
parent
6e2869a321
commit
41ba4178fc
1 changed files with 16 additions and 12 deletions
|
@ -675,11 +675,12 @@ impl X11Client {
|
|||
}
|
||||
}
|
||||
} else if event.type_ == state.atoms.XdndLeave {
|
||||
window.handle_input(PlatformInput::FileDrop(FileDropEvent::Pending {
|
||||
position: state.xdnd_state.position,
|
||||
}));
|
||||
let position = state.xdnd_state.position;
|
||||
drop(state);
|
||||
window
|
||||
.handle_input(PlatformInput::FileDrop(FileDropEvent::Pending { position }));
|
||||
window.handle_input(PlatformInput::FileDrop(FileDropEvent::Exited {}));
|
||||
state.xdnd_state = Xdnd::default();
|
||||
self.0.borrow_mut().xdnd_state = Xdnd::default();
|
||||
} else if event.type_ == state.atoms.XdndPosition {
|
||||
if let Ok(pos) = state
|
||||
.xcb_connection
|
||||
|
@ -709,9 +710,10 @@ impl X11Client {
|
|||
state.xdnd_state.other_window,
|
||||
arg4,
|
||||
);
|
||||
window.handle_input(PlatformInput::FileDrop(FileDropEvent::Pending {
|
||||
position: state.xdnd_state.position,
|
||||
}));
|
||||
let position = state.xdnd_state.position;
|
||||
drop(state);
|
||||
window
|
||||
.handle_input(PlatformInput::FileDrop(FileDropEvent::Pending { position }));
|
||||
} else if event.type_ == state.atoms.XdndDrop {
|
||||
xdnd_send_finished(
|
||||
&state.xcb_connection,
|
||||
|
@ -719,10 +721,11 @@ impl X11Client {
|
|||
event.window,
|
||||
state.xdnd_state.other_window,
|
||||
);
|
||||
window.handle_input(PlatformInput::FileDrop(FileDropEvent::Submit {
|
||||
position: state.xdnd_state.position,
|
||||
}));
|
||||
state.xdnd_state = Xdnd::default();
|
||||
let position = state.xdnd_state.position;
|
||||
drop(state);
|
||||
window
|
||||
.handle_input(PlatformInput::FileDrop(FileDropEvent::Submit { position }));
|
||||
self.0.borrow_mut().xdnd_state = Xdnd::default();
|
||||
}
|
||||
}
|
||||
Event::SelectionNotify(event) => {
|
||||
|
@ -751,8 +754,9 @@ impl X11Client {
|
|||
position: state.xdnd_state.position,
|
||||
paths: crate::ExternalPaths(paths),
|
||||
});
|
||||
drop(state);
|
||||
window.handle_input(input);
|
||||
state.xdnd_state.retrieved = true;
|
||||
self.0.borrow_mut().xdnd_state.retrieved = true;
|
||||
}
|
||||
Err(_) => {}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue