@@ -686,6 +686,24 @@ void UpdateCursorPos(Renderer *renderer, mpack_node_t cursor_goto) {
686
686
renderer->cursor .col = MPackIntFromArray (cursor_goto_params, 2 );
687
687
}
688
688
689
+ void UpdateImePos (Renderer* renderer) {
690
+ HIMC hIMC = ImmGetContext (renderer->hwnd );
691
+ COMPOSITIONFORM cf = { 0 };
692
+
693
+ cf.dwStyle = CFS_POINT;
694
+ cf.ptCurrentPos .x = renderer->cursor .col * renderer->font_width ;
695
+ cf.ptCurrentPos .y = renderer->cursor .row * renderer->font_height ;
696
+
697
+ if (ImmSetCompositionWindow (hIMC, &cf)) {
698
+ LOGFONTW lf = { 0 };
699
+ lf.lfHeight = static_cast <LONG>(renderer->font_height );
700
+ wcscpy_s (lf.lfFaceName , LF_FACESIZE, renderer->font );
701
+ ImmSetCompositionFontW (hIMC, &lf);
702
+ }
703
+
704
+ ImmReleaseContext (renderer->hwnd , hIMC);
705
+ }
706
+
689
707
void UpdateCursorMode (Renderer *renderer, mpack_node_t mode_change) {
690
708
mpack_node_t mode_change_params = mpack_node_array_at (mode_change, 1 );
691
709
renderer->cursor .mode_info = &renderer->cursor_mode_infos [mpack_node_array_at (mode_change_params, 1 ).data ->value .u ];
@@ -935,6 +953,7 @@ void RendererRedraw(Renderer *renderer, mpack_node_t params) {
935
953
DrawGridLine (renderer, renderer->cursor .row );
936
954
}
937
955
UpdateCursorPos (renderer, redraw_command_arr);
956
+ UpdateImePos (renderer);
938
957
}
939
958
else if (MPackMatchString (redraw_command_name, " mode_info_set" )) {
940
959
UpdateCursorModeInfos (renderer, redraw_command_arr);
0 commit comments