mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-04-23 21:03:21 +03:00
Compare commits
2 Commits
9345fb754a
...
34ceeac36e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
34ceeac36e | ||
|
|
20f11018ce |
@@ -194,7 +194,10 @@ class _TerminalTabPageState extends State<TerminalTabPage> {
|
|||||||
final currentTab = tabController.state.value.selectedTabInfo;
|
final currentTab = tabController.state.value.selectedTabInfo;
|
||||||
assert(call.arguments is String,
|
assert(call.arguments is String,
|
||||||
"Expected String arguments for kWindowEventActiveSession, got ${call.arguments.runtimeType}");
|
"Expected String arguments for kWindowEventActiveSession, got ${call.arguments.runtimeType}");
|
||||||
if (currentTab.key.startsWith(call.arguments)) {
|
// Use lastIndexOf to handle peerIds containing underscores
|
||||||
|
final lastUnderscore = currentTab.key.lastIndexOf('_');
|
||||||
|
if (lastUnderscore > 0 &&
|
||||||
|
currentTab.key.substring(0, lastUnderscore) == call.arguments) {
|
||||||
windowOnTop(windowId());
|
windowOnTop(windowId());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -329,7 +332,10 @@ class _TerminalTabPageState extends State<TerminalTabPage> {
|
|||||||
void _addNewTerminal(String peerId, {int? terminalId}) {
|
void _addNewTerminal(String peerId, {int? terminalId}) {
|
||||||
// Find first tab for this peer to get connection parameters
|
// Find first tab for this peer to get connection parameters
|
||||||
final firstTab = tabController.state.value.tabs.firstWhere(
|
final firstTab = tabController.state.value.tabs.firstWhere(
|
||||||
(tab) => tab.key.startsWith('$peerId\_'),
|
(tab) {
|
||||||
|
final last = tab.key.lastIndexOf('_');
|
||||||
|
return last > 0 && tab.key.substring(0, last) == peerId;
|
||||||
|
},
|
||||||
);
|
);
|
||||||
if (firstTab.page is TerminalPage) {
|
if (firstTab.page is TerminalPage) {
|
||||||
final page = firstTab.page as TerminalPage;
|
final page = firstTab.page as TerminalPage;
|
||||||
@@ -350,9 +356,10 @@ class _TerminalTabPageState extends State<TerminalTabPage> {
|
|||||||
|
|
||||||
void _addNewTerminalForCurrentPeer({int? terminalId}) {
|
void _addNewTerminalForCurrentPeer({int? terminalId}) {
|
||||||
final currentTab = tabController.state.value.selectedTabInfo;
|
final currentTab = tabController.state.value.selectedTabInfo;
|
||||||
final parts = currentTab.key.split('_');
|
final tabKey = currentTab.key;
|
||||||
if (parts.isNotEmpty) {
|
final lastUnderscore = tabKey.lastIndexOf('_');
|
||||||
final peerId = parts[0];
|
if (lastUnderscore > 0) {
|
||||||
|
final peerId = tabKey.substring(0, lastUnderscore);
|
||||||
_addNewTerminal(peerId, terminalId: terminalId);
|
_addNewTerminal(peerId, terminalId: terminalId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -369,9 +376,10 @@ class _TerminalTabPageState extends State<TerminalTabPage> {
|
|||||||
labelGetter: DesktopTab.tablabelGetter,
|
labelGetter: DesktopTab.tablabelGetter,
|
||||||
tabMenuBuilder: (key) {
|
tabMenuBuilder: (key) {
|
||||||
// Extract peerId from tab key (format: "peerId_terminalId")
|
// Extract peerId from tab key (format: "peerId_terminalId")
|
||||||
final parts = key.split('_');
|
// Use lastIndexOf to handle peerIds containing underscores
|
||||||
if (parts.isEmpty) return Container();
|
final lastUnderscore = key.lastIndexOf('_');
|
||||||
final peerId = parts[0];
|
if (lastUnderscore <= 0) return Container();
|
||||||
|
final peerId = key.substring(0, lastUnderscore);
|
||||||
return _tabMenuBuilder(peerId, () {});
|
return _tabMenuBuilder(peerId, () {});
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -107,9 +107,9 @@ pub fn get_focused_display(displays: Vec<DisplayInfo>) -> Option<usize> {
|
|||||||
let center_x = rect.left + (rect.right - rect.left) / 2;
|
let center_x = rect.left + (rect.right - rect.left) / 2;
|
||||||
let center_y = rect.top + (rect.bottom - rect.top) / 2;
|
let center_y = rect.top + (rect.bottom - rect.top) / 2;
|
||||||
center_x >= display.x
|
center_x >= display.x
|
||||||
&& center_x <= display.x + display.width
|
&& center_x < display.x + display.width
|
||||||
&& center_y >= display.y
|
&& center_y >= display.y
|
||||||
&& center_y <= display.y + display.height
|
&& center_y < display.y + display.height
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user