Not Josh, but I can say that I've made it a habit to stop a protocol by first using the Pause button and then only hitting Stop when the state matrix has been completed.
Hitting the Stop button sends a force-exit message to the state machine. But if you've got a real habit for accidentally hitting Stop then you could modify Functions/Launch manager/RunProtocol.m which handles the button presses. At Line 138 there's the Stop button case, so you could add an additional confirmation:
case 'Stop' % Line 138 in Functions/Launch manager/RunProtocol.m
answer = input('Stop protocol Y/N? ','s'); % require user to input text into Command Window
if ~strcmp(lower(answer),'y')
return % if unconfirmed then exit out of this function and return control to the protocol script
end
% otherwise continue with shutting down the session
With this addition, while MATLAB is waiting for your input the state matrix can finish in the background.