<br><br><div class="gmail_quote">2009/4/7 David Faure <span dir="ltr"><<a href="mailto:faure@kde.org">faure@kde.org</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Monday 06 April 2009, Kevin Ottens wrote:<br>
> So what would happen if we made EmitResult by default is<br>
> that in most cases of user cancellation, the user would then get a dialog<br>
> claiming that the job failed... which isn't true, and isn't desirable to put<br>
> into the face of the user (he knows he killed the task, he clicked on the<br>
> button).<br>
<br>
</div>This worked in KDE3 by emitting error, and the showErrorDialog method<br>
wouldn't do anything if the error was ERR_USER_CANCELED. That meant<br>
one special case in the GUI code, but no special case in the application-logic code,<br>
which I think is good because there is much more app-logic related to jobs<br>
than duplications of the "show this error" mechanism.<br>
<br>
I hadn't realized that the default for kill() had changed in kde4. This sounds nasty<br>
(if only because the porting might have overseen that)...<br>
I guess it's too late to change our mind about this now :(<br>
Well. Not sure.<br>
IMHO this introduces a bug that every bit of code that expects result() to be emitted<br>
in all cases where the job is killed [*] is now running under a false assumption, exactly<br>
like this kpart code, but there's probably a lot more like it. I think we should make<br>
the "cancel" button call kill(EmitResult).<br>
<br>
[*] The point of Quietly is for when the app code changes its mind and kills the job<br>
and doesn't want slotResult to be called -- but the app code has full control over that.<br>
In all cases where the job is killed independently, then it has to be notified,<br>
and that's exactly what result() is about, and the reason why Cancel should emit result.<br>
<div class="im"><br>
> That's why EmitResult is a possibility but not the default, and shall not be<br>
> the default.<br>
<br>
</div>It was, in kde3...<br>
<font color="#888888"><br>
--<br>
David Faure, <a href="mailto:faure@kde.org">faure@kde.org</a>, sponsored by Qt Software @ Nokia to work on KDE,<br>
Konqueror (<a href="http://www.konqueror.org" target="_blank">http://www.konqueror.org</a>), and KOffice (<a href="http://www.koffice.org" target="_blank">http://www.koffice.org</a>).<br>
</font></blockquote></div><br><br clear="all">Damn, this issue is getting harder than i thought :P<br><br>Ok, what about adding a method like KJob::setAlwaysEmitResult(bool) ? <br>This could be false by default but override kill()'s default parameter..<br>
<br>:-)<br><br>-- <br>Alessandro Diaferia<br>KDE Developer<br>