@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user