Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/2.4' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
daschuer committed Apr 29, 2024
2 parents 64f48e8 + 96a03e8 commit c89f917
Show file tree
Hide file tree
Showing 49 changed files with 435 additions and 177 deletions.
39 changes: 34 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,15 +186,17 @@

### Controller Mappings

* Behringer DDM4000 & BCR2000: Fix exception in JS code [#12969](https://github.com/mixxxdj/mixxx/pull/12969)
* Denon DJ MC6000MK2: Fix mapping of filter knob/button [#13166](https://github.com/mixxxdj/mixxx/pull/13166)
* Denon DJ MC7000: Fix redundant argument and migrate to `hotcue_x_status` [#13113](https://github.com/mixxxdj/mixxx/pull/13113) [#13121](https://github.com/mixxxdj/mixxx/pull/13121)
* Hercules Inpulse 200: Configure shift-browser knob to scroll the library (quick) [#12932](https://github.com/mixxxdj/mixxx/pull/12932)
* Pioneer DDJ-FLX4: Add waveform zoom and other mapping improvements
[#12896](https://github.com/mixxxdj/mixxx/pull/12896)
[#12842](https://github.com/mixxxdj/mixxx/pull/12842)
* Traktor Kontrol F1: Fixes for hid-parser and related script [#12876](https://github.com/mixxxdj/mixxx/pull/12876)
* Traktor S2 Mk1: fix warnings [#13145](https://github.com/mixxxdj/mixxx/pull/13145)
* Traktor S3: Fix mapping crash on macOS [#12840](https://github.com/mixxxdj/mixxx/pull/12840)
* Behringer DDM4000 & BCR2000: Fix exception in JS code [#12969](https://github.com/mixxxdj/mixxx/pull/12969)
* Denon DJ MC7000: Fix redundant argument and migrate to `hotcue_x_status` [#13113](https://github.com/mixxxdj/mixxx/pull/13113) [#13121](https://github.com/mixxxdj/mixxx/pull/13121)
* Polish fx chain controls [#12805](https://github.com/mixxxdj/mixxx/pull/12805)
* Controller I/O table: sort action column by display string [#13039](https://github.com/mixxxdj/mixxx/pull/13039)

### Target Support

Expand All @@ -212,9 +214,14 @@

* Deere: make sampler rows persist [#12928](https://github.com/mixxxdj/mixxx/pull/12928)
* Tango: Remove unneeded waveform Singleton [#12938](https://github.com/mixxxdj/mixxx/pull/12938)
* Possible crash in customs skins using parallel waveforms [#13043](https://github.com/mixxxdj/mixxx/pull/13043) [#12580](https://github.com/mixxxdj/mixxx/issues/12580)
* Prevent possible crash in customs skins using parallel waveforms
[#13043](https://github.com/mixxxdj/mixxx/pull/13043)
[#12580](https://github.com/mixxxdj/mixxx/issues/12580)
[#13136](https://github.com/mixxxdj/mixxx/pull/13136)
* Slider tooltip: consider orientation for up/down shortcut tooltips + add support for WKnobComposed [#13088](https://github.com/mixxxdj/mixxx/pull/13088)
* Tooltips: update 'hotcue' with saved loop features [#12875](https://github.com/mixxxdj/mixxx/pull/12875)
* Animate long press latching of sync button [#12990](https://github.com/mixxxdj/mixxx/pull/12990)
* Polish fx chain controls [#12805](https://github.com/mixxxdj/mixxx/pull/12805)

### Library

Expand All @@ -235,6 +242,17 @@
* Allow adding new directories while watched directories are missing
[#12937](https://github.com/mixxxdj/mixxx/pull/12937)
[#10481](https://github.com/mixxxdj/mixxx/issues/10481)
* Require a minimum movement before initiating the drag&drop of tracks
[#13135](https://github.com/mixxxdj/mixxx/pull/13135)
[#12902](https://github.com/mixxxdj/mixxx/issues/12902)
* iTunes/Serato/Traktor/Rhythmbox: Print error if library file could not be opened
[#13012](https://github.com/mixxxdj/mixxx/pull/13012)
* Playlists: improve table update after deleting (purging) track files
[#13127](https://github.com/mixxxdj/mixxx/pull/13127)
* Fix Color column width issue [#12852](https://github.com/mixxxdj/mixxx/pull/12852)
* Tracks: select track row when clicking the preview button (only when starting preview)
[#12791](https://github.com/mixxxdj/mixxx/pull/12791)
* Library track menu: show Hide action also in Playlist & Crates [#11901](https://github.com/mixxxdj/mixxx/pull/11901)

### Miscellaneous

Expand All @@ -248,7 +266,18 @@
* AutoDJ: Fix button state after error message about playing deck 3/4
[#12976](https://github.com/mixxxdj/mixxx/pull/12976)
[#12975](https://github.com/mixxxdj/mixxx/issues/12975)
* Tagfetcher: Cache fetched covers [#12301](https://github.com/mixxxdj/mixxx/pull/12301) [#11084](https://github.com/mixxxdj/mixxx/issues/11084)
* Tagfetcher: Cache fetched covers
[#12301](https://github.com/mixxxdj/mixxx/pull/12301)
[#11084](https://github.com/mixxxdj/mixxx/issues/11084)
* Avoid beats iterator being one off and DEBUG_ASSERT in Beats::iteratorFrom
[#13150](https://github.com/mixxxdj/mixxx/pull/13150)
[#13149](https://github.com/mixxxdj/mixxx/issues/13149)
* Show hint if resource path in CMakeCache.txt does not exist
[#12929](https://github.com/mixxxdj/mixxx/pull/12929)
* Always calculate the auto value for colorful console output [#13153](https://github.com/mixxxdj/mixxx/pull/13153)
* Fix FLAC recording on macOS and Windows
[#10880](https://github.com/mixxxdj/mixxx/issues/10880)
[#13154](https://github.com/mixxxdj/mixxx/pull/13154)

## [2.4.0](https://github.com/mixxxdj/mixxx/milestone/15?closed=1) (2024-02-16)

Expand Down
6 changes: 6 additions & 0 deletions packaging/debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
mixxx (2.4.0-1~focal) focal; urgency=medium

* Build of 2.4.0

-- RJ Skerry-Ryan <rryan@mixxx.org> Thu, 15 Feb 2024 23:55:01 +0000

mixxx (2.3.6-1~bionic) bionic; urgency=medium

* Build of 2.3.6
Expand Down
4 changes: 2 additions & 2 deletions res/controllers/Denon-MC6000MK2-scripts.js
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,7 @@ DenonMC6000MK2.Sampler.prototype.connectControls = function() {
DenonMC6000MK2.OldDeck = function(number, midiChannel) {
this.number = number;
this.group = "[Channel" + number + "]";
this.filterGroup = "[QuickEffectRack1_" + this.group + "_Effect1]";
this.filterGroup = "[QuickEffectRack1_" + this.group + "]";
this.midiChannel = midiChannel;
this.jogTouchState = false;
DenonMC6000MK2.oldDecksByGroup[this.group] = this;
Expand Down Expand Up @@ -912,7 +912,7 @@ DenonMC6000MK2.OldDeck.prototype.spinJog = function(jogDelta) {
DenonMC6000MK2.OldDeck.prototype.applyFilter = function() {
var side = DenonMC6000MK2.getOldSideByGroup(this.group);
engine.setValue(this.filterGroup, "enabled", side.filterEnabled);
engine.setParameter(this.filterGroup, "meta", side.filterParam);
engine.setParameter(this.filterGroup, "super1", side.filterParam);
};

/* Loops */
Expand Down
90 changes: 75 additions & 15 deletions res/linux/org.mixxx.Mixxx.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
Do not edit it manually.
-->
<releases>
<release version="2.5.0" type="development" date="2024-04-19" timestamp="1713558879">
<release version="2.5.0" type="development" date="2024-04-23" timestamp="1713855934">
<description>
<p>
Features
Expand Down Expand Up @@ -704,12 +704,26 @@
</ul>
</description>
</release>
<release version="2.4.1" type="development" date="2024-04-19" timestamp="1713558879">
<release version="2.4.1" type="development" date="2024-04-23" timestamp="1713855934">
<description>
<p>
Controller Mappings
</p>
<ul>
<li>
Behringer DDM4000 &amp; BCR2000: Fix exception in JS code
#12969
</li>
<li>
Denon DJ MC6000MK2: Fix mapping of filter knob/button
#13166
</li>
<li>
Denon DJ MC7000: Fix redundant argument and migrate to
hotcue_x_status
#13113
#13121
</li>
<li>
Hercules Inpulse 200: Configure shift-browser knob to scroll the library (quick)
#12932
Expand All @@ -724,22 +738,16 @@
#12876
</li>
<li>
Traktor S3: Fix mapping crash on macOS
#12840
</li>
<li>
Behringer DDM4000 &amp; BCR2000: Fix exception in JS code
#12969
Traktor S2 Mk1: fix warnings
#13145
</li>
<li>
Denon DJ MC7000: Fix redundant argument and migrate to
hotcue_x_status
#13113
#13121
Traktor S3: Fix mapping crash on macOS
#12840
</li>
<li>
Polish fx chain controls
#12805
Controller I/O table: sort action column by display string
#13039
</li>
</ul>
<p>
Expand Down Expand Up @@ -773,9 +781,10 @@
#12938
</li>
<li>
Possible crash in customs skins using parallel waveforms
Prevent possible crash in customs skins using parallel waveforms
#13043
#12580
#13136
</li>
<li>
Slider tooltip: consider orientation for up/down shortcut tooltips + add support for WKnobComposed
Expand All @@ -785,6 +794,14 @@
Tooltips: update 'hotcue' with saved loop features
#12875
</li>
<li>
Animate long press latching of sync button
#12990
</li>
<li>
Polish fx chain controls
#12805
</li>
</ul>
<p>
Library
Expand Down Expand Up @@ -827,6 +844,31 @@
#12937
#10481
</li>
<li>
Require a minimum movement before initiating the drag&amp;drop of tracks
#13135
#12902
</li>
<li>
iTunes/Serato/Traktor/Rhythmbox: Print error if library file could not be opened
#13012
</li>
<li>
Playlists: improve table update after deleting (purging) track files
#13127
</li>
<li>
Fix Color column width issue
#12852
</li>
<li>
Tracks: select track row when clicking the preview button (only when starting preview)
#12791
</li>
<li>
Library track menu: show Hide action also in Playlist &amp; Crates
#11901
</li>
</ul>
<p>
Miscellaneous
Expand Down Expand Up @@ -864,6 +906,24 @@
#12301
#11084
</li>
<li>
Avoid beats iterator being one off and DEBUG_ASSERT in Beats::iteratorFrom
#13150
#13149
</li>
<li>
Show hint if resource path in CMakeCache.txt does not exist
#12929
</li>
<li>
Always calculate the auto value for colorful console output
#13153
</li>
<li>
Fix FLAC recording on macOS and Windows
#10880
#13154
</li>
</ul>
</description>
</release>
Expand Down
Binary file modified res/translations/mixxx_hy.qm
Binary file not shown.
Binary file modified res/translations/mixxx_is.qm
Binary file not shown.
Binary file modified res/translations/mixxx_lb.qm
Binary file not shown.
Binary file modified res/translations/mixxx_lt.qm
Binary file not shown.
Binary file modified res/translations/mixxx_lv.qm
Binary file not shown.
Binary file modified res/translations/mixxx_mi.qm
Binary file not shown.
Binary file modified res/translations/mixxx_mk.qm
Binary file not shown.
Binary file modified res/translations/mixxx_ms.qm
Binary file not shown.
Binary file modified res/translations/mixxx_my.qm
Binary file not shown.
Binary file modified res/translations/mixxx_nn.qm
Binary file not shown.
Binary file modified res/translations/mixxx_oc.qm
Binary file not shown.
Binary file modified res/translations/mixxx_sq_AL.qm
Binary file not shown.
Binary file modified res/translations/mixxx_te.qm
Binary file not shown.
Binary file modified res/translations/mixxx_uz.qm
Binary file not shown.
14 changes: 9 additions & 5 deletions src/controllers/controllerinputmappingtablemodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -221,12 +221,16 @@ QVariant ControllerInputMappingTableModel::data(const QModelIndex& index,
return QVariant(mapping.options);
}
return QVariant::fromValue(mapping.options);
case MIDI_COLUMN_ACTION:
if (role == Qt::UserRole) {
// TODO(rryan): somehow get the delegate display text?
return QVariant(control->group + QStringLiteral(",") + control->item);
case MIDI_COLUMN_ACTION: {
if (role == Qt::UserRole) { // sort by displaystring
QStyledItemDelegate* del = getDelegateForIndex(index);
VERIFY_OR_DEBUG_ASSERT(del) {
return QString();
}
return del->displayText(QVariant::fromValue(mapping.control), QLocale());
}
return QVariant::fromValue(control);
return QVariant::fromValue(mapping.control);
}
case MIDI_COLUMN_COMMENT:
return mapping.description;
default:
Expand Down
59 changes: 30 additions & 29 deletions src/controllers/keyboard/keyboardeventfilter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,41 +118,42 @@ bool KeyboardEventFilter::eventFilter(QObject*, QEvent* e) {
return false;
}

// static
QKeySequence KeyboardEventFilter::getKeySeq(QKeyEvent* e) {
QString modseq;
QKeySequence k;

// TODO(XXX) check if we may simply return QKeySequence(e->modifiers()+e->key())

if (e->modifiers() & Qt::ShiftModifier) {
modseq += "Shift+";
}

if (e->modifiers() & Qt::ControlModifier) {
modseq += "Ctrl+";
}

if (e->modifiers() & Qt::AltModifier) {
modseq += "Alt+";
}

if (e->modifiers() & Qt::MetaModifier) {
modseq += "Meta+";
}

if (e->key() >= 0x01000020 && e->key() <= 0x01000023) {
// Do not act on Modifier only
// avoid returning "khmer vowel sign ie (U+17C0)"
return k;
// Do not act on Modifier only, avoid returning "khmer vowel sign ie (U+17C0)"
return {};
}

QString keyseq = QKeySequence(e->key()).toString();
k = QKeySequence(modseq + keyseq);

if (CmdlineArgs::Instance().getDeveloper()) {
qDebug() << "keyboard press: " << k.toString();
QString modseq;
QKeySequence k;
if (e->modifiers() & Qt::ShiftModifier) {
modseq += "Shift+";
}
if (e->modifiers() & Qt::ControlModifier) {
modseq += "Ctrl+";
}
if (e->modifiers() & Qt::AltModifier) {
modseq += "Alt+";
}
if (e->modifiers() & Qt::MetaModifier) {
modseq += "Meta+";
}
QString keyseq = QKeySequence(e->key()).toString();
k = QKeySequence(modseq + keyseq);
if (e->type() == QEvent::KeyPress) {
qDebug() << "keyboard press: " << k.toString();
} else if (e->type() == QEvent::KeyRelease) {
qDebug() << "keyboard release: " << k.toString();
}
}
return k;

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
return QKeySequence(e->modifiers() | e->key());
#else
return QKeySequence(e->modifiers() + e->key());
#endif
}

void KeyboardEventFilter::setKeyboardConfig(ConfigObject<ConfigValueKbd>* pKbdConfigObject) {
Expand Down
7 changes: 3 additions & 4 deletions src/controllers/keyboard/keyboardeventfilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ class KeyboardEventFilter : public QObject {
void setKeyboardConfig(ConfigObject<ConfigValueKbd> *pKbdConfigObject);
ConfigObject<ConfigValueKbd>* getKeyboardConfig();

// Returns a valid QString with modifier keys from a QKeyEvent
static QKeySequence getKeySeq(QKeyEvent* e);

private:
struct KeyDownInformation {
KeyDownInformation(int keyId, int modifiers, ControlObject* pControl)
Expand All @@ -38,9 +41,6 @@ class KeyboardEventFilter : public QObject {
ControlObject* pControl;
};

// Returns a valid QString with modifier keys from a QKeyEvent
QKeySequence getKeySeq(QKeyEvent *e);

// Run through list of active keys to see if the pressed key is already active
// and is not a control that repeats when held.
bool shouldSkipHeldKey(int keyId) {
Expand All @@ -51,7 +51,6 @@ class KeyboardEventFilter : public QObject {
return keyDownInfo.keyId == keyId && !keyDownInfo.pControl->getKbdRepeatable();
});
}

// List containing keys which is currently pressed
QList<KeyDownInformation> m_qActiveKeyList;
// Pointer to keyboard config object
Expand Down
10 changes: 10 additions & 0 deletions src/library/basetracktablemodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,16 @@ QVariant BaseTrackTableModel::data(
}
}

// Return the preferred (default) width of the Color column.
// This works around inconsistencies when the width is determined by
// color values. See https://github.com/mixxxdj/mixxx/issues/12850
if (role == Qt::SizeHintRole) {
const auto field = mapColumn(index.column());
if (field == ColumnCache::COLUMN_LIBRARYTABLE_COLOR) {
return QSize(defaultColumnWidth() / 2, 0);
}
}

// Only retrieve a value for supported roles
if (role != Qt::DisplayRole &&
role != Qt::EditRole &&
Expand Down
Loading

0 comments on commit c89f917

Please sign in to comment.