Allows to use external virtual keyboards and overall input infrastructure.
Depends on D27338
Lint Errors | Excuse: xxx |
Severity | Location | Code | Message |
---|---|---|---|
Error | input.h:310 | Cppcheck | unknownMacro |
Error | input.h:310 | Cppcheck | unknownMacro |
Error | input.h:310 | Cppcheck | unknownMacro |
Error | input.h:310 | Cppcheck | unknownMacro |
Error | input.h:310 | Cppcheck | unknownMacro |
Error | input.h:310 | Cppcheck | unknownMacro |
No Unit Test Coverage |
Buildable 22383 | |
Build 22401: arc lint + arc unit |
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? |
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. |
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 } |
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. |
So, judging by the source code of maliit, zwp_input_panel_surface_v1 is just yet another surface role, which means we can't use XdgShellClient for it, unfortunately. We need a separate AbstractClient subclass for input panel surfaces.
Took into account the feedback I'd received, split XdgShellClient in two: the XdgShellClient and the WaylandClient which is a parent simpler class that can still deal with surfaces.
I came only halfway through the patch, but I don't think that it's a good idea to keep xdg-shell specific bits in WaylandClient.
abstract_client.h | ||
---|---|---|
869 ↗ | (On Diff #78513) | I don't see where it's implemented. Delete it? By the way, we have killWindow(). |
virtualkeyboard.cpp | ||
135 | Use frameGeometryChanged instead of geometryShapeChanged. | |
wayland_server.cpp | ||
157–160 | Leave it in createSurface(). You can't use xdg-foreign with non xdg_toplevel equivalent surfaces. | |
wayland_server.h | ||
240 | s/createInputPanelSurface/createInputPanelClient/ |
I came only halfway through the patch, but I don't think that it's a good idea to keep xdg-shell specific bits in WaylandClient.
I'm not sure which parts you mean. I tried to keep some bits so it's easier to re-use the class. If there's something that really rubs you the wrong way, I can look into moving.
That said, it seems to me like XdgShellClient could use its own splitting at some point and I don't want to overengineer the process at this stage.