diff options
author | Liang Qi <liang.qi@qt.io> | 2018-11-28 08:46:42 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-11-28 08:46:42 +0100 |
commit | 4b2ab1d0816683dd53311ecb719ac8ede0d5b327 (patch) | |
tree | cd0cf3daf7678af3b265ff62edd78cd321e90489 /src/core/render_widget_host_view_qt.cpp | |
parent | bbee17d60ae390a8c2c53d429cfa552f726a6d45 (diff) | |
parent | ba816f1f5cd5ddb7f5cba32d0c9816bb439dffba (diff) |
Merge remote-tracking branch 'origin/5.12' into dev
Change-Id: Idf2c89bebf5e09855d764808cac487bc4b76faaa
Diffstat (limited to 'src/core/render_widget_host_view_qt.cpp')
-rw-r--r-- | src/core/render_widget_host_view_qt.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index 31a145b44..fc42d5bde 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -54,6 +54,7 @@ #include "content/browser/frame_host/frame_tree.h" #include "content/browser/renderer_host/render_view_host_impl.h" #include "content/common/content_switches_internal.h" +#include "content/browser/renderer_host/render_widget_host_input_event_router.h" #include "content/common/cursors/webcursor.h" #include "content/common/input_messages.h" #include "third_party/skia/include/core/SkColor.h" @@ -274,6 +275,9 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost *widget , m_wheelAckPending(false) , m_pendingResize(false) , m_mouseWheelPhaseHandler(this) + // This frame-sink id is based on what RenderWidgetHostViewChildFrame does: + , m_frameSinkId(base::checked_cast<uint32_t>(widget->GetProcess()->GetID()), + base::checked_cast<uint32_t>(widget->GetRoutingID())) { host()->SetView(this); #ifndef QT_NO_ACCESSIBILITY @@ -291,6 +295,9 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost *widget m_imeHasHiddenTextCapability = context && context->hasCapability(QPlatformInputContext::HiddenTextCapability); m_localSurfaceId = m_localSurfaceIdAllocator.GenerateId(); + + if (host()->delegate() && host()->delegate()->GetInputEventRouter()) + host()->delegate()->GetInputEventRouter()->AddFrameSinkIdOwner(GetFrameSinkId(), this); } RenderWidgetHostViewQt::~RenderWidgetHostViewQt() @@ -1310,14 +1317,9 @@ void RenderWidgetHostViewQt::handleInputMethodEvent(QInputMethodEvent *ev) if (replacementLength > 0) { - int start = ev->replacementStart(); - - if (start >= 0) - replacementRange = gfx::Range(start, start + replacementLength); - else if (m_surroundingText.length() + start >= 0) { - start = m_surroundingText.length() + start; - replacementRange = gfx::Range(start, start + replacementLength); - } + int replacementStart = ev->replacementStart() < 0 ? m_cursorPosition + ev->replacementStart() : ev->replacementStart(); + if (replacementStart >= 0 && replacementStart < m_surroundingText.length()) + replacementRange = gfx::Range(replacementStart, replacementStart + replacementLength); } // There are so-far two known cases, when an empty QInputMethodEvent is received. @@ -1683,7 +1685,7 @@ viz::SurfaceId RenderWidgetHostViewQt::GetCurrentSurfaceId() const const viz::FrameSinkId &RenderWidgetHostViewQt::GetFrameSinkId() const { - return viz::FrameSinkIdAllocator::InvalidFrameSinkId(); + return m_frameSinkId; } const viz::LocalSurfaceId &RenderWidgetHostViewQt::GetLocalSurfaceId() const |