Merge pull request #873 from Kingtous/flutter_desktop
fix&opt: adjust conflict plugins & change implementation for window resize fit
This commit is contained in:
commit
ce218f7abf
@ -7,7 +7,6 @@ import 'package:flutter_hbb/desktop/widgets/titlebar_widget.dart';
|
|||||||
import 'package:flutter_hbb/models/model.dart';
|
import 'package:flutter_hbb/models/model.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:tray_manager/tray_manager.dart';
|
import 'package:tray_manager/tray_manager.dart';
|
||||||
import 'package:window_manager/window_manager.dart';
|
|
||||||
|
|
||||||
class DesktopHomePage extends StatefulWidget {
|
class DesktopHomePage extends StatefulWidget {
|
||||||
DesktopHomePage({Key? key}) : super(key: key);
|
DesktopHomePage({Key? key}) : super(key: key);
|
||||||
@ -215,7 +214,7 @@ class _DesktopHomePageState extends State<DesktopHomePage> with TrayListener {
|
|||||||
case "quit":
|
case "quit":
|
||||||
exit(0);
|
exit(0);
|
||||||
case "show":
|
case "show":
|
||||||
windowManager.show();
|
// windowManager.show();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -12,11 +12,11 @@ import 'package:get/get.dart';
|
|||||||
import 'package:get/route_manager.dart';
|
import 'package:get/route_manager.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:wakelock/wakelock.dart';
|
import 'package:wakelock/wakelock.dart';
|
||||||
import 'package:window_manager/window_manager.dart';
|
|
||||||
|
// import 'package:window_manager/window_manager.dart';
|
||||||
|
|
||||||
import '../../common.dart';
|
import '../../common.dart';
|
||||||
import '../../mobile/widgets/dialog.dart';
|
import '../../mobile/widgets/dialog.dart';
|
||||||
import '../../mobile/widgets/gestures.dart';
|
|
||||||
import '../../mobile/widgets/overlay.dart';
|
import '../../mobile/widgets/overlay.dart';
|
||||||
import '../../models/model.dart';
|
import '../../models/model.dart';
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ class RemotePage extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _RemotePageState extends State<RemotePage>
|
class _RemotePageState extends State<RemotePage>
|
||||||
with WindowListener, AutomaticKeepAliveClientMixin {
|
with AutomaticKeepAliveClientMixin {
|
||||||
Timer? _interval;
|
Timer? _interval;
|
||||||
Timer? _timer;
|
Timer? _timer;
|
||||||
bool _showBar = !isWebDesktop;
|
bool _showBar = !isWebDesktop;
|
||||||
@ -69,7 +69,7 @@ class _RemotePageState extends State<RemotePage>
|
|||||||
_physicalFocusNode.requestFocus();
|
_physicalFocusNode.requestFocus();
|
||||||
ffi.ffiModel.updateEventListener(widget.id);
|
ffi.ffiModel.updateEventListener(widget.id);
|
||||||
ffi.listenToMouse(true);
|
ffi.listenToMouse(true);
|
||||||
WindowManager.instance.addListener(this);
|
// WindowManager.instance.addListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -89,7 +89,7 @@ class _RemotePageState extends State<RemotePage>
|
|||||||
if (!Platform.isLinux) {
|
if (!Platform.isLinux) {
|
||||||
Wakelock.disable();
|
Wakelock.disable();
|
||||||
}
|
}
|
||||||
WindowManager.instance.removeListener(this);
|
// WindowManager.instance.removeListener(this);
|
||||||
Get.delete<FFI>(tag: widget.id);
|
Get.delete<FFI>(tag: widget.id);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
@ -286,14 +286,7 @@ class _RemotePageState extends State<RemotePage>
|
|||||||
OverlayEntry(builder: (context) {
|
OverlayEntry(builder: (context) {
|
||||||
return Container(
|
return Container(
|
||||||
color: Colors.black,
|
color: Colors.black,
|
||||||
child: isWebDesktop
|
child: getBodyForDesktopWithListener(keyboard));
|
||||||
? getBodyForDesktopWithListener(keyboard)
|
|
||||||
: SafeArea(
|
|
||||||
child: Container(
|
|
||||||
color: MyTheme.canvasColor,
|
|
||||||
child: _isPhysicalMouse
|
|
||||||
? getBodyForMobile()
|
|
||||||
: getBodyForMobileWithGesture())));
|
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
))),
|
))),
|
||||||
@ -500,123 +493,6 @@ class _RemotePageState extends State<RemotePage>
|
|||||||
/// DoubleFiner -> right click
|
/// DoubleFiner -> right click
|
||||||
/// HoldDrag -> left drag
|
/// HoldDrag -> left drag
|
||||||
|
|
||||||
Widget getBodyForMobileWithGesture() {
|
|
||||||
final touchMode = _ffi.ffiModel.touchMode;
|
|
||||||
return getMixinGestureDetector(
|
|
||||||
child: getBodyForMobile(),
|
|
||||||
onTapUp: (d) {
|
|
||||||
if (touchMode) {
|
|
||||||
_ffi.cursorModel.touch(
|
|
||||||
d.localPosition.dx, d.localPosition.dy, MouseButtons.left);
|
|
||||||
} else {
|
|
||||||
_ffi.tap(MouseButtons.left);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onDoubleTapDown: (d) {
|
|
||||||
if (touchMode) {
|
|
||||||
_ffi.cursorModel.move(d.localPosition.dx, d.localPosition.dy);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onDoubleTap: () {
|
|
||||||
_ffi.tap(MouseButtons.left);
|
|
||||||
_ffi.tap(MouseButtons.left);
|
|
||||||
},
|
|
||||||
onLongPressDown: (d) {
|
|
||||||
if (touchMode) {
|
|
||||||
_ffi.cursorModel.move(d.localPosition.dx, d.localPosition.dy);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onLongPress: () {
|
|
||||||
_ffi.tap(MouseButtons.right);
|
|
||||||
},
|
|
||||||
onDoubleFinerTap: (d) {
|
|
||||||
if (!touchMode) {
|
|
||||||
_ffi.tap(MouseButtons.right);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onHoldDragStart: (d) {
|
|
||||||
if (!touchMode) {
|
|
||||||
_ffi.sendMouse('down', MouseButtons.left);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onHoldDragUpdate: (d) {
|
|
||||||
if (!touchMode) {
|
|
||||||
_ffi.cursorModel.updatePan(d.delta.dx, d.delta.dy, touchMode);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onHoldDragEnd: (_) {
|
|
||||||
if (!touchMode) {
|
|
||||||
_ffi.sendMouse('up', MouseButtons.left);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onOneFingerPanStart: (d) {
|
|
||||||
if (touchMode) {
|
|
||||||
_ffi.cursorModel.move(d.localPosition.dx, d.localPosition.dy);
|
|
||||||
_ffi.sendMouse('down', MouseButtons.left);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onOneFingerPanUpdate: (d) {
|
|
||||||
_ffi.cursorModel.updatePan(d.delta.dx, d.delta.dy, touchMode);
|
|
||||||
},
|
|
||||||
onOneFingerPanEnd: (d) {
|
|
||||||
if (touchMode) {
|
|
||||||
_ffi.sendMouse('up', MouseButtons.left);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// scale + pan event
|
|
||||||
onTwoFingerScaleUpdate: (d) {
|
|
||||||
_ffi.canvasModel.updateScale(d.scale / _scale);
|
|
||||||
_scale = d.scale;
|
|
||||||
_ffi.canvasModel.panX(d.focalPointDelta.dx);
|
|
||||||
_ffi.canvasModel.panY(d.focalPointDelta.dy);
|
|
||||||
},
|
|
||||||
onTwoFingerScaleEnd: (d) {
|
|
||||||
_scale = 1;
|
|
||||||
_ffi.bind
|
|
||||||
.sessionPeerOption(id: widget.id, name: "view-style", value: "");
|
|
||||||
},
|
|
||||||
onThreeFingerVerticalDragUpdate: _ffi.ffiModel.isPeerAndroid
|
|
||||||
? null
|
|
||||||
: (d) {
|
|
||||||
_mouseScrollIntegral += d.delta.dy / 4;
|
|
||||||
if (_mouseScrollIntegral > 1) {
|
|
||||||
_ffi.scroll(1);
|
|
||||||
_mouseScrollIntegral = 0;
|
|
||||||
} else if (_mouseScrollIntegral < -1) {
|
|
||||||
_ffi.scroll(-1);
|
|
||||||
_mouseScrollIntegral = 0;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget getBodyForMobile() {
|
|
||||||
return Container(
|
|
||||||
color: MyTheme.canvasColor,
|
|
||||||
child: Stack(children: [
|
|
||||||
ImagePaint(id: widget.id),
|
|
||||||
CursorPaint(id: widget.id),
|
|
||||||
getHelpTools(),
|
|
||||||
SizedBox(
|
|
||||||
width: 0,
|
|
||||||
height: 0,
|
|
||||||
child: !_showEdit
|
|
||||||
? Container()
|
|
||||||
: TextFormField(
|
|
||||||
textInputAction: TextInputAction.newline,
|
|
||||||
autocorrect: false,
|
|
||||||
enableSuggestions: false,
|
|
||||||
autofocus: true,
|
|
||||||
focusNode: _mobileFocusNode,
|
|
||||||
maxLines: null,
|
|
||||||
initialValue: _value,
|
|
||||||
// trick way to make backspace work always
|
|
||||||
keyboardType: TextInputType.multiline,
|
|
||||||
onChanged: handleInput,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget getBodyForDesktopWithListener(bool keyboard) {
|
Widget getBodyForDesktopWithListener(bool keyboard) {
|
||||||
var paints = <Widget>[
|
var paints = <Widget>[
|
||||||
ImagePaint(
|
ImagePaint(
|
||||||
@ -630,8 +506,26 @@ class _RemotePageState extends State<RemotePage>
|
|||||||
id: widget.id,
|
id: widget.id,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
return Container(
|
paints.add(getHelpTools());
|
||||||
color: MyTheme.canvasColor, child: Stack(children: paints));
|
return MouseRegion(
|
||||||
|
onEnter: (evt) {
|
||||||
|
_ffi.bind.hostStopSystemKeyPropagate(stopped: false);
|
||||||
|
},
|
||||||
|
onExit: (evt) {
|
||||||
|
_ffi.bind.hostStopSystemKeyPropagate(stopped: true);
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
color: MyTheme.canvasColor,
|
||||||
|
child: LayoutBuilder(builder: (context, constraints) {
|
||||||
|
Future.delayed(Duration.zero, () {
|
||||||
|
Provider.of<CanvasModel>(context, listen: false)
|
||||||
|
.updateViewStyle();
|
||||||
|
});
|
||||||
|
return Stack(
|
||||||
|
children: paints,
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
int lastMouseDownButtons = 0;
|
int lastMouseDownButtons = 0;
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
const sidebarColor = Color(0xFF0C6AF6);
|
const sidebarColor = Color(0xFF0C6AF6);
|
||||||
@ -20,47 +19,51 @@ class DesktopTitleBar extends StatelessWidget {
|
|||||||
colors: [backgroundStartColor, backgroundEndColor],
|
colors: [backgroundStartColor, backgroundEndColor],
|
||||||
stops: [0.0, 1.0]),
|
stops: [0.0, 1.0]),
|
||||||
),
|
),
|
||||||
child: WindowTitleBarBox(
|
|
||||||
child: SizedBox(
|
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: MoveWindow(
|
child: child ?? Offstage(),)
|
||||||
child: child,
|
// const WindowButtons()
|
||||||
)),
|
|
||||||
const WindowButtons()
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final buttonColors = WindowButtonColors(
|
// final buttonColors = WindowButtonColors(
|
||||||
iconNormal: const Color(0xFF805306),
|
// iconNormal: const Color(0xFF805306),
|
||||||
mouseOver: const Color(0xFFF6A00C),
|
// mouseOver: const Color(0xFFF6A00C),
|
||||||
mouseDown: const Color(0xFF805306),
|
// mouseDown: const Color(0xFF805306),
|
||||||
iconMouseOver: const Color(0xFF805306),
|
// iconMouseOver: const Color(0xFF805306),
|
||||||
iconMouseDown: const Color(0xFFFFD500));
|
// iconMouseDown: const Color(0xFFFFD500));
|
||||||
|
//
|
||||||
final closeButtonColors = WindowButtonColors(
|
// final closeButtonColors = WindowButtonColors(
|
||||||
mouseOver: const Color(0xFFD32F2F),
|
// mouseOver: const Color(0xFFD32F2F),
|
||||||
mouseDown: const Color(0xFFB71C1C),
|
// mouseDown: const Color(0xFFB71C1C),
|
||||||
iconNormal: const Color(0xFF805306),
|
// iconNormal: const Color(0xFF805306),
|
||||||
iconMouseOver: Colors.white);
|
// iconMouseOver: Colors.white);
|
||||||
|
//
|
||||||
class WindowButtons extends StatelessWidget {
|
// class WindowButtons extends StatelessWidget {
|
||||||
const WindowButtons({Key? key}) : super(key: key);
|
// const WindowButtons({Key? key}) : super(key: key);
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
Widget build(BuildContext context) {
|
// Widget build(BuildContext context) {
|
||||||
return Row(
|
// return Row(
|
||||||
children: [
|
// children: [
|
||||||
MinimizeWindowButton(colors: buttonColors),
|
// MinimizeWindowButton(colors: buttonColors, onPressed: () {
|
||||||
MaximizeWindowButton(colors: buttonColors),
|
// windowManager.minimize();
|
||||||
CloseWindowButton(colors: closeButtonColors),
|
// },),
|
||||||
],
|
// MaximizeWindowButton(colors: buttonColors, onPressed: () async {
|
||||||
);
|
// if (await windowManager.isMaximized()) {
|
||||||
}
|
// windowManager.restore();
|
||||||
}
|
// } else {
|
||||||
|
// windowManager.maximize();
|
||||||
|
// }
|
||||||
|
// },),
|
||||||
|
// CloseWindowButton(colors: closeButtonColors, onPressed: () {
|
||||||
|
// windowManager.close();
|
||||||
|
// },),
|
||||||
|
// ],
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_hbb/desktop/pages/desktop_home_page.dart';
|
import 'package:flutter_hbb/desktop/pages/desktop_home_page.dart';
|
||||||
import 'package:flutter_hbb/desktop/screen/desktop_file_transfer_screen.dart';
|
import 'package:flutter_hbb/desktop/screen/desktop_file_transfer_screen.dart';
|
||||||
@ -9,7 +8,7 @@ import 'package:flutter_hbb/utils/multi_window_manager.dart';
|
|||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
import 'package:get/route_manager.dart';
|
import 'package:get/route_manager.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:window_manager/window_manager.dart';
|
// import 'package:window_manager/window_manager.dart';
|
||||||
|
|
||||||
import 'common.dart';
|
import 'common.dart';
|
||||||
import 'mobile/pages/home_page.dart';
|
import 'mobile/pages/home_page.dart';
|
||||||
@ -38,7 +37,6 @@ void runRustDeskApp(List<String> args) async {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// main window
|
// main window
|
||||||
await windowManager.ensureInitialized();
|
|
||||||
if (args.isNotEmpty && args.first == 'multi_window') {
|
if (args.isNotEmpty && args.first == 'multi_window') {
|
||||||
windowId = int.parse(args[1]);
|
windowId = int.parse(args[1]);
|
||||||
final argument = args[2].isEmpty
|
final argument = args[2].isEmpty
|
||||||
@ -59,17 +57,11 @@ void runRustDeskApp(List<String> args) async {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// await windowManager.ensureInitialized();
|
||||||
// disable tray
|
// disable tray
|
||||||
// initTray();
|
// initTray();
|
||||||
gFFI.serverModel.startService();
|
gFFI.serverModel.startService();
|
||||||
runApp(App());
|
runApp(App());
|
||||||
doWhenWindowReady(() {
|
|
||||||
const initialSize = Size(1280, 720);
|
|
||||||
appWindow.minSize = initialSize;
|
|
||||||
appWindow.size = initialSize;
|
|
||||||
appWindow.alignment = Alignment.center;
|
|
||||||
appWindow.show();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -891,9 +891,7 @@ class FFI {
|
|||||||
|
|
||||||
/// Connect with the given [id]. Only transfer file if [isFileTransfer].
|
/// Connect with the given [id]. Only transfer file if [isFileTransfer].
|
||||||
void connect(String id, {bool isFileTransfer = false}) {
|
void connect(String id, {bool isFileTransfer = false}) {
|
||||||
if (isFileTransfer) {
|
if (!isFileTransfer) {
|
||||||
setByName('connect_file_transfer', id);
|
|
||||||
} else {
|
|
||||||
chatModel.resetClientMode();
|
chatModel.resetClientMode();
|
||||||
canvasModel.id = id;
|
canvasModel.id = id;
|
||||||
imageModel._id = id;
|
imageModel._id = id;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include "my_application.h"
|
#include "my_application.h"
|
||||||
|
|
||||||
#include <flutter_linux/flutter_linux.h>
|
#include <flutter_linux/flutter_linux.h>
|
||||||
#include <bitsdojo_window_linux/bitsdojo_window_plugin.h>
|
// #include <bitsdojo_window_linux/bitsdojo_window_plugin.h>
|
||||||
#ifdef GDK_WINDOWING_X11
|
#ifdef GDK_WINDOWING_X11
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
#endif
|
#endif
|
||||||
@ -48,8 +48,8 @@ static void my_application_activate(GApplication* application) {
|
|||||||
gtk_window_set_title(window, "rustdesk");
|
gtk_window_set_title(window, "rustdesk");
|
||||||
}
|
}
|
||||||
|
|
||||||
auto bdw = bitsdojo_window_from(window); // <--- add this line
|
// auto bdw = bitsdojo_window_from(window); // <--- add this line
|
||||||
bdw->setCustomFrame(true); // <-- add this line
|
// bdw->setCustomFrame(true); // <-- add this line
|
||||||
gtk_window_set_default_size(window, 1280, 720); // <-- comment this line
|
gtk_window_set_default_size(window, 1280, 720); // <-- comment this line
|
||||||
gtk_widget_show(GTK_WIDGET(window));
|
gtk_widget_show(GTK_WIDGET(window));
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import Cocoa
|
import Cocoa
|
||||||
import FlutterMacOS
|
import FlutterMacOS
|
||||||
import bitsdojo_window_macos
|
// import bitsdojo_window_macos
|
||||||
|
|
||||||
class MainFlutterWindow: BitsdojoWindow {
|
class MainFlutterWindow: NSWindow {
|
||||||
override func awakeFromNib() {
|
override func awakeFromNib() {
|
||||||
if (!rustdesk_core_main()){
|
if (!rustdesk_core_main()){
|
||||||
print("Rustdesk core returns false, exiting without launching Flutter app")
|
print("Rustdesk core returns false, exiting without launching Flutter app")
|
||||||
@ -18,7 +18,7 @@ class MainFlutterWindow: BitsdojoWindow {
|
|||||||
super.awakeFromNib()
|
super.awakeFromNib()
|
||||||
}
|
}
|
||||||
|
|
||||||
override func bitsdojo_window_configure() -> UInt {
|
// override func bitsdojo_window_configure() -> UInt {
|
||||||
return BDW_CUSTOM_FRAME | BDW_HIDE_ON_STARTUP
|
// return BDW_CUSTOM_FRAME | BDW_HIDE_ON_STARTUP
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,8 @@ void wire_rustdesk_core_main(int64_t port_);
|
|||||||
|
|
||||||
void wire_start_global_event_stream(int64_t port_);
|
void wire_start_global_event_stream(int64_t port_);
|
||||||
|
|
||||||
|
void wire_host_stop_system_key_propagate(int64_t port_, bool stopped);
|
||||||
|
|
||||||
void wire_session_connect(int64_t port_, struct wire_uint_8_list *id, bool is_file_transfer);
|
void wire_session_connect(int64_t port_, struct wire_uint_8_list *id, bool is_file_transfer);
|
||||||
|
|
||||||
void wire_get_session_remember(int64_t port_, struct wire_uint_8_list *id);
|
void wire_get_session_remember(int64_t port_, struct wire_uint_8_list *id);
|
||||||
@ -170,6 +172,7 @@ static int64_t dummy_method_to_enforce_bundling(void) {
|
|||||||
int64_t dummy_var = 0;
|
int64_t dummy_var = 0;
|
||||||
dummy_var ^= ((int64_t) (void*) wire_rustdesk_core_main);
|
dummy_var ^= ((int64_t) (void*) wire_rustdesk_core_main);
|
||||||
dummy_var ^= ((int64_t) (void*) wire_start_global_event_stream);
|
dummy_var ^= ((int64_t) (void*) wire_start_global_event_stream);
|
||||||
|
dummy_var ^= ((int64_t) (void*) wire_host_stop_system_key_propagate);
|
||||||
dummy_var ^= ((int64_t) (void*) wire_session_connect);
|
dummy_var ^= ((int64_t) (void*) wire_session_connect);
|
||||||
dummy_var ^= ((int64_t) (void*) wire_get_session_remember);
|
dummy_var ^= ((int64_t) (void*) wire_get_session_remember);
|
||||||
dummy_var ^= ((int64_t) (void*) wire_get_session_toggle_option);
|
dummy_var ^= ((int64_t) (void*) wire_get_session_toggle_option);
|
||||||
|
@ -36,41 +36,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.8.2"
|
version: "2.8.2"
|
||||||
bitsdojo_window:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: bitsdojo_window
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.2"
|
|
||||||
bitsdojo_window_linux:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: bitsdojo_window_linux
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.2"
|
|
||||||
bitsdojo_window_macos:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: bitsdojo_window_macos
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.2"
|
|
||||||
bitsdojo_window_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: bitsdojo_window_platform_interface
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.2"
|
|
||||||
bitsdojo_window_windows:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: bitsdojo_window_windows
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.2"
|
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -221,11 +186,9 @@ packages:
|
|||||||
desktop_multi_window:
|
desktop_multi_window:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "../../rustdesk_desktop_multi_window"
|
||||||
ref: "704718b2853723b615675e048f1f385cbfb209a6"
|
relative: true
|
||||||
resolved-ref: "704718b2853723b615675e048f1f385cbfb209a6"
|
source: path
|
||||||
url: "https://github.com/Kingtous/rustdesk_desktop_multi_window"
|
|
||||||
source: git
|
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
device_info_plus:
|
device_info_plus:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
@ -785,13 +748,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.0"
|
version: "3.1.0"
|
||||||
screen_retriever:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: screen_retriever
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.2"
|
|
||||||
settings_ui:
|
settings_ui:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1105,13 +1061,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.1"
|
version: "2.6.1"
|
||||||
window_manager:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: window_manager
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "0.2.5"
|
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -58,12 +58,12 @@ dependencies:
|
|||||||
url: https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge
|
url: https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge
|
||||||
ref: master
|
ref: master
|
||||||
path: frb_dart
|
path: frb_dart
|
||||||
window_manager: ^0.2.5
|
# window_manager: ^0.2.5
|
||||||
desktop_multi_window:
|
desktop_multi_window:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/Kingtous/rustdesk_desktop_multi_window
|
url: https://github.com/Kingtous/rustdesk_desktop_multi_window
|
||||||
ref: 704718b2853723b615675e048f1f385cbfb209a6
|
ref: c7d97cb6615f2def34f8bad4def01af9e0077beb
|
||||||
bitsdojo_window: ^0.1.2
|
# bitsdojo_window: ^0.1.2
|
||||||
freezed_annotation: ^2.0.3
|
freezed_annotation: ^2.0.3
|
||||||
tray_manager: 0.1.7
|
tray_manager: 0.1.7
|
||||||
get: ^4.6.5
|
get: ^4.6.5
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
#include "flutter_window.h"
|
#include "flutter_window.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include <bitsdojo_window_windows/bitsdojo_window_plugin.h>
|
// #include <bitsdojo_window_windows/bitsdojo_window_plugin.h>
|
||||||
|
|
||||||
typedef bool (*FUNC_RUSTDESK_CORE_MAIN)(void);
|
typedef bool (*FUNC_RUSTDESK_CORE_MAIN)(void);
|
||||||
|
|
||||||
auto bdw = bitsdojo_window_configure(BDW_CUSTOM_FRAME | BDW_HIDE_ON_STARTUP);
|
// auto bdw = bitsdojo_window_configure(BDW_CUSTOM_FRAME | BDW_HIDE_ON_STARTUP);
|
||||||
int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
|
int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
|
||||||
_In_ wchar_t *command_line, _In_ int show_command)
|
_In_ wchar_t *command_line, _In_ int show_command)
|
||||||
{
|
{
|
||||||
|
@ -69,6 +69,11 @@ pub fn start_global_event_stream(s: StreamSink<String>) -> ResultType<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn host_stop_system_key_propagate(stopped: bool) {
|
||||||
|
#[cfg(windows)]
|
||||||
|
crate::platform::windows::stop_system_key_propagate(stopped);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn session_connect(
|
pub fn session_connect(
|
||||||
events2ui: StreamSink<EventToUI>,
|
events2ui: StreamSink<EventToUI>,
|
||||||
id: String,
|
id: String,
|
||||||
|
Loading…
Reference in New Issue
Block a user