diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-07-08 11:10:48 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-07-08 11:10:48 +0200 |
commit | fc4c7943c79243ed027f7507c458d067a14bebb2 (patch) | |
tree | 38b066c73890145677a1f87f671ef30ed0eefe1c /src/webengine/webview.cpp | |
parent | Integrate urlfilter with urlrequestinterceptor (diff) | |
download | smolbote-fc4c7943c79243ed027f7507c458d067a14bebb2.tar.xz |
Remove PageMenu
Move zoom widget to WebView context menu
Move the other page menu actions to main window menu
Diffstat (limited to 'src/webengine/webview.cpp')
-rw-r--r-- | src/webengine/webview.cpp | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/src/webengine/webview.cpp b/src/webengine/webview.cpp index f1b52b7..9380b13 100644 --- a/src/webengine/webview.cpp +++ b/src/webengine/webview.cpp @@ -10,11 +10,13 @@ #include "mainwindow/subwindow.h" #include "webpage.h" #include "webprofile.h" -#include "widgets/pagemenu.h" #include "widgets/pagetoolsmenu.h" #include <QDialog> #include <QStatusBar> #include <QVBoxLayout> +#include <QContextMenuEvent> +#include <QWidgetAction> +#include <QSlider> WebView::WebView(WebProfile *profile, QWidget *parent) : QWebEngineView(parent) @@ -41,15 +43,9 @@ WebView::WebView(WebProfile *profile, QWidget *parent) }); #endif - m_pageMenu = new PageMenu(this); m_toolsMenu = new PageToolsMenu(this); } -WebView::~WebView() -{ - delete m_pageMenu; -} - void WebView::setProfile(WebProfile *profile) { m_profile = profile; @@ -101,6 +97,37 @@ WebView *WebView::createWindow(QWebEnginePage::WebWindowType type) return view; } +void WebView::contextMenuEvent(QContextMenuEvent *event) +{ + QMenu *menu = page()->createStandardContextMenu(); + + // zoom widget + menu->addSeparator(); + { + auto *zoomSlider = new QSlider(Qt::Horizontal); + zoomSlider->setMinimum(5); + zoomSlider->setMaximum(50); + zoomSlider->setValue(10); + + auto *zoomAction = menu->addAction(tr("Zoom: %1x").arg(zoomFactor())); + connect(zoomAction, &QAction::triggered, this, [zoomSlider]() { + zoomSlider->setValue(10); + }); + + connect(zoomSlider, &QSlider::valueChanged, this, [this, zoomAction](int value) { + zoomAction->setText(tr("Zoom: %1x").arg(static_cast<qreal>(value) / 10)); + setZoomFactor(static_cast<qreal>(value) / 10); + }); + + auto *zoomWidgetAction = new QWidgetAction(this); + zoomWidgetAction->setDefaultWidget(zoomSlider); + + menu->addAction(zoomWidgetAction); + } + + menu->popup(event->globalPos()); +} + void WebView::triggerViewAction(WebView::ViewAction action) { switch(action) { |