Status of LO embedding inside other processes windows?
Michael Stahl
mstahl at redhat.com
Thu Feb 22 11:10:56 UTC 2018
On 21.02.2018 16:55, Robert Marcano wrote:
> Greetings. I have been playing with the developers guide example [1] for
> embedding LO inside a Java window (Swing toolkit). The example works on
> a Windows host, but on Linux I found the following problems (in the
> order I found)
>
> 1- When the host Java application is running on a Wayland session (Java
> Swing is still an X11 program), there is a crash. IIRC LO still is a X11
> based application (or at least the Fedora compiled version is using the
> X11 GTK back-end)
>
> 2- Switched to an X11 desktop session, there was no crash this time, but
> the document was not shown embedded on the Java window, it was a
> floating window with no window controls, unresponsive to the user.
>
> 3- Run the same application with the environment variable
> SAL_USE_VCLPLUGIN=gtk in order to force the LO GTK2 back-end. The
> document is embedded on the Java window as expected, but keyboard input
> is not possible on the document or the controls, mouse actions works,
> for example, I can change fonts using the mouse, but can't write
> anything on the font combobox nor the document. New LO dialogs opened
> from that document, keyboard input works.
>
> 4- Trying with SAL_USE_VCLPLUGIN=gen and keyboard input now works, but
> with the outdated look of that LO VCL backend :(
>
> So now the possible reasons that came to my head for each case:
>
> 1- Some confusion between Java being X11 and LO trying to do some
> Wayland thing?
by default the "gtk3" vclplug will use Wayland if available. probably
this won't work if the Java connects to X11 instead. there is some
environment var GDK_BACKEND=x11 that can be used to force it.
> 2- Java has a GTK Look and Feel/theme that loads GTK2 (the example
> application does not load that theme) , I am under the impression that
> if LO is loading GTK3, they are on different processes, so should not be
> any conflict here.
AFAIK GTK 2 and GTK 3 cannot coexist in the same process, due to some
naming conflict of GObjects or so...
> 3- Now both processes should be using GTK2, but the problems with
> keyboard input is a blocker
that sounds like a bug somewhere. (unlikely to get fixed any time soon
given this is quite an esoteric use-case.)
> 4- Everything running without conflicting libraries/protocols (Wayland
> vs X11 or GTK3 vs GTK2) and work, but the look and feel!!!!!!
>
> Now, when running the example with a no inline option, everything works
> fine, even when GTK2 and GTK3 are mixed. Wish to have an option to
> create the new document top level window as a child of the Java window,
> it is a pain for user that the document can go to the back of the
> "caller" window. Any hints if this is possible between two processes
> like Java and LO?
so does that option run LO as a separate process? yes, that would avoid
some of these issues, but as you found you get different issues instead :-/
More information about the LibreOffice
mailing list