diff options
Diffstat (limited to 'alacritty_terminal/src/term/mod.rs')
-rw-r--r-- | alacritty_terminal/src/term/mod.rs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/alacritty_terminal/src/term/mod.rs b/alacritty_terminal/src/term/mod.rs index 7c4abb57..2e66b402 100644 --- a/alacritty_terminal/src/term/mod.rs +++ b/alacritty_terminal/src/term/mod.rs @@ -12,7 +12,7 @@ use vte::ansi::{Hyperlink as VteHyperlink, Rgb as VteRgb}; use crate::ansi::{ self, Attr, CharsetIndex, Color, CursorShape, CursorStyle, Handler, NamedColor, StandardCharset, }; -use crate::config::Config; +use crate::config::{Config, Osc52, Terminal}; use crate::event::{Event, EventListener}; use crate::grid::{Dimensions, Grid, GridIterator, Scroll}; use crate::index::{self, Boundary, Column, Direction, Line, Point, Side}; @@ -304,6 +304,9 @@ pub struct Term<T> { /// Information about damaged cells. damage: TermDamageState, + + /// Config directly for the terminal. + config: Terminal, } impl<T> Term<T> { @@ -363,6 +366,7 @@ impl<T> Term<T> { title_stack: Vec::new(), selection: None, damage, + config: config.terminal.clone(), } } @@ -461,6 +465,8 @@ impl<T> Term<T> { self.grid.update_history(config.scrolling.history() as usize); } + self.config = config.terminal.clone(); + // Damage everything on config updates. self.mark_fully_damaged(); } @@ -1539,6 +1545,11 @@ impl<T: EventListener> Handler for Term<T> { /// Store data into clipboard. #[inline] fn clipboard_store(&mut self, clipboard: u8, base64: &[u8]) { + if !matches!(self.config.osc52, Osc52::OnlyCopy | Osc52::CopyPaste) { + debug!("Denied osc52 store"); + return; + } + let clipboard_type = match clipboard { b'c' => ClipboardType::Clipboard, b'p' | b's' => ClipboardType::Selection, @@ -1555,6 +1566,11 @@ impl<T: EventListener> Handler for Term<T> { /// Load data from clipboard. #[inline] fn clipboard_load(&mut self, clipboard: u8, terminator: &str) { + if !matches!(self.config.osc52, Osc52::OnlyPaste | Osc52::CopyPaste) { + debug!("Denied osc52 load"); + return; + } + let clipboard_type = match clipboard { b'c' => ClipboardType::Clipboard, b'p' | b's' => ClipboardType::Selection, |