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
@@ -41,10 +41,6 @@ PreferencesBehaviorTab::PreferencesBehaviorTab()
QStringLiteral("HoverFocus"),
tr("Panels will be considered focused when the mouse cursor is over them without having to click them."),
general_group);
AddItem(tr("Scroll wheel zooms by default instead of scrolling"),
QStringLiteral("ScrollZooms"),
tr("Holding CTRL while using Olive toggles this setting"),
general_group);
AddItem(tr("Enable slider ladder"),
QStringLiteral("UseSliderLadders"),
general_group);
-2
View File
@@ -307,8 +307,6 @@ void CurveView::VerticalScaleChangedEvent(double scale)
void CurveView::ContextMenuEvent(Menu &m)
{
m.addSeparator();
// View settings
QAction* zoom_fit_action = m.addAction(tr("Zoom to Fit"));
connect(zoom_fit_action, &QAction::triggered, this, &CurveView::ZoomToFit);
+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);
@@ -525,6 +525,12 @@ void KeyframeViewBase::ShowContextMenu()
}
}
m.addSeparator();
AddSetScrollZoomsByDefaultActionToMenu(&m);
m.addSeparator();
ContextMenuEvent(m);
if (!items.isEmpty()) {
+4
View File
@@ -711,6 +711,10 @@ void NodeView::ShowContextMenu(const QPoint &pos)
m.addSeparator();
AddSetScrollZoomsByDefaultActionToMenu(&m);
m.addSeparator();
Menu* filter_menu = new Menu(tr("Filter"), &m);
m.addMenu(filter_menu);
@@ -979,6 +979,9 @@ void TimelineWidget::ShowContextMenu()
show_waveforms->setChecked(views_.first()->view()->GetShowWaveforms());
connect(show_waveforms, &QAction::triggered, this, &TimelineWidget::SetViewWaveformsEnabled);
QAction* scroll_zoom = views_.first()->view()->AddSetScrollZoomsByDefaultActionToMenu(&menu);
connect(scroll_zoom, &QAction::triggered, this, &TimelineWidget::SetScrollZoomsByDefaultOnAllViews);
menu.addSeparator();
QAction* properties_action = menu.addAction(tr("Properties"));
@@ -1077,6 +1080,13 @@ void TimelineWidget::TrackIndexChanged(int old, int now)
}
}
void TimelineWidget::SetScrollZoomsByDefaultOnAllViews(bool e)
{
foreach (TimelineAndTrackView* tview, views_) {
tview->view()->SetScrollZoomsByDefault(e);
}
}
void TimelineWidget::AddGhost(TimelineViewGhostItem *ghost)
{
ghost_items_.append(ghost);
@@ -353,6 +353,8 @@ private slots:
void TrackIndexChanged(int old, int now);
void SetScrollZoomsByDefaultOnAllViews(bool e);
};
}