summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/render_widget_host_view_qt.cpp15
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: