mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Backends: Android: ImGui_ImplAndroid_HandleInputEvent() takes a const AInputEvent* (#7060)
This commit is contained in:
		@@ -156,7 +156,7 @@ static ImGuiKey ImGui_ImplAndroid_KeyCodeToImGuiKey(int32_t key_code)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int32_t ImGui_ImplAndroid_HandleInputEvent(AInputEvent* input_event)
 | 
					int32_t ImGui_ImplAndroid_HandleInputEvent(const AInputEvent* input_event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ImGuiIO& io = ImGui::GetIO();
 | 
					    ImGuiIO& io = ImGui::GetIO();
 | 
				
			||||||
    int32_t event_type = AInputEvent_getType(input_event);
 | 
					    int32_t event_type = AInputEvent_getType(input_event);
 | 
				
			||||||
@@ -221,25 +221,27 @@ int32_t ImGui_ImplAndroid_HandleInputEvent(AInputEvent* input_event)
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
        case AMOTION_EVENT_ACTION_DOWN:
 | 
					        case AMOTION_EVENT_ACTION_DOWN:
 | 
				
			||||||
        case AMOTION_EVENT_ACTION_UP:
 | 
					        case AMOTION_EVENT_ACTION_UP:
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
            // Physical mouse buttons (and probably other physical devices) also invoke the actions AMOTION_EVENT_ACTION_DOWN/_UP,
 | 
					            // Physical mouse buttons (and probably other physical devices) also invoke the actions AMOTION_EVENT_ACTION_DOWN/_UP,
 | 
				
			||||||
            // but we have to process them separately to identify the actual button pressed. This is done below via
 | 
					            // but we have to process them separately to identify the actual button pressed. This is done below via
 | 
				
			||||||
            // AMOTION_EVENT_ACTION_BUTTON_PRESS/_RELEASE. Here, we only process "FINGER" input (and "UNKNOWN", as a fallback).
 | 
					            // AMOTION_EVENT_ACTION_BUTTON_PRESS/_RELEASE. Here, we only process "FINGER" input (and "UNKNOWN", as a fallback).
 | 
				
			||||||
            if((AMotionEvent_getToolType(input_event, event_pointer_index) == AMOTION_EVENT_TOOL_TYPE_FINGER)
 | 
					            int tool_type = AMotionEvent_getToolType(input_event, event_pointer_index);
 | 
				
			||||||
            || (AMotionEvent_getToolType(input_event, event_pointer_index) == AMOTION_EVENT_TOOL_TYPE_UNKNOWN))
 | 
					            if (tool_type == AMOTION_EVENT_TOOL_TYPE_FINGER || tool_type == == AMOTION_EVENT_TOOL_TYPE_UNKNOWN)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                io.AddMousePosEvent(AMotionEvent_getX(input_event, event_pointer_index), AMotionEvent_getY(input_event, event_pointer_index));
 | 
					                io.AddMousePosEvent(AMotionEvent_getX(input_event, event_pointer_index), AMotionEvent_getY(input_event, event_pointer_index));
 | 
				
			||||||
                io.AddMouseButtonEvent(0, event_action == AMOTION_EVENT_ACTION_DOWN);
 | 
					                io.AddMouseButtonEvent(0, event_action == AMOTION_EVENT_ACTION_DOWN);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        case AMOTION_EVENT_ACTION_BUTTON_PRESS:
 | 
					        case AMOTION_EVENT_ACTION_BUTTON_PRESS:
 | 
				
			||||||
        case AMOTION_EVENT_ACTION_BUTTON_RELEASE:
 | 
					        case AMOTION_EVENT_ACTION_BUTTON_RELEASE:
 | 
				
			||||||
            {
 | 
					        {
 | 
				
			||||||
                int32_t button_state = AMotionEvent_getButtonState(input_event);
 | 
					            int32_t button_state = AMotionEvent_getButtonState(input_event);
 | 
				
			||||||
                io.AddMouseButtonEvent(0, (button_state & AMOTION_EVENT_BUTTON_PRIMARY) != 0);
 | 
					            io.AddMouseButtonEvent(0, (button_state & AMOTION_EVENT_BUTTON_PRIMARY) != 0);
 | 
				
			||||||
                io.AddMouseButtonEvent(1, (button_state & AMOTION_EVENT_BUTTON_SECONDARY) != 0);
 | 
					            io.AddMouseButtonEvent(1, (button_state & AMOTION_EVENT_BUTTON_SECONDARY) != 0);
 | 
				
			||||||
                io.AddMouseButtonEvent(2, (button_state & AMOTION_EVENT_BUTTON_TERTIARY) != 0);
 | 
					            io.AddMouseButtonEvent(2, (button_state & AMOTION_EVENT_BUTTON_TERTIARY) != 0);
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        case AMOTION_EVENT_ACTION_HOVER_MOVE: // Hovering: Tool moves while NOT pressed (such as a physical mouse)
 | 
					        case AMOTION_EVENT_ACTION_HOVER_MOVE: // Hovering: Tool moves while NOT pressed (such as a physical mouse)
 | 
				
			||||||
        case AMOTION_EVENT_ACTION_MOVE:       // Touch pointer moves while DOWN
 | 
					        case AMOTION_EVENT_ACTION_MOVE:       // Touch pointer moves while DOWN
 | 
				
			||||||
            io.AddMousePosEvent(AMotionEvent_getX(input_event, event_pointer_index), AMotionEvent_getY(input_event, event_pointer_index));
 | 
					            io.AddMousePosEvent(AMotionEvent_getX(input_event, event_pointer_index), AMotionEvent_getY(input_event, event_pointer_index));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@ struct ANativeWindow;
 | 
				
			|||||||
struct AInputEvent;
 | 
					struct AInputEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IMGUI_IMPL_API bool     ImGui_ImplAndroid_Init(ANativeWindow* window);
 | 
					IMGUI_IMPL_API bool     ImGui_ImplAndroid_Init(ANativeWindow* window);
 | 
				
			||||||
IMGUI_IMPL_API int32_t  ImGui_ImplAndroid_HandleInputEvent(AInputEvent* input_event);
 | 
					IMGUI_IMPL_API int32_t  ImGui_ImplAndroid_HandleInputEvent(const AInputEvent* input_event);
 | 
				
			||||||
IMGUI_IMPL_API void     ImGui_ImplAndroid_Shutdown();
 | 
					IMGUI_IMPL_API void     ImGui_ImplAndroid_Shutdown();
 | 
				
			||||||
IMGUI_IMPL_API void     ImGui_ImplAndroid_NewFrame();
 | 
					IMGUI_IMPL_API void     ImGui_ImplAndroid_NewFrame();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user