various scrolling fixes for the effect keyframes

This commit is contained in:
itsmattkc
2019-01-22 03:18:52 +11:00
parent 4abf37a27d
commit 2530608ca7
4 changed files with 33 additions and 11 deletions
+18 -8
View File
@@ -11,6 +11,7 @@
#include <QLabel>
#include <QVBoxLayout>
#include <QIcon>
#include <QApplication>
#include "panels/panels.h"
#include "project/effect.h"
@@ -52,6 +53,7 @@ EffectControls::EffectControls(QWidget *parent) :
lblMultipleClipsSelected->setVisible(false);
connect(keyframeView, SIGNAL(wheel_event_signal(QWheelEvent*)), effects_area, SLOT(receive_wheel_event(QWheelEvent*)));
connect(horizontalScrollBar, SIGNAL(valueChanged(int)), headers, SLOT(set_scroll(int)));
connect(horizontalScrollBar, SIGNAL(resize_move(double)), keyframeView, SLOT(resize_move(double)));
connect(horizontalScrollBar, SIGNAL(valueChanged(int)), keyframeView, SLOT(set_x_scroll(int)));
@@ -439,7 +441,17 @@ void EffectControls::setup_ui() {
hlayout->addWidget(splitter);
setWidget(contents);
setWidget(contents);
}
void EffectControls::update_scrollbar() {
verticalScrollBar->setMaximum(qMax(0, effects_area->height() - keyframeView->height() - headers->height()));
verticalScrollBar->setPageStep(verticalScrollBar->height());
}
void EffectControls::queue_post_update() {
keyframeView->update();
update_scrollbar();
}
void EffectControls::load_effects() {
@@ -469,10 +481,10 @@ void EffectControls::load_effects() {
}
if (selected_clips.size() > 0) {
setWindowTitle(panel_name + sequence->clips.at(selected_clips.at(0))->name);
verticalScrollBar->setMaximum(qMax(0, effects_area->sizeHint().height() - headers->height() + scrollArea->horizontalScrollBar()->height()/* - keyframeView->height() - headers->height()*/));
keyframeView->setEnabled(true);
headers->setVisible(true);
keyframeView->update();
QTimer::singleShot(50, this, SLOT(queue_post_update()));
}
}
}
@@ -532,7 +544,7 @@ void EffectControls::audio_transition_click() {
}
void EffectControls::resizeEvent(QResizeEvent*) {
verticalScrollBar->setMaximum(qMax(0, effects_area->height() - keyframeView->height() - headers->height()));
update_scrollbar();
}
bool EffectControls::is_focused() {
@@ -556,8 +568,6 @@ EffectsArea::EffectsArea(QWidget* parent) :
QWidget(parent)
{}
void EffectsArea::resizeEvent(QResizeEvent*) {
// parent_widget->setMinimumWidth(sizeHint().width());
// parent_widget->resize(sizeHint().width(), parent_widget->height());
// parent_widget->updateGeometry();
void EffectsArea::receive_wheel_event(QWheelEvent *e) {
QApplication::sendEvent(this, e);
}
+7 -2
View File
@@ -19,12 +19,14 @@ class QScrollBar;
class QHBoxLayout;
class EffectsArea : public QWidget {
Q_OBJECT
public:
EffectsArea(QWidget* parent = 0);
void resizeEvent(QResizeEvent *event);
EffectsArea(QWidget* parent = 0);
QScrollArea* parent_widget;
KeyframeView* keyframe_area;
TimelineHeader* header;
public slots:
void receive_wheel_event(QWheelEvent* e);
};
class EffectControls : public QDockWidget
@@ -65,6 +67,9 @@ private slots:
void audio_transition_click();
void deselect_all_effects(QWidget*);
void update_scrollbar();
void queue_post_update();
protected:
void resizeEvent(QResizeEvent *event);
private:
+5 -1
View File
@@ -167,7 +167,11 @@ void KeyframeView::paintEvent(QPaintEvent*) {
/*if (mouseover && mouseover_row < rowY.size()) {
draw_keyframe(p, getScreenPointFromFrame(panel_effect_controls->zoom, mouseover_frame - visible_in), rowY.at(mouseover_row), true);
}*/
}*/
}
void KeyframeView::wheelEvent(QWheelEvent *e) {
emit wheel_event_signal(e);
}
bool KeyframeView::keyframeIsSelected(EffectField *field, int keyframe) {
+3
View File
@@ -21,6 +21,8 @@ public:
long visible_in;
long visible_out;
signals:
void wheel_event_signal(QWheelEvent*);
public slots:
void set_x_scroll(int);
void set_y_scroll(int);
@@ -36,6 +38,7 @@ private:
void mouseMoveEvent(QMouseEvent* event);
void mouseReleaseEvent(QMouseEvent *event);
void paintEvent(QPaintEvent *event);
void wheelEvent(QWheelEvent* e);
bool mousedown;
bool dragging;
bool keys_selected;