Merge branch 'master' into cache-update

This commit is contained in:
itsmattkc
2022-08-18 08:12:46 -07:00
183 changed files with 7520 additions and 1705 deletions
+32 -6
View File
@@ -48,7 +48,8 @@ SeekableWidget::SeekableWidget(QWidget* parent) :
selection_manager_(this),
resize_item_(nullptr),
marker_top_(0),
marker_bottom_(0)
marker_bottom_(0),
marker_editing_enabled_(true)
{
QFontMetrics fm = fontMetrics();
@@ -172,7 +173,11 @@ bool SeekableWidget::PasteMarkers()
void SeekableWidget::mousePressEvent(QMouseEvent *event)
{
if (resize_item_) {
TimelineMarker *initial;
if (HandPress(event)) {
return;
} else if (resize_item_) {
// Handle selection, even though we won't be using it for dragging
if (!(event->modifiers() & Qt::ShiftModifier)) {
selection_manager_.ClearSelection();
@@ -182,7 +187,7 @@ void SeekableWidget::mousePressEvent(QMouseEvent *event)
}
dragging_ = true;
resize_start_ = mapToScene(event->pos());
} else if (TimelineMarker *initial = selection_manager_.MousePress(event)) {
} else if (marker_editing_enabled_ && (initial = selection_manager_.MousePress(event))) {
selection_manager_.DragStart(initial, event);
} else if (!selection_manager_.GetObjectAtPoint(event->pos()) && event->button() == Qt::LeftButton) {
SeekToScenePoint(mapToScene(event->pos()).x());
@@ -194,7 +199,9 @@ void SeekableWidget::mousePressEvent(QMouseEvent *event)
void SeekableWidget::mouseMoveEvent(QMouseEvent *event)
{
if (selection_manager_.IsDragging()) {
if (HandMove(event)) {
return;
} else if (selection_manager_.IsDragging()) {
selection_manager_.DragMove(event);
} else if (dragging_) {
QPointF scene = mapToScene(event->pos());
@@ -215,6 +222,10 @@ void SeekableWidget::mouseMoveEvent(QMouseEvent *event)
void SeekableWidget::mouseReleaseEvent(QMouseEvent *event)
{
if (HandRelease(event)) {
return;
}
if (selection_manager_.IsDragging()) {
MultiUndoCommand *command = new MultiUndoCommand();
selection_manager_.DragStop(command);
@@ -231,6 +242,7 @@ void SeekableWidget::mouseReleaseEvent(QMouseEvent *event)
}
dragging_ = false;
emit DragReleased();
}
void SeekableWidget::mouseDoubleClickEvent(QMouseEvent *event)
@@ -276,7 +288,17 @@ void SeekableWidget::DrawMarkers(QPainter *p, int marker_bottom)
break;
}
QRect marker_rect = marker->Draw(p, QPoint(marker_left, marker_bottom), GetScale(), selection_manager_.IsSelected(marker));
int max_marker_right = lim_right;
{
// Check if there's a marker next
auto next = it;
next++;
if (next != markers_->cend()) {
max_marker_right = std::min(max_marker_right, int(TimeToScene((*next)->time().in())));
}
}
QRect marker_rect = marker->Draw(p, QPoint(marker_left, marker_bottom), max_marker_right, GetScale(), selection_manager_.IsSelected(marker));
marker_top_ = marker_rect.top();
selection_manager_.DeclareDrawnObject(marker, marker_rect);
}
@@ -419,7 +441,7 @@ int SeekableWidget::GetRightLimit() const
bool SeekableWidget::ShowContextMenu(const QPoint &p)
{
if (selection_manager_.GetObjectAtPoint(p) && !selection_manager_.GetSelectedObjects().empty()) {
if (marker_editing_enabled_ && selection_manager_.GetObjectAtPoint(p) && !selection_manager_.GetSelectedObjects().empty()) {
// Show marker-specific menu
Menu m;
@@ -446,6 +468,10 @@ bool SeekableWidget::ShowContextMenu(const QPoint &p)
bool SeekableWidget::FindResizeHandle(QMouseEvent *event)
{
if (!marker_editing_enabled_) {
return false;
}
resize_item_ = nullptr;
resize_mode_ = kResizeNone;
+8
View File
@@ -52,6 +52,9 @@ public:
return dragging_;
}
bool IsMarkerEditingEnabled() const { return marker_editing_enabled_; }
void SetMarkerEditingEnabled(bool e) { marker_editing_enabled_ = e; }
void DeleteSelected();
bool CopySelected(bool cut);
@@ -78,6 +81,9 @@ public slots:
virtual void TimebaseChangedEvent(const rational &) override;
signals:
void DragReleased();
protected:
virtual void mousePressEvent(QMouseEvent *event) override;
virtual void mouseMoveEvent(QMouseEvent *event) override;
@@ -140,6 +146,8 @@ private:
int marker_top_;
int marker_bottom_;
bool marker_editing_enabled_;
private slots:
void SetMarkerColor(int c);