ui: scroll zoom preference now specific to widget

Fixes #1597
This commit is contained in:
itsmattkc
2021-05-10 12:07:15 +10:00
parent 94b2cebeea
commit 72ed87d923
8 changed files with 62 additions and 10 deletions
+17 -3
View File
@@ -31,7 +31,8 @@ namespace olive {
HandMovableView::HandMovableView(QWidget* parent) :
super(parent),
dragging_hand_(false)
dragging_hand_(false),
scroll_zooms_by_default_(Config::Current()[QStringLiteral("ScrollZooms")].toBool())
{
connect(Core::instance(), &Core::ToolChanged, this, &HandMovableView::ApplicationToolChanged);
}
@@ -122,9 +123,9 @@ const HandMovableView::DragMode &HandMovableView::GetDefaultDragMode() const
return default_drag_mode_;
}
bool HandMovableView::WheelEventIsAZoomEvent(QWheelEvent *event)
bool HandMovableView::WheelEventIsAZoomEvent(QWheelEvent *event) const
{
return (static_cast<bool>(event->modifiers() & Qt::ControlModifier) == !Config::Current()[QStringLiteral("ScrollZooms")].toBool());
return (static_cast<bool>(event->modifiers() & Qt::ControlModifier) == !scroll_zooms_by_default_);
}
void HandMovableView::wheelEvent(QWheelEvent *event)
@@ -154,4 +155,17 @@ void HandMovableView::ZoomIntoCursorPosition(QWheelEvent *event, double multipli
Q_UNUSED(cursor_pos)
}
QAction *HandMovableView::AddSetScrollZoomsByDefaultActionToMenu(QMenu *m, bool autoconnect)
{
QAction* ctrl_zoom = m->addAction(tr("Scroll Zooms By Default"));
ctrl_zoom->setCheckable(true);
ctrl_zoom->setChecked(GetScrollZoomsByDefault());
if (autoconnect) {
connect(ctrl_zoom, &QAction::triggered, this, &HandMovableView::SetScrollZoomsByDefault);
}
return ctrl_zoom;
}
}
+23 -1
View File
@@ -22,6 +22,7 @@
#define HANDMOVABLEVIEW_H
#include <QGraphicsView>
#include <QMenu>
#include "tool/tool.h"
@@ -33,6 +34,19 @@ class HandMovableView : public QGraphicsView
public:
HandMovableView(QWidget* parent = nullptr);
bool GetScrollZoomsByDefault() const
{
return scroll_zooms_by_default_;
}
QAction* AddSetScrollZoomsByDefaultActionToMenu(QMenu* menu, bool autoconnect = true);
public slots:
void SetScrollZoomsByDefault(bool e)
{
scroll_zooms_by_default_ = e;
}
protected:
virtual void ToolChangedEvent(Tool::Item tool){Q_UNUSED(tool)}
@@ -43,7 +57,7 @@ protected:
void SetDefaultDragMode(DragMode mode);
const DragMode& GetDefaultDragMode() const;
static bool WheelEventIsAZoomEvent(QWheelEvent* event);
bool WheelEventIsAZoomEvent(QWheelEvent* event) const;
virtual void wheelEvent(QWheelEvent* event) override;
@@ -55,6 +69,14 @@ private:
DragMode default_drag_mode_;
/**
* @brief Whether scrolling should perform a scroll or a zoom
*
* If TRUE, scrolling will ZOOM and Ctrl+Scroll with SCROLL.
* If FALSE (default), scrolling will SCROLL and Ctrl+Scroll will ZOOM.
*/
bool scroll_zooms_by_default_;
private slots:
void ApplicationToolChanged(Tool::Item tool);