mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-30 20:51:06 +01:00 
			
		
		
		
	Backends: OSX: Fix building with old Xcode versions.
Builds have failed on Xcode versions that do not yet support `@available` or do not have new APIs (that are unavailable on target OS version) defined at all. Using true build time version checks fixes these issues.
This commit is contained in:
		| @@ -23,6 +23,7 @@ | |||||||
|  |  | ||||||
| // CHANGELOG | // CHANGELOG | ||||||
| // (minor and older changes stripped away, please see git history for details) | // (minor and older changes stripped away, please see git history for details) | ||||||
|  | //  2022-01-31: Fix building with old Xcode versions that are missing gamepad features. | ||||||
| //  2022-01-26: Inputs: replaced short-lived io.AddKeyModsEvent() (added two weeks ago)with io.AddKeyEvent() using ImGuiKey_ModXXX flags. Sorry for the confusion. | //  2022-01-26: Inputs: replaced short-lived io.AddKeyModsEvent() (added two weeks ago)with io.AddKeyEvent() using ImGuiKey_ModXXX flags. Sorry for the confusion. | ||||||
| //  2021-01-20: Inputs: calling new io.AddKeyAnalogEvent() for gamepad support, instead of writing directly to io.NavInputs[]. | //  2021-01-20: Inputs: calling new io.AddKeyAnalogEvent() for gamepad support, instead of writing directly to io.NavInputs[]. | ||||||
| //  2022-01-17: Inputs: calling new io.AddMousePosEvent(), io.AddMouseButtonEvent(), io.AddMouseWheelEvent() API (1.87+). | //  2022-01-17: Inputs: calling new io.AddMousePosEvent(), io.AddMouseButtonEvent(), io.AddMouseWheelEvent() API (1.87+). | ||||||
| @@ -46,6 +47,10 @@ | |||||||
| //  2018-11-30: Misc: Setting up io.BackendPlatformName so it can be displayed in the About Window. | //  2018-11-30: Misc: Setting up io.BackendPlatformName so it can be displayed in the About Window. | ||||||
| //  2018-07-07: Initial version. | //  2018-07-07: Initial version. | ||||||
|  |  | ||||||
|  | #define APPLE_HAS_BUTTON_OPTIONS (__IPHONE_OS_VERSION_MIN_REQUIRED >= 130000 || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500 || __TV_OS_VERSION_MIN_REQUIRED >= 130000) | ||||||
|  | #define APPLE_HAS_CONTROLLER     (__IPHONE_OS_VERSION_MIN_REQUIRED >= 140000 || __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000 || __TV_OS_VERSION_MIN_REQUIRED >= 140000) | ||||||
|  | #define APPLE_HAS_THUMBSTICKS    (__IPHONE_OS_VERSION_MIN_REQUIRED >= 120100 || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101401 || __TV_OS_VERSION_MIN_REQUIRED >= 120100) | ||||||
|  |  | ||||||
| @class ImFocusObserver; | @class ImFocusObserver; | ||||||
| @class KeyEventResponder; | @class KeyEventResponder; | ||||||
|  |  | ||||||
| @@ -490,12 +495,11 @@ static void ImGui_ImplOSX_UpdateGamepads() | |||||||
|     if ((io.ConfigFlags & ImGuiConfigFlags_NavEnableGamepad) == 0) |     if ((io.ConfigFlags & ImGuiConfigFlags_NavEnableGamepad) == 0) | ||||||
|         return; |         return; | ||||||
|  |  | ||||||
|     GCController* controller; | #if APPLE_HAS_CONTROLLER | ||||||
|     if (@available(macOS 11.0, *)) |     GCController* controller = GCController.current; | ||||||
|         controller = GCController.current; | #else | ||||||
|     else |     GCController* controller = GCController.controllers.firstObject; | ||||||
|         controller = GCController.controllers.firstObject; | #endif | ||||||
|  |  | ||||||
|     if (controller == nil || controller.extendedGamepad == nil) |     if (controller == nil || controller.extendedGamepad == nil) | ||||||
|     { |     { | ||||||
|         io.BackendFlags &= ~ImGuiBackendFlags_HasGamepad; |         io.BackendFlags &= ~ImGuiBackendFlags_HasGamepad; | ||||||
| @@ -509,11 +513,10 @@ static void ImGui_ImplOSX_UpdateGamepads() | |||||||
|     #define MAP_BUTTON(KEY_NO, BUTTON_NAME)       { io.AddKeyEvent(KEY_NO, gp.BUTTON_NAME.isPressed); } |     #define MAP_BUTTON(KEY_NO, BUTTON_NAME)       { io.AddKeyEvent(KEY_NO, gp.BUTTON_NAME.isPressed); } | ||||||
|     #define MAP_ANALOG(KEY_NO, AXIS_NAME, V0, V1) { float vn = (float)(gp.AXIS_NAME.value - V0) / (float)(V1 - V0); vn = IM_SATURATE(vn); io.AddKeyAnalogEvent(KEY_NO, vn > 0.1f, vn); } |     #define MAP_ANALOG(KEY_NO, AXIS_NAME, V0, V1) { float vn = (float)(gp.AXIS_NAME.value - V0) / (float)(V1 - V0); vn = IM_SATURATE(vn); io.AddKeyAnalogEvent(KEY_NO, vn > 0.1f, vn); } | ||||||
|     const float thumb_dead_zone = 0.0f; |     const float thumb_dead_zone = 0.0f; | ||||||
|     if (@available(macOS 10.15, *)) |  | ||||||
|     { | #if APPLE_HAS_BUTTON_OPTIONS | ||||||
|         MAP_BUTTON(ImGuiKey_GamepadStart,           buttonMenu); |  | ||||||
|     MAP_BUTTON(ImGuiKey_GamepadBack,            buttonOptions); |     MAP_BUTTON(ImGuiKey_GamepadBack,            buttonOptions); | ||||||
|     } | #endif | ||||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceDown,        buttonA);              // Xbox A, PS Cross |     MAP_BUTTON(ImGuiKey_GamepadFaceDown,        buttonA);              // Xbox A, PS Cross | ||||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceRight,       buttonB);              // Xbox B, PS Circle |     MAP_BUTTON(ImGuiKey_GamepadFaceRight,       buttonB);              // Xbox B, PS Circle | ||||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceLeft,        buttonX);              // Xbox X, PS Square |     MAP_BUTTON(ImGuiKey_GamepadFaceLeft,        buttonX);              // Xbox X, PS Square | ||||||
| @@ -526,11 +529,10 @@ static void ImGui_ImplOSX_UpdateGamepads() | |||||||
|     MAP_ANALOG(ImGuiKey_GamepadR1,              rightShoulder, 0.0f, 1.0f); |     MAP_ANALOG(ImGuiKey_GamepadR1,              rightShoulder, 0.0f, 1.0f); | ||||||
|     MAP_ANALOG(ImGuiKey_GamepadL2,              leftTrigger,  0.0f, 1.0f); |     MAP_ANALOG(ImGuiKey_GamepadL2,              leftTrigger,  0.0f, 1.0f); | ||||||
|     MAP_ANALOG(ImGuiKey_GamepadR2,              rightTrigger, 0.0f, 1.0f); |     MAP_ANALOG(ImGuiKey_GamepadR2,              rightTrigger, 0.0f, 1.0f); | ||||||
|     if (@available(macOS 10.14.1, *)) | #if APPLE_HAS_THUMBSTICKS | ||||||
|     { |  | ||||||
|     MAP_BUTTON(ImGuiKey_GamepadL3,              leftThumbstickButton); |     MAP_BUTTON(ImGuiKey_GamepadL3,              leftThumbstickButton); | ||||||
|     MAP_BUTTON(ImGuiKey_GamepadR3,              rightThumbstickButton); |     MAP_BUTTON(ImGuiKey_GamepadR3,              rightThumbstickButton); | ||||||
|     } | #endif | ||||||
|     MAP_ANALOG(ImGuiKey_GamepadLStickLeft,      leftThumbstick.xAxis,  -thumb_dead_zone, -1.0f); |     MAP_ANALOG(ImGuiKey_GamepadLStickLeft,      leftThumbstick.xAxis,  -thumb_dead_zone, -1.0f); | ||||||
|     MAP_ANALOG(ImGuiKey_GamepadLStickRight,     leftThumbstick.xAxis,  +thumb_dead_zone, +1.0f); |     MAP_ANALOG(ImGuiKey_GamepadLStickRight,     leftThumbstick.xAxis,  +thumb_dead_zone, +1.0f); | ||||||
|     MAP_ANALOG(ImGuiKey_GamepadLStickUp,        leftThumbstick.yAxis,  +thumb_dead_zone, +1.0f); |     MAP_ANALOG(ImGuiKey_GamepadLStickUp,        leftThumbstick.yAxis,  +thumb_dead_zone, +1.0f); | ||||||
|   | |||||||
| @@ -150,6 +150,7 @@ Other Changes: | |||||||
| - Backends: OSX: Submit gamepad data using io.AddKeyEvent/AddKeyAnalogEvent() functions, stopped writing to io.NavInputs[]. (#4858) | - Backends: OSX: Submit gamepad data using io.AddKeyEvent/AddKeyAnalogEvent() functions, stopped writing to io.NavInputs[]. (#4858) | ||||||
| - Backends: OSX: Added basic Platform IME support. (#3108, #2598) [@liuliu] | - Backends: OSX: Added basic Platform IME support. (#3108, #2598) [@liuliu] | ||||||
| - Backends: OSX: Fix Game Controller nav mapping to use shoulder for both focusing and tweak speed. (#4759) | - Backends: OSX: Fix Game Controller nav mapping to use shoulder for both focusing and tweak speed. (#4759) | ||||||
|  | - Backends: OSX: Fix building with old Xcode versions that are missing gamepad features. [@rokups] | ||||||
| - Backends: Android, GLUT: Submit keys using io.AddKeyEvent(). Submit keymods using io.AddKeyModsEvent() at the same time. (#2625) | - Backends: Android, GLUT: Submit keys using io.AddKeyEvent(). Submit keymods using io.AddKeyModsEvent() at the same time. (#2625) | ||||||
| - Backends: Android, GLUT: Submit mouse data using io.AddMousePosEvent(), AddMouseButtonEvent(), AddMouseWheelEvent() functions. (#4858) | - Backends: Android, GLUT: Submit mouse data using io.AddMousePosEvent(), AddMouseButtonEvent(), AddMouseWheelEvent() functions. (#4858) | ||||||
| - Backends: OpenGL3: Fixed a buffer overflow in imgui_impl_opengl3_loader.h init (added in 1.86). (#4468, #4830) [@dymk] | - Backends: OpenGL3: Fixed a buffer overflow in imgui_impl_opengl3_loader.h init (added in 1.86). (#4468, #4830) [@dymk] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user