@@ -37,8 +37,9 @@ QgsClipboard::QgsClipboard()
37
37
: QObject()
38
38
, mFeatureClipboard()
39
39
, mFeatureFields()
40
+ , mUseSystemClipboard( false )
40
41
{
41
- connect ( QApplication::clipboard (), SIGNAL ( dataChanged () ), this , SIGNAL ( changed () ) );
42
+ connect ( QApplication::clipboard (), SIGNAL ( dataChanged () ), this , SLOT ( systemClipboardChanged () ) );
42
43
}
43
44
44
45
QgsClipboard::~QgsClipboard ()
@@ -58,6 +59,7 @@ void QgsClipboard::replaceWithCopyOf( QgsVectorLayer *src )
58
59
QgsDebugMsg ( " replaced QGis clipboard." );
59
60
60
61
setSystemClipboard ();
62
+ mUseSystemClipboard = false ;
61
63
emit changed ();
62
64
}
63
65
@@ -68,6 +70,7 @@ void QgsClipboard::replaceWithCopyOf( QgsFeatureStore & featureStore )
68
70
mFeatureClipboard = featureStore.features ();
69
71
mCRS = featureStore.crs ();
70
72
setSystemClipboard ();
73
+ mUseSystemClipboard = false ;
71
74
emit changed ();
72
75
}
73
76
@@ -143,6 +146,9 @@ void QgsClipboard::setSystemClipboard()
143
146
QgsFeatureList QgsClipboard::copyOf ( const QgsFields &fields )
144
147
{
145
148
QgsDebugMsg ( " returning clipboard." );
149
+ if ( !mUseSystemClipboard )
150
+ return mFeatureClipboard ;
151
+
146
152
QClipboard *cb = QApplication::clipboard ();
147
153
148
154
#ifndef Q_OS_WIN
@@ -193,6 +199,7 @@ void QgsClipboard::insert( QgsFeature& feature )
193
199
mFeatureClipboard .push_back ( feature );
194
200
195
201
QgsDebugMsg ( " inserted " + feature.geometry ()->exportToWkt () );
202
+ mUseSystemClipboard = false ;
196
203
emit changed ();
197
204
}
198
205
@@ -260,3 +267,9 @@ QByteArray QgsClipboard::data( const QString& mimeType )
260
267
{
261
268
return QApplication::clipboard ()->mimeData ()->data ( mimeType );
262
269
}
270
+
271
+ void QgsClipboard::systemClipboardChanged ()
272
+ {
273
+ mUseSystemClipboard = true ;
274
+ emit changed ();
275
+ }
0 commit comments