Merge pull request #3193 from Kingtous/master
fix: allowing idle scroll events
This commit is contained in:
		
						commit
						51757b3f9a
					
				| @ -1735,6 +1735,7 @@ Future<void> updateSystemWindowTheme() async { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
| /// macOS only | /// macOS only | ||||||
| /// | /// | ||||||
| /// Note: not found a general solution for rust based AVFoundation bingding. | /// Note: not found a general solution for rust based AVFoundation bingding. | ||||||
| @ -1762,3 +1763,27 @@ Future<PermissionAuthorizeType> osxCanRecordAudio() async { | |||||||
| Future<bool> osxRequestAudio() async { | Future<bool> osxRequestAudio() async { | ||||||
|   return await kMacOSPermChannel.invokeMethod("requestRecordAudio"); |   return await kMacOSPermChannel.invokeMethod("requestRecordAudio"); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | class DraggableNeverScrollableScrollPhysics extends ScrollPhysics { | ||||||
|  |   /// Creates scroll physics that does not let the user scroll. | ||||||
|  |   const DraggableNeverScrollableScrollPhysics({super.parent}); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   DraggableNeverScrollableScrollPhysics applyTo(ScrollPhysics? ancestor) { | ||||||
|  |     return DraggableNeverScrollableScrollPhysics(parent: buildParent(ancestor)); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   bool shouldAcceptUserOffset(ScrollMetrics position) { | ||||||
|  |     // TODO: find a better solution to check if the offset change is caused by the scrollbar. | ||||||
|  |     // Workaround: when dragging with the scrollbar, it always triggers an [IdleScrollActivity]. | ||||||
|  |     if (position is ScrollPositionWithSingleContext) { | ||||||
|  |       // ignore: invalid_use_of_protected_member, invalid_use_of_visible_for_testing_member | ||||||
|  |       return position.activity is IdleScrollActivity; | ||||||
|  |     } | ||||||
|  |     return false; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   bool get allowImplicitScrolling => false; | ||||||
|  | } | ||||||
|  | |||||||
| @ -120,7 +120,7 @@ class _ConnectionPageState extends State<ConnectionPage> | |||||||
|             scrollController: _scrollController, |             scrollController: _scrollController, | ||||||
|             child: CustomScrollView( |             child: CustomScrollView( | ||||||
|               controller: _scrollController, |               controller: _scrollController, | ||||||
|               physics: NeverScrollableScrollPhysics(), |               physics: DraggableNeverScrollableScrollPhysics(), | ||||||
|               slivers: [ |               slivers: [ | ||||||
|                 SliverList( |                 SliverList( | ||||||
|                     delegate: SliverChildListDelegate([ |                     delegate: SliverChildListDelegate([ | ||||||
|  | |||||||
| @ -75,6 +75,7 @@ class _DesktopHomePageState extends State<DesktopHomePage> | |||||||
|           scrollController: _leftPaneScrollController, |           scrollController: _leftPaneScrollController, | ||||||
|           child: SingleChildScrollView( |           child: SingleChildScrollView( | ||||||
|             controller: _leftPaneScrollController, |             controller: _leftPaneScrollController, | ||||||
|  |             physics: DraggableNeverScrollableScrollPhysics(), | ||||||
|             child: Column( |             child: Column( | ||||||
|               children: [ |               children: [ | ||||||
|                 buildTip(context), |                 buildTip(context), | ||||||
|  | |||||||
| @ -128,7 +128,7 @@ class _DesktopSettingPageState extends State<DesktopSettingPage> | |||||||
|                   scrollController: controller, |                   scrollController: controller, | ||||||
|                   child: PageView( |                   child: PageView( | ||||||
|                     controller: controller, |                     controller: controller, | ||||||
|                     physics: NeverScrollableScrollPhysics(), |                     physics: DraggableNeverScrollableScrollPhysics(), | ||||||
|                     children: const [ |                     children: const [ | ||||||
|                       _General(), |                       _General(), | ||||||
|                       _Safety(), |                       _Safety(), | ||||||
| @ -170,7 +170,7 @@ class _DesktopSettingPageState extends State<DesktopSettingPage> | |||||||
|     return DesktopScrollWrapper( |     return DesktopScrollWrapper( | ||||||
|         scrollController: scrollController, |         scrollController: scrollController, | ||||||
|         child: ListView( |         child: ListView( | ||||||
|           physics: NeverScrollableScrollPhysics(), |           physics: DraggableNeverScrollableScrollPhysics(), | ||||||
|           controller: scrollController, |           controller: scrollController, | ||||||
|           children: tabs |           children: tabs | ||||||
|               .asMap() |               .asMap() | ||||||
| @ -234,7 +234,7 @@ class _GeneralState extends State<_General> { | |||||||
|     return DesktopScrollWrapper( |     return DesktopScrollWrapper( | ||||||
|         scrollController: scrollController, |         scrollController: scrollController, | ||||||
|         child: ListView( |         child: ListView( | ||||||
|           physics: NeverScrollableScrollPhysics(), |           physics: DraggableNeverScrollableScrollPhysics(), | ||||||
|           controller: scrollController, |           controller: scrollController, | ||||||
|           children: [ |           children: [ | ||||||
|             theme(), |             theme(), | ||||||
| @ -456,7 +456,7 @@ class _SafetyState extends State<_Safety> with AutomaticKeepAliveClientMixin { | |||||||
|     return DesktopScrollWrapper( |     return DesktopScrollWrapper( | ||||||
|         scrollController: scrollController, |         scrollController: scrollController, | ||||||
|         child: SingleChildScrollView( |         child: SingleChildScrollView( | ||||||
|             physics: NeverScrollableScrollPhysics(), |             physics: DraggableNeverScrollableScrollPhysics(), | ||||||
|             controller: scrollController, |             controller: scrollController, | ||||||
|             child: Column( |             child: Column( | ||||||
|               children: [ |               children: [ | ||||||
| @ -908,7 +908,7 @@ class _NetworkState extends State<_Network> with AutomaticKeepAliveClientMixin { | |||||||
|         scrollController: scrollController, |         scrollController: scrollController, | ||||||
|         child: ListView( |         child: ListView( | ||||||
|             controller: scrollController, |             controller: scrollController, | ||||||
|             physics: NeverScrollableScrollPhysics(), |             physics: DraggableNeverScrollableScrollPhysics(), | ||||||
|             children: [ |             children: [ | ||||||
|               _lock(locked, 'Unlock Network Settings', () { |               _lock(locked, 'Unlock Network Settings', () { | ||||||
|                 locked = false; |                 locked = false; | ||||||
| @ -1094,7 +1094,7 @@ class _DisplayState extends State<_Display> { | |||||||
|         scrollController: scrollController, |         scrollController: scrollController, | ||||||
|         child: ListView( |         child: ListView( | ||||||
|             controller: scrollController, |             controller: scrollController, | ||||||
|             physics: NeverScrollableScrollPhysics(), |             physics: DraggableNeverScrollableScrollPhysics(), | ||||||
|             children: [ |             children: [ | ||||||
|               viewStyle(context), |               viewStyle(context), | ||||||
|               scrollStyle(context), |               scrollStyle(context), | ||||||
| @ -1334,7 +1334,7 @@ class _AccountState extends State<_Account> { | |||||||
|     return DesktopScrollWrapper( |     return DesktopScrollWrapper( | ||||||
|         scrollController: scrollController, |         scrollController: scrollController, | ||||||
|         child: ListView( |         child: ListView( | ||||||
|           physics: NeverScrollableScrollPhysics(), |           physics: DraggableNeverScrollableScrollPhysics(), | ||||||
|           controller: scrollController, |           controller: scrollController, | ||||||
|           children: [ |           children: [ | ||||||
|             _Card(title: 'Account', children: [accountAction()]), |             _Card(title: 'Account', children: [accountAction()]), | ||||||
| @ -1378,7 +1378,7 @@ class _AboutState extends State<_About> { | |||||||
|           scrollController: scrollController, |           scrollController: scrollController, | ||||||
|           child: SingleChildScrollView( |           child: SingleChildScrollView( | ||||||
|             controller: scrollController, |             controller: scrollController, | ||||||
|             physics: NeverScrollableScrollPhysics(), |             physics: DraggableNeverScrollableScrollPhysics(), | ||||||
|             child: _Card(title: '${translate('About')} RustDesk', children: [ |             child: _Card(title: '${translate('About')} RustDesk', children: [ | ||||||
|               Column( |               Column( | ||||||
|                 crossAxisAlignment: CrossAxisAlignment.start, |                 crossAxisAlignment: CrossAxisAlignment.start, | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user