Files
qt-creator/src/plugins/help/textbrowserhelpviewer.h
Eike Ziller 727b918773 Help: Fix issues with scrolling to right position
The different viewer backends have different issues with scrolling to
the right position if the URL contains an anchor. In all combinations of
"viewer was visible/invisible when help was requested" and "viewer last
showed the same/a different page then the requested URL".

Move the special logic from help plugin to the viewer backends.

Task-number: QTCREATORBUG-15548
Change-Id: I962c90695ceaee48800a3590676e1d28343cf790
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-03-03 15:10:57 +00:00

124 lines
3.3 KiB
C++

/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#ifndef TEXTBROWSERHELPVIEWER_H
#define TEXTBROWSERHELPVIEWER_H
#include "centralwidget.h"
#include "helpviewer.h"
#include "openpagesmanager.h"
#include <QTextBrowser>
namespace Help {
namespace Internal {
class TextBrowserHelpWidget;
class TextBrowserHelpViewer : public HelpViewer
{
Q_OBJECT
public:
explicit TextBrowserHelpViewer(QWidget *parent = 0);
~TextBrowserHelpViewer();
QFont viewerFont() const;
void setViewerFont(const QFont &font);
qreal scale() const;
void setScale(qreal scale);
QString title() const;
QUrl source() const;
void setSource(const QUrl &url);
void setHtml(const QString &html);
QString selectedText() const;
bool isForwardAvailable() const;
bool isBackwardAvailable() const;
void addBackHistoryItems(QMenu *backMenu);
void addForwardHistoryItems(QMenu *forwardMenu);
void setOpenInNewPageActionVisible(bool visible);
bool findText(const QString &text, Core::FindFlags flags,
bool incremental, bool fromSearch, bool *wrapped = 0);
public slots:
void scaleUp();
void scaleDown();
void resetScale();
void copy();
void stop();
void forward();
void backward();
void print(QPrinter *printer);
private slots:
void goToHistoryItem();
private:
QVariant loadResource(int type, const QUrl &name);
TextBrowserHelpWidget *m_textBrowser;
};
class TextBrowserHelpWidget : public QTextBrowser
{
Q_OBJECT
public:
TextBrowserHelpWidget(TextBrowserHelpViewer *parent);
QVariant loadResource(int type, const QUrl &name);
void scaleUp();
void scaleDown();
protected:
void contextMenuEvent(QContextMenuEvent *event);
bool eventFilter(QObject *obj, QEvent *event);
void wheelEvent(QWheelEvent *e);
void mousePressEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *e);
private:
QString linkAt(const QPoint& pos);
void openLink(const QUrl &url, bool newPage);
public:
int zoomCount;
bool forceFont;
bool m_openInNewPageActionVisible;
TextBrowserHelpViewer *m_parent;
};
} // namespace Internal
} // namespace Help
#endif // TEXTBROWSERHELPVIEWER_H