@@ -4195,7 +4195,7 @@ copy_move_file (CopyMoveJob *copy_job,
4195
4195
gboolean res ;
4196
4196
int unique_name_nr ;
4197
4197
gboolean handled_invalid_filename ;
4198
- gboolean target_is_desktop ;
4198
+ gboolean target_is_desktop , source_is_desktop ;
4199
4199
4200
4200
job = (CommonJob * )copy_job ;
4201
4201
@@ -4207,6 +4207,17 @@ copy_move_file (CopyMoveJob *copy_job,
4207
4207
target_is_desktop = (copy_job -> desktop_location != NULL &&
4208
4208
g_file_equal (copy_job -> desktop_location , dest_dir ));
4209
4209
4210
+ source_is_desktop = FALSE;
4211
+
4212
+ if (src != NULL ) {
4213
+ GFile * parent = g_file_get_parent (src );
4214
+
4215
+ if (parent != NULL && g_file_equal (copy_job -> desktop_location , parent )) {
4216
+ source_is_desktop = TRUE;
4217
+ g_object_unref (parent );
4218
+ }
4219
+ }
4220
+
4210
4221
unique_name_nr = 1 ;
4211
4222
4212
4223
/* another file in the same directory might have handled the invalid
@@ -4328,13 +4339,11 @@ copy_move_file (CopyMoveJob *copy_job,
4328
4339
report_copy_progress (copy_job , source_info , transfer_info );
4329
4340
4330
4341
if (debuting_files ) {
4331
- if (target_is_desktop ) {
4332
- if (position ) {
4333
- nemo_file_changes_queue_schedule_position_set (dest , * position , job -> monitor_num );
4334
- } else {
4335
- nemo_file_changes_queue_schedule_position_remove (dest );
4336
- }
4337
- }
4342
+ if (target_is_desktop && position ) {
4343
+ nemo_file_changes_queue_schedule_position_set (dest , * position , job -> monitor_num );
4344
+ } else if (source_is_desktop ) {
4345
+ nemo_file_changes_queue_schedule_position_remove (dest );
4346
+ }
4338
4347
4339
4348
g_hash_table_replace (debuting_files , g_object_ref (dest ), GINT_TO_POINTER (TRUE));
4340
4349
}
@@ -4915,11 +4924,22 @@ move_file_prepare (CopyMoveJob *move_job,
4915
4924
GFileCopyFlags flags ;
4916
4925
MoveFileCopyFallback * fallback ;
4917
4926
gboolean handled_invalid_filename ;
4918
- gboolean target_is_desktop ;
4927
+ gboolean target_is_desktop , source_is_desktop ;
4919
4928
4920
4929
target_is_desktop = (move_job -> desktop_location != NULL &&
4921
4930
g_file_equal (move_job -> desktop_location , dest_dir ));
4922
4931
4932
+ source_is_desktop = FALSE;
4933
+
4934
+ if (src != NULL ) {
4935
+ GFile * parent = g_file_get_parent (src );
4936
+
4937
+ if (parent != NULL && g_file_equal (move_job -> desktop_location , parent )) {
4938
+ source_is_desktop = TRUE;
4939
+ g_object_unref (parent );
4940
+ }
4941
+ }
4942
+
4923
4943
overwrite = FALSE;
4924
4944
handled_invalid_filename = * dest_fs_type != NULL ;
4925
4945
@@ -4983,12 +5003,10 @@ move_file_prepare (CopyMoveJob *move_job,
4983
5003
4984
5004
nemo_file_changes_queue_file_moved (src , dest );
4985
5005
4986
- if (target_is_desktop ) {
4987
- if (position ) {
4988
- nemo_file_changes_queue_schedule_position_set (dest , * position , job -> monitor_num );
4989
- } else {
4990
- nemo_file_changes_queue_schedule_position_remove (dest );
4991
- }
5006
+ if (target_is_desktop && position ) {
5007
+ nemo_file_changes_queue_schedule_position_set (dest , * position , job -> monitor_num );
5008
+ } else if (source_is_desktop ) {
5009
+ nemo_file_changes_queue_schedule_position_remove (dest );
4992
5010
}
4993
5011
4994
5012
if (job -> undo_info != NULL ) {
@@ -5344,6 +5362,7 @@ nemo_file_operations_move (GList *files,
5344
5362
5345
5363
job = op_job_new (CopyMoveJob , parent_window );
5346
5364
job -> is_move = TRUE;
5365
+ job -> desktop_location = nemo_get_desktop_location ();
5347
5366
job -> done_callback = done_callback ;
5348
5367
job -> done_callback_data = done_callback_data ;
5349
5368
job -> files = eel_g_object_list_copy (files );
@@ -5442,11 +5461,22 @@ link_file (CopyMoveJob *job,
5442
5461
char * primary , * secondary , * details ;
5443
5462
int response ;
5444
5463
gboolean handled_invalid_filename ;
5445
- gboolean target_is_desktop ;
5464
+ gboolean target_is_desktop , source_is_desktop ;
5446
5465
5447
5466
target_is_desktop = (job -> desktop_location != NULL &&
5448
5467
g_file_equal (job -> desktop_location , dest_dir ));
5449
5468
5469
+ source_is_desktop = FALSE;
5470
+
5471
+ if (src != NULL ) {
5472
+ GFile * parent = g_file_get_parent (src );
5473
+
5474
+ if (parent != NULL && g_file_equal (job -> desktop_location , parent )) {
5475
+ source_is_desktop = TRUE;
5476
+ g_object_unref (parent );
5477
+ }
5478
+ }
5479
+
5450
5480
common = (CommonJob * )job ;
5451
5481
5452
5482
count = 0 ;
@@ -5485,12 +5515,10 @@ link_file (CopyMoveJob *job,
5485
5515
5486
5516
nemo_file_changes_queue_file_added (dest );
5487
5517
5488
- if (target_is_desktop ) {
5489
- if (position ) {
5490
- nemo_file_changes_queue_schedule_position_set (dest , * position , common -> monitor_num );
5491
- } else {
5492
- nemo_file_changes_queue_schedule_position_remove (dest );
5493
- }
5518
+ if (target_is_desktop && position ) {
5519
+ nemo_file_changes_queue_schedule_position_set (dest , * position , common -> monitor_num );
5520
+ } else if (source_is_desktop ) {
5521
+ nemo_file_changes_queue_schedule_position_remove (dest );
5494
5522
}
5495
5523
5496
5524
g_object_unref (dest );
0 commit comments