And as I see it, I found it kind of silly to hack in a KDE aspect. -----原始邮件----- 发件人: "Leslie Zhai" <xiangzha...@gmail.com> 发送时间: 2014/6/1 15:17 收件人: "Thomas Lübking" <thomas.luebk...@gmail.com>; "kde-devel@kde.org" <kde-devel@kde.org> 抄送: "Daniel Nicoletti" <dantt...@gmail.com>; "jeffbaich...@members.fsf.org" <jeffbaich...@members.fsf.org> 主题: Re: PolicyKit1-KDE AuthDialog could not shown as TOP_LEVEL
Hi Thomas, Thanks for your reply :) 1. it is NOT a bug about Apper or QJade. Because Apper and QJade uses PackageKit-Qt, a Qt bindings for PackageKit. When it calls installPackage function of PackageKit-Qt, there is pk_transaction_obtain_authorization function in PackageKit to call PolicyKit relative dbus async APIs such as polkit_authority_check_authorization. the process shown as below: Apper install package -> PackageKit-Qt call installPackage -> PackageKit do PolicyKit authorization -> polkitd -> Polkit-Qt -> Polkit-KDE so there is NO Apper assoicate WID for AuthDialog constructor. 2. KWindowSystem::forceActiveWindow sometimes worked BUT ... Sometimes it FAILED to force active window to act like modal one, for example, Apper or QJade covered the Polkit-KDE AuthDialog window, but I simply setWindowFlags for AuthDialog to force it as _NET_WM_STATE_ABOVE, I experienced it :) https://github.com/xiangzhai/grt/blob/master/GRTExamples/ClassificationModulesExamples/X11DTWExample/x11.cpp#L102 Regards, Leslie Zhai <xiang.z...@i-soft.com.cn> On 2014年05月30日 21:49, Thomas Lübking wrote: > On Freitag, 30. Mai 2014 05:09:58 CEST, Leslie Zhai wrote: >> Hi KDE developers, >> >> My colleage reported a bug to me, it is about PolicyKit1-KDE AuthDialog >> UI behavior issue, the AuthDialog could not show as TOP_LEVEL > > That's called "_NET_WM_STATE_ABOVE" - "toplevel" usually refers to a > window with the root window as parent drawable. > >> installing some App via Qt frontend of PackageKit, for example, Apper or >> QJade https://github.com/AOSC-Dev/QJade > > Seems an apper bug. > You want to pass the Apper window WId as last parameter to the > AuthDialog() constructor. > > This will make the AuthDialog modal (and transient) for that window. > > The only problem occurs if you have no window to assiciate the > AuthDialog with. In this case you may wish to enforce activation (see > KWindowSystem::forceActiveWindow()) which is legit, if the dialog > appears as result of a direct user interaction (eg. with some systray > icon etc.) > > Cheers, > Thomas
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<