@@ -1144,7 +1144,7 @@ public void Internal_Tests ()
11441144 Assert . NotNull ( Application . Top ) ;
11451145 var rs = Application . Begin ( Application . Top ) ;
11461146 Assert . Equal ( Application . Top , rs . Toplevel ) ;
1147- Assert . Null ( Application . mouseGrabView ) ;
1147+ Assert . Null ( Application . MouseGrabView ) ;
11481148 Assert . Null ( Application . WantContinuousButtonPressedView ) ;
11491149 Assert . False ( Application . DebugDrawBounds ) ;
11501150 Assert . False ( Application . ShowChild ( Application . Top ) ) ;
@@ -1428,7 +1428,7 @@ public void MouseGrabView_WithNullMouseEventView ()
14281428 iterations ++ ;
14291429 if ( iterations == 0 ) {
14301430 Assert . True ( tf . HasFocus ) ;
1431- Assert . Null ( Application . mouseGrabView ) ;
1431+ Assert . Null ( Application . MouseGrabView ) ;
14321432
14331433 ReflectionTools . InvokePrivate (
14341434 typeof ( Application ) ,
@@ -1439,13 +1439,13 @@ public void MouseGrabView_WithNullMouseEventView ()
14391439 Flags = MouseFlags . ReportMousePosition
14401440 } ) ;
14411441
1442- Assert . Equal ( sv , Application . mouseGrabView ) ;
1442+ Assert . Equal ( sv , Application . MouseGrabView ) ;
14431443
14441444 MessageBox . Query ( "Title" , "Test" , "Ok" ) ;
14451445
1446- Assert . Null ( Application . mouseGrabView ) ;
1446+ Assert . Null ( Application . MouseGrabView ) ;
14471447 } else if ( iterations == 1 ) {
1448- Assert . Equal ( sv , Application . mouseGrabView ) ;
1448+ Assert . Equal ( sv , Application . MouseGrabView ) ;
14491449
14501450 ReflectionTools . InvokePrivate (
14511451 typeof ( Application ) ,
@@ -1456,7 +1456,7 @@ public void MouseGrabView_WithNullMouseEventView ()
14561456 Flags = MouseFlags . ReportMousePosition
14571457 } ) ;
14581458
1459- Assert . Null ( Application . mouseGrabView ) ;
1459+ Assert . Null ( Application . MouseGrabView ) ;
14601460
14611461 ReflectionTools . InvokePrivate (
14621462 typeof ( Application ) ,
@@ -1467,7 +1467,7 @@ public void MouseGrabView_WithNullMouseEventView ()
14671467 Flags = MouseFlags . ReportMousePosition
14681468 } ) ;
14691469
1470- Assert . Null ( Application . mouseGrabView ) ;
1470+ Assert . Null ( Application . MouseGrabView ) ;
14711471
14721472 ReflectionTools . InvokePrivate (
14731473 typeof ( Application ) ,
@@ -1478,17 +1478,80 @@ public void MouseGrabView_WithNullMouseEventView ()
14781478 Flags = MouseFlags . Button1Pressed
14791479 } ) ;
14801480
1481- Assert . Null ( Application . mouseGrabView ) ;
1481+ Assert . Null ( Application . MouseGrabView ) ;
14821482
14831483 Application . RequestStop ( ) ;
14841484 } else if ( iterations == 2 ) {
1485- Assert . Null ( Application . mouseGrabView ) ;
1485+ Assert . Null ( Application . MouseGrabView ) ;
14861486
14871487 Application . RequestStop ( ) ;
14881488 }
14891489 } ;
14901490
14911491 Application . Run ( ) ;
14921492 }
1493+
1494+ [ Fact , AutoInitShutdown ]
1495+ public void MouseGrabView_GrabbedMouse_UnGrabbedMouse ( )
1496+ {
1497+ View grabView = null ;
1498+ var count = 0 ;
1499+
1500+ var view1 = new View ( ) ;
1501+ var view2 = new View ( ) ;
1502+
1503+ Application . GrabbedMouse += Application_GrabbedMouse ;
1504+ Application . UnGrabbedMouse += Application_UnGrabbedMouse ;
1505+
1506+ Application . GrabMouse ( view1 ) ;
1507+ Assert . Equal ( 0 , count ) ;
1508+ Assert . Equal ( grabView , view1 ) ;
1509+ Assert . Equal ( view1 , Application . MouseGrabView ) ;
1510+
1511+ Application . UngrabMouse ( ) ;
1512+ Assert . Equal ( 1 , count ) ;
1513+ Assert . Equal ( grabView , view1 ) ;
1514+ Assert . Null ( Application . MouseGrabView ) ;
1515+
1516+ Application . GrabbedMouse += Application_GrabbedMouse ;
1517+ Application . UnGrabbedMouse += Application_UnGrabbedMouse ;
1518+
1519+ Application . GrabMouse ( view2 ) ;
1520+ Assert . Equal ( 1 , count ) ;
1521+ Assert . Equal ( grabView , view2 ) ;
1522+ Assert . Equal ( view2 , Application . MouseGrabView ) ;
1523+
1524+ Application . UngrabMouse ( ) ;
1525+ Assert . Equal ( 2 , count ) ;
1526+ Assert . Equal ( grabView , view2 ) ;
1527+ Assert . Null ( Application . MouseGrabView ) ;
1528+
1529+ void Application_GrabbedMouse ( View obj )
1530+ {
1531+ if ( count == 0 ) {
1532+ Assert . Equal ( view1 , obj ) ;
1533+ grabView = view1 ;
1534+ } else {
1535+ Assert . Equal ( view2 , obj ) ;
1536+ grabView = view2 ;
1537+ }
1538+
1539+ Application . GrabbedMouse -= Application_GrabbedMouse ;
1540+ }
1541+
1542+ void Application_UnGrabbedMouse ( View obj )
1543+ {
1544+ if ( count == 0 ) {
1545+ Assert . Equal ( view1 , obj ) ;
1546+ Assert . Equal ( grabView , obj ) ;
1547+ } else {
1548+ Assert . Equal ( view2 , obj ) ;
1549+ Assert . Equal ( grabView , obj ) ;
1550+ }
1551+ count ++ ;
1552+
1553+ Application . UnGrabbedMouse -= Application_UnGrabbedMouse ;
1554+ }
1555+ }
14931556 }
14941557}
0 commit comments