Fix Position Line gradient appearing in all editors no matter which one is playing (#7882)

This commit is contained in:
regulus79
2025-06-03 23:10:13 -04:00
committed by GitHub
parent 2c1d402255
commit 8acc4ed3ae
4 changed files with 10 additions and 8 deletions

View File

@@ -28,6 +28,8 @@
#include <QWidget>
#include "Song.h"
namespace lmms::gui
{
@@ -37,7 +39,7 @@ class PositionLine : public QWidget
Q_PROPERTY(bool tailGradient MEMBER m_hasTailGradient)
Q_PROPERTY(QColor lineColor MEMBER m_lineColor)
public:
PositionLine(QWidget* parent);
PositionLine(QWidget* parent, Song::PlayMode playMode);
public slots:
void zoomChange(float zoom);
@@ -45,6 +47,8 @@ public slots:
private:
void paintEvent(QPaintEvent* pe) override;
Song::PlayMode m_playMode;
bool m_hasTailGradient;
QColor m_lineColor;
};

View File

@@ -283,7 +283,7 @@ PianoRoll::PianoRoll() :
this, SLOT( updatePosition( const lmms::TimePos& ) ) );
// white position line follows timeline marker
m_positionLine = new PositionLine(this);
m_positionLine = new PositionLine(this, Song::PlayMode::MidiClip);
//update timeline when in step-recording mode
connect( &m_stepRecorderWidget, SIGNAL( positionChanged( const lmms::TimePos& ) ),

View File

@@ -26,14 +26,13 @@
#include <QPainter>
#include "Song.h"
namespace lmms::gui
{
PositionLine::PositionLine(QWidget* parent) :
PositionLine::PositionLine(QWidget* parent, Song::PlayMode playMode) :
QWidget(parent),
m_playMode(playMode),
m_hasTailGradient(false),
m_lineColor(0, 0, 0, 0)
{
@@ -64,8 +63,7 @@ void PositionLine::paintEvent(QPaintEvent* pe)
// If gradient is enabled, we're in focus and we're playing, enable gradient
if (m_hasTailGradient &&
Engine::getSong()->isPlaying() &&
(Engine::getSong()->playMode() == Song::PlayMode::Song ||
Engine::getSong()->playMode() == Song::PlayMode::MidiClip))
(Engine::getSong()->playMode() == m_playMode))
{
c.setAlpha(60);
gradient.setColorAt(w, c);

View File

@@ -113,7 +113,7 @@ SongEditor::SongEditor( Song * song ) :
// when tracks realign, adjust height of position line
connect(this, &TrackContainerView::tracksRealigned, this, &SongEditor::updatePositionLine);
m_positionLine = new PositionLine(this);
m_positionLine = new PositionLine(this, Song::PlayMode::Song);
static_cast<QVBoxLayout *>( layout() )->insertWidget( 1, m_timeLine );
connect( m_song, SIGNAL(playbackStateChanged()),