mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-06-08 02:12:49 +08:00
patch: don't show enable file clipboard when anyone unsupporting
Signed-off-by: ClSlaid <cailue@bupt.edu.cn>
This commit is contained in:
parent
80200a9983
commit
7aee76f5de
@ -436,7 +436,9 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
|
|||||||
child: Text(translate('Mute'))));
|
child: Text(translate('Mute'))));
|
||||||
}
|
}
|
||||||
// file copy and paste
|
// file copy and paste
|
||||||
if (perms['file'] != false) {
|
if (perms['file'] != false &&
|
||||||
|
bind.mainHasFileClipboard() &&
|
||||||
|
pi.platformAdditions.containsKey(kPlatformAdditionsHasFileClipboard)) {
|
||||||
final option = 'enable-file-transfer';
|
final option = 'enable-file-transfer';
|
||||||
final value =
|
final value =
|
||||||
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
|
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
|
||||||
|
@ -22,6 +22,7 @@ const String kPlatformAdditionsIsWayland = "is_wayland";
|
|||||||
const String kPlatformAdditionsHeadless = "headless";
|
const String kPlatformAdditionsHeadless = "headless";
|
||||||
const String kPlatformAdditionsIsInstalled = "is_installed";
|
const String kPlatformAdditionsIsInstalled = "is_installed";
|
||||||
const String kPlatformAdditionsVirtualDisplays = "virtual_displays";
|
const String kPlatformAdditionsVirtualDisplays = "virtual_displays";
|
||||||
|
const String kPlatformAdditionsHasFileClipboard = "has_file_clipboard";
|
||||||
|
|
||||||
const String kPeerPlatformWindows = "Windows";
|
const String kPeerPlatformWindows = "Windows";
|
||||||
const String kPeerPlatformLinux = "Linux";
|
const String kPeerPlatformLinux = "Linux";
|
||||||
|
@ -104,7 +104,6 @@ message PeerInfo {
|
|||||||
// Use JSON's key-value format which is friendly for peer to handle.
|
// Use JSON's key-value format which is friendly for peer to handle.
|
||||||
// NOTE: Only support one-level dictionaries (for peer to update), and the key is of type string.
|
// NOTE: Only support one-level dictionaries (for peer to update), and the key is of type string.
|
||||||
string platform_additions = 12;
|
string platform_additions = 12;
|
||||||
bool has_file_clipboard = 13;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message LoginResponse {
|
message LoginResponse {
|
||||||
|
@ -1725,6 +1725,17 @@ pub fn main_use_texture_render() -> SyncReturn<bool> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn main_has_file_clipboard() -> SyncReturn<bool> {
|
||||||
|
let ret = cfg!(any(
|
||||||
|
target_os = "windows",
|
||||||
|
all(
|
||||||
|
feature = "unix-file-copy-paste",
|
||||||
|
any(target_os = "linux", target_os = "macos")
|
||||||
|
)
|
||||||
|
));
|
||||||
|
SyncReturn(ret)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn cm_init() {
|
pub fn cm_init() {
|
||||||
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
||||||
crate::flutter::connection_manager::cm_init();
|
crate::flutter::connection_manager::cm_init();
|
||||||
|
@ -1019,13 +1019,6 @@ impl Connection {
|
|||||||
let mut pi = PeerInfo {
|
let mut pi = PeerInfo {
|
||||||
username: username.clone(),
|
username: username.clone(),
|
||||||
version: VERSION.to_owned(),
|
version: VERSION.to_owned(),
|
||||||
has_file_clipboard: cfg!(any(
|
|
||||||
target_os = "windows",
|
|
||||||
all(
|
|
||||||
feature = "unix-file-copy-paste",
|
|
||||||
any(target_os = "linux", target_os = "macos")
|
|
||||||
)
|
|
||||||
)),
|
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1069,7 +1062,18 @@ impl Connection {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(target_os = "linux", target_os = "windows"))]
|
#[cfg(any(
|
||||||
|
target_os = "windows",
|
||||||
|
all(
|
||||||
|
any(target_os = "linux", target_os = "macos"),
|
||||||
|
feature = "unix-file-copy-paste"
|
||||||
|
)
|
||||||
|
))]
|
||||||
|
{
|
||||||
|
platform_additions.insert("has_file_clipboard".into(), json!(true));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(any(target_os = "linux", target_os = "windows", target_os = "macos"))]
|
||||||
if !platform_additions.is_empty() {
|
if !platform_additions.is_empty() {
|
||||||
pi.platform_additions = serde_json::to_string(&platform_additions).unwrap_or("".into());
|
pi.platform_additions = serde_json::to_string(&platform_additions).unwrap_or("".into());
|
||||||
}
|
}
|
||||||
|
@ -153,13 +153,6 @@ pub fn new() -> GenericService {
|
|||||||
|
|
||||||
fn displays_to_msg(displays: Vec<DisplayInfo>) -> Message {
|
fn displays_to_msg(displays: Vec<DisplayInfo>) -> Message {
|
||||||
let mut pi = PeerInfo {
|
let mut pi = PeerInfo {
|
||||||
has_file_clipboard: cfg!(any(
|
|
||||||
target_os = "windows",
|
|
||||||
all(
|
|
||||||
feature = "unix-file-copy-paste",
|
|
||||||
any(target_os = "linux", target_os = "macos")
|
|
||||||
)
|
|
||||||
)),
|
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
pi.displays = displays.clone();
|
pi.displays = displays.clone();
|
||||||
|
@ -196,7 +196,7 @@ class Header: Reactor.Component {
|
|||||||
{!cursor_embedded && <li #show-remote-cursor .toggle-option><span>{svg_checkmark}</span>{translate('Show remote cursor')}</li>}
|
{!cursor_embedded && <li #show-remote-cursor .toggle-option><span>{svg_checkmark}</span>{translate('Show remote cursor')}</li>}
|
||||||
<li #show-quality-monitor .toggle-option><span>{svg_checkmark}</span>{translate('Show quality monitor')}</li>
|
<li #show-quality-monitor .toggle-option><span>{svg_checkmark}</span>{translate('Show quality monitor')}</li>
|
||||||
{audio_enabled ? <li #disable-audio .toggle-option><span>{svg_checkmark}</span>{translate('Mute')}</li> : ""}
|
{audio_enabled ? <li #disable-audio .toggle-option><span>{svg_checkmark}</span>{translate('Mute')}</li> : ""}
|
||||||
{((is_win && pi.platform == "Windows")||(is_linux && pi.platform == "Linux")) && file_enabled ? <li #enable-file-transfer .toggle-option><span>{svg_checkmark}</span>{translate('Allow file copy and paste')}</li> : ""}
|
{(is_win && pi.platform == "Windows") && file_enabled ? <li #enable-file-transfer .toggle-option><span>{svg_checkmark}</span>{translate('Allow file copy and paste')}</li> : ""}
|
||||||
{keyboard_enabled && clipboard_enabled ? <li #disable-clipboard .toggle-option><span>{svg_checkmark}</span>{translate('Disable clipboard')}</li> : ""}
|
{keyboard_enabled && clipboard_enabled ? <li #disable-clipboard .toggle-option><span>{svg_checkmark}</span>{translate('Disable clipboard')}</li> : ""}
|
||||||
{keyboard_enabled ? <li #lock-after-session-end .toggle-option><span>{svg_checkmark}</span>{translate('Lock after session end')}</li> : ""}
|
{keyboard_enabled ? <li #lock-after-session-end .toggle-option><span>{svg_checkmark}</span>{translate('Lock after session end')}</li> : ""}
|
||||||
{keyboard_enabled && pi.platform == "Windows" ? <li #privacy-mode><span>{svg_checkmark}</span>{translate('Privacy mode')}</li> : ""}
|
{keyboard_enabled && pi.platform == "Windows" ? <li #privacy-mode><span>{svg_checkmark}</span>{translate('Privacy mode')}</li> : ""}
|
||||||
|
@ -1008,6 +1008,7 @@ async fn check_connect_status_(reconnect: bool, rx: mpsc::UnboundedReceiver<ipc:
|
|||||||
#[cfg(not(feature = "flutter"))]
|
#[cfg(not(feature = "flutter"))]
|
||||||
let mut id = "".to_owned();
|
let mut id = "".to_owned();
|
||||||
#[cfg(any(target_os = "windows", target_os = "linux"))]
|
#[cfg(any(target_os = "windows", target_os = "linux"))]
|
||||||
|
#[allow(unused_mut, dead_code)]
|
||||||
let mut enable_file_transfer = "".to_owned();
|
let mut enable_file_transfer = "".to_owned();
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
|
Loading…
Reference in New Issue
Block a user