@@ -31,11 +31,14 @@ import androidx.compose.ui.input.key.Key
3131import  androidx.compose.ui.input.key.key 
3232import  androidx.compose.ui.input.key.onKeyEvent 
3333import  androidx.compose.ui.input.key.onPreviewKeyEvent 
34- import  androidx.compose.ui.input.pointer.AwaitPointerEventScope 
3534import  androidx.compose.ui.input.pointer.PointerButtons 
3635import  androidx.compose.ui.input.pointer.PointerEvent 
3736import  androidx.compose.ui.input.pointer.PointerEventType 
3837import  androidx.compose.ui.input.pointer.PointerKeyboardModifiers 
38+ import  androidx.compose.ui.input.pointer.isCtrlPressed 
39+ import  androidx.compose.ui.input.pointer.isPrimaryPressed 
40+ import  androidx.compose.ui.input.pointer.isSecondaryPressed 
41+ import  androidx.compose.ui.input.pointer.isShiftPressed 
3942import  androidx.compose.ui.input.pointer.onPointerEvent 
4043import  androidx.compose.ui.input.pointer.pointerInput 
4144import  androidx.compose.ui.unit.dp 
@@ -45,7 +48,6 @@ import androidx.compose.ui.window.rememberWindowState
4548import  androidx.compose.ui.window.runApplicationTest 
4649import  com.google.common.truth.Truth.assertThat 
4750import  java.awt.Dimension 
48- import  java.awt.Toolkit 
4951import  java.awt.event.KeyEvent 
5052import  java.awt.event.MouseEvent 
5153import  java.awt.event.MouseEvent.BUTTON1 
@@ -54,9 +56,9 @@ import java.awt.event.MouseEvent.BUTTON3_DOWN_MASK
5456import  java.awt.event.MouseEvent.CTRL_DOWN_MASK 
5557import  java.awt.event.MouseEvent.MOUSE_DRAGGED 
5658import  java.awt.event.MouseEvent.MOUSE_PRESSED 
57- import  java.awt.event.MouseEvent.MOUSE_RELEASED 
5859import  java.awt.event.MouseEvent.SHIFT_DOWN_MASK 
5960import  java.awt.event.MouseWheelEvent.WHEEL_UNIT_SCROLL 
61+ import  kotlin.test.assertTrue 
6062import  org.jetbrains.skiko.hostOs 
6163import  org.junit.Test 
6264
@@ -532,23 +534,16 @@ class WindowInputEventTest {
532534
533535        awaitIdle()
534536        assertThat(receivedButtons.size).isEqualTo(1 )
535-         assertThat(receivedButtons.last()).isEqualTo(
536-             PointerButtons (
537-                 //  on macOS ctrl + primary click is treated as secondary click
538-                 isPrimaryPressed =  ! hostOs.isMacOS,
539-                 isSecondaryPressed =  true ,
540-             )
541-         )
537+         receivedButtons.last().let  { buttons -> 
538+             //  on macOS ctrl + primary click is treated as secondary
539+             assertThat(buttons.isPrimaryPressed).isEqualTo(! hostOs.isMacOS)
540+             assertTrue(buttons.isSecondaryPressed)
541+         }
542542        assertThat(receivedKeyboardModifiers.size).isEqualTo(1 )
543-         assertThat(receivedKeyboardModifiers.last()).isEqualTo(
544-             PointerKeyboardModifiers (
545-                 isCtrlPressed =  true ,
546-                 isShiftPressed =  true ,
547-                 isCapsLockOn =  getLockingKeyStateSafe(KeyEvent .VK_CAPS_LOCK ),
548-                 isScrollLockOn =  getLockingKeyStateSafe(KeyEvent .VK_SCROLL_LOCK ),
549-                 isNumLockOn =  getLockingKeyStateSafe(KeyEvent .VK_NUM_LOCK ),
550-             )
551-         )
543+         receivedKeyboardModifiers.last().let  { modifiers -> 
544+             assertTrue(modifiers.isCtrlPressed)
545+             assertTrue(modifiers.isShiftPressed)
546+         }
552547
553548        window.sendMouseWheelEvent(
554549            100 , 50 , WHEEL_UNIT_SCROLL ,
@@ -559,23 +554,16 @@ class WindowInputEventTest {
559554
560555        awaitIdle()
561556        assertThat(receivedButtons.size).isEqualTo(2 )
562-         assertThat(receivedButtons.last()).isEqualTo(
563-             PointerButtons (
564-                 //  on macOS ctrl + primary click is treated as secondary click
565-                 isPrimaryPressed =  ! hostOs.isMacOS,
566-                 isSecondaryPressed =  true ,
567-             )
568-         )
557+         receivedButtons.last().let  { buttons -> 
558+             //  on macOS ctrl + primary click is treated as secondary
559+             assertThat(buttons.isPrimaryPressed).isEqualTo(! hostOs.isMacOS)
560+             assertTrue(buttons.isSecondaryPressed)
561+         }
569562        assertThat(receivedKeyboardModifiers.size).isEqualTo(2 )
570-         assertThat(receivedKeyboardModifiers.last()).isEqualTo(
571-             PointerKeyboardModifiers (
572-                 isCtrlPressed =  true ,
573-                 isShiftPressed =  true ,
574-                 isCapsLockOn =  getLockingKeyStateSafe(KeyEvent .VK_CAPS_LOCK ),
575-                 isScrollLockOn =  getLockingKeyStateSafe(KeyEvent .VK_SCROLL_LOCK ),
576-                 isNumLockOn =  getLockingKeyStateSafe(KeyEvent .VK_NUM_LOCK ),
577-             )
578-         )
563+         receivedKeyboardModifiers.last().let  { modifiers -> 
564+             assertTrue(modifiers.isCtrlPressed)
565+             assertTrue(modifiers.isShiftPressed)
566+         }
579567    }
580568
581569    @Test
@@ -656,42 +644,6 @@ class WindowInputEventTest {
656644        window.dispose()
657645    }
658646
659-     private  fun  getLockingKeyStateSafe (
660-         mask :  Int 
661-     ): Boolean  =  try  {
662-         Toolkit .getDefaultToolkit().getLockingKeyState(mask)
663-     } catch  (_:  Exception ) {
664-         false 
665-     }
666- 
667-     /* *
668-      * Handle only the first received event and drop all the others that are received 
669-      * in a single frame 
670-      */  
671-     private  fun  Modifier.onFirstPointerEvent (
672-         eventType :  PointerEventType ,
673-         onEvent :  AwaitPointerEventScope .(event: PointerEvent ) ->  Unit 
674-     ) =  pointerInput(eventType, onEvent) {
675-         while  (true ) {
676-             awaitPointerEventScope {
677-                 val  event =  awaitEvent(eventType)
678-                 onEvent(event)
679-             }
680-         }
681-     }
682- 
683-     private  suspend  fun  AwaitPointerEventScope.awaitEvent (
684-         eventType :  PointerEventType 
685-     ): PointerEvent  {
686-         var  event:  PointerEvent 
687-         do  {
688-             event =  awaitPointerEvent()
689-         } while  (
690-             event.type !=  eventType
691-         )
692-         return  event
693-     }
694- 
695647    private  val  PointerEvent .pressed get() =  changes.first().pressed
696648    private  val  PointerEvent .position get() =  changes.first().position
697649}
0 commit comments