From d939ff7f401624e1a357f97c4d1974063a921695 Mon Sep 17 00:00:00 2001 From: hkiel Date: Tue, 15 Dec 2015 12:03:39 +0100 Subject: [PATCH] Implement zoom in DocumentationView with ctrl+scroll reset zoom to factor 1 with control+doubleClick --- .../Modeling/DocumentationWidget.cpp | 39 +++++++++++++++++++ .../OMEditGUI/Modeling/DocumentationWidget.h | 3 ++ 2 files changed, 42 insertions(+) diff --git a/OMEdit/OMEditGUI/Modeling/DocumentationWidget.cpp b/OMEdit/OMEditGUI/Modeling/DocumentationWidget.cpp index a01625a7b61..84a614e7c70 100644 --- a/OMEdit/OMEditGUI/Modeling/DocumentationWidget.cpp +++ b/OMEdit/OMEditGUI/Modeling/DocumentationWidget.cpp @@ -192,6 +192,8 @@ DocumentationViewer::DocumentationViewer(DocumentationWidget *pParent) setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested(QPoint)), SLOT(showContextMenu(QPoint))); mpDocumentationWidget = pParent; + zoomFact = 1.; + setZoomFactor(zoomFact); // set DocumentationViewer settings settings()->setFontFamily(QWebSettings::StandardFont, "Verdana"); settings()->setFontSize(QWebSettings::DefaultFontSize, 10); @@ -297,15 +299,52 @@ void DocumentationViewer::keyPressEvent(QKeyEvent *event) if (event->modifiers().testFlag(Qt::ShiftModifier) && event->key() == Qt::Key_Backspace) { if (mpDocumentationWidget->getNextToolButton()->isEnabled()) + { mpDocumentationWidget->nextDocumentation(); + } } else if (event->key() == Qt::Key_Backspace) { if (mpDocumentationWidget->getPreviousToolButton()->isEnabled()) + { mpDocumentationWidget->previousDocumentation(); + } } else { QWebView::keyPressEvent(event); } } + +//! Reimplementation of wheelevent. +//! Defines what to do for control+scrolling the wheel +void DocumentationViewer::wheelEvent(QWheelEvent *event) +{ + if (event->orientation() == Qt::Vertical && event->modifiers().testFlag(Qt::ControlModifier)) + { + zoomFact+=event->delta()/120.; + if (zoomFact > 5.) zoomFact = 5.; + if (zoomFact < .1) zoomFact = .1; + setZoomFactor(zoomFact); + } + else + { + QWebView::wheelEvent(event); + } +} + +//! Reimplementation of mousedoubleclickevent. +//! Defines what to do for control+doubleclick +void DocumentationViewer::mouseDoubleClickEvent(QMouseEvent *event) +{ + if (event->modifiers().testFlag(Qt::ControlModifier)) + { + zoomFact=1.; + setZoomFactor(zoomFact); + } + else + { + QWebView::mouseDoubleClickEvent(event); + } +} + diff --git a/OMEdit/OMEditGUI/Modeling/DocumentationWidget.h b/OMEdit/OMEditGUI/Modeling/DocumentationWidget.h index e273af6a603..051632a643f 100644 --- a/OMEdit/OMEditGUI/Modeling/DocumentationWidget.h +++ b/OMEdit/OMEditGUI/Modeling/DocumentationWidget.h @@ -79,6 +79,7 @@ class DocumentationViewer : public QWebView Q_OBJECT private: DocumentationWidget *mpDocumentationWidget; + qreal zoomFact; public: DocumentationViewer(DocumentationWidget *pParent); public slots: @@ -89,6 +90,8 @@ public slots: protected: virtual QWebView* createWindow(QWebPage::WebWindowType type); virtual void keyPressEvent(QKeyEvent *event); + virtual void wheelEvent(QWheelEvent *event); + virtual void mouseDoubleClickEvent(QMouseEvent *event); }; #endif // DOCUMENTATIONWIDGET_H