Here are my thoughts and findings so far regarding the migration to
QWebEngine. There is a card on our Trello board that is tracking the
progress of this migration and will be updated as work progresses.

The following steps are what I think should be done and the order they
should be done in.

   1. Move all functions that need access to DOM into javascript
   2. Make all calls to renderer asynchronous
   3. Make minimum Qt version Qt 5.4 (QWebChannel dependency)
   4. Use QWebChannel to access javascript functions and receive callbacks
   5. Create backend class to handle switching between available backends
   6. Create QWebEngine backend
   7. Move existing QWebKit implementation into a backend

Moving DOM access into javascript shouldn't be to hard.

Making all calls to the render asynchronous is a bit harder and is making
my brain hurt trying to figure out how to do it since our current API is
synchronous.
*Note:* We cannot just use a while block since that blocks the UI thread
which also blocks Qt's event system preventing QWebKit/QWebEngine from
doing anything. We can use a processEvents() call in the while loop but
that is frowned upon.

Once we make all calls asynchronous the remaining items should be pretty
easy to do.

I would recommend getting the first four items (DOM access into javascript,
asynchronous calls, minimum version, and QWebChannel) working with QWebKit
first then move on to the rest.
_______________________________________________
openlp-dev mailing list
[email protected]
https://lists.openlp.io/mailman/listinfo/openlp-dev

Reply via email to