I am the developer of ibus. In ibus im context, gtk_im_context_filter_keypress works in async mode. It means gtk_im_context_filter_keypress will always return TRUE. And if the ibus imcontext does not handle the key event, it will use gdk_event_put to send the event back to client windows.
I guess the problem is because of gnome-do does not use gtk_im_context_set_client_window to set client window correctly. Please check it.
I am the developer of ibus. In ibus im context, gtk_im_ context_ filter_ keypress works in async mode. It means gtk_im_ context_ filter_ keypress will always return TRUE. And if the ibus imcontext does not handle the key event, it will use gdk_event_put to send the event back to client windows.
I guess the problem is because of gnome-do does not use gtk_im_ context_ set_client_ window to set client window correctly. Please check it.