Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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 = nullptr);
~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
41 changes: 31 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,31 @@ 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)
{
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 +111,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