Lines 1176-1181
void ScCellShell::ExecuteEdit( SfxReques
Link Here
|
1176 |
WaitObject aWait( GetViewData()->GetDialogParent() ); |
1184 |
WaitObject aWait( GetViewData()->GetDialogParent() ); |
1177 |
pTabViewShell->CopyToClip( NULL, FALSE, FALSE, TRUE ); |
1185 |
pTabViewShell->CopyToClip( NULL, FALSE, FALSE, TRUE ); |
1178 |
rReq.Done(); |
1186 |
rReq.Done(); |
|
|
1187 |
GetViewData()->SetPasteMode( TRUE ); |
1179 |
} |
1188 |
} |
1180 |
break; |
1189 |
break; |
1181 |
|
1190 |
|
Lines 1184-1229
void ScCellShell::ExecuteEdit( SfxReques
Link Here
|
1184 |
WaitObject aWait( GetViewData()->GetDialogParent() ); |
1193 |
WaitObject aWait( GetViewData()->GetDialogParent() ); |
1185 |
pTabViewShell->CutToClip( NULL, TRUE ); |
1194 |
pTabViewShell->CutToClip( NULL, TRUE ); |
1186 |
rReq.Done(); |
1195 |
rReq.Done(); |
|
|
1196 |
GetViewData()->SetPasteMode( TRUE ); |
1187 |
} |
1197 |
} |
1188 |
break; |
1198 |
break; |
1189 |
|
1199 |
|
1190 |
case SID_PASTE: |
1200 |
case SID_PASTE: |
1191 |
{ |
1201 |
{ |
1192 |
Window* pWin = GetViewData()->GetActiveWin(); |
1202 |
PasteFromClipboard ( GetViewData(), pTabViewShell, 0, TRUE ); |
1193 |
ScTransferObj* pOwnClip = ScTransferObj::GetOwnClipboard( pWin ); |
|
|
1194 |
ScDocument* pThisDoc = GetViewData()->GetDocument(); |
1195 |
ScDPObject* pDPObj = pThisDoc->GetDPAtCursor( GetViewData()->GetCurX(), |
1196 |
GetViewData()->GetCurY(), GetViewData()->GetTabNo() ); |
1197 |
if ( pOwnClip && pDPObj ) |
1198 |
{ |
1199 |
// paste from Calc into DataPilot table: sort (similar to drag & drop) |
1200 |
|
1201 |
ScDocument* pClipDoc = pOwnClip->GetDocument(); |
1202 |
SCTAB nSourceTab = pOwnClip->GetVisibleTab(); |
1203 |
|
1204 |
SCCOL nClipStartX; |
1205 |
SCROW nClipStartY; |
1206 |
SCCOL nClipEndX; |
1207 |
SCROW nClipEndY; |
1208 |
pClipDoc->GetClipStart( nClipStartX, nClipStartY ); |
1209 |
pClipDoc->GetClipArea( nClipEndX, nClipEndY, TRUE ); |
1210 |
nClipEndX = nClipEndX + nClipStartX; |
1211 |
nClipEndY = nClipEndY + nClipStartY; // GetClipArea returns the difference |
1212 |
|
1213 |
ScRange aSource( nClipStartX, nClipStartY, nSourceTab, nClipEndX, nClipEndY, nSourceTab ); |
1214 |
BOOL bDone = pTabViewShell->DataPilotMove( aSource, GetViewData()->GetCurPos() ); |
1215 |
if ( !bDone ) |
1216 |
pTabViewShell->ErrorMessage( STR_ERR_DATAPILOT_INPUT ); |
1217 |
} |
1218 |
else |
1219 |
{ |
1220 |
// normal paste |
1221 |
WaitObject aWait( GetViewData()->GetDialogParent() ); |
1222 |
pTabViewShell->PasteFromSystem(); |
1223 |
} |
1224 |
rReq.Done(); |
1203 |
rReq.Done(); |
1225 |
} |
1204 |
} |
1226 |
pTabViewShell->CellContentChanged(); // => PasteFromSystem() ??? |
|
|
1227 |
break; |
1205 |
break; |
1228 |
|
1206 |
|
1229 |
case SID_CLIPBOARD_FORMAT_ITEMS: |
1207 |
case SID_CLIPBOARD_FORMAT_ITEMS: |
Lines 2270-2272
IMPL_LINK( ScCellShell, DialogClosed, Ab
Link Here
|
2270 |
return 0; |
2248 |
return 0; |
2271 |
} |
2249 |
} |
2272 |
|
2250 |
|
|
|
2251 |
void ScCellShell::PasteFromClipboard( ScViewData* pViewData, ScTabViewShell* pTabViewShell, USHORT nExtraFlags, BOOL bShowDialog ) |
2252 |
{ |
2253 |
Window* pWin = pViewData->GetActiveWin(); |
2254 |
ScTransferObj* pOwnClip = ScTransferObj::GetOwnClipboard( pWin ); |
2255 |
ScDocument* pThisDoc = pViewData->GetDocument(); |
2256 |
ScDPObject* pDPObj = pThisDoc->GetDPAtCursor( pViewData->GetCurX(), |
2257 |
pViewData->GetCurY(), pViewData->GetTabNo() ); |
2258 |
if ( pOwnClip && pDPObj ) |
2259 |
{ |
2260 |
// paste from Calc into DataPilot table: sort (similar to drag & drop) |
2261 |
|
2262 |
ScDocument* pClipDoc = pOwnClip->GetDocument(); |
2263 |
SCTAB nSourceTab = pOwnClip->GetVisibleTab(); |
2264 |
|
2265 |
SCCOL nClipStartX; |
2266 |
SCROW nClipStartY; |
2267 |
SCCOL nClipEndX; |
2268 |
SCROW nClipEndY; |
2269 |
pClipDoc->GetClipStart( nClipStartX, nClipStartY ); |
2270 |
pClipDoc->GetClipArea( nClipEndX, nClipEndY, TRUE ); |
2271 |
nClipEndX = nClipEndX + nClipStartX; |
2272 |
nClipEndY = nClipEndY + nClipStartY; // GetClipArea returns the difference |
2273 |
|
2274 |
ScRange aSource( nClipStartX, nClipStartY, nSourceTab, nClipEndX, nClipEndY, nSourceTab ); |
2275 |
BOOL bDone = pTabViewShell->DataPilotMove( aSource, pViewData->GetCurPos() ); |
2276 |
if ( !bDone ) |
2277 |
pTabViewShell->ErrorMessage( STR_ERR_DATAPILOT_INPUT ); |
2278 |
} |
2279 |
else |
2280 |
{ |
2281 |
// normal paste |
2282 |
WaitObject aWait( pViewData->GetDialogParent() ); |
2283 |
if (!pOwnClip) |
2284 |
pTabViewShell->PasteFromSystem(); |
2285 |
else { |
2286 |
pTabViewShell->PasteFromClip( IDF_ALL | nExtraFlags, pOwnClip->GetDocument(), |
2287 |
PASTE_NOFUNC, FALSE, FALSE, FALSE, INS_NONE, IDF_NONE, |
2288 |
bShowDialog ); // allow warning dialog |
2289 |
} |
2290 |
} |
2291 |
pTabViewShell->CellContentChanged(); // => PasteFromSystem() ??? |
2292 |
} |
2293 |
|