Skip to content

Commit

Permalink
Move currentLayerChanged logic into existing onLayerChanged
Browse files Browse the repository at this point in the history
  • Loading branch information
MrStevns committed Jul 28, 2024
1 parent e915533 commit e1dd21b
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 27 deletions.
48 changes: 24 additions & 24 deletions app/src/timeline.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -197,12 +197,11 @@ void TimeLine::initUI()

setWindowFlags(Qt::WindowStaysOnTopHint);

connect(editor()->layers(), &LayerManager::currentLayerChanged, this, &TimeLine::currentLayerChanged);
connect(mHScrollbar, &QScrollBar::valueChanged, mTracks, &TimeLineCells::hScrollChange);
connect(mTracks, &TimeLineCells::offsetChanged, mHScrollbar, &QScrollBar::setValue);
connect(mVScrollbar, &QScrollBar::valueChanged, mTracks, &TimeLineCells::vScrollChange);
connect(mVScrollbar, &QScrollBar::valueChanged, mLayerList, &TimeLineCells::vScrollChange);
connect(mVScrollbar, &QScrollBar::valueChanged, this, &TimeLine::scrollbarValueChanged);
connect(mVScrollbar, &QScrollBar::valueChanged, this, &TimeLine::onScrollbarValueChanged);
connect(mScrollingStoppedTimer, &QTimer::timeout, mLayerList, &TimeLineCells::onScrollingVerticallyStopped);

connect(splitter, &QSplitter::splitterMoved, this, &TimeLine::updateLength);
Expand Down Expand Up @@ -239,7 +238,7 @@ void TimeLine::initUI()

LayerManager* layer = editor()->layers();
connect(layer, &LayerManager::layerCountChanged, this, &TimeLine::updateLayerNumber);
connect(layer, &LayerManager::currentLayerChanged, this, &TimeLine::onLayerChanged);
connect(layer, &LayerManager::currentLayerChanged, this, &TimeLine::onCurrentLayerChanged);
mNumLayers = layer->count();

scrubbing = false;
Expand Down Expand Up @@ -292,31 +291,12 @@ void TimeLine::wheelEvent(QWheelEvent* event)
}
}

void TimeLine::scrollbarValueChanged()
void TimeLine::onScrollbarValueChanged()
{
// After the scrollbar has been updated, prepare to trigger stopped event
mScrollingStoppedTimer->start(150);
}

void TimeLine::currentLayerChanged(int layerIndex)
{
// invert index so 0 is at the top
int idx = mNumLayers - layerIndex - 1;
// number of visible layers
int height = mNumLayers - mVScrollbar->maximum();
// scroll bar position/offset
int pos = mVScrollbar->value();

if (idx < pos) // above visible area
{
mVScrollbar->setValue(idx);
}
else if (idx >= pos + height) // below visible area
{
mVScrollbar->setValue(idx - height + 1);
}
}

void TimeLine::updateFrame(int frameNumber)
{
Q_ASSERT(mTracks);
Expand Down Expand Up @@ -390,7 +370,27 @@ void TimeLine::onObjectLoaded()
updateLayerNumber(editor()->layers()->count());
}

void TimeLine::onLayerChanged()
void TimeLine::onCurrentLayerChanged()
{
updateVerticalScrollbarPosition();
mLayerDeleteButton->setEnabled(editor()->layers()->canDeleteLayer(editor()->currentLayerIndex()));
}

void TimeLine::updateVerticalScrollbarPosition()
{
// invert index so 0 is at the top
int idx = mNumLayers - editor()->currentLayerIndex() - 1;
// number of visible layers
int height = mNumLayers - mVScrollbar->maximum();
// scroll bar position/offset
int pos = mVScrollbar->value();

if (idx < pos) // above visible area
{
mVScrollbar->setValue(idx);
}
else if (idx >= pos + height) // below visible area
{
mVScrollbar->setValue(idx - height + 1);
}
}
7 changes: 4 additions & 3 deletions app/src/timeline.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,8 @@ class TimeLine : public BaseDockWidget
int getRangeUpper();

void onObjectLoaded();
void onLayerChanged();

void scrollbarValueChanged();
void onCurrentLayerChanged();
void onScrollbarValueChanged();

signals:
void selectionChanged();
Expand Down Expand Up @@ -89,6 +88,8 @@ class TimeLine : public BaseDockWidget
void wheelEvent( QWheelEvent* ) override;

private:
void updateVerticalScrollbarPosition();

QScrollBar* mHScrollbar = nullptr;
QScrollBar* mVScrollbar = nullptr;
TimeLineCells* mTracks = nullptr;
Expand Down

0 comments on commit e1dd21b

Please sign in to comment.