If a button in a palette initiates evaluation in another notebook, then ButtonNotebook will be the palette, but EvaluationNotebook will be the other notebook.
If the current evaluation was not initiated by a button, then ButtonNotebook will return $Failed.