mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-11-04 01:34:32 +00:00 
			
		
		
		
	Platform IME: [windows] call ImmSetCandidateWindow() to position candidate window.
This commit is contained in:
		@@ -61,6 +61,7 @@ Other Changes:
 | 
				
			|||||||
- Platform IME: changed io.ImeSetInputScreenPosFn() to io.SetPlatformImeDataFn() API,
 | 
					- Platform IME: changed io.ImeSetInputScreenPosFn() to io.SetPlatformImeDataFn() API,
 | 
				
			||||||
  now taking a ImGuiPlatformImeData structure which we can more easily extend in the future.
 | 
					  now taking a ImGuiPlatformImeData structure which we can more easily extend in the future.
 | 
				
			||||||
- Platform IME: moved io.ImeWindowHandle to GetMainViewport()->PlatformHandleRaw.
 | 
					- Platform IME: moved io.ImeWindowHandle to GetMainViewport()->PlatformHandleRaw.
 | 
				
			||||||
 | 
					- Platform IME: [windows] call ImmSetCandidateWindow() to position candidate window.
 | 
				
			||||||
- 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]
 | 
				
			||||||
  It would generally not have noticeable side-effect at runtime but would be detected by runtime checkers.
 | 
					  It would generally not have noticeable side-effect at runtime but would be detected by runtime checkers.
 | 
				
			||||||
- Backends: Metal: Added Apple Metal C++ API support. (#4824, #4746) [@luigifcruz]
 | 
					- Backends: Metal: Added Apple Metal C++ API support. (#4824, #4746) [@luigifcruz]
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										15
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								imgui.cpp
									
									
									
									
									
								
							@@ -11512,11 +11512,16 @@ static void SetPlatformImeDataFn_DefaultImpl(ImGuiViewport* viewport, ImGuiPlatf
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (HIMC himc = ::ImmGetContext(hwnd))
 | 
					    if (HIMC himc = ::ImmGetContext(hwnd))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        COMPOSITIONFORM cf;
 | 
					        COMPOSITIONFORM composition_form = {};
 | 
				
			||||||
        cf.ptCurrentPos.x = (LONG)data->InputPos.x;
 | 
					        composition_form.ptCurrentPos.x = (LONG)data->InputPos.x;
 | 
				
			||||||
        cf.ptCurrentPos.y = (LONG)data->InputPos.y;
 | 
					        composition_form.ptCurrentPos.y = (LONG)data->InputPos.y;
 | 
				
			||||||
        cf.dwStyle = CFS_FORCE_POSITION;
 | 
					        composition_form.dwStyle = CFS_FORCE_POSITION;
 | 
				
			||||||
        ::ImmSetCompositionWindow(himc, &cf);
 | 
					        ::ImmSetCompositionWindow(himc, &composition_form);
 | 
				
			||||||
 | 
					        CANDIDATEFORM candidate_form = {};
 | 
				
			||||||
 | 
					        candidate_form.dwStyle = CFS_CANDIDATEPOS;
 | 
				
			||||||
 | 
					        candidate_form.ptCurrentPos.x = (LONG)data->InputPos.x;
 | 
				
			||||||
 | 
					        candidate_form.ptCurrentPos.y = (LONG)data->InputPos.y;
 | 
				
			||||||
 | 
					        ::ImmSetCandidateWindow(himc, &candidate_form);
 | 
				
			||||||
        ::ImmReleaseContext(hwnd, himc);
 | 
					        ::ImmReleaseContext(hwnd, himc);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user