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

List:       kde-commits
Subject:    branches/KDE/3.5/kdebase/kdesktop
From:       Andreas Kling <kling () impul ! se>
Date:       2006-08-18 20:50:08
Message-ID: 1155934208.177467.15402.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 574369 by kling:

Talk to the correct kicker and kwin instances in multi-head environments.
Fixes a bunch of flakiness, such as kicker disappearing when switching desktops.


 M  +7 -7      desktop.cc  
 M  +8 -42     krootwm.cc  
 M  +12 -8     main.cc  


--- branches/KDE/3.5/kdebase/kdesktop/desktop.cc #574368:574369
@@ -62,6 +62,9 @@
 // and then remove this include and fix reconnects in initRoot() -- ellis
 //#include <kaccelbase.h>
 
+extern int kdesktop_screen_number;
+extern QCString kdesktop_name, kicker_name, kwin_name;
+
 KRootWidget::KRootWidget() : QObject()
 {
      kapp->desktop()->installEventFilter(this);
@@ -124,9 +127,6 @@
 // -----------------------------------------------------------------------------
 #define DEFAULT_DELETEACTION 1
 
-// for multihead - from main.cc
-extern int kdesktop_screen_number;
-
 KDesktop::WheelDirection KDesktop::m_eWheelDirection = KDesktop::m_eDefaultWheelDirection;
 const char* KDesktop::m_wheelDirectionStrings[2] = { "Forward", "Reverse" };
 
@@ -149,7 +149,7 @@
   m_pKwinmodule = new KWinModule( this );
 
   kapp->dcopClient()->setNotifications(true);
-  kapp->dcopClient()->connectDCOPSignal("kicker", "kicker", "desktopIconsAreaChanged(QRect, int)",
+  kapp->dcopClient()->connectDCOPSignal(kicker_name, kicker_name, "desktopIconsAreaChanged(QRect, int)",
                                         "KDesktopIface", "desktopIconsAreaChanged(QRect, int)", false);
 
   // Dont repaint on configuration changes during construction
@@ -292,7 +292,7 @@
         QCString replyType;
         QRect area;
 
-        if ( kapp->dcopClient()->call("kicker", "kicker", "desktopIconsArea(int)",
+        if ( kapp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)",
                                        data, replyType, result, false, 2000) )
         {
           QDataStream res(result, IO_ReadOnly);
@@ -674,7 +674,7 @@
   m_bNeedRepaint |= 1;
   updateWorkArea();
 #endif
-  kapp->dcopClient()->send( "kwin", "", "refresh()", "");
+  kapp->dcopClient()->send( kwin_name, "", "refresh()", "");
   refreshIcons();
 }
 
@@ -949,7 +949,7 @@
         QCString replyType;
         QRect area;
 
-        if ( kapp->dcopClient()->call("kicker", "kicker", "desktopIconsArea(int)",
+        if ( kapp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)",
                                        data, replyType, result, false, 2000) )
         {
             QDataStream res(result, IO_ReadOnly);
--- branches/KDE/3.5/kdebase/kdesktop/krootwm.cc #574368:574369
@@ -66,11 +66,8 @@
 
 KRootWm * KRootWm::s_rootWm = 0;
 
+extern QCString kdesktop_name, kicker_name, kwin_name;
 
-// for multihead
-extern int kdesktop_screen_number;
-
-
 KRootWm::KRootWm(KDesktop* _desktop) : QObject(_desktop)
 {
   s_rootWm = this;
@@ -556,15 +553,9 @@
       // This allows the menu to disappear when clicking on the background another time
       XUngrabPointer(qt_xdisplay(), CurrentTime);
       XSync(qt_xdisplay(), False);
-      // Ask kicker to showup the menu
-      // make sure we send the message to the correct kicker
-      QCString appname;
-      if (kdesktop_screen_number == 0)
-	  appname = "kicker";
-      else
-	  appname.sprintf("kicker-screen-%d", kdesktop_screen_number);
 
-      DCOPRef( appname.data(), appname.data() ).send( "popupKMenu", global );
+      // Ask kicker to showup the menu
+      DCOPRef( kicker_name, kicker_name ).send( "popupKMenu", global );
       break;
     }
     case CUSTOMMENU1:
@@ -756,53 +747,28 @@
     KDesktopSettings::setShowMenubar( !(m_bShowMenuBar && menuBar) );
     KDesktopSettings::writeConfig();
 
-    // make sure we send the message to the correct screen
-    QCString appname;
-    if (kdesktop_screen_number == 0)
-	appname = "kdesktop";
-    else
-	appname.sprintf("kdesktop-screen-%d", kdesktop_screen_number);
-
     QByteArray data;
-    kapp->dcopClient()->send( appname.data(), "KDesktopIface", "configure()", data);
+    kapp->dcopClient()->send( kdesktop_name, "KDesktopIface", "configure()", data);
     // for the standalone menubar setting
     kapp->dcopClient()->send( "menuapplet*", "menuapplet", "configure()", data );
-    kapp->dcopClient()->send( "kicker", "kicker", "configureMenubar()", data );
+    kapp->dcopClient()->send( kicker_name, kicker_name, "configureMenubar()", data );
     kapp->dcopClient()->send( "kwin*", "", "reconfigure()", data );
 }
 
 
 void KRootWm::slotUnclutterWindows()
 {
-    QCString appname;
-    if (kdesktop_screen_number == 0)
-	appname = "kwin";
-    else
-	appname.sprintf("kwin-screen-%d", kdesktop_screen_number);
-
-    kapp->dcopClient()->send(appname.data(), "KWinInterface", "unclutterDesktop()", "");
+    kapp->dcopClient()->send(kwin_name, "KWinInterface", "unclutterDesktop()", "");
 }
 
 
 void KRootWm::slotCascadeWindows() {
-    QCString appname;
-    if (kdesktop_screen_number == 0)
-	appname = "kwin";
-    else
-	appname.sprintf("kwin-screen-%d", kdesktop_screen_number);
-
-    kapp->dcopClient()->send(appname.data(), "KWinInterface", "cascadeDesktop()", "");
+    kapp->dcopClient()->send(kwin_name, "KWinInterface", "cascadeDesktop()", "");
 }
 
 
 void KRootWm::slotLock() {
-    QCString appname;
-    if (kdesktop_screen_number == 0)
-	appname = "kdesktop";
-    else
-	appname.sprintf("kdesktop-screen-%d", kdesktop_screen_number);
-
-    kapp->dcopClient()->send(appname, "KScreensaverIface", "lock()", "");
+    kapp->dcopClient()->send(kdesktop_name, "KScreensaverIface", "lock()", "");
 }
 
 
--- branches/KDE/3.5/kdebase/kdesktop/main.cc #574368:574369
@@ -57,6 +57,7 @@
 // -----------------------------------------------------------------------------
 
 int kdesktop_screen_number = 0;
+QCString kdesktop_name, kicker_name, kwin_name;
 
 static void crashHandler(int sigId)
 {
@@ -136,13 +137,17 @@
 	}
     }
 
-    QCString appname;
-    if (kdesktop_screen_number == 0)
-	appname = "kdesktop";
-    else
-	appname.sprintf("kdesktop-screen-%d", kdesktop_screen_number);
+    if (kdesktop_screen_number == 0) {
+        kdesktop_name = "kdesktop";
+        kicker_name = "kicker";
+        kwin_name = "kwin";
+    } else {
+        kdesktop_name.sprintf("kdesktop-screen-%d", kdesktop_screen_number);
+        kicker_name.sprintf("kicker-screen-%d", kdesktop_screen_number);
+        kwin_name.sprintf("kwin-screen-%d", kdesktop_screen_number);
+    }
 
-    KAboutData aboutData( appname.data(), I18N_NOOP("KDesktop"),
+    KAboutData aboutData( kdesktop_name, I18N_NOOP("KDesktop"),
 			  version, description, KAboutData::License_GPL,
 			  "(c) 1998-2000, The KDesktop Authors");
     aboutData.addAuthor("David Faure", 0, "faure@kde.org");
@@ -171,7 +176,7 @@
     KUniqueApplication app;
     app.disableSessionManagement(); // Do SM, but don't restart.
 
-    KDesktopSettings::instance(appname + "rc");
+    KDesktopSettings::instance(kdesktop_name + "rc");
     KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
 
     bool x_root_hack = args->isSet("x-root");
@@ -205,4 +210,3 @@
 
     return app.exec();
 }
-
[prev in list] [next in list] [prev in thread] [next in thread] 

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