summaryrefslogtreecommitdiffstats
path: root/src/library/librarycontrol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/librarycontrol.cpp')
-rw-r--r--src/library/librarycontrol.cpp30
1 files changed, 24 insertions, 6 deletions
diff --git a/src/library/librarycontrol.cpp b/src/library/librarycontrol.cpp
index 8bd0df6116..ae747479f4 100644
--- a/src/library/librarycontrol.cpp
+++ b/src/library/librarycontrol.cpp
@@ -4,17 +4,18 @@
#include <QItemSelectionModel>
#include <QModelIndex>
#include <QModelIndexList>
+#include <QWindow>
#include <QtDebug>
#include "control/controlobject.h"
#include "control/controlpushbutton.h"
+#include "library/library.h"
+#include "library/libraryview.h"
#include "mixer/playermanager.h"
#include "widget/wlibrary.h"
#include "widget/wlibrarysidebar.h"
#include "widget/wsearchlineedit.h"
#include "widget/wtracktableview.h"
-#include "library/library.h"
-#include "library/libraryview.h"
LoadToGroupController::LoadToGroupController(LibraryControl* pParent, const QString& group)
: QObject(pParent),
@@ -708,6 +709,13 @@ void LibraryControl::slotGoToItem(double v) {
// Clear the search if the searchbox has focus
emit clearSearchIfClearButtonHasFocus();
+ // If the focused window is a dialog, press Enter
+ auto focusWindow = QApplication::focusWindow();
+ if (focusWindow && (focusWindow->type() & (Qt::Dialog | Qt::Popup))) {
+ QKeyEvent event(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier);
+ QApplication::sendEvent(focusWindow, &event);
+ }
+
// TODO(xxx) instead of remote control the widgets individual, we should
// translate this into Alt+Return and handle it at each library widget
// individual https://bugs.launchpad.net/mixxx/+bug/1758618
@@ -718,12 +726,22 @@ void LibraryControl::slotSortColumn(double v) {
m_pSortColumnToggle->set(v);
}
-void LibraryControl::slotSortColumnToggle(double value) {
- int column = static_cast<int>(value);
- if (column == static_cast<int>(m_pSortColumn->get())) {
+void LibraryControl::slotSortColumnToggle(double v) {
+ int sortColumnId = static_cast<int>(v);
+ if (sortColumnId == static_cast<int>(TrackModel::SortColumnId::CurrentIndex)) {
+ if (!m_pLibraryWidget) {
+ return;
+ }
+ // Get the ID of the column with the cursor
+ sortColumnId =
+ static_cast<int>(m_pLibraryWidget->getActiveView()
+ ->getColumnIdFromCurrentIndex());
+ }
+
+ if (static_cast<int>(m_pSortColumn->get()) == sortColumnId) {
m_pSortOrder->set((m_pSortOrder->get() == 0) ? 1.0 : 0.0);
} else {
- m_pSortColumn->set(value);
+ m_pSortColumn->set(sortColumnId);
m_pSortOrder->set(0.0);
}
}