4
4
using CommunityToolkit . WinUI . UI ;
5
5
using Microsoft . UI . Xaml ;
6
6
using Microsoft . UI . Xaml . Controls ;
7
+ using Microsoft . UI . Xaml . Input ;
7
8
using Microsoft . UI . Xaml . Shapes ;
8
9
using Windows . ApplicationModel . DataTransfer ;
9
10
using Windows . Storage ;
@@ -142,7 +143,6 @@ private void TabHoverSelected(object sender, object e)
142
143
143
144
private void TabView_TabDragStarting ( TabView sender , TabViewTabDragStartingEventArgs args )
144
145
{
145
- cancelTagDrag = false ;
146
146
var tabViewItemArgs = ( args . Item as TabBarItem ) . NavigationParameter ;
147
147
args . Data . Properties . Add ( TabPathIdentifier , tabViewItemArgs . Serialize ( ) ) ;
148
148
args . Data . RequestedOperation = DataPackageOperation . Move ;
@@ -152,14 +152,14 @@ private void TabView_TabDragStarting(TabView sender, TabViewTabDragStartingEvent
152
152
153
153
// Force focus in order that the keydown event works
154
154
Focus ( FocusState . Programmatic ) ;
155
- PreviewKeyDown += ( s , e ) =>
156
- {
157
- if ( e . Key is Windows . System . VirtualKey . Escape )
158
- {
159
- args . Cancel = true ;
160
- cancelTagDrag = true ;
161
- }
162
- } ;
155
+ cancelTagDrag = false ;
156
+ PreviewKeyDown += DraggingKeyDown ;
157
+ }
158
+
159
+ private void DraggingKeyDown ( object sender , KeyRoutedEventArgs e )
160
+ {
161
+ if ( e . Key is Windows . System . VirtualKey . Escape )
162
+ cancelTagDrag = true ;
163
163
}
164
164
165
165
private void TabView_TabStripDragOver ( object sender , DragEventArgs e )
@@ -217,9 +217,6 @@ private async void TabView_TabStripDrop(object sender, DragEventArgs e)
217
217
218
218
private void TabView_TabDragCompleted ( TabView sender , TabViewTabDragCompletedEventArgs args )
219
219
{
220
- if ( cancelTagDrag )
221
- return ;
222
-
223
220
if ( ApplicationData . Current . LocalSettings . Values . ContainsKey ( TabDropHandledIdentifier ) &&
224
221
( bool ) ApplicationData . Current . LocalSettings . Values [ TabDropHandledIdentifier ] )
225
222
{
@@ -234,10 +231,14 @@ private void TabView_TabDragCompleted(TabView sender, TabViewTabDragCompletedEve
234
231
{
235
232
ApplicationData . Current . LocalSettings . Values . Remove ( TabDropHandledIdentifier ) ;
236
233
}
234
+
235
+ PreviewKeyDown -= DraggingKeyDown ;
237
236
}
238
237
239
238
private async void TabView_TabDroppedOutside ( TabView sender , TabViewTabDroppedOutsideEventArgs args )
240
239
{
240
+ PreviewKeyDown -= DraggingKeyDown ;
241
+
241
242
if ( cancelTagDrag )
242
243
return ;
243
244
0 commit comments