Merge remote-tracking branch 'origin/4.10'

Change-Id: Ic7144b8ae429707cd120719f3445b624c0b83564
This commit is contained in:
Eike Ziller
2019-09-25 08:30:27 +02:00
3 changed files with 77 additions and 38 deletions

View File

@@ -66,6 +66,10 @@
authentication. If you do not have an SSH key, you can use the ssh-keygen
tool to create it in \QC. For more information, see \l {Generating SSH Keys}.
\note \QC does not store passwords, so if you use password authentication,
you may need to enter the password on every connection to the device,
or, if caching is enabled, at every \QC restart.
To configure connections between \QC and an embedded Linux device and to
specify build and run settings for the device:

View File

@@ -99,12 +99,14 @@ void TextBrowserHelpViewer::scaleDown()
void TextBrowserHelpViewer::resetScale()
{
if (m_textBrowser->zoomCount != 0) {
m_textBrowser->forceFont = true;
m_textBrowser->zoomOut(m_textBrowser->zoomCount);
m_textBrowser->forceFont = false;
}
m_textBrowser->zoomCount = 0;
m_textBrowser->withFixedTopPosition([this] {
if (m_textBrowser->zoomCount != 0) {
m_textBrowser->forceFont = true;
m_textBrowser->zoomOut(m_textBrowser->zoomCount);
m_textBrowser->forceFont = false;
}
m_textBrowser->zoomCount = 0;
});
}
qreal TextBrowserHelpViewer::scale() const
@@ -114,18 +116,20 @@ qreal TextBrowserHelpViewer::scale() const
void TextBrowserHelpViewer::setScale(qreal scale)
{
m_textBrowser->forceFont = true;
if (scale > 10)
scale = 10;
else if (scale < -5)
scale = -5;
int diff = int(scale) - m_textBrowser->zoomCount;
if (diff > 0)
m_textBrowser->zoomIn(diff);
else if (diff < 0)
m_textBrowser->zoomOut(-diff);
m_textBrowser->zoomCount = int(scale);
m_textBrowser->forceFont = false;
m_textBrowser->withFixedTopPosition([this, &scale] {
m_textBrowser->forceFont = true;
if (scale > 10)
scale = 10;
else if (scale < -5)
scale = -5;
int diff = int(scale) - m_textBrowser->zoomCount;
if (diff > 0)
m_textBrowser->zoomIn(diff);
else if (diff < 0)
m_textBrowser->zoomOut(-diff);
m_textBrowser->zoomCount = int(scale);
m_textBrowser->forceFont = false;
});
}
QString TextBrowserHelpViewer::title() const
@@ -145,13 +149,11 @@ void TextBrowserHelpViewer::setSource(const QUrl &url)
slotLoadStarted();
m_textBrowser->setSource(url);
QTimer::singleShot(0, this, [this, url]() {
if (!url.fragment().isEmpty())
m_textBrowser->scrollToAnchor(url.fragment());
if (QScrollBar *hScrollBar = m_textBrowser->horizontalScrollBar())
hScrollBar->setValue(0);
slotLoadFinished();
});
if (!url.fragment().isEmpty())
m_textBrowser->scrollToAnchor(url.fragment());
if (QScrollBar *hScrollBar = m_textBrowser->horizontalScrollBar())
hScrollBar->setValue(0);
slotLoadFinished();
}
void TextBrowserHelpViewer::setHtml(const QString &html)
@@ -330,24 +332,46 @@ QString TextBrowserHelpWidget::linkAt(const QPoint &pos)
return anchor;
}
void TextBrowserHelpWidget::withFixedTopPosition(const std::function<void()> &action)
{
const int topTextPosition = cursorForPosition({width() / 2, 0}).position();
action();
scrollToTextPosition(topTextPosition);
}
void TextBrowserHelpWidget::scrollToTextPosition(int position)
{
QTextCursor tc(document());
tc.setPosition(position);
const int dy = cursorRect(tc).top();
if (verticalScrollBar()) {
verticalScrollBar()->setValue(
std::min(verticalScrollBar()->value() + dy, verticalScrollBar()->maximum()));
}
}
void TextBrowserHelpWidget::scaleUp()
{
if (zoomCount < 10) {
zoomCount++;
forceFont = true;
zoomIn();
forceFont = false;
}
withFixedTopPosition([this] {
if (zoomCount < 10) {
zoomCount++;
forceFont = true;
zoomIn();
forceFont = false;
}
});
}
void TextBrowserHelpWidget::scaleDown()
{
if (zoomCount > -5) {
zoomCount--;
forceFont = true;
zoomOut();
forceFont = false;
}
withFixedTopPosition([this] {
if (zoomCount > -5) {
zoomCount--;
forceFont = true;
zoomOut();
forceFont = false;
}
});
}
void TextBrowserHelpWidget::contextMenuEvent(QContextMenuEvent *event)
@@ -427,6 +451,13 @@ void TextBrowserHelpWidget::mouseReleaseEvent(QMouseEvent *e)
QTextBrowser::mouseReleaseEvent(e);
}
void TextBrowserHelpWidget::resizeEvent(QResizeEvent *e)
{
const int topTextPosition = cursorForPosition({width() / 2, 0}).position();
QTextBrowser::resizeEvent(e);
scrollToTextPosition(topTextPosition);
}
void TextBrowserHelpWidget::setSource(const QUrl &name)
{
QTextBrowser::setSource(name);

View File

@@ -94,14 +94,18 @@ public:
void setSource(const QUrl &name) override;
void withFixedTopPosition(const std::function<void()> &action);
protected:
void contextMenuEvent(QContextMenuEvent *event) override;
bool eventFilter(QObject *obj, QEvent *event) override;
void mousePressEvent(QMouseEvent *e) override;
void mouseReleaseEvent(QMouseEvent *e) override;
void resizeEvent(QResizeEvent *e) override;
private:
QString linkAt(const QPoint& pos);
QString linkAt(const QPoint &pos);
void scrollToTextPosition(int position);
int zoomCount;
bool forceFont;