improve unselect behaviour of unplaced pieces
This commit is contained in:
parent
6c35dfc78a
commit
f516d80513
|
@ -58,6 +58,16 @@ QList<VPuzzlePiece *> VPuzzleLayer::GetPieces()
|
|||
return m_pieces;
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VPuzzleLayer::ClearSelection()
|
||||
{
|
||||
for (auto piece: m_pieces)
|
||||
{
|
||||
piece->SetIsSelected(false);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VPuzzleLayer::AddPiece(VPuzzlePiece *piece)
|
||||
{
|
||||
|
|
|
@ -59,6 +59,11 @@ public:
|
|||
*/
|
||||
VPuzzleLayout* GetLayout();
|
||||
|
||||
/**
|
||||
* @brief ClearSelection Clears the selection of the pieces in this layer
|
||||
*/
|
||||
void ClearSelection();
|
||||
|
||||
signals:
|
||||
/**
|
||||
* @brief PieceAdded The signal is emited when a piece was added
|
||||
|
|
|
@ -275,9 +275,11 @@ bool VPuzzleLayout::GetStickyEdges() const
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VPuzzleLayout::ClearSelection()
|
||||
{
|
||||
for(auto piece : GetSelectedPieces())
|
||||
m_unplacedPiecesLayer->ClearSelection();
|
||||
|
||||
for (auto layer : m_layers)
|
||||
{
|
||||
piece->SetIsSelected(false);
|
||||
layer->ClearSelection();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@ VPuzzleMainGraphicsView::VPuzzleMainGraphicsView(VPuzzleLayout *layout, QWidget
|
|||
|
||||
// add the connections
|
||||
connect(m_layout, &VPuzzleLayout::PieceMovedToLayer, this, &VPuzzleMainGraphicsView::on_PieceMovedToLayer);
|
||||
connect(m_scene, &VPuzzleMainGraphicsScene::selectionChanged, this, &VPuzzleMainGraphicsView::on_SceneSelectionChanged);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -143,12 +144,15 @@ void VPuzzleMainGraphicsView::keyPressEvent(QKeyEvent *event)
|
|||
{
|
||||
if(event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Delete)
|
||||
{
|
||||
for(auto graphicsPiece : m_graphicsPieces)
|
||||
QList<VPuzzleGraphicsPiece*> tmpGraphicsPieces = m_graphicsPieces;
|
||||
|
||||
for(auto graphicsPiece : tmpGraphicsPieces)
|
||||
{
|
||||
VPuzzlePiece *piece = graphicsPiece->GetPiece();
|
||||
|
||||
if(piece->GetIsSelected())
|
||||
{
|
||||
piece->SetIsSelected(false);
|
||||
m_layout->MovePieceToLayer(piece, m_layout->GetUnplacedPiecesLayer());
|
||||
}
|
||||
}
|
||||
|
@ -188,3 +192,13 @@ void VPuzzleMainGraphicsView::on_PieceMovedToLayer(VPuzzlePiece *piece, VPuzzleL
|
|||
_graphicsPiece->update();
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VPuzzleMainGraphicsView::on_SceneSelectionChanged()
|
||||
{
|
||||
// most of the selection behaviour taks place automatically
|
||||
// but we need to make sure that the unplaced pieces are unselected when the scene selection has changed
|
||||
// because as they are not part of the scene, they are not updated
|
||||
|
||||
m_layout->GetUnplacedPiecesLayer()->ClearSelection();
|
||||
}
|
||||
|
|
|
@ -67,6 +67,11 @@ private slots:
|
|||
*/
|
||||
void on_PieceMovedToLayer(VPuzzlePiece *piece, VPuzzleLayer *layerBefore, VPuzzleLayer *layerAfter);
|
||||
|
||||
/**
|
||||
* @brief on_SceneSelectionChanged Slot is called when the scene selection has changed
|
||||
*/
|
||||
void on_SceneSelectionChanged();
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(VPuzzleMainGraphicsView)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user