linux: Add an option to disable middle-click paste (#16572)
Release Notes: - Added an editor setting to toggle Linux middle-click pasting (enabled by default)
This commit is contained in:
parent
02cd5128c7
commit
6403385468
3 changed files with 24 additions and 14 deletions
|
@ -227,6 +227,8 @@
|
||||||
// Whether to show diagnostic indicators in the scrollbar.
|
// Whether to show diagnostic indicators in the scrollbar.
|
||||||
"diagnostics": true
|
"diagnostics": true
|
||||||
},
|
},
|
||||||
|
// Enable middle-click paste on Linux.
|
||||||
|
"middle_click_paste": true,
|
||||||
// What to do when multibuffer is double clicked in some of its excerpts
|
// What to do when multibuffer is double clicked in some of its excerpts
|
||||||
// (parts of singleton buffers).
|
// (parts of singleton buffers).
|
||||||
// May take 2 values:
|
// May take 2 values:
|
||||||
|
|
|
@ -23,6 +23,7 @@ pub struct EditorSettings {
|
||||||
pub multi_cursor_modifier: MultiCursorModifier,
|
pub multi_cursor_modifier: MultiCursorModifier,
|
||||||
pub redact_private_values: bool,
|
pub redact_private_values: bool,
|
||||||
pub expand_excerpt_lines: u32,
|
pub expand_excerpt_lines: u32,
|
||||||
|
pub middle_click_paste: bool,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub double_click_in_multibuffer: DoubleClickInMultibuffer,
|
pub double_click_in_multibuffer: DoubleClickInMultibuffer,
|
||||||
pub search_wrap: bool,
|
pub search_wrap: bool,
|
||||||
|
@ -233,6 +234,11 @@ pub struct EditorSettingsContent {
|
||||||
/// Default: 3
|
/// Default: 3
|
||||||
pub expand_excerpt_lines: Option<u32>,
|
pub expand_excerpt_lines: Option<u32>,
|
||||||
|
|
||||||
|
/// Whether to enable middle-click paste on Linux
|
||||||
|
///
|
||||||
|
/// Default: true
|
||||||
|
pub middle_click_paste: Option<bool>,
|
||||||
|
|
||||||
/// What to do when multibuffer is double clicked in some of its excerpts
|
/// What to do when multibuffer is double clicked in some of its excerpts
|
||||||
/// (parts of singleton buffers).
|
/// (parts of singleton buffers).
|
||||||
///
|
///
|
||||||
|
|
|
@ -658,22 +658,24 @@ impl EditorElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
if let Some(text) = cx.read_from_primary().and_then(|item| item.text()) {
|
if EditorSettings::get_global(cx).middle_click_paste {
|
||||||
let point_for_position =
|
if let Some(text) = cx.read_from_primary().and_then(|item| item.text()) {
|
||||||
position_map.point_for_position(text_hitbox.bounds, event.position);
|
let point_for_position =
|
||||||
let position = point_for_position.previous_valid;
|
position_map.point_for_position(text_hitbox.bounds, event.position);
|
||||||
|
let position = point_for_position.previous_valid;
|
||||||
|
|
||||||
editor.select(
|
editor.select(
|
||||||
SelectPhase::Begin {
|
SelectPhase::Begin {
|
||||||
position,
|
position,
|
||||||
add: false,
|
add: false,
|
||||||
click_count: 1,
|
click_count: 1,
|
||||||
},
|
},
|
||||||
cx,
|
cx,
|
||||||
);
|
);
|
||||||
editor.insert(&text, cx);
|
editor.insert(&text, cx);
|
||||||
|
}
|
||||||
|
cx.stop_propagation()
|
||||||
}
|
}
|
||||||
cx.stop_propagation()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue