diff options
-rw-r--r-- | src/core/render_widget_host_view_qt.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index 169e8e54b..131f2a664 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -973,10 +973,17 @@ QVariant RenderWidgetHostViewQt::inputMethodQuery(Qt::InputMethodQuery query) case Qt::ImFont: // TODO: Implement this return QVariant(); - case Qt::ImCursorRectangle: - if (!text_input_manager_ || !text_input_manager_->GetActiveWidget()) - return QVariant(); - return toQt(text_input_manager_->GetSelectionRegion()->caret_rect); + case Qt::ImCursorRectangle: { + if (text_input_manager_) { + if (auto *region = text_input_manager_->GetSelectionRegion()) { + gfx::Rect caretRect = gfx::RectBetweenSelectionBounds(region->anchor, region->focus); + if (caretRect.width() == 0) + caretRect.set_width(1); // IME API on Windows expects a width > 0 + return toQt(caretRect); + } + } + return QVariant(); + } case Qt::ImCursorPosition: return m_cursorPosition; case Qt::ImAnchorPosition: |