@@ -117,28 +117,29 @@ func (m *windowManager) glfwCursorPosCallback(window *glfw.Window, x, y float64)
117117func (m * windowManager ) handleButtonPhase (window * glfw.Window , action glfw.Action , buttons embedder.PointerButtonMouse ) {
118118 if action == glfw .Press {
119119 m .pointerButton |= buttons
120- // If only one button is pressed then each bits of buttons will be equals to m.pointerButton
121- // 2019-06-18, FlutterPointerPhase with mouse
122- // Refer to (https://github.com/flutter/engine/blob/master/shell/platform/embedder/embedder.h#L280-L314)
120+ // If only one button is pressed then each bits of buttons will be equals
121+ // to m.pointerButton.
123122 if m .pointerButton == buttons {
124123 m .sendPointerEventButton (window , embedder .PointerPhaseDown )
125124 } else {
125+ // if any other buttons are already pressed when a new button is pressed,
126+ // the engine is expecting a Move phase instead of a Down phase.
126127 m .sendPointerEventButton (window , embedder .PointerPhaseMove )
127128 }
128129 m .pointerPhase = embedder .PointerPhaseMove
129130 }
130131
131132 if action == glfw .Release {
132133 m .pointerButton ^= buttons
133- // If all button are released then m.pointerButton will be equals to 0
134- // 2019-06-18, FlutterPointerPhase with mouse
135- // Refer to (https://github.com/flutter/engine/blob/master/shell/platform/embedder/embedder.h#L280-L314)
134+ // If all button are released then m.pointerButton is cleared
136135 if m .pointerButton == 0 {
137136 m .sendPointerEventButton (window , embedder .PointerPhaseUp )
137+ m .pointerPhase = embedder .PointerPhaseHover
138138 } else {
139+ // if any other buttons are still pressed when one button is released
140+ // the engine is expecting a Move phase instead of a Up phase.
139141 m .sendPointerEventButton (window , embedder .PointerPhaseMove )
140142 }
141- m .pointerPhase = embedder .PointerPhaseHover
142143 }
143144}
144145
0 commit comments