I have likely been too hard....but I'd say you are too easy Undone. Things like watching someone be hurt or killed without interceding ( unless hiding in a hostile land )...and a lot of less than that list things should make a paladin fall.
Which is why I wont play a Paladin in any game unless I know the DM doesn't treat the code this way.
A paladin must be of lawful good alignment and loses all class features except proficiencies if she ever willingly commits an evil act.
Additionally, a paladin's code requires that she respect legitimate authority, act with honor (not lying, not cheating, not using poison, and so forth), help those in need (provided they do not use the help for evil or chaotic ends), and punish those who harm or threaten innocents.
He didn't willingly kill his lover. He didn't change alignment. And he did nothing that would break his Code of Conduct. RAW he is completly safe from loosing his powers. Now as to the Spirit of what the Code is supposed to do....
The Paladin's Code is an RP tool. It is not a "How can I screw my player" tool. It is not meant for the DM to "Set up" situations for the Paladin to have to sacrifice his party/health/ect in order to keep following. It should only be used by the DM to monitor the players actions. As long as he is acting in a LG mannor and isn't doing horrible things you shouldn't be holding his code over his head. How is that fun at all.
Why is it some DM's want to force a player to walk on egg shells if they play a Paladin. Why do some DM's see the need to make Paladin's fall as soon as they see one is being rolled up. I've seen these post over and over. Lose, Lose situations where if the Paladin act like a rational normal individual they loose all their powers and abilities.
NO... BAD. Dont do it. Let the Paladin have fun. Let him be a Rightous Warrior for his god. Dont be "that" DM.