mirror of
https://github.com/wez/wezterm.git
synced 2024-11-30 14:49:26 +03:00
wezterm: fixup per-pane overlay rendering and handling
refs: https://github.com/wez/wezterm/issues/157
This commit is contained in:
parent
146b4465ba
commit
0e8ac1851d
@ -163,7 +163,7 @@ impl CopyRenderable {
|
|||||||
|
|
||||||
fn close(&self) {
|
fn close(&self) {
|
||||||
self.set_viewport(None);
|
self.set_viewport(None);
|
||||||
TermWindow::schedule_cancel_overlay(self.window.clone(), self.delegate.pane_id());
|
TermWindow::schedule_cancel_overlay_for_pane(self.window.clone(), self.delegate.pane_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn page_up(&mut self) {
|
fn page_up(&mut self) {
|
||||||
|
@ -267,7 +267,7 @@ impl SearchRenderable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn close(&self) {
|
fn close(&self) {
|
||||||
TermWindow::schedule_cancel_overlay(self.window.clone(), self.delegate.pane_id());
|
TermWindow::schedule_cancel_overlay_for_pane(self.window.clone(), self.delegate.pane_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_viewport(&self, row: Option<StableRowIndex>) {
|
fn set_viewport(&self, row: Option<StableRowIndex>) {
|
||||||
|
@ -3868,7 +3868,13 @@ impl TermWindow {
|
|||||||
pane,
|
pane,
|
||||||
}]
|
}]
|
||||||
} else {
|
} else {
|
||||||
tab.iter_panes()
|
let mut panes = tab.iter_panes();
|
||||||
|
for p in &mut panes {
|
||||||
|
if let Some(overlay) = self.pane_state(p.pane.pane_id()).overlay.as_ref() {
|
||||||
|
p.pane = Rc::clone(overlay);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
panes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3889,6 +3895,22 @@ impl TermWindow {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn cancel_overlay_for_pane(&self, pane_id: PaneId) {
|
||||||
|
self.pane_state(pane_id).overlay.take();
|
||||||
|
if let Some(window) = self.window.as_ref() {
|
||||||
|
window.invalidate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn schedule_cancel_overlay_for_pane(window: Window, pane_id: PaneId) {
|
||||||
|
window.apply(move |myself, _| {
|
||||||
|
if let Some(myself) = myself.downcast_mut::<Self>() {
|
||||||
|
myself.cancel_overlay_for_pane(pane_id);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
pub fn assign_overlay_for_pane(&mut self, pane_id: PaneId, overlay: Rc<dyn Pane>) {
|
pub fn assign_overlay_for_pane(&mut self, pane_id: PaneId, overlay: Rc<dyn Pane>) {
|
||||||
self.pane_state(pane_id).overlay.replace(overlay);
|
self.pane_state(pane_id).overlay.replace(overlay);
|
||||||
self.update_title();
|
self.update_title();
|
||||||
|
Loading…
Reference in New Issue
Block a user