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