Bug 133861

Summary: regression: kdewallet-password and kdesu dialogues are no longer shown "always on top" and "on all desktops"
Product: [Unmaintained] kmail Reporter: S. Burmeister <sven.burmeister>
Component: generalAssignee: kdepim bugs <kdepim-bugs>
Status: RESOLVED FIXED    
Severity: major CC: l.lunak, nancy
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description S. Burmeister 2006-09-10 16:03:52 UTC
Version:            (using KDE KDE 3.5.4)
Installed from:    SuSE RPMs
OS:                Linux

Since the last update of the KDE 3.5.4 packages, the kdesu- and kwallet-dialogues are no longer "always on top" and "show on all desktops". Any of those windows and variants should be shown with these two settings.
Comment 1 Lubos Lunak 2006-09-10 19:28:09 UTC
That's not a regression, that's a fix. The dialog should be shown for the window which caused them, nothing more. If you have any specific real problems, please report them.

Comment 2 S. Burmeister 2006-09-10 19:51:30 UTC
What exactly was the problem with "always on top"?
Comment 3 S. Burmeister 2006-09-10 21:13:56 UTC
Found another real issue, except for the application covering the dialogue because the "always on top" lack.

If I use konqueror on desktop 1 but kontact is open on desktop 5 and I click on an email-address on a website, the composer is opened on the same desktop the browser is on. This makes sense and should not be changed.

However, if I send that email, the dialouge asking for the kwallet (smtp-password) pops-up on the desktop kontact is on. This happens because of the lack of "show on all desktops". The composer is greyed out and does nothing. To the user it is not obvious why. This is a consequence of the regression.
Comment 4 S. Burmeister 2006-09-19 15:17:45 UTC
Reopening since there was no reaction to the issues that relate to this bug.
Comment 5 Lubos Lunak 2006-09-20 16:54:22 UTC
KMail developers: See comment #3. It seems like you always pass the mainwindow as the parent for kwallet, but the parent has to be the window to which the dialog is related to, i.e. the composer window in this case.

If you code is something like "kwallet_function( ..., mainwindow->winId())", then changing that to "kwallet_function( ..., qApp->activeWindow() ? qApp->activeWindow()->winId() : mainwindow->winId())" should do I think.
Comment 6 Volker Krause 2006-10-09 17:53:23 UTC
SVN commit 593938 by vkrause:

Try harder to find an appropriate parent for the kwallet password
dialog.

Based on a suggestion of Lubos, should fix #133861 and might also help
with #131756.

BUG: 133861
CCBUG: 131756


 M  +8 -2      kmkernel.cpp  


--- branches/KDE/3.5/kdepim/kmail/kmkernel.cpp #593937:593938
@@ -2247,9 +2247,15 @@
   if ( !Wallet::isEnabled() || walletOpenFailed )
     return 0;
 
+  // find an appropriate parent window for the wallet dialog
+  WId window = 0;
+  if ( qApp->activeWindow() )
+    window = qApp->activeWindow()->winId();
+  else if ( getKMMainWidget() )
+    window = getKMMainWidget()->topLevelWidget()->winId();
+
   delete mWallet;
-  mWallet = Wallet::openWallet( Wallet::NetworkWallet(),
-        getKMMainWidget() ? getKMMainWidget()->topLevelWidget()->winId() : 0 );
+  mWallet = Wallet::openWallet( Wallet::NetworkWallet(), window );
 
   if ( !mWallet ) {
     walletOpenFailed = true;
Comment 7 S. Burmeister 2006-10-21 12:18:36 UTC
Shall I file another bug for the "always on top"? If kontact is in tray and one composes a new mail, i.e. by clicking on a link and sends it, the kwallet-dialogue pops-up behind the composer window. If the composer window covers it, e.g. because of a small resolution, or because of the window being that big, or in the middle of the screen, the user cannot see the kwallet-dialogue.
Comment 8 Volker Krause 2006-10-21 22:29:54 UTC
Does this still happen with the fix? Actually the kwallet dialog should now be displayed on top of the composer.
Comment 9 S. Burmeister 2006-10-22 10:23:48 UTC
If the fix is in 3.5.5, yes.

If kontact is open on another desktop, the kwallet-dialogue still pops-up on that desktop, if I open a composer on another one. If I remember correctly, the "always on top" was not set too. So it blocks kontact's UI but can still be brought behind it, if the user clicks next to it by accident.

If kontact is minimized, the kwallet-dialogue pops-up on the same desktop as the composer, yet behind it.
Comment 10 Volker Krause 2006-10-23 14:19:06 UTC
The fix is not in 3.5.5 but will be in 3.5.6.
With the fix I'm unable to reproduce any of the problems you are describing.
Comment 11 Volker Krause 2006-10-28 10:24:22 UTC
*** Bug 136336 has been marked as a duplicate of this bug. ***