Implement input methods
Needs ReviewPublic

Authored by apol on Wed, Feb 12, 1:39 AM.

Details

Reviewers
None
Group Reviewers
KWin
Summary

Allows to use external virtual keyboards and overall input infrastructure.

Depends on D27338

Diff Detail

Repository
R108 KWin
Branch
master
Lint
Lint ErrorsExcuse: xxx
SeverityLocationCodeMessage
Errorinput.h:310CppcheckunknownMacro
Errorinput.h:310CppcheckunknownMacro
Errorinput.h:310CppcheckunknownMacro
Errorinput.h:310CppcheckunknownMacro
Errorinput.h:310CppcheckunknownMacro
Errorinput.h:310CppcheckunknownMacro
Unit
No Unit Test Coverage
Build Status
Buildable 22383
Build 22401: arc lint + arc unit
apol created this revision.Wed, Feb 12, 1:39 AM
Restricted Application added a project: KWin. · View Herald TranscriptWed, Feb 12, 1:39 AM
Restricted Application added a subscriber: kwin. · View Herald Transcript
apol requested review of this revision.Wed, Feb 12, 1:39 AM
apol retitled this revision from a to Implement input methods.Wed, Feb 12, 1:43 AM
apol edited the summary of this revision. (Show Details)
apol added a reviewer: KWin.
zzag added a subscriber: zzag.Wed, Feb 12, 10:05 AM

FYI, in long term, we want to split XdgShellClient to better match abstractions in the xdg-shell spec and also to clean up code.

xdgshellclient.cpp
89–91

Is zwp_input_panel_surface_v1 yet another surface role, like xdg_toplevel or wl_subsurface?

apol added inline comments.Wed, Feb 12, 1:37 PM
xdgshellclient.cpp
89–91

it's just an interface that provides us a surface and some information on how to place it on the screen.

zzag added inline comments.Thu, Feb 13, 8:20 AM
xdgshellclient.cpp
89–91

I'm a little bit concerned about the case where one wants to get a zwp_input_panel_surface_v1 for a wl_surface which is also an xdg_toplevel or xdg_popup. In that case, the wl_surface will be represented by two XdgShellClient objects!

Perhaps we need to install an InputPanelSurfaceInterface rather than create a new XdgShellClient for it. For what it's worth, that's how we handle plasma surfaces (org_kde_plasma_surface).

void XdgShellClient::installInputPanelSurface(InputPanelSurfaceInterface *surface)
{
    m_inputPanelSurface = surface;

    // a bunch of connects
}
apol added inline comments.Thu, Feb 13, 2:22 PM
xdgshellclient.cpp
89–91

I'm not sure that's a problem. I do know that at the moment the surfaces aren't created at all otherwise, be it from weston-keyboard or maliit (Qt).

@davidedmundson Do you have any ideas how to proceed?

xdgshellclient.cpp
89–91

oh, no.... it seems like zwp_input_panel_surface_v1 is yet another surface role, which means it can't be represented by XdgShellClient.