> On Jan. 13, 2015, 12:41 nachm., Christoph Feck wrote:
> > It looks like Daniel cannot provide feedback right now.
> > 
> > Wolfgang, does changing the modality of the configure dialog mean it can 
> > now be openend twice?
> 
> Wolfgang Bauer wrote:
>     As far as I can tell, no.
>     If I click on "Configure" for the same printer, the already opened dialog 
> is given focus, no new dialog is opened.
>     
>     It is possible to open a new configure dialog for a different printer now 
> though when one is open already, which even makes sense somehow IMHO.
> 
> Thomas Lübking wrote:
>     A modal window is ALWAYS modal for exactly one other window.
>     The assumption
>     "Launching a modal dialog (for example, as password dialog) from a modal 
> dialog won't give the focus to the second dialog." in bug #314633 is 
> -generally- wrong for sure.
>     
>     Beyond this, Qt supports client wide modality, but that's about event 
> processing.
>     
>     You can set QWidget::setWindowModality(Qt::WindowModal) rather than 
> QWidget::setModal(true) (the latter implies 
> QWidget::setWindowModality(Qt::ApplicationModal) to impact this.
>     
>     Notice that Qt will set the main window to the parent window - you must 
> use KWindowSystem::setMainWindow(QWidget*, WId) if you need anything special.
>     
>     KWin (unlike mutter) does not support some sort of system wide modality 
> at all. I cannot say what exactly causes the behavior of bug #314633 but a 
> modal dialog for MainWindow A has no impact on windows in clients B unless A 
> and B have a common MainWindow C which is NOT the root window.
>     
>     
>     ==> The bug is here:
>     
> https://projects.kde.org/projects/kde/kdeutils/print-manager/repository/revisions/1595ef0614f824a6a871d51327eff3a108e6e251
>     
>     Why would the password dialog block plasma? Because it's ApplicationModal 
> or because it was set modal for some common plasma dialog dummy window?
>     If the dialog has an actual (visible, real, probably not the desktop or a 
> panel) parent window, it should be WindowModal for that one window only. (I 
> strongly assume the the password dialog better should be modal since its 
> input is probably expected by some other window?!) If not (ie. the dialog 
> spawns out of the void), then of course it should be not modal at all.
> 
> Wolfgang Bauer wrote:
>     I fully agree that the password dialog should better be modal.
>     But as I understand bug #314633, the password dialog can also be shown 
> directly by the plasmoid, i.e. it _can_ spawn out of the void apparently. 
>     I never saw that problem though (I don't use remote printers), and AFAICS 
> the real cause was never identified sufficiently.
>     
>     OTOH, I don't really see a point for making the "Configure Printer" 
> dialog modal.
>     Why should it be prevented to do some other stuff in the KCM while that 
> dialog is open, like cleaning the heads or printing a test page.
> 
> Thomas Lübking wrote:
>     Modality should be client controlled then (ie. the printer dialog would 
> set it QWidget::setWindowModality(Qt::WindowModal) - it MUST be a child of 
> the printer dialog, resp. through KWindowSystem::setMainWindow(passwordDlg, 
> printerDlg->winId()) )
>     
>     I would instinctively agree on the printer dialog modality, but can't say 
> - I installed printer stuff only back then to check the modality 
> constallation but am not in tree killing business otherwise ;-)
> 
> Wolfgang Bauer wrote:
>     So if I understand you correctly, 
> dialog->setWindowModality(Qt::WindowModal) should be called instead of 
> dialog->setModal(), and then KWindowSystem::setMainWindow() to specify the 
> window that should be blocked (i.e. the "Configure Printer" dialog in this 
> case).
>     
>     AFAICS KWindowSystem::setMainWindow() is actually called already (added 
> by the mentioned commit), so all that would be left is change 
> dialog->setModal() to dialog->setWindowModality(Qt::WindowModal) in 
> KCupsPasswordDialog.cpp?
>     
>     But KWindowSystem::setMainWindow() should be called *before* 
> dialog->show() (not afterwards as it is now) if I correctly understand the 
> documentation, right?
>     
>     And I think the KWindowSystem::forceActiveWindow(dialog->winId()) should 
> be removed as well, or not?
>     
>     ---
>     
>     Regarding *this* review request: configure-printer (i.e. the printer 
> configuration dialog) is a separate application anyway 
> (/usr/lib64/kde4/libexec/configure-printer on my system, it is started via 
> DBUS). So the setModal(true) here is totally useless I'd say.
>     It has absolutely no effect on the KCM window at all, that one is not 
> blocked even without this patch. I noticed this already when I came up with 
> this patch, but somehow forgot to mention that here.
>     
>     So I think there's no need to discuss whether the "configure printer" 
> dialog should be modal or not.

PS: I did notice a change now:
When setModal(true) is called, all other open "Configure Printer" dialog 
windows are blocked when you open a new one.
I'm not sure whether this is desirable or not though. But I'd rather say no. It 
should not matter in which order you press OK/Cancel in the open windows I 
think...


- Wolfgang


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/121351/#review73924
-----------------------------------------------------------


On Jan. 13, 2015, 12:40 nachm., Wolfgang Bauer wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/121351/
> -----------------------------------------------------------
> 
> (Updated Jan. 13, 2015, 12:40 nachm.)
> 
> 
> Review request for Okular, Print Manager, Daniel Nicoletti, and Thomas 
> Lübking.
> 
> 
> Bugs: 328014
>     http://bugs.kde.org/show_bug.cgi?id=328014
> 
> 
> Repository: print-manager
> 
> 
> Description
> -------
> 
> [Commit 
> 1595ef0614f824a6a871d51327eff3a108e6e251](https://projects.kde.org/projects/kde/kdeutils/print-manager/repository/revisions/1595ef0614f824a6a871d51327eff3a108e6e251)
>  (a partial fix for bug 314633) changed the password dialog to be non-modal.
> But the printer configuration dialog is still modal, so if a password is 
> needed to apply/save the configuration it cannot be entered because the 
> password dialog cannot get focus.
> 
> This patch sets the configuration dialog to be non-modal as well to prevent 
> this problem.
> 
> 
> Diffs
> -----
> 
>   configure-printer/ConfigureDialog.cpp ace91a2 
> 
> Diff: https://git.reviewboard.kde.org/r/121351/diff/
> 
> 
> Testing
> -------
> 
> Open the "Printer" KCM in systemsettings, select a printer, click on 
> "Configure", change some setting and click "Apply" or "OK".
> A password dialog appears (unless you have the necessary privileges to change 
> the CUPS settings of course), this has focus and you can actually enter the 
> username/password now whereas you could not without this patch.
> 
> Also tested by other users and included in openSUSE's official packages, see 
> https://bugzilla.opensuse.org/show_bug.cgi?id=889187#c7.
> 
> 
> Thanks,
> 
> Wolfgang Bauer
> 
>

_______________________________________________
Okular-devel mailing list
Okular-devel@kde.org
https://mail.kde.org/mailman/listinfo/okular-devel

Reply via email to