From 0e796aad960d50572b005686720eeec21ba5dd2c Mon Sep 17 00:00:00 2001 From: LoRd_MuldeR Date: Sun, 24 May 2015 23:54:26 +0200 Subject: [PATCH] When moving files in the list, ensure the selected file(s) remain visible in the view. --- LameXP_VS2013.vcxproj | 19 ++++++++++++------- src/Config.h | 2 +- src/Dialog_MainWindow.cpp | 35 ++++++++++++++++++++++++++--------- 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/LameXP_VS2013.vcxproj b/LameXP_VS2013.vcxproj index ddb72e7c..fb06f4fd 100644 --- a/LameXP_VS2013.vcxproj +++ b/LameXP_VS2013.vcxproj @@ -101,9 +101,13 @@ lamexp_entry_point - Copy VLD DLL%27s - copy /Y "$(SolutionDir)\..\Prerequisites\VisualLeakDetector\bin\Win32\*.dll" "$(TargetDir)" -copy /Y "$(SolutionDir)\..\Prerequisites\VisualLeakDetector\bin\Win32\*.manifest" "$(TargetDir)" + Copy DLL's + mkdir "$(OutDir)\imageformats" 2> NUL +copy /Y "$(SolutionDir)\..\Prerequisites\Qt4\MSVC-2013\Debug\bin\Qt*.dll" "$(OutDir)" +copy /Y "$(SolutionDir)\..\Prerequisites\Qt4\MSVC-2013\Debug\plugins\imageformats\*.dll" "$(OutDir)\imageformats" +copy /Y "$(SolutionDir)\..\Prerequisites\VisualLeakDetector\bin\Win32\*.dll" "$(OutDir)" +copy /Y "$(SolutionDir)\..\Prerequisites\VisualLeakDetector\bin\Win32\*.manifest" "$(OutDir)" + _CONFIG_NAME=$(ConfigurationName);%(PreprocessorDefinitions) @@ -175,10 +179,11 @@ copy /Y "$(SolutionDir)\..\Prerequisites\VisualLeakDetector\bin\Win32\*.manifest false - - - - + Copy DLL's + mkdir "$(OutDir)\imageformats" 2> NUL +copy /Y "$(SolutionDir)\..\Prerequisites\Qt4\MSVC-2013\Shared\bin\Qt*.dll" "$(OutDir)" +copy /Y "$(SolutionDir)\..\Prerequisites\Qt4\MSVC-2013\Shared\plugins\imageformats\*.dll" "$(OutDir)\imageformats" + _CONFIG_NAME=$(ConfigurationName);%(PreprocessorDefinitions) diff --git a/src/Config.h b/src/Config.h index 747380c5..82e8e353 100644 --- a/src/Config.h +++ b/src/Config.h @@ -35,7 +35,7 @@ #define VER_LAMEXP_MINOR_LO 2 #define VER_LAMEXP_TYPE Alpha #define VER_LAMEXP_PATCH 5 -#define VER_LAMEXP_BUILD 1753 +#define VER_LAMEXP_BUILD 1754 #define VER_LAMEXP_CONFG 1700 /////////////////////////////////////////////////////////////////////////////// diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp index 7c4b781f..309d9102 100644 --- a/src/Dialog_MainWindow.cpp +++ b/src/Dialog_MainWindow.cpp @@ -1069,6 +1069,7 @@ void MainWindow::moveSelectedFiles(const bool &up) const QModelIndex item = m_fileListModel->index(firstIndex + i, 0); selection->select(QItemSelection(item, item), QItemSelectionModel::Select | QItemSelectionModel::Rows); } + ui->sourceFileView->scrollTo(m_fileListModel->index((up ? firstIndex : firstIndex + selectionCount - 1), 0), QAbstractItemView::PositionAtCenter); return; } } @@ -2443,23 +2444,28 @@ void MainWindow::openFolderActionActivated(void) */ void MainWindow::removeFileButtonClicked(void) { - const QModelIndex current = ui->sourceFileView->currentIndex(); - if(current.isValid()) + const QItemSelectionModel *const selection = ui->sourceFileView->selectionModel(); + if(selection && selection->hasSelection()) { - const QItemSelectionModel *const selection = ui->sourceFileView->selectionModel(); - if(selection && selection->hasSelection()) + int firstRow = -1; + const QModelIndexList selectedRows = INVERT_LIST(selection->selectedRows()); + if(!selectedRows.isEmpty()) { - const QModelIndexList selectedRows = INVERT_LIST(selection->selectedRows()); FileListBlockHelper fileListBlocker(m_fileListModel); + firstRow = selectedRows.last().row(); for(QModelIndexList::ConstIterator iter = selectedRows.constBegin(); iter != selectedRows.constEnd(); iter++) { - m_fileListModel->removeFile(*iter); + if(!m_fileListModel->removeFile(*iter)) + { + break; + } } } if(m_fileListModel->rowCount() > 0) { - ui->sourceFileView->selectRow((current.row() < m_fileListModel->rowCount()) ? current.row() : (m_fileListModel->rowCount() - 1)); - ui->sourceFileView->scrollTo(ui->sourceFileView->currentIndex()); + const QModelIndex position = m_fileListModel->index(((firstRow >= 0) && (firstRow < m_fileListModel->rowCount())) ? firstRow : (m_fileListModel->rowCount() - 1), 0); + ui->sourceFileView->selectRow(position.row()); + ui->sourceFileView->scrollTo(position, QAbstractItemView::PositionAtCenter); } } else @@ -2473,7 +2479,14 @@ void MainWindow::removeFileButtonClicked(void) */ void MainWindow::clearFilesButtonClicked(void) { - m_fileListModel->clearFiles(); + if(m_fileListModel->rowCount() > 0) + { + m_fileListModel->clearFiles(); + } + else + { + MUtils::Sound::beep(MUtils::Sound::BEEP_WRN); + } } /* @@ -2536,6 +2549,10 @@ void MainWindow::showDetailsButtonClicked(void) break; /*close dilalog now*/ } } + else + { + MUtils::Sound::beep(MUtils::Sound::BEEP_WRN); + } QApplication::processEvents(QEventLoop::ExcludeUserInputEvents); sourceFilesScrollbarMoved(0);