fixes for zoom
This commit is contained in:
parent
5bb9da65d7
commit
9acef04a22
4 changed files with 60 additions and 20 deletions
|
@ -13,6 +13,7 @@
|
||||||
#include "network-web/webfactory.h"
|
#include "network-web/webfactory.h"
|
||||||
#include "network-web/webpage.h"
|
#include "network-web/webpage.h"
|
||||||
|
|
||||||
|
#include <QOpenGLWidget>
|
||||||
#include <QWebEngineContextMenuData>
|
#include <QWebEngineContextMenuData>
|
||||||
#include <QWheelEvent>
|
#include <QWheelEvent>
|
||||||
|
|
||||||
|
@ -21,20 +22,28 @@ WebViewer::WebViewer(QWidget* parent) : QWebEngineView(parent), m_root(nullptr)
|
||||||
|
|
||||||
connect(page, &WebPage::messageStatusChangeRequested, this, &WebViewer::messageStatusChangeRequested);
|
connect(page, &WebPage::messageStatusChangeRequested, this, &WebViewer::messageStatusChangeRequested);
|
||||||
setPage(page);
|
setPage(page);
|
||||||
|
resetWebPageZoom();
|
||||||
const QList<QWidget*> children = findChildren<QWidget*>();
|
|
||||||
|
|
||||||
for (QWidget* child : children) {
|
|
||||||
child->installEventFilter(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WebViewer::canIncreaseZoom() {
|
bool WebViewer::canIncreaseZoom() {
|
||||||
return zoomFactor() <= MAX_ZOOM_FACTOR - ZOOM_FACTOR_STEP;
|
return zoomFactor() <= double(MAX_ZOOM_FACTOR) - double(ZOOM_FACTOR_STEP);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WebViewer::canDecreaseZoom() {
|
bool WebViewer::canDecreaseZoom() {
|
||||||
return zoomFactor() >= MIN_ZOOM_FACTOR + ZOOM_FACTOR_STEP;
|
return zoomFactor() >= double(MIN_ZOOM_FACTOR) + double(ZOOM_FACTOR_STEP);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WebViewer::event(QEvent* event) {
|
||||||
|
if (event->type() == QEvent::Type::ChildAdded) {
|
||||||
|
QChildEvent* child_ev = static_cast<QChildEvent*>(event);
|
||||||
|
QWidget* w = qobject_cast<QWidget*>(child_ev->child());
|
||||||
|
|
||||||
|
if (w != nullptr) {
|
||||||
|
w->installEventFilter(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return QWebEngineView::event(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
WebPage* WebViewer::page() const {
|
WebPage* WebViewer::page() const {
|
||||||
|
@ -47,7 +56,8 @@ void WebViewer::displayMessage() {
|
||||||
|
|
||||||
bool WebViewer::increaseWebPageZoom() {
|
bool WebViewer::increaseWebPageZoom() {
|
||||||
if (canIncreaseZoom()) {
|
if (canIncreaseZoom()) {
|
||||||
setZoomFactor(zoomFactor() + ZOOM_FACTOR_STEP);
|
setZoomFactor(zoomFactor() + double(ZOOM_FACTOR_STEP));
|
||||||
|
qApp->settings()->setValue(GROUP(Messages), Messages::Zoom, zoomFactor());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -57,7 +67,8 @@ bool WebViewer::increaseWebPageZoom() {
|
||||||
|
|
||||||
bool WebViewer::decreaseWebPageZoom() {
|
bool WebViewer::decreaseWebPageZoom() {
|
||||||
if (canDecreaseZoom()) {
|
if (canDecreaseZoom()) {
|
||||||
setZoomFactor(zoomFactor() - ZOOM_FACTOR_STEP);
|
setZoomFactor(zoomFactor() - double(ZOOM_FACTOR_STEP));
|
||||||
|
qApp->settings()->setValue(GROUP(Messages), Messages::Zoom, zoomFactor());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -66,7 +77,8 @@ bool WebViewer::decreaseWebPageZoom() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WebViewer::resetWebPageZoom() {
|
bool WebViewer::resetWebPageZoom() {
|
||||||
const qreal new_factor = 1.0;
|
const qreal new_factor = qApp->settings()->value(GROUP(Messages),
|
||||||
|
SETTING(Messages::Zoom)).toReal();
|
||||||
|
|
||||||
if (new_factor != zoomFactor()) {
|
if (new_factor != zoomFactor()) {
|
||||||
setZoomFactor(new_factor);
|
setZoomFactor(new_factor);
|
||||||
|
@ -178,19 +190,38 @@ QWebEngineView* WebViewer::createWindow(QWebEnginePage::WebWindowType type) {
|
||||||
void WebViewer::wheelEvent(QWheelEvent* event) {
|
void WebViewer::wheelEvent(QWheelEvent* event) {
|
||||||
QWebEngineView::wheelEvent(event);
|
QWebEngineView::wheelEvent(event);
|
||||||
|
|
||||||
if ((event->modifiers() & Qt::ControlModifier) > 0) {
|
|
||||||
if (event->delta() > 0) {
|
|
||||||
increaseWebPageZoom();
|
|
||||||
}
|
|
||||||
else if (event->delta() < 0) {
|
|
||||||
decreaseWebPageZoom();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WebViewer::eventFilter(QObject* object, QEvent* event) {
|
bool WebViewer::eventFilter(QObject* object, QEvent* event) {
|
||||||
|
Q_UNUSED(object)
|
||||||
|
|
||||||
if (event->type() == QEvent::Type::Wheel) {
|
if (event->type() == QEvent::Type::Wheel) {
|
||||||
return true;
|
QWheelEvent* wh_event = static_cast<QWheelEvent*>(event);
|
||||||
|
|
||||||
|
if ((wh_event->modifiers() & Qt::KeyboardModifier::ControlModifier) > 0) {
|
||||||
|
if (wh_event->delta() > 0) {
|
||||||
|
increaseWebPageZoom();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (wh_event->delta() < 0) {
|
||||||
|
decreaseWebPageZoom();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (event->type() == QEvent::Type::KeyPress) {
|
||||||
|
QKeyEvent* key_event = static_cast<QKeyEvent*>(event);
|
||||||
|
|
||||||
|
if ((key_event->modifiers() & Qt::KeyboardModifier::ControlModifier) > 0) {
|
||||||
|
if (key_event->key() == Qt::Key::Key_Plus) {
|
||||||
|
increaseWebPageZoom();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (key_event->key() == Qt::Key::Key_Minus) {
|
||||||
|
decreaseWebPageZoom();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -42,6 +42,7 @@ class WebViewer : public QWebEngineView {
|
||||||
QWebEngineView* createWindow(QWebEnginePage::WebWindowType type);
|
QWebEngineView* createWindow(QWebEnginePage::WebWindowType type);
|
||||||
|
|
||||||
void wheelEvent(QWheelEvent* event);
|
void wheelEvent(QWheelEvent* event);
|
||||||
|
bool event(QEvent* event);
|
||||||
bool eventFilter(QObject* object, QEvent* event);
|
bool eventFilter(QObject* object, QEvent* event);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
|
@ -77,6 +77,10 @@ DKEY Messages::DisplayImagePlaceholders = "display_image_placeholders";
|
||||||
DVALUE(bool) Messages::DisplayImagePlaceholdersDef = false;
|
DVALUE(bool) Messages::DisplayImagePlaceholdersDef = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
DKEY Messages::Zoom = "zoom";
|
||||||
|
|
||||||
|
DVALUE(qreal) Messages::ZoomDef = double(1.0f);
|
||||||
|
|
||||||
DKEY Messages::UseCustomDate = "use_custom_date";
|
DKEY Messages::UseCustomDate = "use_custom_date";
|
||||||
|
|
||||||
DVALUE(bool) Messages::UseCustomDateDef = false;
|
DVALUE(bool) Messages::UseCustomDateDef = false;
|
||||||
|
|
|
@ -100,6 +100,10 @@ namespace Messages {
|
||||||
VALUE(bool) DisplayImagePlaceholdersDef;
|
VALUE(bool) DisplayImagePlaceholdersDef;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
KEY Zoom;
|
||||||
|
|
||||||
|
VALUE(qreal) ZoomDef;
|
||||||
|
|
||||||
KEY UseCustomDate;
|
KEY UseCustomDate;
|
||||||
|
|
||||||
VALUE(bool) UseCustomDateDef;
|
VALUE(bool) UseCustomDateDef;
|
||||||
|
|
Loading…
Add table
Reference in a new issue