kwin/src
Bhushan Shah 892b8cf6cb inputmethod: toggle the inputmethod if we get second show request
This is in a way working around bad protocol, input-method-unstable-v1
and also input-method-unstable-v2 does not have a way for input-method
to mark itself as "deactivated". This can happen when e.g. user closes
the virtual keyboard using swiping down or "close keyboard" button in
keyboard.

When this happens, the state between compositor, text_input and
input_method gets out of sync, compositor does not know that input
method got deactivated and hence it will continue sending various events
to it. The quick way around it is to change focus, which makes
compositor send deactivate request to input-method, that puts compositor
and input-method in sync again.

This patch aims to solve this by tracking the last state of input
method, If we know that input method is active and text input sends us
the show event, we toggle the input-method.

I will re-iterate that this is in no way proper solution, ideally
input-method-unstable-v3 or input-method-unstable-v2 even (since it is
not upstream anyway) gains the new request which essentially allows
input-method to sync enabled/disabled state with compositor.
2021-02-18 10:36:39 +05:30
..
3rdparty
decorations
effects
helpers
kcmkwin kcm/kwinrules: Update values on text edit 2021-02-13 22:57:38 +00:00
libinput wayland: Port kwin to SeatInterface::touchDown() changes 2021-02-16 06:54:39 +00:00
libkwineffects
platformsupport
plugins Rename visibleRect to visibleGeometry 2021-02-16 06:56:04 +00:00
qml
scripting
scripts
tabbox
xwl xwayland: Improve handling of Xwayland restarts 2021-02-15 18:09:46 +00:00
abstract_client.cpp Rename visibleRect to visibleGeometry 2021-02-16 06:56:04 +00:00
abstract_client.h
abstract_opengl_context_attribute_builder.cpp
abstract_opengl_context_attribute_builder.h
abstract_output.cpp
abstract_output.h
abstract_wayland_output.cpp
abstract_wayland_output.h
activation.cpp
activities.cpp
activities.h
appmenu.cpp
appmenu.h
atoms.cpp
atoms.h
client_machine.cpp
client_machine.h
CMakeLists.txt xwayland: Manually create sockets 2021-02-11 15:10:01 +00:00
colordevice.cpp
colordevice.h
colormanager.cpp
colormanager.h
composite.cpp
composite.h
config-kwin.h.cmake
cursor.cpp
cursor.h
dbusinterface.cpp
dbusinterface.h
debug_console.cpp
debug_console.h
debug_console.ui
deleted.cpp core: Drop Toplevel::bufferMargins() 2021-02-16 09:06:05 +02:00
deleted.h core: Drop Toplevel::bufferMargins() 2021-02-16 09:06:05 +02:00
dmabuftexture.cpp
dmabuftexture.h
effectloader.cpp
effectloader.h
effects.cpp Rename visibleRect to visibleGeometry 2021-02-16 06:56:04 +00:00
effects.h
egl_context_attribute_builder.cpp
egl_context_attribute_builder.h
events.cpp x11: Emit missing geometry changed signals for Unmanaged 2021-02-16 14:35:26 +02:00
focuschain.cpp
focuschain.h
ftrace.cpp
ftrace.h
geometrytip.cpp
geometrytip.h
gestures.cpp
gestures.h
globalshortcuts.cpp
globalshortcuts.h
group.cpp
group.h
idle_inhibition.cpp
idle_inhibition.h
input.cpp wayland: Fix handling of synthetic touch cancel events 2021-02-16 17:53:30 +00:00
input.h
input_event.cpp
input_event.h
input_event_spy.cpp
input_event_spy.h
inputmethod.cpp inputmethod: toggle the inputmethod if we get second show request 2021-02-18 10:36:39 +05:30
inputmethod.h inputmethod: toggle the inputmethod if we get second show request 2021-02-18 10:36:39 +05:30
inputpanelv1client.cpp
inputpanelv1client.h
inputpanelv1integration.cpp
inputpanelv1integration.h
internal_client.cpp Rename visibleRect to visibleGeometry 2021-02-16 06:56:04 +00:00
internal_client.h
keyboard_input.cpp
keyboard_input.h
keyboard_layout.cpp
keyboard_layout.h
keyboard_layout_switching.cpp
keyboard_layout_switching.h
keyboard_repeat.cpp
keyboard_repeat.h
killwindow.cpp
killwindow.h
kwin.kcfg
kwin.notifyrc
kwinbindings.cpp
layers.cpp
layershellv1client.cpp
layershellv1client.h
layershellv1integration.cpp
layershellv1integration.h
linux_dmabuf.cpp
linux_dmabuf.h
logind.cpp
logind.h
main.cpp
main.h
main_wayland.cpp
main_wayland.h
main_x11.cpp
main_x11.h
Messages.sh
modifier_only_shortcuts.cpp
modifier_only_shortcuts.h
moving_client_x11_filter.cpp
moving_client_x11_filter.h
netinfo.cpp
netinfo.h
onscreennotification.cpp
onscreennotification.h
options.cpp
options.h
org.kde.kappmenu.xml
org.kde.kwin.Compositing.xml
org.kde.kwin.Effects.xml
org.kde.KWin.Plugins.xml
org.kde.KWin.Session.xml
org.kde.KWin.VirtualDesktopManager.xml
org.kde.KWin.xml
osd.cpp
osd.h
outline.cpp
outline.h
overlaywindow.cpp
overlaywindow.h
placement.cpp
placement.h
platform.cpp
platform.h
plugin.cpp
plugin.h
pluginmanager.cpp
pluginmanager.h
pointer_input.cpp
pointer_input.h
popup_input_filter.cpp
popup_input_filter.h
renderjournal.cpp
renderjournal.h
renderloop.cpp
renderloop.h
renderloop_p.h
rootinfo_filter.cpp
rootinfo_filter.h
rulebooksettings.cpp
rulebooksettings.h
rulebooksettingsbase.kcfg
rulebooksettingsbase.kcfgc
rules.cpp
rules.h
rulesettings.kcfg
rulesettings.kcfgc
scene.cpp core: Drop Toplevel::bufferMargins() 2021-02-16 09:06:05 +02:00
scene.h
screenedge.cpp
screenedge.h
screenlockerwatcher.cpp
screenlockerwatcher.h
screens.cpp
screens.h
service_utils.cpp
service_utils.h
settings.kcfgc
shadow.cpp
shadow.h
shortcutdialog.ui
sm.cpp
sm.h
subsurfacemonitor.cpp
subsurfacemonitor.h
syncalarmx11filter.cpp
syncalarmx11filter.h
tablet_input.cpp
tablet_input.h
tabletmodemanager.cpp
tabletmodemanager.h
thumbnailitem.cpp
thumbnailitem.h
toplevel.cpp core: Drop Toplevel::bufferMargins() 2021-02-16 09:06:05 +02:00
toplevel.h core: Drop Toplevel::bufferMargins() 2021-02-16 09:06:05 +02:00
touch_hide_cursor_spy.cpp
touch_hide_cursor_spy.h
touch_input.cpp wayland: Fix handling of synthetic touch cancel events 2021-02-16 17:53:30 +00:00
touch_input.h wayland: Fix handling of synthetic touch cancel events 2021-02-16 17:53:30 +00:00
udev.cpp
udev.h
unmanaged.cpp Rename visibleRect to visibleGeometry 2021-02-16 06:56:04 +00:00
unmanaged.h
useractions.cpp
useractions.h
utils.cpp
utils.h
virtual_terminal.cpp
virtual_terminal.h
virtualdesktops.cpp
virtualdesktops.h
virtualdesktopsdbustypes.cpp
virtualdesktopsdbustypes.h
virtualkeyboard_dbus.cpp
virtualkeyboard_dbus.h
was_user_interaction_x11_filter.cpp
was_user_interaction_x11_filter.h
wayland_server.cpp
wayland_server.h
waylandclient.cpp Rename visibleRect to visibleGeometry 2021-02-16 06:56:04 +00:00
waylandclient.h
waylandshellintegration.cpp
waylandshellintegration.h
window_property_notify_x11_filter.cpp
window_property_notify_x11_filter.h
workspace.cpp
workspace.h
x11client.cpp x11: Simplify X11Client::damageNotifyEvent() 2021-02-17 12:09:23 +00:00
x11client.h core: Drop Toplevel::bufferMargins() 2021-02-16 09:06:05 +02:00
x11eventfilter.cpp
x11eventfilter.h
xcbutils.cpp
xcbutils.h
xcursortheme.cpp
xcursortheme.h
xdgshellclient.cpp wayland: Implement maximized horizontal/vertical states 2021-02-17 14:39:24 +00:00
xdgshellclient.h
xdgshellintegration.cpp
xdgshellintegration.h
xkb.cpp
xkb.h
xkb_qt_mapping.h
xwaylandclient.cpp
xwaylandclient.h