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
