> On July 2, 2013, 7:48 a.m., David Faure wrote:
> > kdecore/services/kservice.h, line 82
> > <http://git.reviewboard.kde.org/r/111272/diff/2/?file=167013#file167013line82>
> >
> >     How about a setExec() method rather than a special constructor? This 
> > seems a lot clearer to me (and e.g. easier to grep for in order to find 
> > usages, etc.).
> >     
> >     
> >     But anyway, I have my doubts that this really works: returning a 
> > KService that isn't exactly like the one in ksycoca seems fragile to me.
> >     E.g. when krun uses that service, it will call KToolInvocation with the 
> > entry path to the service - i.e. just the path to the desktop file. The 
> > modified Exec field (in memory) won't be used in that case.
> >     
> >     What KRun can do, though, is work with a "temp" kservice, created like 
> > this:
> >     
> >         KService::Ptr service(new KService(_name, _exec, _icon));
> >     
> >     This is detected as "not in ksycoca" and therefore not given to 
> > KToolInvocation (but to runTempService).
> >     
> >     I think this would recreate the issue you saw though, since indeed 
> > nowadays it's not enough to have %U in the exec line, one must also have 
> > Categories or X-KDE-Protocols indicating that KIO protocols are supported. 
> > But this could be copied from the orig file, using a new setter in 
> > KService. Hmm.
> >     
> >     Maybe it would be simpler to just clear entryPath() in the 
> > KService::setExec() I'm suggesting initially. i.e.: if we're modifying the 
> > KService then the path to the file that has been cached in ksycoca, no 
> > longer applies.
> >     And then KRun will go to runTempService, when running it.
> >
> 
> Dawit Alemayehu wrote:
>     Well I created a special constructor instead of a setter because I wanted 
> to limit the scope of change to KService's behavior as low as possible. If I 
> added a setExec, it would allow the "Exec=" to be changed at anytime 
> regardless of how KService was created. To me that did not make sense as the 
> need to change the "Exec=" line is very specific scenarios like the one we 
> have in the openWith dialog. Moreover, we already have several different 
> ctors for different use cases right now. Adding one that could be merged with 
> an existing on in KF5 would be the lowest impact change that could be made to 
> KService itself. Are you sure adding a setExec() is the better way to go in 
> this case?

I agree that from the KService point of view, this is really a "very specific 
scenario". That was actually my reason for a setExec, documented as internal, 
and easy to find again later. But OK, this mostly works with a separate 
constructor too. Please mark it as internal, only for use by KOpenWithDialog.


- David


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/111272/#review35416
-----------------------------------------------------------


On July 3, 2013, 2:22 a.m., Dawit Alemayehu wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/111272/
> -----------------------------------------------------------
> 
> (Updated July 3, 2013, 2:22 a.m.)
> 
> 
> Review request for kdelibs and David Faure.
> 
> 
> Description
> -------
> 
> The attached patch addresses a bug where a user enters the name of a KDE 
> application in OpenWith dialog to open a remote file and the file is opened 
> as if the user requested to open it with a non KDE application. That is a 
> local copy of the file is created first. Currently this problem can be 
> reproduced with kate because the "Exec=" line in its desktop file contains an 
> additional option, "-b".
> 
> Note that this patch only addresses the specific condition where the user 
> only typed in the KDE executable name. Other scenarios, like the user typing 
> in not only the name of the KDE app but also additional command line options, 
> will still produce this same issue.
> 
> 
> This addresses bug 222519.
>     http://bugs.kde.org/show_bug.cgi?id=222519
> 
> 
> Diffs
> -----
> 
>   kdecore/services/kservice.h 3843bad 
>   kdecore/services/kservice.cpp e2cc86f 
>   kio/kfile/kopenwithdialog.cpp 84465cd 
> 
> Diff: http://git.reviewboard.kde.org/r/111272/diff/
> 
> 
> Testing
> -------
> 
> Try to open a remote text or source file by typing "kate" in the open with 
> dialog.
> 
> 
> Thanks,
> 
> Dawit Alemayehu
> 
>

Reply via email to