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/webpage.h"
|
||||
|
||||
#include <QOpenGLWidget>
|
||||
#include <QWebEngineContextMenuData>
|
||||
#include <QWheelEvent>
|
||||
|
||||
|
@ -21,20 +22,28 @@ WebViewer::WebViewer(QWidget* parent) : QWebEngineView(parent), m_root(nullptr)
|
|||
|
||||
connect(page, &WebPage::messageStatusChangeRequested, this, &WebViewer::messageStatusChangeRequested);
|
||||
setPage(page);
|
||||
|
||||
const QList<QWidget*> children = findChildren<QWidget*>();
|
||||
|
||||
for (QWidget* child : children) {
|
||||
child->installEventFilter(this);
|
||||
}
|
||||
resetWebPageZoom();
|
||||
}
|
||||
|
||||
bool WebViewer::canIncreaseZoom() {
|
||||
return zoomFactor() <= MAX_ZOOM_FACTOR - ZOOM_FACTOR_STEP;
|
||||
return zoomFactor() <= double(MAX_ZOOM_FACTOR) - double(ZOOM_FACTOR_STEP);
|
||||
}
|
||||
|
||||
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 {
|
||||
|
@ -47,7 +56,8 @@ void WebViewer::displayMessage() {
|
|||
|
||||
bool WebViewer::increaseWebPageZoom() {
|
||||
if (canIncreaseZoom()) {
|
||||
setZoomFactor(zoomFactor() + ZOOM_FACTOR_STEP);
|
||||
setZoomFactor(zoomFactor() + double(ZOOM_FACTOR_STEP));
|
||||
qApp->settings()->setValue(GROUP(Messages), Messages::Zoom, zoomFactor());
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
|
@ -57,7 +67,8 @@ bool WebViewer::increaseWebPageZoom() {
|
|||
|
||||
bool WebViewer::decreaseWebPageZoom() {
|
||||
if (canDecreaseZoom()) {
|
||||
setZoomFactor(zoomFactor() - ZOOM_FACTOR_STEP);
|
||||
setZoomFactor(zoomFactor() - double(ZOOM_FACTOR_STEP));
|
||||
qApp->settings()->setValue(GROUP(Messages), Messages::Zoom, zoomFactor());
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
|
@ -66,7 +77,8 @@ bool WebViewer::decreaseWebPageZoom() {
|
|||
}
|
||||
|
||||
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()) {
|
||||
setZoomFactor(new_factor);
|
||||
|
@ -178,20 +190,39 @@ QWebEngineView* WebViewer::createWindow(QWebEnginePage::WebWindowType type) {
|
|||
void WebViewer::wheelEvent(QWheelEvent* 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) {
|
||||
Q_UNUSED(object)
|
||||
|
||||
if (event->type() == QEvent::Type::Wheel) {
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ class WebViewer : public QWebEngineView {
|
|||
QWebEngineView* createWindow(QWebEnginePage::WebWindowType type);
|
||||
|
||||
void wheelEvent(QWheelEvent* event);
|
||||
bool event(QEvent* event);
|
||||
bool eventFilter(QObject* object, QEvent* event);
|
||||
|
||||
signals:
|
||||
|
|
|
@ -77,6 +77,10 @@ DKEY Messages::DisplayImagePlaceholders = "display_image_placeholders";
|
|||
DVALUE(bool) Messages::DisplayImagePlaceholdersDef = false;
|
||||
#endif
|
||||
|
||||
DKEY Messages::Zoom = "zoom";
|
||||
|
||||
DVALUE(qreal) Messages::ZoomDef = double(1.0f);
|
||||
|
||||
DKEY Messages::UseCustomDate = "use_custom_date";
|
||||
|
||||
DVALUE(bool) Messages::UseCustomDateDef = false;
|
||||
|
|
|
@ -100,6 +100,10 @@ namespace Messages {
|
|||
VALUE(bool) DisplayImagePlaceholdersDef;
|
||||
#endif
|
||||
|
||||
KEY Zoom;
|
||||
|
||||
VALUE(qreal) ZoomDef;
|
||||
|
||||
KEY UseCustomDate;
|
||||
|
||||
VALUE(bool) UseCustomDateDef;
|
||||
|
|
Loading…
Add table
Reference in a new issue