Craig, I think I know how to not block Close button.
You should not execute self.do_refresh() immediately, instead you should send additional signal to yourself with
QtCore.QTimer.singleShot(1, self.do_refresh)
The timer will start refresh once all other signals will be processed, as I understand. So buttons should be activated and won't blocked by refresh.
Craig, please test this change and say if it works as expected without patching QBzr.
Craig, I think I know how to not block Close button.
You should not execute self.do_refresh() immediately, instead you should send additional signal to yourself with
QtCore. QTimer. singleShot( 1, self.do_refresh)
The timer will start refresh once all other signals will be processed, as I understand. So buttons should be activated and won't blocked by refresh.
Craig, please test this change and say if it works as expected without patching QBzr.