flutter_desktop: get double click time, win
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
5b413bfde2
commit
e229324021
@ -33,8 +33,6 @@ const int kMobileMaxDisplayHeight = 1280;
|
|||||||
const int kDesktopMaxDisplayWidth = 1920;
|
const int kDesktopMaxDisplayWidth = 1920;
|
||||||
const int kDesktopMaxDisplayHeight = 1080;
|
const int kDesktopMaxDisplayHeight = 1080;
|
||||||
|
|
||||||
const int kDesktopDoubleClickTimeMilli = 200;
|
|
||||||
|
|
||||||
const Size kConnectionManagerWindowSize = Size(300, 400);
|
const Size kConnectionManagerWindowSize = Size(300, 400);
|
||||||
// Tabbar transition duration, now we remove the duration
|
// Tabbar transition duration, now we remove the duration
|
||||||
const Duration kTabTransitionDuration = Duration.zero;
|
const Duration kTabTransitionDuration = Duration.zero;
|
||||||
|
@ -57,7 +57,8 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
final _breadCrumbScrollerRemote = ScrollController();
|
final _breadCrumbScrollerRemote = ScrollController();
|
||||||
|
|
||||||
/// [_lastClickTime], [_lastClickEntry] help to handle double click
|
/// [_lastClickTime], [_lastClickEntry] help to handle double click
|
||||||
int _lastClickTime = DateTime.now().millisecondsSinceEpoch;
|
int _lastClickTime =
|
||||||
|
DateTime.now().millisecondsSinceEpoch - bind.getDoubleClickTime() - 1000;
|
||||||
Entry? _lastClickEntry;
|
Entry? _lastClickEntry;
|
||||||
|
|
||||||
final _dropMaskVisible = false.obs; // TODO impl drop mask
|
final _dropMaskVisible = false.obs; // TODO impl drop mask
|
||||||
@ -404,7 +405,7 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
final elapsed = current - _lastClickTime;
|
final elapsed = current - _lastClickTime;
|
||||||
_lastClickTime = current;
|
_lastClickTime = current;
|
||||||
if (_lastClickEntry == entry) {
|
if (_lastClickEntry == entry) {
|
||||||
if (elapsed < kDesktopDoubleClickTimeMilli) {
|
if (elapsed < bind.getDoubleClickTime()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -178,7 +178,7 @@ typedef LabelGetter = Rx<String> Function(String key);
|
|||||||
|
|
||||||
/// [_lastClickTime], help to handle double click
|
/// [_lastClickTime], help to handle double click
|
||||||
int _lastClickTime =
|
int _lastClickTime =
|
||||||
DateTime.now().millisecondsSinceEpoch - kDesktopDoubleClickTimeMilli - 1000;
|
DateTime.now().millisecondsSinceEpoch - bind.getDoubleClickTime() - 1000;
|
||||||
|
|
||||||
class DesktopTab extends StatelessWidget {
|
class DesktopTab extends StatelessWidget {
|
||||||
final bool showLogo;
|
final bool showLogo;
|
||||||
@ -311,7 +311,7 @@ class DesktopTab extends StatelessWidget {
|
|||||||
final current = DateTime.now().millisecondsSinceEpoch;
|
final current = DateTime.now().millisecondsSinceEpoch;
|
||||||
final elapsed = current - _lastClickTime;
|
final elapsed = current - _lastClickTime;
|
||||||
_lastClickTime = current;
|
_lastClickTime = current;
|
||||||
if (elapsed < kDesktopDoubleClickTimeMilli) {
|
if (elapsed < bind.getDoubleClickTime()) {
|
||||||
// onDoubleTap
|
// onDoubleTap
|
||||||
toggleMaximize(isMainWindow)
|
toggleMaximize(isMainWindow)
|
||||||
.then((value) => isMaximized.value = value);
|
.then((value) => isMaximized.value = value);
|
||||||
|
@ -804,8 +804,8 @@ pub fn main_is_root() -> bool {
|
|||||||
is_root()
|
is_root()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main_is_release() -> bool {
|
pub fn get_double_click_time() -> SyncReturn<i32> {
|
||||||
is_release()
|
SyncReturn(crate::platform::get_double_click_time() as _)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main_start_dbus_server() {
|
pub fn main_start_dbus_server() {
|
||||||
|
@ -684,3 +684,10 @@ pub fn check_super_user_permission() -> ResultType<bool> {
|
|||||||
let status = std::process::Command::new("pkexec").arg(arg).status()?;
|
let status = std::process::Command::new("pkexec").arg(arg).status()?;
|
||||||
Ok(status.success() && status.code() == Some(0))
|
Ok(status.success() && status.code() == Some(0))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_double_click_time() -> u32 {
|
||||||
|
// to-do
|
||||||
|
// GtkSettings *settings = gtk_settings_get_default ();
|
||||||
|
// g_object_get (settings, "gtk-double-click-time", &double_click_time, NULL);
|
||||||
|
500 as _
|
||||||
|
}
|
||||||
|
@ -537,3 +537,9 @@ pub fn quit_gui() {
|
|||||||
let () = msg_send!(NSApp(), terminate: nil);
|
let () = msg_send!(NSApp(), terminate: nil);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub fn get_double_click_time() -> u32 {
|
||||||
|
// to-do: https://github.com/servo/core-foundation-rs/blob/786895643140fa0ee4f913d7b4aeb0c4626b2085/cocoa/src/appkit.rs#L2823
|
||||||
|
500 as _
|
||||||
|
}
|
||||||
|
@ -1632,3 +1632,7 @@ pub fn is_foreground_window_elevated() -> ResultType<bool> {
|
|||||||
fn get_current_pid() -> u32 {
|
fn get_current_pid() -> u32 {
|
||||||
unsafe { GetCurrentProcessId() }
|
unsafe { GetCurrentProcessId() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_double_click_time() -> u32 {
|
||||||
|
unsafe { GetDoubleClickTime() }
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user