diff --git a/common/lc_mainwindow.cpp b/common/lc_mainwindow.cpp index 3a14b161..b6036efd 100644 --- a/common/lc_mainwindow.cpp +++ b/common/lc_mainwindow.cpp @@ -1446,9 +1446,9 @@ void lcMainWindow::UpdateSelectedObjects(int Flags, int SelectedCount, lcObject* mStatusBarLabel->setText(Message); } -void lcMainWindow::UpdateTimeline(bool Clear) +void lcMainWindow::UpdateTimeline(bool Clear, bool UpdateItems) { - mTimelineWidget->Update(Clear); + mTimelineWidget->Update(Clear, UpdateItems); } void lcMainWindow::UpdatePaste(bool Enabled) diff --git a/common/lc_mainwindow.h b/common/lc_mainwindow.h index 598d18eb..6b2d3c6c 100644 --- a/common/lc_mainwindow.h +++ b/common/lc_mainwindow.h @@ -158,7 +158,7 @@ public: void UpdateFocusObject(lcObject* Focus); void UpdateSelectedObjects(int Flags, int SelectedCount, lcObject* Focus); - void UpdateTimeline(bool Clear); + void UpdateTimeline(bool Clear, bool UpdateItems); void UpdatePaste(bool Enabled); void UpdateCurrentStep(); void SetAddKeys(bool AddKeys); diff --git a/common/lc_model.cpp b/common/lc_model.cpp index d0cc81cc..3ea7d3c0 100644 --- a/common/lc_model.cpp +++ b/common/lc_model.cpp @@ -895,7 +895,7 @@ void lcModel::Merge(lcModel* Other) delete Other; - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); } void lcModel::Cut() @@ -904,7 +904,7 @@ void lcModel::Cut() if (RemoveSelectedObjects()) { - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateFocusObject(NULL); UpdateSelection(); gMainWindow->UpdateAllViews(); @@ -953,7 +953,7 @@ void lcModel::Paste() SetSelectionAndFocus((lcArray&)PastedPieces, NULL, 0); CalculateStep(mCurrentStep); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateAllViews(); } @@ -1280,7 +1280,7 @@ void lcModel::LoadCheckPoint(lcModelHistoryEntry* CheckPoint) Buffer.open(QIODevice::ReadOnly); LoadLDraw(Buffer, lcGetActiveProject()); - gMainWindow->UpdateTimeline(true); + gMainWindow->UpdateTimeline(true, false); gMainWindow->UpdateFocusObject(GetFocusObject()); gMainWindow->UpdateCameraMenu(); UpdateSelection(); @@ -1337,7 +1337,7 @@ void lcModel::SetCurrentStep(lcStep Step) CalculateStep(Step); UpdateSelection(); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateFocusObject(GetFocusObject()); gMainWindow->UpdateAllViews(); gMainWindow->UpdateCurrentStep(); @@ -1879,7 +1879,7 @@ void lcModel::AddPiece() Piece->Initialize(WorldMatrix, mCurrentStep); Piece->SetColorIndex(gMainWindow->mColorIndex); AddPiece(Piece); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); ClearSelectionAndSetFocus(Piece, LC_PIECE_SECTION_POSITION); SaveCheckpoint("Adding Piece"); @@ -1925,7 +1925,7 @@ void lcModel::DeleteSelectedObjects() { if (RemoveSelectedObjects()) { - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateFocusObject(NULL); UpdateSelection(); gMainWindow->UpdateAllViews(); @@ -1971,7 +1971,7 @@ void lcModel::ShowSelectedPiecesEarlier() SaveCheckpoint("Modifying"); gMainWindow->UpdateAllViews(); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); UpdateSelection(); } @@ -2016,7 +2016,7 @@ void lcModel::ShowSelectedPiecesLater() SaveCheckpoint("Modifying"); gMainWindow->UpdateAllViews(); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); UpdateSelection(); } @@ -2052,7 +2052,7 @@ void lcModel::SetPieceSteps(const QList>& PieceSteps) SaveCheckpoint("Modifying"); gMainWindow->UpdateAllViews(); UpdateSelection(); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateFocusObject(GetFocusObject()); } } @@ -2309,6 +2309,7 @@ void lcModel::TransformSelectedObjects(lcTransformType TransformType, const lcVe void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPropertyType, const void* Value) { QString CheckPointString; + bool UpdateTimelineItems = false; switch (ObjectPropertyType) { @@ -2380,6 +2381,7 @@ void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPro Part->SetColorIndex(ColorIndex); CheckPointString = tr("Setting Color"); + UpdateTimelineItems = true; } } break; @@ -2395,6 +2397,7 @@ void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPro Part->mPieceInfo->AddRef(); CheckPointString = tr("Setting Part"); + UpdateTimelineItems = true; } } break; @@ -2516,7 +2519,7 @@ void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPro if (!CheckPointString.isEmpty()) { SaveCheckpoint(CheckPointString); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, UpdateTimelineItems); gMainWindow->UpdateFocusObject(GetFocusObject()); gMainWindow->UpdateAllViews(); } @@ -3078,7 +3081,7 @@ void lcModel::HideSelectedPieces() } UpdateSelection(); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, true); gMainWindow->UpdateFocusObject(NULL); gMainWindow->UpdateAllViews(); } @@ -3094,7 +3097,7 @@ void lcModel::HideUnselectedPieces() } UpdateSelection(); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, true); gMainWindow->UpdateAllViews(); } @@ -3109,7 +3112,7 @@ void lcModel::UnhideSelectedPieces() } UpdateSelection(); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, true); gMainWindow->UpdateAllViews(); } @@ -3119,7 +3122,7 @@ void lcModel::UnhideAllPieces() mPieces[PieceIdx]->SetHidden(false); UpdateSelection(); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, true); gMainWindow->UpdateAllViews(); } @@ -3285,7 +3288,7 @@ void lcModel::InsertPieceToolClicked(const lcMatrix44& WorldMatrix) Piece->UpdatePosition(mCurrentStep); AddPiece(Piece); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); ClearSelectionAndSetFocus(Piece, LC_PIECE_SECTION_POSITION); SaveCheckpoint(tr("Insert")); @@ -3406,7 +3409,7 @@ void lcModel::EraserToolClicked(lcObject* Object) } delete Object; - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); gMainWindow->UpdateFocusObject(GetFocusObject()); UpdateSelection(); gMainWindow->UpdateAllViews(); @@ -3427,6 +3430,7 @@ void lcModel::PaintToolClicked(lcObject* Object) SaveCheckpoint(tr("Painting")); gMainWindow->UpdateFocusObject(GetFocusObject()); gMainWindow->UpdateAllViews(); + gMainWindow->UpdateTimeline(false, true); } } @@ -3651,7 +3655,7 @@ void lcModel::ShowArrayDialog() } AddToSelection(NewPieces); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); SaveCheckpoint(tr("Array")); } @@ -3684,13 +3688,13 @@ void lcModel::ShowMinifigDialog() } SetSelectionAndFocus(Pieces, NULL, 0); - gMainWindow->UpdateTimeline(false); + gMainWindow->UpdateTimeline(false, false); SaveCheckpoint(tr("Minifig")); } void lcModel::UpdateInterface() { - gMainWindow->UpdateTimeline(true); + gMainWindow->UpdateTimeline(true, false); gMainWindow->UpdateUndoRedo(mUndoHistory.GetSize() > 1 ? mUndoHistory[0]->Description : NULL, !mRedoHistory.IsEmpty() ? mRedoHistory[0]->Description : NULL); gMainWindow->UpdatePaste(!g_App->mClipboard.isEmpty()); gMainWindow->UpdateCategories(); diff --git a/common/lc_timelinewidget.cpp b/common/lc_timelinewidget.cpp index 32534df6..6d785cc0 100644 --- a/common/lc_timelinewidget.cpp +++ b/common/lc_timelinewidget.cpp @@ -59,7 +59,7 @@ void lcTimelineWidget::CustomMenuRequested(QPoint Pos) Menu->popup(viewport()->mapToGlobal(Pos)); } -void lcTimelineWidget::Update(bool Clear) +void lcTimelineWidget::Update(bool Clear, bool UpdateItems) { if (mIgnoreUpdates) return; @@ -143,15 +143,35 @@ void lcTimelineWidget::Update(bool Clear) } QTreeWidgetItem* PieceItem = mItems.value(Piece); + bool UpdateItem = UpdateItems; if (!PieceItem) { - PieceItem = new QTreeWidgetItem(QStringList(Piece->mPieceInfo->m_strDescription)); + PieceItem = new QTreeWidgetItem(); PieceItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled); PieceItem->setData(0, Qt::UserRole, qVariantFromValue((uintptr_t)Piece)); StepItem->insertChild(PieceItemIndex, PieceItem); mItems[Piece] = PieceItem; + UpdateItem = true; + } + else + { + if (PieceItemIndex >= StepItem->childCount() || PieceItem != StepItem->child(PieceItemIndex)) + { + QTreeWidgetItem* PieceParent = PieceItem->parent(); + + if (PieceParent) + PieceParent->removeChild(PieceItem); + + StepItem->insertChild(PieceItemIndex, PieceItem); + } + } + + if (UpdateItem) + { + PieceItem->setText(0, Piece->mPieceInfo->m_strDescription); + int ColorIndex = Piece->mColorIndex; if (!mIcons.contains(ColorIndex)) { @@ -170,24 +190,12 @@ void lcTimelineWidget::Update(bool Clear) } PieceItem->setIcon(0, mIcons[ColorIndex]); + + QColor Color = palette().text().color(); + if (Piece->IsHidden()) + Color.setAlpha(128); + PieceItem->setTextColor(0, Color); } - else - { - if (PieceItemIndex >= StepItem->childCount() || PieceItem != StepItem->child(PieceItemIndex)) - { - QTreeWidgetItem* PieceParent = PieceItem->parent(); - - if (PieceParent) - PieceParent->removeChild(PieceItem); - - StepItem->insertChild(PieceItemIndex, PieceItem); - } - } - - QColor Color = palette().text().color(); - if (Piece->IsHidden()) - Color.setAlpha(128); - PieceItem->setTextColor(0, Color); PieceItem->setSelected(Piece->IsSelected()); PieceItemIndex++; diff --git a/common/lc_timelinewidget.h b/common/lc_timelinewidget.h index 3ca376ba..04ee2ddc 100644 --- a/common/lc_timelinewidget.h +++ b/common/lc_timelinewidget.h @@ -9,7 +9,7 @@ public: lcTimelineWidget(QWidget* Parent); virtual ~lcTimelineWidget(); - void Update(bool Clear); + void Update(bool Clear, bool UpdateItems); void UpdateSelection(); public slots: