Simplify the file conflict / overwrite dialog (redesign)

It complicates things a lot. You, as a user who made the task to copy file, already know your context, and always can examine your files from where they are manually.
Think, you are talking about automatic opening text files side by side. But what about other formats (even images)? Lets say, .blend files. Do you want to open two Blender instances? What if the source is from the archive? Do you want to overwrite the file inside archive? What if archive has a password? Even then, what will you do after you make changes to file? You need to reopen dialog, to recalculate the size for example. And so on…

So, I think it is better to not have ā€œopen sourceā€ and ā€œopen destinationā€ buttons at all.

I agree.

@skyfishgoo you are basically describing the current behavior, but with addition of showing the difference in timestamps.
I fully agree.
I however, do not understand the point to place ā€œNewer by 4 hrsā€ in the path row, rather than in the date row.

It complicates things a lot. You, as a user who made the task to copy file, already know your context, and always can examine your files from where they are manually.

Yes. I, as a user who made the task to copy file, already know my context, and always can find the size and date of my files from where they are manually.

Think, you are talking about automatic opening text files side by side. But what about other formats (even images)? Lets say, .blend files. Do you want to open two Blender instances?

No, I’m not talking about anything ā€œside by sideā€ at all. I’m talking about two buttons each opens a file just as if I click it in Dolphin. When I click a .blend file in Dolphin, do I want to open a Blender instance? Of course I do.

What if the source is from the archive? Do you want to overwrite the file inside archive?

ā€œOpen in external appā€ a file in Ark doesn’t ā€œoverwrite the fileā€.

What if archive has a password?

To extract files from Ark and bring a file conflict dialog, I need to enter the password first.

Even then, what will you do after you make changes to file?

I’d merge both files into the destination file and click ā€œskipā€.

my objectives are:

  1. clean up the verbiage to eliminate unnecessary clutter
  2. align the sense language with the arrow direction (from > to)
  3. display difference values in appropriate units
  4. provide a visual cue as to the differences

allow me to elaborate on each point by way of answering your question…

  1. remove the text ā€œDifferencesā€ and " The files are different" as these statements are redundant and add no value for the user, thus they only contribute to the clutter.

  2. remove the text ā€œThe destination isā€ and change the sense of ā€œsmallerā€ or ā€œlargerā€ so that it aligns with the direction of travel from source to destination as well as the direction of the arrow (here i assume the direction depends on the RTL or LTR language choice)

  3. the difference calculations for time and size should be no more than 1 significant digit for ease of reading at a glance and the units should scale with the magnitude of the difference (sec vs days for time and B vs KiB for size) so that the user immediately knows the scale of the difference.

  4. and finally, to answer your question, the addition of place holders for each difference calculation provides a consistent and easily grokked UX for the user to tell at a glance the state of the differences between the two files.

by separating them above and below the arrow we reserve a visual flag (semaphore) that will only light up when there are differences between the files, thus eliminating the need for the words ā€œthe files are differentā€ from the interface.

this would be the display if the files were identical, note the complete lack of any difference language and that no flags are shown…


in this case skip should be the highlighted default action to facilitate the obvious choice.

when the files are the same size but have different timestamps, we only need to display the time difference so the user can decide if whatever triggered the time difference might be important to preserve or overwrite (achieve maybe?)…


with overwrite the highlighted default action.

then we get to the last case when the files are different in both time and size so both flags are shown and the sense language can then guide the user in how to respond…


in this case overwrite should be the highlighted default action as well.

in conclusion

by visually separating the flags for time and size to be above and below the arrow we give the user a consistent visual cue that intuitively guides the user in their decision and facilitates faster disposal of this dialog.

at least it would for me.

thanks for reading

1 Like

Probably most of the time, the user only cares about which file is newer or larger, but not how much newer or larger it is. These strategies might be quite common:

  1. skip all older files
  2. accept all newer files
  3. accept all larger files

But probably things like ā€œif the source is 1KB larger, do A; if it’s 1MB larger, do Bā€ is rare enough, that we can just get rid of the calculation, so there’s space to put large and clear ā€œnewerā€ ā€œolderā€ ā€œlargerā€ ā€œsmallerā€ labels on the files.

i mean correct me if i’m wrong, but wouldn’t you still have to do the calculation in order to even be able to say Larger | Smaller, Newer | Older?

might as well throw the number up there if you are doing the math anyway, would be my take.

and i might want to know if it’s just a few seconds vs years so i know if it’s safe to ignore that last save of the file or if i’m about to overwrite a year’s worth of work

Strictly speaking, no, in the sense of programming, one is comparison, the other is subtraction. But that’s not the point.

Anyway, if you want to highlight the difference, either ā€œlargerā€ or ā€œ1MB largerā€, then instead of ā€œthe source is 1MB larger than the destinationā€, or ā€œ1MB largerā€ on top of an arrow, probably a more unambiguous and concise way is to put it on the source side. E.g. Size: 10MB (larger by 1MB). And if it’s same to the destination, you can just say ā€œSize: sameā€.

it would help to put the difference in the middle because it makes the comparison more intuitive and visually discernible.

but then i think i’ve said this enough times.

So you want the layout to stay as it currently is. So basically do not move anything?

Don’t you think the idea of saying the difference near the destination is interesting? I also wanted to discuss such idea. It will reduce unnecessary words.

maybe read back thru my previous posts

I would like to get comments on copying windows xp style.

xp vista 7 dialog has date type

Here, the date and size of source is not displayed (because not yet implemented for archive files).
Also note that here the destination is above the source.

I see now, I get to the situation where those links are actually useful. I moved one folder to another location, and unexpected conflicts. Then when I saw this dialog, I wanted to open both for examining, and it was inconvenient to go examining manually (many files inside, not on top level).

I however do not think we need buttons. We can make the paths to be links, or even better - the icons themselves to be links (like how you click icons in Dolphin).

That is maybe a good idea.

In this case, as there is already a difference in size, the file is obviously different, so we can omit ā€œThe file is differentā€. I wrote that to demonstrate where that label can be resided in case of no difference in size (while modification date is not important, as file hash sum may be the same).

My gripe with the current dialogue is, the icons are enormous, and they take all the attention. Typography is not great, and the text are scattered all over the place, causing constant eye scanning.

Windows XP example above is the peak design IMHO. Clear layout of information, that follows a top to bottom direction, with icons that do not steal attention. The spacing on the mockup that is based on it is still a bit off though.

Also, just a small nitpick, a toggle does not really apply here for the ā€œApply to allā€ checkbox, toggles should be used for immediately applying settings, like turning Wi-Fi on/off.

1 Like

Can you describe more precisely?

So what do you think it should be? Is it better to hide ā€œapplying to allā€ actions under the dropdown button?
Here is example of dropdown button:

For example, on ā€œSkipā€ button there would be a dropdown ā€œSkip Allā€ button. For the current ā€œOverwriteā€ and ā€œOverwrite older filesā€, there will be additional ā€œOverwrite Allā€ and ā€œOverwrite All older filesā€.

The spacing before ŠŸŠµŃ€ŠµŠøŠ¼ŠµŠ½Š¾Š²Š°Ń‚ŃŒ is too much, and there is not enough padding before ā€œWould you like to replace existing fileā€.

The toggle comment was for a mockup above, it’s a visual distinction. However, it gives us a chance to re-examine what users mostly want to do when invoking this action:

  1. User wants to copy one file to another, wants to replace the destination file. We ask the user, whether they want to replace the file there.

Possible actions: Yes, No, Cancel

Depending on the wording, we eliminated the need to explicitly state verbs in button text.

  1. User wants to repeat step 1 with two files.

Possible actions: Yes, Yes to All, No, Cancel

Adding a second generic button eliminated the need to include a checkbox, and possible confusion for the user. We still use basic phrases like Yes and No, freeing further brain CPU time. Something like Skip All does not make sense, it’s the same thing as Cancel.

  1. User wants to repeat step 2, but wants to keep both files, increasing the total destination file count to 4.

We can make the destination file name highlighted for inline rename, letting user know, that they can rename and proceed with Yes. Current dedicated file name text field adds great visual clutter, and possibly rarely used.

Clicking No would automatically add a suffix to the copied files as usual.

Let me know if I missed any possible scenarios.

It’s probably better to put the diff on the source side:

  1. Things on the left are more noticeable. (unless for RTL languages, but then you probably want to switch sides of source and destination, anyway)
  2. In the sense of coding, this is a merge request to update the destination to the source, so the diff should show what’s new with the source.

Yeah, on this screenshot yes. I have planned to add verdict lines there (like ā€œbigger by 2 Bā€). But in case there are no any, the space should be reduced.

Ok, thanks. Will fix.

Sorry, I did not understand your statement about ā€œtoggleā€.

Do you want the default action (highlighted button) to be changed on next conflict if the user had choosen some non-default button on previous?

We should explicitly use verbs, see Modal Message Dialog | Developer.

Take a look at this screenshot.
directory opus replace skip identical

But we also display the path. We would need to keep the path still. It may look ugly (or you may provide a good mockup?). However, currently, it is ambiguous which exact file you are going to rename.
Also, the Replace button assumes ā€œreplace destinationā€, while Rename button assumes ā€œrename sourceā€.

i agree with the source as the reference because that is what you were acting on when this dialog was generated.

so all relative comparisons should be in sense of the source relative to the destination (newer|older, larger|smaller).

however, i still argue these comparisons should be placed in the middle to relieve the eye from going back and forth in order to figure out the differences between the two items.

the space in between is the natural comparison landscape and feels intuitive.

For me, it is hard to tell which is better actually. I think I am ok with both.

yet another argument for putting it in the middle because no matter which side you put it on it still makes your eye look back and forth to compare.

drawing your eye to the middle resolves that conflict and gives you a focal point for all the info you need to make the decision.

we’ve all be programed by bad UX to think it’s our job to look back and forth when it’s just not… not if the UI does it for us.