KiCad 5.1.2 Always Wants To Discard My Changes


The default choice when exiting a schematic or PCB is now “Discard Changes”. Plus it’s the biggest and most obvious button.

If you’re gonna make Discard Changes the default, please add a confirmation popup like “You just hit the Discard Changes button - Are you sure you want to discard the xxx hours of tedious changes you just made?”


Unusual design choice, indeed. I’ve noticed and feel the same.
Just did the brief check among some other Win7 applications.
Most of them do have the options in the following order:
Save Discard Cancel
Inkscape being an exception with:
Discard Cancel Save (defaulting to Save)

However there are some situations that I’m unsure if want to save changes, notably when leaving the project opened in the background for some time (I’m not sure if the “unsaved” edit is some work not completed or just entry error). Would like to be able to see “Unsaved changes” (what have been changed since last save).


I wonder if it is ‘designer bias’ based on their use case. I personally will open up one of my projects and test something out before giving a suggestion here. For me the ‘discard’ option is my most useful feature since right now I’m not doing a project. I wonder if the developers have the same mindset?


When you are actively working on a project you certainly DO NOT want to accidentally toss several hours’ effort into the bit-bucket . . . . so “Save” seems like a reasonable default.

But after a project is complete (and sometimes while it is still in-progress) you often open the project just to get a piece of information, or verify something, or copy a portion of it for use in another project. In these cases you want to leave the files EXACTLY as you found them, all the way down to the same byte count, checksum, and timestamp. Here, the most reasonable default seems to be “Discard Changes” - because there shouldn’t be any.

We need a creative solution that protects BOTH situations!



Currently, if you don’t do any modification, this dialog doesn’t even show up. This is the appropriate behavior.


Maybe the default should be “cancel the close attempt”? That way do nothing is the default.


True, but if you accidentally moved something while panning around, then you’ve changed something but probably don’t want to save it.


I agree. But if you unintentionally make a change - such as bumping a footprint by 1 pixel when you try to select it - your preferred action is to close the file without saving, retaining its original content, and discarding everything attributable to your clumsiness, inattentiveness, etc.

And are there UI actions that KiCAD flags as a “change” even though no actual change occurred? I’m thinking of something like opening an object’s “Properties” dialog (perhaps to verify an object’s size, or location) - does KiCAD mark that as a change just because you opened the dialog, with all of its editable fields, whether or not you actually modified any of the fields? If so, you’ll see the “Save Changes?” dialog, and be puzzled because you don’t recall making any changes.



To me, it sounds totally unreasonable working “XXX hours” (as the OP suggests) on a project without doing Ctrl-S (or its equivalent) or commits time to time, and also before quitting. This applies in any application, BTW. So, this dialog only pops up under specific circumstances and you know why.


I am new to V5 (my previous KiCad dated 2010 :slight_smile: ).

My old KiCad saves my previous work (changed or unchanged) as a backup after saving the actual one. I assume this is also the case in V5.
So I guess I will have to test/verify this point after starting my first project on V5.



Pastor, forgive me, for I have sinned in this exact manner. :cry: (And done penance on multiple occasions.)

I know we will never have a fool-proof solution (because we fools are too ingenious!) but when a moderate amount of thought and effort can increase the degree of idiot-resistance, let’s try to help ourselves.



For the record @Seth_h has just committed a fix to get the “Save” button as default

It currently applies to the master branch only, but will may be “cherry-picked” for the 5.1 branch later.


The difficult, we do immediately. The impossible sometimes takes longer.
Gen H. H. Arnold, 8th Air Force, 1942



Oh yes! There’s nothing more annoying in the whole world (except 10 million other things) than checking something in a layout, changing the layer visibility and then get the discard/save dialog. This is worse if you actually may have changed a layout on purpose but being such scatterbrained as I am don’t remember what it was and did you really change something important, or was it only the layer visibility. Now you have to save just to be sure and when you use git you have to diff to see what it was and either commit it or leave it dirty or reset it. And don’t tell me “smudge” is a solution because it isn’t. Mixing in non-design data to the layout file is a bad design decision, period.


We’re working on this.


It’s difficult to express my gratitude because it’s so overwhelming! There are certainly many more important things but some small things which occur constantly just annoy on top of annoying.


How about setting some “Lock design” project option, that would make the design “Read only” but allowed for all processing (copying, plotting/printing etc) and ensuring that original project will be intact.
So when actively working with a project it will have “editable” status, and will give save on exit as default behaviour. Then once completed, one coud “lock” the project and prevent any unintended change (may be similar to “lock footprint” feature).
Frequently I want to review/open project but to ensure it wil stay intact. But defaulting to the “Discard” option is too risky (it’s easier to recover from backup files than to recreate unsaved work).


I store all my designs in Git repositories and commit all changes that matter. If I ever make unintentional changes, it’s easy to discard them and get back to the last real commit.


Only if you’ll find out with DIFF that some lines like
(xy 86.96495 53.738546) (xy 86.963592 53.737169) (xy 86.430192 53.203768) (xy 86.388472 53.169499) (xy 86.347154 53.134829)(xy 86.344462 53.133349) (xy 86.342088 53.131399) (xy 86.300053 53.10886) (xy 87.50046 53.10886) (xy 87.547164 53.104281)
meant you’ve just cleaned up some tracks :slight_smile:
… unless we’ll have DIFF that visualizes our boards/schematics :wink:


Certainly you wouldn’t propose something as radical as ‘personal responsibility’?