[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kmail-devel
Subject:    PATCH: problem with restore and multiple desktops
From:       Luís_Pedro_Coelho <luis () luispedro ! org>
Date:       2005-03-30 20:08:49
Message-ID: 200503302108.50023.luis () luispedro ! org
[Download RAW message or body]

Hi,

This is a patch to fix the following bug:

1. open kmail on Desktop 1
2. click on system tray to make it disappear
3. re-click to make it re-appear
4. ALT-F3->Desktop->Move to Desktop 2
5. Go to Desktop 3
6. Click on system tray

and PUFF you're taken to Desktop 2 where the system tray still thinks that 
kmail is, except it isn't.

This patch corrects this behaviour.

Ok to commit?

bye,
-- 
luispedro
http://blog.luispedro.org/
http://luispedro.org/

["kmsystemtray.patch" (text/x-diff)]

Index: kmsystemtray.cpp
===================================================================
RCS file: /home/kde/kdepim/kmail/kmsystemtray.cpp,v
retrieving revision 1.60
diff -u -3 -p -b -r1.60 kmsystemtray.cpp
--- kmsystemtray.cpp	6 Dec 2004 17:50:18 -0000	1.60
+++ kmsystemtray.cpp	28 Mar 2005 18:52:49 -0000
@@ -80,8 +80,7 @@ KMSystemTray::KMSystemTray(QWidget *pare
   if ( mainWidget ) {
     QWidget * mainWin = mainWidget->topLevelWidget();
     if ( mainWin ) {
-      mDesktopOfMainWin = KWin::windowInfo( mainWin->winId(),
-                                            NET::WMDesktop ).desktop();
+      mDesktopOfMainWin = KWin::windowInfo( mainWin->winId(), NET::WMDesktop ).desktop();
       mPosOfMainWin = mainWin->pos();
     }
   }
@@ -392,6 +391,8 @@ void KMSystemTray::showKMail()
   assert(mainWin);
   if(mainWin)
   {
+    KWin::WindowInfo cur =  KWin::windowInfo( mainWin->winId(), NET::WMDesktop );
+    if ( cur.valid() ) mDesktopOfMainWin = cur.desktop();
     // switch to appropriate desktop
     if ( mDesktopOfMainWin != NET::OnAllDesktops )
       KWin::setCurrentDesktop( mDesktopOfMainWin );
@@ -418,8 +419,7 @@ void KMSystemTray::hideKMail()
   assert(mainWin);
   if(mainWin)
   {
-    mDesktopOfMainWin = KWin::windowInfo( mainWin->winId(),
-                                          NET::WMDesktop ).desktop();
+    mDesktopOfMainWin = KWin::windowInfo( mainWin->winId(), NET::WMDesktop ).desktop();
     mPosOfMainWin = mainWin->pos();
     // iconifying is unnecessary, but it looks cooler
     KWin::iconifyWindow( mainWin->winId() );


_______________________________________________
KMail developers mailing list
KMail-devel@kde.org
https://mail.kde.org/mailman/listinfo/kmail-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic