File wm-switch-systemsettings.diff of Package kdebase4-workspace

Subject: Move the window manager selection UI to 'default applications' control module
From: Lubos Lunak
Patch-upstream: r847440
Relates: kdebase4-runtime/wm-switch-systemsettings.diff

Move the window manager selection UI option (i.e. mainly Compiz switch) to a more
prominent and logical place, the 'default applications' control module. Also improve
the switching.

unchanged:
--- ksmserver/kcm/smserverconfigdlg.ui
+++ ksmserver/kcm/smserverconfigdlg.ui
@@ -6,7 +6,7 @@
     <x>0</x>
     <y>0</y>
     <width>325</width>
-    <height>478</height>
+    <height>433</height>
    </rect>
   </property>
   <property name="windowTitle" >
@@ -125,18 +125,6 @@
     </widget>
    </item>
    <item>
-    <widget class="QGroupBox" name="windowManagerGroup" >
-     <property name="title" >
-      <string>Window Manager</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout" >
-      <item>
-       <widget class="QComboBox" name="windowManagerCombo" />
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
     <widget class="QGroupBox" name="advancedGroup" >
      <property name="title" >
       <string>Advanced</string>
unchanged:
--- ksmserver/kcm/smserverconfigimpl.cpp
+++ ksmserver/kcm/smserverconfigimpl.cpp
@@ -28,7 +28,6 @@
     connect(rebootRadio,SIGNAL(toggled(bool)), SLOT(configChanged()));
     connect(excludeLineedit,SIGNAL(textChanged(QString)),SLOT(configChanged()));
     connect(offerShutdownCheck,SIGNAL(toggled(bool)),SLOT(configChanged()));
-    connect(windowManagerCombo,SIGNAL(activated(int)),SLOT(configChanged()));
 }
 SMServerConfigImpl::~SMServerConfigImpl(){
 }
unchanged:
--- ksmserver/kcm/kcmsmserver.cpp
+++ ksmserver/kcm/kcmsmserver.cpp
@@ -63,8 +63,6 @@
     connect(dialog, SIGNAL(changed()), SLOT(changed()));
 
     topLayout->addWidget(dialog);
-
-    KGlobal::dirs()->addResourceType( "windowmanagers", "data", "ksmserver/windowmanagers" );
 }
 
 void SMServerConfig::load()
@@ -94,7 +92,6 @@
     dialog->logoutRadio->setChecked(true);
     break;
   }
-  loadWMs(c.readEntry("windowManager", "kwin"));
   dialog->excludeLineedit->setText( c.readEntry("excludeApps"));
 
   emit changed(false);
@@ -102,8 +99,8 @@
 
 void SMServerConfig::save()
 {
-  KConfig *c = new KConfig("ksmserverrc", KConfig::NoGlobals);
-  KConfigGroup group = c->group("General");
+  KConfig c("ksmserverrc", KConfig::NoGlobals);
+  KConfigGroup group = c.group("General");
   group.writeEntry( "confirmLogout", dialog->confirmLogoutCheck->isChecked());
   group.writeEntry( "offerShutdown", dialog->offerShutdownCheck->isChecked());
   QString s = "restorePreviousLogout";
@@ -119,21 +116,13 @@
                    dialog->rebootRadio->isChecked() ?
                      int(KWorkSpace::ShutdownTypeReboot) :
                      int(KWorkSpace::ShutdownTypeNone));
-  group.writeEntry("windowManager", currentWM());
   group.writeEntry("excludeApps", dialog->excludeLineedit->text());
-  c->sync();
-  delete c;
+  c.sync();
 # if 0
   // update the k menu if necessary
   QDBusInterface kicker("org.kde.kicker", "/kicker", "org.kde.kicker");
   kicker.call("configure");
 #endif
-  if( oldwm != currentWM())
-  { // TODO switch it already in the session instead and tell ksmserver
-    KMessageBox::information( this,
-        i18n( "The new window manager will be used when KDE is started the next time." ),
-        i18n( "Window manager change" ), "windowmanagerchange" );
-  }
 }
 
 void SMServerConfig::defaults()
@@ -143,55 +132,7 @@
   dialog->offerShutdownCheck->setChecked(true);
   dialog->sdGroup->setEnabled(true);
   dialog->logoutRadio->setChecked(true);
-  dialog->windowManagerCombo->setCurrentIndex( 0 );
   dialog->excludeLineedit->clear();
 }
 
-void SMServerConfig::loadWMs( const QString& current )
-{
-  QString kwinname = i18n( "KWin (KDE default)" );
-  dialog->windowManagerCombo->addItem( kwinname );
-  dialog->windowManagerCombo->setCurrentIndex( 0 );
-  wms[ kwinname ] = "kwin";
-  oldwm = "kwin";
-  QStringList list = KGlobal::dirs()->findAllResources( "windowmanagers", QString(), KStandardDirs::NoDuplicates );
-  QRegExp reg( ".*/([^/\\.]*)\\.[^/\\.]*" );
-  foreach( QString wmfile, list )
-  {
-    KDesktopFile file( wmfile );
-    if( file.noDisplay())
-        continue;
-    if( !file.tryExec())
-        continue;
-    QString testexec = file.desktopGroup().readEntry( "X-KDE-WindowManagerTestExec" );
-    if( !testexec.isEmpty())
-    {
-        KProcess proc;
-        proc.setShellCommand( testexec );
-        if( proc.execute() != 0 )
-            continue;
-    }
-    QString name = file.readName();
-    if( name.isEmpty())
-        continue;
-    if( !reg.exactMatch( wmfile ))
-        continue;
-    QString wm = reg.cap( 1 );
-    if( wms.values().contains( wm ))
-        continue;
-    wms[ name ] = wm;
-    dialog->windowManagerCombo->addItem( name );
-    if( wms[ name ] == current ) // make it selected
-    {
-        dialog->windowManagerCombo->setCurrentIndex( dialog->windowManagerCombo->count() - 1 );
-        oldwm = wm;
-    }
-  }
-}
-
-QString SMServerConfig::currentWM() const
-{
-  return wms[ dialog->windowManagerCombo->currentText() ];
-}
-
 #include "kcmsmserver.moc"
unchanged:
--- ksmserver/kcm/kcmsmserver.h
+++ ksmserver/kcm/kcmsmserver.h
@@ -40,10 +40,6 @@
   void defaults();
 
 private:
-  void loadWMs( const QString& current );
-  QString currentWM() const;
-  QHash< QString, QString > wms; // i18n text -> internal name
-  QString oldwm; // the original value
   SMServerConfigImpl* dialog;
 };
 
unchanged:
--- ksmserver/CMakeLists.txt
+++ ksmserver/CMakeLists.txt
@@ -1,5 +1,4 @@
 add_subdirectory( kcm )
-add_subdirectory( windowmanagers )
 add_subdirectory( tests )
 
 include_directories(
only in patch2:
unchanged:
--- ksmserver/server.cpp	(revision 854489)
+++ ksmserver/server.cpp	(revision 854490)
@@ -967,3 +967,9 @@
     wm = smname.isEmpty() ? cfgwm : smname;
     wmCommands = cfgWmCommands;
 }
+
+void KSMServer::wmChanged()
+{
+    KGlobal::config()->reparseConfiguration();
+    selectWm( "" );
+}
only in patch2:
unchanged:
--- ksmserver/KSMServerInterface.h	(revision 854489)
+++ ksmserver/KSMServerInterface.h	(revision 854490)
@@ -41,6 +41,7 @@
 
   Q_SCRIPTABLE void suspendStartup( QString );
   Q_SCRIPTABLE void resumeStartup( QString );
+  Q_SCRIPTABLE void wmChanged();
 };
 
 #endif
only in patch2:
unchanged:
--- ksmserver/org.kde.KSMServerInterface.xml	(revision 854489)
+++ ksmserver/org.kde.KSMServerInterface.xml	(revision 854490)
@@ -26,5 +26,6 @@
     <method name="resumeStartup">
       <arg type="s" direction="in"/>
     </method>
+    <method name="wmChanged"/>
   </interface>
 </node>
only in patch2:
unchanged:
--- ksmserver/server.h	(revision 854489)
+++ ksmserver/server.h	(revision 854490)
@@ -192,6 +192,7 @@
     void saveCurrentSession();
     void saveCurrentSessionAs( const QString & );
     QStringList sessionList();
+    void wmChanged();
  private:
     QList<KSMListener*> listener;
     QList<KSMClient*> clients;
openSUSE Build Service is sponsored by