Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions include/TrackGrip.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,16 @@ class QPixmap;
namespace lmms
{

class Track;

namespace gui
{

class TrackView;

class TrackGrip : public QWidget
{
Q_OBJECT
public:
TrackGrip(Track* track, QWidget* parent = 0);
TrackGrip(TrackView* trackView, QWidget* parent = 0);
Comment thread
regulus79 marked this conversation as resolved.
Outdated
~TrackGrip() override = default;

signals:
Expand All @@ -55,7 +55,7 @@ class TrackGrip : public QWidget
void paintEvent(QPaintEvent*) override;

private:
Track* m_track = nullptr;
TrackView* m_trackView = nullptr;
bool m_isGrabbed = false;
static QPixmap* s_grabbedPixmap;
static QPixmap* s_releasedPixmap;
Expand Down
1 change: 0 additions & 1 deletion include/TrackOperationsWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ class TrackOperationsWidget : public QWidget
TrackGrip* getTrackGrip() const { return m_trackGrip; }

protected:
void mousePressEvent( QMouseEvent * me ) override;
void paintEvent( QPaintEvent * pe ) override;
bool confirmRemoval();

Expand Down
34 changes: 24 additions & 10 deletions src/gui/tracks/TrackGrip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,12 @@

#include "TrackGrip.h"

#include "DataFile.h"
#include "embed.h"
#include "KeyboardShortcuts.h"
#include "StringPairDrag.h"
#include "Track.h"
#include "TrackView.h"

#include <QPainter>
#include <QPixmap>
Expand All @@ -40,9 +44,9 @@ QPixmap* TrackGrip::s_releasedPixmap = nullptr;

constexpr int c_margin = 2;

TrackGrip::TrackGrip(Track* track, QWidget* parent) :
TrackGrip::TrackGrip(TrackView* trackView, QWidget* parent) :
QWidget(parent),
m_track(track)
m_trackView(trackView)
{
if (!s_grabbedPixmap)
{
Expand All @@ -63,14 +67,24 @@ TrackGrip::TrackGrip(Track* track, QWidget* parent) :

void TrackGrip::mousePressEvent(QMouseEvent* m)
{
m->accept();

m_isGrabbed = true;
setCursor(Qt::ClosedHandCursor);
// Allow the user to Ctrl-drag copy the track if it is not a pattern track
if (m->button() == Qt::LeftButton && m->modifiers() & KBD_COPY_MODIFIER && m_trackView->getTrack()->type() != Track::Type::Pattern)
Comment thread
regulus79 marked this conversation as resolved.
Outdated
{
m->accept();
DataFile dataFile(DataFile::Type::DragNDropData);
m_trackView->getTrack()->saveState(dataFile, dataFile.content());
new StringPairDrag(QString("track_%1").arg(static_cast<int>(m_trackView->getTrack()->type())), dataFile.toString(), m_trackView->getTrackSettingsWidget()->grab(), this);
}
else
{
m->accept();

emit grabbed();
m_isGrabbed = true;
setCursor(Qt::ClosedHandCursor);

update();
emit grabbed();
update();
}
}

void TrackGrip::mouseReleaseEvent(QMouseEvent* m)
Expand All @@ -90,8 +104,8 @@ void TrackGrip::paintEvent(QPaintEvent*)
QPainter p(this);

// Check if the color of the track should be used for the background
const auto color = m_track->color();
const auto muted = m_track->getMutedModel()->value();
const auto color = m_trackView->getTrack()->color();
const auto muted = m_trackView->getTrack()->getMutedModel()->value();

if (color.has_value() && !muted)
{
Expand Down
32 changes: 1 addition & 31 deletions src/gui/tracks/TrackOperationsWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
#include "AutomationTrackView.h"
#include "ColorChooser.h"
#include "ConfigManager.h"
#include "DataFile.h"
#include "embed.h"
#include "Engine.h"
#include "InstrumentTrackView.h"
Expand Down Expand Up @@ -77,7 +76,7 @@ TrackOperationsWidget::TrackOperationsWidget( TrackView * parent ) :
layout->setSpacing(0);
layout->setAlignment(Qt::AlignTop);

m_trackGrip = new TrackGrip(m_trackView->getTrack(), this);
m_trackGrip = new TrackGrip(m_trackView, this);
layout->addWidget(m_trackGrip);

// This widget holds the gear icon and the mute and solo
Expand Down Expand Up @@ -120,35 +119,6 @@ TrackOperationsWidget::TrackOperationsWidget( TrackView * parent ) :
}


/*! \brief Respond to trackOperationsWidget mouse events
*
* If it's the left mouse button, and Ctrl is held down, and we're
* not a Pattern Editor track, then start a new drag event to
* copy this track.
*
* Otherwise, ignore all other events.
*
* \param me The mouse event to respond to.
*/
void TrackOperationsWidget::mousePressEvent( QMouseEvent * me )
{
if (me->button() == Qt::LeftButton && me->modifiers() & KBD_COPY_MODIFIER &&
m_trackView->getTrack()->type() != Track::Type::Pattern)
{
DataFile dataFile( DataFile::Type::DragNDropData );
m_trackView->getTrack()->saveState( dataFile, dataFile.content() );
new StringPairDrag( QString( "track_%1" ).arg(
static_cast<int>(m_trackView->getTrack()->type()) ),
dataFile.toString(), m_trackView->getTrackSettingsWidget()->grab(),
this );
}
else if( me->button() == Qt::LeftButton )
{
// track-widget (parent-widget) initiates track-move
me->ignore();
}
}


/*!
* \brief Repaint the trackOperationsWidget
Expand Down
Loading