Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

6.1.3 compile against 6.2.4 assistant webengine #1

Open
wants to merge 1,564 commits into
base: dev
Choose a base branch
from

Conversation

snooter101
Copy link

Hi Bastiaan,

I'm not sure if QWebEngine enabled Qt Assistant is still of interest to you, but read on if so. I've previously benefited from your work in enabling Qt5 Qt Assistant to use QWebEngine, so thought I'd pass back my changes to provide the same for Qt6 for the benefit of the community (I reckon you deserve all the credit for making this available in the first place!).

Qt 6 assistant provides a new backend based on LiteHtml which may be ok for many use cases, but not mine as I needed javascript support.

So, with the move to Qt6 I needed to rebuild Qt Assistant, but not surprisingly your Qt5 branch does not build. QWebEngine is only available in Qt 6.2+, but in Qt 6.2 they made some (short-sighted in my opinion) changes which basically remove support for any alternative back-ends, so it was much easier to base the QWebEngine build on Qt 6.1.3.

I have branched the Qt 6.1.3 qttools, applied most of your changes, made whatever other changes I needed, and built assistant against Qt 6.2.4. It seems to work as far as I have tried.

I have tried to follow your branch naming scheme, but feel free to change to whatever you like.

Kind Regards,
Michael
ps. I'm a real beginner with github (and git really), so sorry if this isn't the right way to pass the changes back to you.

Qt Submodule Update Bot and others added 30 commits January 15, 2021 05:36
Change-Id: Ic004d23ad297b263735cccda8a9554ab99050541
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: Iea7a5971e255693229757c1df6b4faef7d377c3d
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: Idd6feaa1db575e2590fac171aacfb6d1038e02e4
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: Icaf6af17a3c04a7c77b2300c59eb18fca3db9650
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I3a263413a350c4a7cd4e393670e24977ba87605e
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I0a944c9bc5c5a59388b59f8a98b30e48d41b4e8a
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
src/linguist/lupdate/cpp_clang.cpp:118:21: warning: loop variable 'source' of type 'const QString' creates a copy from type 'const QString' [-Wrange-loop-analysis]

Pick-to: 6.0
Change-Id: If46d469da6653b9b59a2926080f0b37b74893b52
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Change-Id: I82ee965e3e7a7070d07ff046e1bbeea57f3db9e2
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
As a corner case, two keywords could have identical names and ids -
for example, a 'foo' method and a 'foo' variable in the same class.

Sorting these gave unpredictable results, making tests flaky. To fix,
use Keyword::ref as a secondary sort key as it's unique.

Change-Id: I5c7ddeaa86962a8368d927519a4bb70c43494a61
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
QDoc replicates property/function documentation from abstract QML base
types to the reference of the inheriting type. Attempting to override
a member documentation for the inheriting type resulted in duplication:
both the base and inheriting docs were rendered.

As the decision on what's shown on the type reference is deferred to
constructing the sections, implement this logic there. Modify
FunctionNode::compare() so that we can compare methods from
different parents, allowing us to override a specific overload of
a method.

Pick-to: 6.0
Fixes: QTBUG-89913
Change-Id: I3fb56c747e72b5a6ff387667e035a959e8f1c479
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Change-Id: Ie0c9cadd3e4865b31155961233e33fcd95962fa8
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I9c6c9e35771595493bd0d1ea1d1f49206453fd47
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Store it as a dynamic property in the container extension.

Task-number: QTBUG-88584
Change-Id: Icd16d65fb8410bda2fe6a084b3fceb9db5720f47
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Use the previously unused AddDockWidget to insert the dock widget
correctly in the QMainWindow container extension.

Fixes: QTBUG-88584
Change-Id: Id93afca8637b9e5090f2655658e19537429d33d8
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Add a function selectAction() to the Action editor and call
it from the menu editor to keep the selection in sync. Block
the calls to the object inspector while doing so.

Fixes: QTBUG-89778
Change-Id: Id407de606158f20c75c8e65af49cbd80fae24d29
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Change-Id: I34f2f039c5876bd7da99f879b34ba43c0c8b9529
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: Id435f8addd50327e5ce9ac9692ae2d9d547c5d76
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I0b5ef8c9e03c4679ab4ca87970489bfe42f9c9b6
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Pick-to: 6.0 5.15
Fixes: QTBUG-90691
Change-Id: I576849bb291926461f40622278619ffe096036cf
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Change-Id: If94da4a81e956a06011ef9f212298288439df9d8
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I8abd0b8ea40dcee0f0e7b8e9192a0a221a794180
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: Ic4f8629ceb2254b448af06f2e744075809810eb1
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
"win32-icc_x_ OR win32-msvc_x_" never equals TRUE, even when using MSVC
or ICC compiler in Windows.

Pick-to: 6.0
Change-Id: I8b72635754da9fdc534013e3f95b98f380b315d1
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Fixes: QTBUG-89980
Change-Id: Ice588f78d392f1dfd1f96de8840a3c7e28e4edd1
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
(cherry picked from commit 0a097b7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
As the warning count and limit determine the exit code, in single-exec
mode we need to keep track of the number of warnings for all
documentation sets that are part of the build.

This assumes that each documentation set retrives the warning limit
from a shared location in the config.

Fixes: QTBUG-90867
Change-Id: I7588a2a945094a02543a2cbd51ec5e3865666b47
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
(cherry picked from commit 173ecc3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Change-Id: I556345bc5e14a0d70c31229d066af643f0b59cd9
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I6885d2fdaa4844c01cb22bf4c2f11140b9cf6396
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I7a586acf640810e2f862e0f7a15b9419e1c6c32b
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I9e1a94e017cf524c62b05bb5466b6f43d192c58a
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: If6a97cc2d20fd9cf589931315dfb97c6fa522191
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Qt Submodule Update Bot and others added 27 commits August 2, 2021 18:18
Change-Id: I55fcd6b75fef13d636f20b03aaf5fd0334c9932e
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: Icf506788be921b4e1678843fa0efbea69e60188d
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Changes `thinks` to `links` in the 4th paragraph of the "Why Standard
Mode Is Slow" section.

Fixes: QTBUG-95561
Change-Id: If49f2d58341f33adf8cb8504193d7e3cb3896fcc
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
(cherry picked from commit 07164bb)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
If windeployqt is deploying the debug version of the libraries and the
used ICU package contains debug versions of ICU libraries then the
debug version of icudt should be included as well.

Fixes: QTBUG-87677
Change-Id: I43266f9d65feacfd22c26de1008976bda001b481
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
(cherry picked from commit 8c6f62b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Change-Id: I3a3c3784e1b75a247f93004eb09e916ebe06de7a
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I914ae841a83d111c0f5ff69a84a2c3c76b8b2c13
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: Id71d49a1c2104bbab259c6c2ab563fb7b7503b2d
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: Ifcbc9bf161cce857c7f0df225b27d911de6cae12
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I8382ca86d3680795baf452d01e230476edb8783b
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: Ib78e77e5ce372a6b0c315586ff93b8e726cfb4cd
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I6dfc25b8c493f077f9cc1fc69d5d88853e96176f
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I1d67a8004d69528f9486a329a1707aecb4e227aa
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Change-Id: I135d86a987fea407ba13eefc07eb16a52530a5a3
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Fixes:QTBUG-94056
Pick-to:6.1

Change-Id: I48b22c8b299082eb58d0251c70526b1751ff5adc
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Change-Id: Iff0f8c122387ef5d5d7a573ef0c2e445d620e2f4
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
Rename internal modules to adjust their names to the internal module
policy.

For Tools module we didn't add the 'Private' suffix sincee this module
might already be used with the suffix.

Change-Id: Ic9c4bc9572c83fb0601081f1523ca5533fe1850c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Change-Id: Icec4885ef5e56019c4fac205aa15a224d91ef0b8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Added detection of WebEngineWidgets to cmake - probably not the right way to do it, but enough for now.
Although measures already were in place to prevent a race condition of kinds (in HelpPage::acceptNavigationRequest() and HelpViewer::source()), testing has shown that these measures are not sufficient. This is because in timings that I did, the order is the following:

At t0: RemoteControl::handleSetSourceCommand() causes a call to HelpViewer::setSource() which does QWebEngineView::load(). WebEngine goes off to do its thing.
At t0+163ms: RemoteControl::handleSyncContentsCommand() asks the main window to sync the contents tree view.
At t0+163ms (immediately after): HelpPage::source() is called in which m_loadingUrl was evaluated, which was expected to contain the url set at t0, but is not set until 120ms later:
At t0+284ms: WebEngine signals loadStarted(), HelpPage::acceptNavigationRequest() gets called, in which the URL was stored in m_loadingUrl to counter the race condition.

This is now countered by storing m_loadingUrl in HelpViewer::setSource(). This way, WebEngine can take as longs as it wants to fire up and render all images etc, and the contents tree view will have synced already.

Obviously, without this change, the tree view will always sync with the previously set source, not the current one (with the above timings at least).

With this, the corresponding code in HelpPage::acceptNavigationRequest() has become unnecessary, which may make overriding it obsolete I don't know, I haven't looked at the base implementation.
@veelo
Copy link
Owner

veelo commented Jun 30, 2023

Hi Michael,

Sorry for not getting back to you for so long, for some reason I discovered your PR only just now. I very much appreciate you sharing your work here, and your accompanying explanations!

Personally I am still on Qt5, and I doubt I'll be able to find time to merge your PR before I need to make the switch to Qt6 myself. So I hope you'll forgive me for letting this sit for a while longer.

Anyway thanks for sharing back, and it is nice to know my fork was a helpful trampoline for yours.

Bastiaan.

@snooter101
Copy link
Author

snooter101 commented Jul 2, 2023 via email

@veelo
Copy link
Owner

veelo commented Jul 5, 2023

is there some way of sharing with other folks just to save any other Qt6 users the same pain? I was thinking about posting an update on the qthelp->webengine task, but really didn’t want to take credit for your work. I’m happy for you to post there with a pointer to my fork if that’s easiest for you (or I can post and will credit you).

Feel free to do whatever you want :-) My name appears as the author of my commits in your fork, and that is enough attribution for me. I have added a mention to your PR in the readme of my fork.

On closer look, your PR is against my dev branch, which means that if I would pull it, my dev branch would diverge from the official dev branch, which is not something I want to do. I like this staying in its own branch, so it can more easily be rebased onto later Qt versions. Heck when I'll need Qt6, I might just use your fork, there is no real need to merge your fork into mine.

By the way, I recommend going into the Settings of your fork, and select your branch as the main branch. That way, people will see the interesting stuff when they visit your fork, otherwise they'll land on the dev branch and see nothing new.

And I should say thank-you very much for your original work; it saved me heaps of time back when I was using Qt5 and yes, was a great trampoline to Qt6 support.

My pleasure, but the bulk of the work was done by yet somebody else: Allan Sandfeld Jensen 013b24d

Also, looks like Qt aren’t very interested in supporting rich QtHelp (my problem was lack of javascript support), so reckon I’ll switch to some other help technology in the future rather than continuing to fight the tool. Do you have any plans like that?

No plans. We generate our documentation with Doxygen with output in PDF, online HTML and QtHelp, in multiple languages, 450 pages each. We'll probably use Assistant for as long as it keeps working. And since it is a stand alone executable, we could just run it with whatever Qt version it is built with, independent from what we use for development ourselves (at the cost of binary bloat). But if you find a viable alternative, I'd be interested to know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet