Code review comment for lp:~craighewetson-deactivatedaccount/bzr-explorer/shorten-refresh-time

Revision history for this message
Craig Hewetson (craighewetson-deactivatedaccount) wrote :

>
>
> In PyQt you should not call methods directly but instead you should send
> a signal to do what you need. Signals are asynchronous, and it won't
> block your dialog.
>
>

It seems the bzr explorer already listeners to the finished() signal when
showing the dialog. The following code snippet comes from explorer.py line
1388 to 1396:

                    if finisher:
                        # We keep track of the most recently opened dialog
for
                        # each command-id so we can find it during the
finisher.
                        self._custom_modeless_dialogs[cmd_id] = dialog
                        # NOTE: This isn't actually the close event but the
                        # subprocess competion event. We may want to tweak
                        # that in the future.
                        self.connect(dialog.process_widget,
                            QtCore.SIGNAL("finished()"), finisher)

I assume from this that the finisher method gets called when the
"finished()" signal is sent. But the dialog seems to get blocked i.e the OK
and Cancel buttons take a while before they get replaced with the "Close"
button.

Its very likely that I'm missing something here...

« Back to merge proposal