File indexing completed on 2024-05-12 16:01:54
0001 /* 0002 * SPDX-FileCopyrightText: 2017 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "KisSelectedShapesProxy.h" 0008 0009 #include "kis_signal_auto_connection.h" 0010 #include <KoShapeManager.h> 0011 #include <KoSelection.h> 0012 0013 0014 struct KisSelectedShapesProxy::Private 0015 { 0016 KoShapeManager *globalShapeManager; 0017 QPointer<KoShapeManager> shapeManager; 0018 KisSignalAutoConnectionsStore shapeManagerConnections; 0019 }; 0020 0021 KisSelectedShapesProxy::KisSelectedShapesProxy(KoShapeManager *globalShapeManager) 0022 : m_d(new Private()) 0023 { 0024 m_d->globalShapeManager = globalShapeManager; 0025 0026 connect(m_d->globalShapeManager->selection(), 0027 SIGNAL(currentLayerChanged(const KoShapeLayer*)), 0028 SIGNAL(currentLayerChanged(const KoShapeLayer*))); 0029 } 0030 0031 KisSelectedShapesProxy::~KisSelectedShapesProxy() 0032 { 0033 0034 } 0035 0036 void KisSelectedShapesProxy::setShapeManager(KoShapeManager *shapeManager) 0037 { 0038 if (shapeManager != m_d->shapeManager) { 0039 m_d->shapeManager = shapeManager; 0040 0041 m_d->shapeManagerConnections.clear(); 0042 0043 if (m_d->shapeManager) { 0044 m_d->shapeManagerConnections.addConnection( 0045 m_d->shapeManager, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); 0046 m_d->shapeManagerConnections.addConnection( 0047 m_d->shapeManager, SIGNAL(selectionContentChanged()), this, SIGNAL(selectionContentChanged())); 0048 } 0049 0050 emit selectionChanged(); 0051 } 0052 } 0053 0054 KoSelection *KisSelectedShapesProxy::selection() 0055 { 0056 return m_d->shapeManager ? 0057 m_d->shapeManager->selection() : 0058 m_d->globalShapeManager->selection(); 0059 } 0060