| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -10,7 +10,8 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//  [X] Platform: OSX clipboard is supported within core Dear ImGui (no specific code in this backend). | 
					 | 
					 | 
					 | 
					//  [X] Platform: OSX clipboard is supported within core Dear ImGui (no specific code in this backend). | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//  [X] Platform: Gamepad support. Enabled with 'io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad'. | 
					 | 
					 | 
					 | 
					//  [X] Platform: Gamepad support. Enabled with 'io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad'. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//  [X] Platform: IME support. | 
					 | 
					 | 
					 | 
					//  [X] Platform: IME support. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//  [X] Platform: Multi-viewport / platform windows. | 
					 | 
					 | 
					 | 
					//  [x] Platform: Multi-viewport / platform windows. | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					//  - [ ] Window size not correctly reported when enabling io.ConfigViewportsNoDecoration | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. | 
					 | 
					 | 
					 | 
					// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need. | 
					 | 
					 | 
					 | 
					// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need. | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -862,9 +863,11 @@ struct ImGuiViewportDataOSX | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					@end | 
					 | 
					 | 
					 | 
					@end | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static void ConvertNSRect(NSScreen* screen, NSRect* r) | 
					 | 
					 | 
					 | 
					static void ConvertNSRect(NSRect* r) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{ | 
					 | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    r->origin.y = screen.frame.size.height - r->origin.y - r->size.height; | 
					 | 
					 | 
					 | 
					    NSRect firstScreenFrame = NSScreen.screens[0].frame; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    IM_ASSERT(firstScreenFrame.origin.x == 0 && firstScreenFrame.origin.y == 0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    r->origin.y = firstScreenFrame.size.height - r->origin.y - r->size.height; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static void ImGui_ImplOSX_CreateWindow(ImGuiViewport* viewport) | 
					 | 
					 | 
					 | 
					static void ImGui_ImplOSX_CreateWindow(ImGuiViewport* viewport) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -875,7 +878,7 @@ static void ImGui_ImplOSX_CreateWindow(ImGuiViewport* viewport) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    NSScreen* screen = bd->Window.screen; | 
					 | 
					 | 
					 | 
					    NSScreen* screen = bd->Window.screen; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    NSRect rect = NSMakeRect(viewport->Pos.x, viewport->Pos.y, viewport->Size.x, viewport->Size.y); | 
					 | 
					 | 
					 | 
					    NSRect rect = NSMakeRect(viewport->Pos.x, viewport->Pos.y, viewport->Size.x, viewport->Size.y); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ConvertNSRect(screen, &rect); | 
					 | 
					 | 
					 | 
					    ConvertNSRect(&rect); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    NSWindowStyleMask styleMask = 0; | 
					 | 
					 | 
					 | 
					    NSWindowStyleMask styleMask = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (viewport->Flags & ImGuiViewportFlags_NoDecoration) | 
					 | 
					 | 
					 | 
					    if (viewport->Flags & ImGuiViewportFlags_NoDecoration) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -945,11 +948,13 @@ static ImVec2 ImGui_ImplOSX_GetWindowPos(ImGuiViewport* viewport) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    IM_ASSERT(data->Window != 0); | 
					 | 
					 | 
					 | 
					    IM_ASSERT(data->Window != 0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    NSWindow* window = data->Window; | 
					 | 
					 | 
					 | 
					    NSWindow* window = data->Window; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    NSScreen* screen = window.screen; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    NSSize size = screen.frame.size; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    NSRect frame = window.frame; | 
					 | 
					 | 
					 | 
					    NSRect frame = window.frame; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    NSRect rect = window.contentLayoutRect; | 
					 | 
					 | 
					 | 
					    NSRect contentRect = window.contentLayoutRect; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return ImVec2(frame.origin.x, size.height - frame.origin.y - rect.size.height); | 
					 | 
					 | 
					 | 
					    if (window.styleMask & NSWindowStyleMaskFullSizeContentView) // No title bar windows should be considered. | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        contentRect = frame; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    NSRect firstScreenFrame = NSScreen.screens[0].frame; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    return ImVec2(frame.origin.x, firstScreenFrame.size.height - frame.origin.y - contentRect.size.height); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static void ImGui_ImplOSX_SetWindowPos(ImGuiViewport* viewport, ImVec2 pos) | 
					 | 
					 | 
					 | 
					static void ImGui_ImplOSX_SetWindowPos(ImGuiViewport* viewport, ImVec2 pos) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -961,7 +966,7 @@ static void ImGui_ImplOSX_SetWindowPos(ImGuiViewport* viewport, ImVec2 pos) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    NSSize size = window.frame.size; | 
					 | 
					 | 
					 | 
					    NSSize size = window.frame.size; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    NSRect r = NSMakeRect(pos.x, pos.y, size.width, size.height); | 
					 | 
					 | 
					 | 
					    NSRect r = NSMakeRect(pos.x, pos.y, size.width, size.height); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ConvertNSRect(window.screen, &r); | 
					 | 
					 | 
					 | 
					    ConvertNSRect(&r); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    [window setFrameOrigin:r.origin]; | 
					 | 
					 | 
					 | 
					    [window setFrameOrigin:r.origin]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1042,10 +1047,15 @@ static void ImGui_ImplOSX_UpdateMonitors() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO(); | 
					 | 
					 | 
					 | 
					    ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    platform_io.Monitors.resize(0); | 
					 | 
					 | 
					 | 
					    platform_io.Monitors.resize(0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    NSRect firstScreenFrame = NSScreen.screens[0].frame; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    IM_ASSERT(firstScreenFrame.origin.x == 0 && firstScreenFrame.origin.y == 0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    for (NSScreen* screen in NSScreen.screens) | 
					 | 
					 | 
					 | 
					    for (NSScreen* screen in NSScreen.screens) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        NSRect frame = screen.frame; | 
					 | 
					 | 
					 | 
					        NSRect frame = screen.frame; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        NSRect visibleFrame = screen.visibleFrame; | 
					 | 
					 | 
					 | 
					        NSRect visibleFrame = screen.visibleFrame; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        ConvertNSRect(&frame); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        ConvertNSRect(&visibleFrame); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ImGuiPlatformMonitor imgui_monitor; | 
					 | 
					 | 
					 | 
					        ImGuiPlatformMonitor imgui_monitor; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        imgui_monitor.MainPos = ImVec2(frame.origin.x, frame.origin.y); | 
					 | 
					 | 
					 | 
					        imgui_monitor.MainPos = ImVec2(frame.origin.x, frame.origin.y); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |