From 621a037c2a75d525b6c0f287285f95401f65c897 Mon Sep 17 00:00:00 2001 From: Person Date: Thu, 2 Mar 2017 20:04:47 -0800 Subject: [PATCH] --Bug Fixes -Fix strange spurious crash in library tab when switching between SP and DP. -Compensate for severe Qt bug where dragging and dropping disjoint items in the Library tree would resort the dropped items in special situations. -Move Info.plist to Data folder. -Ensure RTTI is included in build. -Add darker versions of .png icons. --- Builds/MSVC/VS2015/Ember.vcxproj | 2 + Builds/MSVC/VS2015/EmberAnimate.vcxproj | 2 + Builds/MSVC/VS2015/EmberCL.vcxproj | 2 + Builds/MSVC/VS2015/EmberGenome.vcxproj | 2 + Builds/MSVC/VS2015/EmberRender.vcxproj | 2 + Builds/MSVC/VS2015/EmberTester.vcxproj | 2 + Builds/MSVC/VS2015/Fractorium.vcxproj | 6 ++- {archive => Data}/Info.plist | 0 Source/Fractorium/EmberTreeWidgetItem.h | 5 ++ Source/Fractorium/FractoriumLibrary.cpp | 32 ++++++++---- Source/Fractorium/FractoriumRender.cpp | 15 +++--- Source/Fractorium/Icons/Function-512.png | Bin 44799 -> 23123 bytes Source/Fractorium/Icons/grid.png | Bin 10017 -> 8150 bytes Source/Fractorium/Icons/pic.png | Bin 3729 -> 3401 bytes Source/Fractorium/LibraryTreeWidget.cpp | 62 +++++++++++++++++++++-- 15 files changed, 111 insertions(+), 21 deletions(-) rename {archive => Data}/Info.plist (100%) diff --git a/Builds/MSVC/VS2015/Ember.vcxproj b/Builds/MSVC/VS2015/Ember.vcxproj index 759bf99..57afae8 100644 --- a/Builds/MSVC/VS2015/Ember.vcxproj +++ b/Builds/MSVC/VS2015/Ember.vcxproj @@ -70,6 +70,7 @@ true false AnySuitable + true Windows @@ -99,6 +100,7 @@ false false false + true Windows diff --git a/Builds/MSVC/VS2015/EmberAnimate.vcxproj b/Builds/MSVC/VS2015/EmberAnimate.vcxproj index dafb3a7..c7d7152 100644 --- a/Builds/MSVC/VS2015/EmberAnimate.vcxproj +++ b/Builds/MSVC/VS2015/EmberAnimate.vcxproj @@ -67,6 +67,7 @@ true false AnySuitable + true Console @@ -97,6 +98,7 @@ xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)" true false false + true Console diff --git a/Builds/MSVC/VS2015/EmberCL.vcxproj b/Builds/MSVC/VS2015/EmberCL.vcxproj index 51b9935..04229f9 100644 --- a/Builds/MSVC/VS2015/EmberCL.vcxproj +++ b/Builds/MSVC/VS2015/EmberCL.vcxproj @@ -68,6 +68,7 @@ true false AnySuitable + true Windows @@ -96,6 +97,7 @@ false true false + true Windows diff --git a/Builds/MSVC/VS2015/EmberGenome.vcxproj b/Builds/MSVC/VS2015/EmberGenome.vcxproj index cdac5fa..2959f7a 100644 --- a/Builds/MSVC/VS2015/EmberGenome.vcxproj +++ b/Builds/MSVC/VS2015/EmberGenome.vcxproj @@ -67,6 +67,7 @@ true false AnySuitable + true Console @@ -97,6 +98,7 @@ xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)" true false false + true Console diff --git a/Builds/MSVC/VS2015/EmberRender.vcxproj b/Builds/MSVC/VS2015/EmberRender.vcxproj index cef2440..ad01733 100644 --- a/Builds/MSVC/VS2015/EmberRender.vcxproj +++ b/Builds/MSVC/VS2015/EmberRender.vcxproj @@ -67,6 +67,7 @@ true false AnySuitable + true Console @@ -98,6 +99,7 @@ xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)" false true false + true Console diff --git a/Builds/MSVC/VS2015/EmberTester.vcxproj b/Builds/MSVC/VS2015/EmberTester.vcxproj index efe5eb4..7ec4eb5 100644 --- a/Builds/MSVC/VS2015/EmberTester.vcxproj +++ b/Builds/MSVC/VS2015/EmberTester.vcxproj @@ -67,6 +67,7 @@ true false AnySuitable + true Console @@ -97,6 +98,7 @@ xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)" true false false + true Console diff --git a/Builds/MSVC/VS2015/Fractorium.vcxproj b/Builds/MSVC/VS2015/Fractorium.vcxproj index cb1cf69..b463466 100644 --- a/Builds/MSVC/VS2015/Fractorium.vcxproj +++ b/Builds/MSVC/VS2015/Fractorium.vcxproj @@ -49,10 +49,10 @@ $(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\ - false + true - false + true @@ -74,6 +74,7 @@ false Level3 AnySuitable + true Windows @@ -114,6 +115,7 @@ xcopy /F /Y /R /D "$(QTDIR)\plugins\platforms\qwindowsd.dll" "$(OutDir)\platform /bigobj -Zm150 %(AdditionalOptions) false Level3 + true Windows diff --git a/archive/Info.plist b/Data/Info.plist similarity index 100% rename from archive/Info.plist rename to Data/Info.plist diff --git a/Source/Fractorium/EmberTreeWidgetItem.h b/Source/Fractorium/EmberTreeWidgetItem.h index b1875a6..2076418 100644 --- a/Source/Fractorium/EmberTreeWidgetItem.h +++ b/Source/Fractorium/EmberTreeWidgetItem.h @@ -34,6 +34,11 @@ public: { } + //~EmberTreeWidgetItemBase() + //{ + // qDebug() << "~EmberTreeWidgetItemBase()"; + //} + /// /// Set the preview image for the tree widget item. /// diff --git a/Source/Fractorium/FractoriumLibrary.cpp b/Source/Fractorium/FractoriumLibrary.cpp index c14abcc..8efe718 100644 --- a/Source/Fractorium/FractoriumLibrary.cpp +++ b/Source/Fractorium/FractoriumLibrary.cpp @@ -283,7 +283,11 @@ void FractoriumEmberController::EmberTreeItemChanged(QTreeWidgetItem* item, i } } -void Fractorium::OnEmberTreeItemChanged(QTreeWidgetItem* item, int col) { m_Controller->EmberTreeItemChanged(item, col); } +void Fractorium::OnEmberTreeItemChanged(QTreeWidgetItem* item, int col) +{ + if (ui.LibraryTree->topLevelItemCount())//This can sometimes be spurriously called even when the tree is empty. + m_Controller->EmberTreeItemChanged(item, col); +} /// /// Set the current ember to the selected item. @@ -301,12 +305,17 @@ void FractoriumEmberController::EmberTreeItemDoubleClicked(QTreeWidgetItem* i SetEmber(m_Fractorium->ui.LibraryTree->currentIndex().row(), false); } -void Fractorium::OnEmberTreeItemDoubleClicked(QTreeWidgetItem* item, int col) { m_Controller->EmberTreeItemDoubleClicked(item, col); } +void Fractorium::OnEmberTreeItemDoubleClicked(QTreeWidgetItem* item, int col) +{ + if (ui.LibraryTree->topLevelItemCount())//This can sometimes be spurriously called even when the tree is empty. + m_Controller->EmberTreeItemDoubleClicked(item, col); +} /// -/// Move a library item at one index to the next index. +/// Move a possibly disjoint selection of library items from their indices, +/// to another index. /// -/// The index of the source item to move +/// The selected list of items to move /// The destination index to move the item to template void FractoriumEmberController::MoveLibraryItems(const QModelIndexList& items, int destRow) @@ -315,17 +324,16 @@ void FractoriumEmberController::MoveLibraryItems(const QModelIndexList& items auto startRow = items[0].row(); auto tree = m_Fractorium->ui.LibraryTree; auto top = tree->topLevelItem(0); - list names; + list names; for (auto& item : items) if (auto temp = m_EmberFile.Get(item.row())) - names.push_back(QString::fromStdString(temp->m_Name)); + names.push_back(temp->m_Name); auto b = m_EmberFile.m_Embers.begin(); auto result = Gather(b, m_EmberFile.m_Embers.end(), Advance(b, destRow), [&](const Ember& ember) { - auto qname = QString::fromStdString(ember.m_Name); - auto position = std::find(names.begin(), names.end(), qname); + auto position = std::find(names.begin(), names.end(), ember.m_Name); if (position != names.end()) { @@ -335,7 +343,9 @@ void FractoriumEmberController::MoveLibraryItems(const QModelIndexList& items return false; }); + tree->update(); SyncLibrary(eLibraryUpdate(eLibraryUpdate::INDEX | eLibraryUpdate::POINTER)); + //SyncLibrary(eLibraryUpdate(eLibraryUpdate::INDEX | eLibraryUpdate::POINTER | eLibraryUpdate::NAME)); } /// @@ -496,7 +506,11 @@ void FractoriumEmberController::SequenceTreeItemChanged(QTreeWidgetItem* item } } -void Fractorium::OnSequenceTreeItemChanged(QTreeWidgetItem* item, int col) { m_Controller->SequenceTreeItemChanged(item, col); } +void Fractorium::OnSequenceTreeItemChanged(QTreeWidgetItem* item, int col) +{ + if (ui.SequenceTree->topLevelItemCount()) + m_Controller->SequenceTreeItemChanged(item, col); +} /// /// Wrapper around calling RenderPreviews with the appropriate values passed in for the previews in the sequence tree. diff --git a/Source/Fractorium/FractoriumRender.cpp b/Source/Fractorium/FractoriumRender.cpp index 2949fab..84d0bc6 100644 --- a/Source/Fractorium/FractoriumRender.cpp +++ b/Source/Fractorium/FractoriumRender.cpp @@ -683,6 +683,7 @@ bool Fractorium::CreateControllerFromOptions() Palette tempPalette; #endif QModelIndex index = ui.LibraryTree->currentIndex(); + ui.LibraryTree->clear();//This must be here before FillLibraryTree() is called below, else a spurious EmberTreeItemChanged event will be called on a deleted object. //First check if a controller has already been created, and if so, save its embers and gracefully shut it down. if (m_Controller.get()) @@ -716,6 +717,12 @@ bool Fractorium::CreateControllerFromOptions() prev->m_Palette = tempPalette; m_Controller->SetEmberFile(efd, true); + //Template specific palette table and variations tree setup in controller constructor, but + //must manually setup the library tree here because it's after the embers were assigned. + //Passing row re-selects the item that was previously selected. + //This will eventually call FillParamTablesAndPalette(), which in addition to filling in various fields, + //will apply the palette adjustments. + m_Controller->FillLibraryTree(index.row()); m_Controller->SetEmber(current, true); m_Controller->LockedScale(scale); //Setting these and updating the GUI overwrites the work of clearing them done in SetEmber() above. @@ -727,12 +734,6 @@ bool Fractorium::CreateControllerFromOptions() m_PaletteBlurSpin->SetValueStealth(blur); m_PaletteFrequencySpin->SetValueStealth(freq); m_Controller->PaletteAdjust();//Applies the adjustments to temp and saves in m_Ember.m_Palette, then fills in the palette preview widget. - //Template specific palette table and variations tree setup in controller constructor, but - //must manually setup the library tree here because it's after the embers were assigned. - //Passing row re-selects the item that was previously selected. - //This will eventually call FillParamTablesAndPalette(), which in addition to filling in various fields, - //will apply the palette adjustments. - m_Controller->FillLibraryTree(index.row()); } } @@ -773,5 +774,5 @@ bool Fractorium::ControllersOk() { return m_Controller.get() && m_Controller->GL template class FractoriumEmberController; #ifdef DO_DOUBLE -template class FractoriumEmberController; + template class FractoriumEmberController; #endif diff --git a/Source/Fractorium/Icons/Function-512.png b/Source/Fractorium/Icons/Function-512.png index a46dd1ae3c1b4567ea1f60bcb98e562a304864c0..4522c2ebf4058fd7c191092416ac19ac24ebdcc9 100644 GIT binary patch literal 23123 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 Qfo5RvboFyt=akR{0HZ#ItN;K2 literal 44799 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 RQ{cbfSFQi;_Dc7Y{|}3iwafqj diff --git a/Source/Fractorium/Icons/grid.png b/Source/Fractorium/Icons/grid.png index fce17c9e4bea409dd962c57cc8a42d34b4cdd0cb..51692590f27312b6a7b8f3c85c32cd7c8dd502ce 100644 GIT binary patch literal 8150 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 dragItems = selectedItems(); if (dp == QAbstractItemView::BelowItem) row++; + auto itemat = this->itemFromIndex(droppedIndex); + QTreeWidget::dropEvent(de);//This internally changes the order of the items. + + //Qt has a long standing major bug that rearranges the order of disjoint selections when + //The drop location is in between the disjoint regions. + //This is an attempt to correct for that bug by removing the dropped items, then re-inserting them + //in the order they were selected. + //This bug remains present as of Qt 5.8: https://bugreports.qt.io/browse/QTBUG-45320 + if (auto top = topLevelItem(0)) + { + if (itemat) + { + auto offsetitem = this->indexFromItem(itemat); + + if (dp == QAbstractItemView::BelowItem) + { + auto itemrow = offsetitem.row() + 1; + + for (i = 0; i < dragItems.size(); i++) + { + if (itemrow < top->childCount()) + top->takeChild(itemrow); + } + + for (i = 0; i < dragItems.size(); i++) + { + auto offset = i + itemrow; + + if (offset <= top->childCount()) + top->insertChild(offset, dragItems[i]); + } + } + else + { + auto itemrow = offsetitem.row();//Will be at least 1 if dropped above it. + auto offset = itemrow; + + for (i = 0; i < dragItems.size(); i++) + { + offset--; + + if (offset < top->childCount()) + top->takeChild(offset); + } + + for (i = 0; i < dragItems.size(); i++) + { + if (offset <= top->childCount()) + top->insertChild(offset, dragItems[i]); + + offset++; + } + } + } + } + QTimer::singleShot(500, [ = ]() { m_Fractorium->m_Controller->MoveLibraryItems(items, row); });//Need to fire this after this event has internally reshuffled the items. } - - QTreeWidget::dropEvent(de); } \ No newline at end of file