<table><tr><td style="">antonanikin created this revision.<br />antonanikin added a reviewer: KDevelop.<br />antonanikin added a subscriber: kdevelop-devel.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D3683" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>The patch fixes wrong positioning for StandardDocumentationView. Steps to reproduce:</p>

<ol class="remarkup-list">
<li class="remarkup-list-item">Place such test code into editor:</li>
</ol>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">#include <QWebView>
#include <QLabel>
#include <QDebug>

void test()
{
    QWebView v;
    v.setUrl(QUrl("https://www.kdevelop.org/"));

    QLabel l;
    l.setText("label_text");

    qDebug() << "debug_message";
}</pre></div>

<ol class="remarkup-list" start="2">
<li class="remarkup-list-item">Move cursor to any method and call context help.</li>
<li class="remarkup-list-item">Help view will be shown with <strong>wrong</strong> position.</li>
<li class="remarkup-list-item">Recall context help for previous place.</li>
<li class="remarkup-list-item">Help view will be shown with <strong>right</strong> position.</li>
<li class="remarkup-list-item">At any help view show we will see fast scrollbar "jumping" from initial (0) to some final position.</li>
</ol>

<p>The patch provides mechanism to fix this behavior.</p>

<p>First, it disable view painter updates during load to avoid content "flickering" and also to hide font size "jumping", which happens for example for Qt help pages with JavaScript enabled for QWebView. This JS also breaks positioning inside page:</p>

<ol class="remarkup-list">
<li class="remarkup-list-item">Some page is loaded and loadFinished() signal emitted, then view set right position inside page.</li>
</ol>

<ol class="remarkup-list" start="2">
<li class="remarkup-list-item">After this, page JS finishes it's work and change font settings (size). This leads to contents "moving" inside view and as a result we have wrong position.</li>
</ol>

<p>Therefore secondly, we fix position after page loading with simple JS code. JS allow us to "jump" inside already loaded page without it's reloading which happens with using standard view's methods like load() or setUrl().</p>

<p>Such positioning fixing also applied on resize event - standard view's behaviour breaks position during widget resize.</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>Tested on master branch. For correct work it needs <a href="https://phabricator.kde.org/D3671" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D3671</a> applied to kdevelop.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R33 KDevPlatform</div></div></div><br /><div><strong>BRANCH</strong><div><div>webview_fixes</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D3683" rel="noreferrer">https://phabricator.kde.org/D3683</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>documentation/standarddocumentationview.cpp</div></div></div><br /><div><strong>EMAIL PREFERENCES</strong><div><a href="https://phabricator.kde.org/settings/panel/emailpreferences/" rel="noreferrer">https://phabricator.kde.org/settings/panel/emailpreferences/</a></div></div><br /><div><strong>To: </strong>antonanikin, KDevelop<br /><strong>Cc: </strong>kdevelop-devel<br /></div>