Problem with KParts::BrowserOpenOrSaveQuestion

Stefano Crocco stefano.crocco at alice.it
Thu Apr 6 20:32:28 BST 2023


On giovedì 6 aprile 2023 00:19:35 CEST Albert Astals Cid wrote:
> El diumenge, 2 d’abril de 2023, a les 10:30:22 (CEST), Stefano Crocco va
> 
> escriure:
> > Hello to everyone,
> > I just found what I believe to be a problem with the service selection of
> > KParts::BrowserOpenOrSaveQuestion in KF-5.104 (installed from Gentoo
> > packages). Before creating a bug report, I'd like to be sure that this
> > isn't a problem related to my system and that I'm not misunderstanding
> > how this class works, so I'd like to know whether someone is experiencing
> > the same problem or can spot what I'm doing wrong. I've attached the code
> > of a minimal program which shows this issue.
> > 
> > The problem is the following:  KParts::BrowserOpenOrSaveQuestion has a
> > feature which allows the user to choose the service to use to open the
> > given URL, which is enabled  calling
> > setFeatures(KParts::BrowserOpenOrSaveQuestion::ServiceSelection) on the
> > dialog. This adds a button to the dialog; when this button is pressed, the
> > user is shown a menu with a list of available services for opening the
> > URL;
> > the last entry is "Open with..." and it should display a "Choose
> > application" dialog so that the user can choose a service which isn't
> > listed. However, on my system, pressing this menu entry immediately closes
> > the dialog.
> > 
> > The minimal example I created contains a button which, when clicked,
> > creates the KParts::BrowserOpenOrSaveQuestion dialog and shows it. When
> > the dialog is closed, a message box with the dialog result and the
> > service chosen by the user is shown. Clicking the "Open" button or the
> > "Open with..." button and choosing one of the suggested services works
> > correctly, but choosing the "Open with..." menu entry produces the
> > behavior I described above: the dialog closes with no possibility to
> > choose another application.
> > KParts::BrowserOpenOrSaveQuestion::selectedService returns nullptr. Note
> > that this doesn't depend on the URL or the mimetypes passed to the dialog.
> > 
> > To build the minimal example, put the CMakeList.txt main.cpp in the same
> > directory and run cmake as usual.
> > 
> > I'd be grateful to anyone which can help me investigate this issue.
> 
> I think there's no issue to investigate, as far as I can see that's what the
> "Open With..." button does, it returns Open and doesn't set any
> selectedService, it's the caller responsability to act on that.
> 
> For example
> https://lxr.kde.org/source/network/konqueror/src/urlloader.cpp#0266
> 
> Maybe it's a documentation problem that should make it clearer that is what
> the OpenWith button does?
> 
> Cheers,
>   Albert
> 

Thanks for your answer. In my opinion, the documentation problem exists, 
because (as far as I can see) the documentation of BrowserOpenOrSaveQuestion 
doesn't even speak of the menu and it doesn't warn the developer that he must 
take care of one of the menu entries himself. The documentation for the 
ServiceSelection features simply says "Shows "Open With..." with the 
associated applications for the mimetype.", which doesn't warn about this 
special case.

Thanks again for your help

Stefano






More information about the kde-devel mailing list