Hello community, here is the log from the commit of package kdebase3 checked in at Tue Nov 14 00:26:58 CET 2006. -------- --- KDE/kdebase3/kdebase3.changes 2006-11-13 17:41:29.000000000 +0100 +++ /mounts/work_src_done/STABLE/kdebase3/kdebase3.changes 2006-11-13 23:51:04.000000000 +0100 @@ -1,0 +2,6 @@ +Mon Nov 13 23:50:32 CET 2006 - dmueller@suse.de + +- update optional kwin diff to add custom start script support + (#219020) + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdebase3.spec ++++++ --- /var/tmp/diff_new_pack.j565tl/_old 2006-11-14 00:25:22.000000000 +0100 +++ /var/tmp/diff_new_pack.j565tl/_new 2006-11-14 00:25:22.000000000 +0100 @@ -52,7 +52,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build Url: http://www.kde.org/ Version: 3.5.5 -Release: 49 +Release: 50 %define kde_version 3.5.5 Source0: kdebase-%{kde_version}.tar.bz2 Source3: startkde.suse.sh @@ -374,7 +374,7 @@ Summary: Set and list fileshares Group: System/Management Version: 2.0 -Release: 178 +Release: 179 %description -n fileshareset This package contains the the fileshareset utility to allow users to @@ -1495,6 +1495,9 @@ %changelog -n kdebase3 * Mon Nov 13 2006 - dmueller@suse.de +- update optional kwin diff to add custom start script support + (#219020) +* Mon Nov 13 2006 - dmueller@suse.de - update kickoff diff to include button-hover fix * Mon Nov 13 2006 - dmueller@suse.de - update kickoff diff to include latest fixes (#219709) ++++++ optional-kwin.diff ++++++ --- /var/tmp/diff_new_pack.j565tl/_old 2006-11-14 00:25:24.000000000 +0100 +++ /var/tmp/diff_new_pack.j565tl/_new 2006-11-14 00:25:24.000000000 +0100 @@ -18,64 +18,120 @@ /*! Restores the previous session. Ensures the window manager is running (if specified). */ -@@ -109,7 +113,7 @@ +@@ -108,13 +112,20 @@ + if ( !wm.isEmpty() ) { for ( int i = 1; i <= count; i++ ) { QString n = QString::number(i); - if ( wm == config->readEntry( QString("program")+n ) ) { +- if ( wm == config->readEntry( QString("program")+n ) ) { - wmCommands << config->readListEntry( QString("restartCommand")+n ); -+ wmCommands << config->readListEntry( QString("restartCommand%1").arg(n).latin1(), wmArgs, ',' ); - } +- } ++ QString program = config->readEntry(QString("program")+n); ++ if ((program == "kwin" || program == "compiz") && preferredWM() == program) ++ { ++ if ( isWM( program ) ) { ++ wmCommands << config->readListEntry( QString("restartCommand%1").arg(n).latin1(), wmArgs, ',' ); ++ } ++ } } ++ kdDebug() << "wmComamnds is now *" << wmCommands << "*" << endl; ++ } ++ if ( !wmCommands.isEmpty() && wmCommands.contains("compiz") && !compizEnabled()) { ++ kdDebug() << "compiz stored.but not start-able.. falling back" << endl; ++ wmCommands.clear(); } -@@ -137,6 +141,18 @@ - } - } +- if ( wmCommands.isEmpty() ) +- wmCommands << ( QStringList() << wm ); + publishProgress( appsToStart, true ); + connectDCOPSignal( launcher, launcher, "autoStart0Done()", +@@ -125,16 +136,57 @@ + "autoStart2Done()", true); + upAndRunning( "ksmserver" ); + +- if ( !wmCommands.isEmpty() ) { ++ if ( wmCommands.isEmpty()) { ++ startPreferredWM(); ++ } ++ else { + // when we have a window manager, we start it first and give + // it some time before launching other processes. Results in a + // visually more appealing startup. + for (uint i = 0; i < wmCommands.count(); i++) + startApplication( wmCommands[i] ); +- QTimer::singleShot( 4000, this, SLOT( autoStart0() ) ); +- } else { +- autoStart0(); + } ++ QTimer::singleShot( 4000, this, SLOT( autoStart0() ) ); ++} ++ +void KSMServer::launchCompiz() +{ + QStringList ce; + ce << "gtk-window-decorator" << "gtk-window-decorator"; + startApplication(ce); + ce.clear(); -+ ce << "compiz" << "compiz" << "--replace" << "decoration" << "fade" << "minimize" -+ << "plane" << "rotate" << "zoom" << "scale" << "move" ++ ce << "compiz" << "--replace" ++ << "dbus" << "decoration" ++ // << "fade" ++ << "minimize" ++ << "cube" << "rotate" << "zoom" << "scale" << "move" + << "resize" << "place" << "switcher" << "water"; + startApplication(ce); +} + - /*! - Starts the default session. ++QString KSMServer::preferredWM() const ++{ ++ KConfig* config = KGlobal::config(); ++ KConfigGroupSaver saver(config, "General"); ++ ++ QString def = config->readEntry("defaultWM", compizDefault() ? "compiz" : "kwin"); ++ ++ if (def == "compiz" && !compizEnabled()) ++ def = "kwin"; ++ ++ return def; ++} ++ ++void KSMServer::startPreferredWM() ++{ ++ QString defaultWM = preferredWM(); ++ ++ if (defaultWM == "compiz" && compizEnabled() ) ++ { ++ launchCompiz(); ++ } ++ else ++ startApplication( defaultWM ); + } -@@ -157,10 +173,27 @@ + /*! +@@ -157,14 +209,22 @@ "autoStart1Done()", true); connectDCOPSignal( launcher, launcher, "autoStart2Done()", "autoStart2Done()", true); - startApplication( wm ); + -+ KConfig* config = KGlobal::config(); -+ config->setGroup("General"); -+ if (config->readEntry("defaultWM", compizDefault() ? "compiz" : "kwin") == "compiz" -+ && compizEnabled() ) -+ { -+ launchCompiz(); -+ } -+ else -+ startApplication( wm ); ++ startPreferredWM(); QTimer::singleShot( 4000, this, SLOT( autoStart0() ) ); } +void KSMServer::switchWindowManager(QString wm) +{ + if (wm == "kwin") -+ system("kwin --replace &"); -+ ++ startApplication((QStringList() << "kwin" << "--replace")); + else if (wm == "compiz") + launchCompiz(); +} void KSMServer::clientSetProgram( KSMClient* client ) { -@@ -178,6 +211,37 @@ +- if ( !wm.isEmpty() && client->program() == wm ) ++ if ( !wm.isEmpty() && isWM(client) ) + autoStart0(); + } + +@@ -178,6 +238,37 @@ DCOPRef( launcher ).send( "autoStart", (int) 0 ); } @@ -113,6 +169,15 @@ void KSMServer::autoStart0Done() { if( state != AutoStart0 ) +@@ -264,7 +355,7 @@ + (config->readNumEntry( QString("restartStyleHint")+n ) == SmRestartNever)) { + continue; + } +- if ( wm == config->readEntry( QString("program")+n ) ) ++ if ( isWM( config->readEntry( QString("program")+n )) ) + continue; + startApplication( restartCommand, + config->readEntry( QString("clientMachine")+n ), --- ksmserver/server.cpp +++ ksmserver/server.cpp @@ -114,7 +114,7 @@ @@ -140,6 +205,40 @@ shutdownType = KApplication::ShutdownTypeNone; +@@ -852,7 +854,7 @@ + if ( !wm.isEmpty() ) { + // put the wm first + for ( KSMClient* c = clients.first(); c; c = clients.next() ) +- if ( c->program() == wm ) { ++ if ( isWM(c->program()) ) { + clients.prepend( clients.take() ); + break; + } +@@ -901,14 +903,22 @@ + + bool KSMServer::isWM( const KSMClient* client ) const + { ++ return isWM(client->program()); ++} ++ ++bool KSMServer::isWM( const QString& program ) const ++{ + // KWin relies on ksmserver's special treatment in phase1, + // therefore make sure it's recognized even if ksmserver + // was initially started with different WM, and kwin replaced + // it later +- return client->program() == wm +- || client->program() == "kwin"; ++ return program == wm ++ || program == "kwin" ++ || program == "compiz"; + } + ++ ++ + bool KSMServer::defaultSession() const + { + return sessionGroup.isEmpty(); --- ksmserver/KSMServerInterface.h +++ ksmserver/KSMServerInterface.h @@ -17,6 +17,7 @@ @@ -161,7 +260,20 @@ ~KSMServer(); static KSMServer* self(); -@@ -157,11 +157,14 @@ +@@ -132,9 +132,11 @@ + void startApplication( QStringList command, + const QString& clientMachine = QString::null, + const QString& userId = QString::null ); ++ void startPreferredWM(); ++ QString preferredWM() const; + void executeCommand( const QStringList& command ); +- + bool isWM( const KSMClient* client ) const; ++ bool isWM( const QString& program ) const; + bool defaultSession() const; // empty session + void setupXIOErrorHandler(); + +@@ -157,11 +159,14 @@ QString currentSession(); void saveCurrentSession(); void saveCurrentSessionAs( QString ); @@ -176,7 +288,7 @@ enum State { Idle, -@@ -182,6 +185,7 @@ +@@ -182,6 +187,7 @@ bool clean; KSMClient* clientInteracting; QString wm; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org