Hello community,
here is the log from the commit of package kdebase4-workspace
checked in at Sat Apr 26 11:31:21 CEST 2008.
--------
--- KDE/kdebase4-workspace/kdebase4-wallpapers.changes 2008-04-20 16:27:13.000000000 +0200
+++ /mounts/work_src_done/STABLE/kdebase4-workspace/kdebase4-wallpapers.changes 2008-04-26 11:30:47.805196000 +0200
@@ -1,0 +2,15 @@
+Wed Apr 23 11:51:26 CEST 2008 - dmueller@suse.de
+
+- use radiobuttons for sessions menu (bnc#382138)
+
+-------------------------------------------------------------------
+Mon Apr 21 13:39:19 CEST 2008 - dmueller@suse.de
+
+- fix unknown icon on suspend (#bnc381194)
+
+-------------------------------------------------------------------
+Fri Apr 18 20:22:41 CEST 2008 - llunak@suse.cz
+
+- ksplashx changes needed for 11.0 splashscreen (bnc:#375581)
+
+-------------------------------------------------------------------
kdebase4-workspace.changes: same change
New:
----
kdm-all-users-nopass.diff
kdm-use-radiobuttons.diff
ksplashx-scale.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdebase4-wallpapers.spec ++++++
--- /var/tmp/diff_new_pack.Mu4669/_old 2008-04-26 11:31:10.000000000 +0200
+++ /var/tmp/diff_new_pack.Mu4669/_new 2008-04-26 11:31:10.000000000 +0200
@@ -22,7 +22,7 @@
Summary: KDE 4 Wallpapers
Url: http://www.kde.org/
Version: 4.0.3
-Release: 15
+Release: 18
Source0: kdebase-workspace-%version.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
@@ -59,6 +59,12 @@
/usr/share/wallpapers
%changelog
+* Wed Apr 23 2008 dmueller@suse.de
+- use radiobuttons for sessions menu (bnc#382138)
+* Mon Apr 21 2008 dmueller@suse.de
+- fix unknown icon on suspend (#bnc381194)
+* Fri Apr 18 2008 llunak@suse.cz
+- ksplashx changes needed for 11.0 splashscreen (bnc:#375581)
* Fri Apr 18 2008 dmueller@suse.de
- update 4_0_BRANCH.diff
* memleak fixes in kwin and ksplashsimple
++++++ kdebase4-workspace.spec ++++++
--- /var/tmp/diff_new_pack.Mu4669/_old 2008-04-26 11:31:10.000000000 +0200
+++ /var/tmp/diff_new_pack.Mu4669/_new 2008-04-26 11:31:10.000000000 +0200
@@ -27,7 +27,7 @@
Summary: The KDE Workspace Components
Url: http://www.kde.org/
Version: 4.0.3
-Release: 15
+Release: 18
%define rversion 4.0.3
Source0: kdebase-workspace-%rversion.tar.bz2
Source2: titlebar_decor.png
@@ -53,12 +53,15 @@
Patch66: kdm-wordbreak.diff
Patch67: kdm-remove-duplicated-sessions.diff
Patch68: kdm-make_it_cool.diff
-Patch69: systemsettings-desktop.diff
+Patch69: kdm-all-users-nopass.diff
Patch71: oxygen-windeco-colors.diff
Patch72: select-wm-gui.diff
Patch73: kgreeter-generic.diff
Patch74: lowdiskspace.patch
Patch75: ksmserver-leave-countdown.diff
+Patch76: ksplashx-scale.diff
+Patch77: systemsettings-desktop.diff
+Patch78: kdm-use-radiobuttons.diff
%kde4_runtime_requires
Conflicts: yast2-theme-NLD
%if %suse_version > 1030
@@ -114,6 +117,9 @@
%patch73
%patch74
%patch75
+%patch76
+%patch77
+%patch78
%build
%cmake_kde4 -d build -- -DKDE4_COMMON_PAM_SERVICE=xdm -DKDE4_KCHECKPASS_PAM_SERVICE=xdm
@@ -638,6 +644,12 @@
/usr/%_lib/kde4/kgreet_*.so
%changelog
+* Wed Apr 23 2008 dmueller@suse.de
+- use radiobuttons for sessions menu (bnc#382138)
+* Mon Apr 21 2008 dmueller@suse.de
+- fix unknown icon on suspend (#bnc381194)
+* Fri Apr 18 2008 llunak@suse.cz
+- ksplashx changes needed for 11.0 splashscreen (bnc:#375581)
* Fri Apr 18 2008 dmueller@suse.de
- update 4_0_BRANCH.diff
* memleak fixes in kwin and ksplashsimple
++++++ 4_0_BRANCH.diff ++++++
--- /var/tmp/diff_new_pack.Mu4669/_old 2008-04-26 11:31:10.000000000 +0200
+++ /var/tmp/diff_new_pack.Mu4669/_new 2008-04-26 11:31:10.000000000 +0200
@@ -3,8 +3,30 @@
--- BRANCH_STATUS
+++ BRANCH_STATUS
@@ -0,0 +1,2 @@
-+current HEAD: 798531
++current HEAD: 801029
+svn di between //tags/KDE/4.0.3/kdebase/workspace and //branches/KDE/4.0/kdebase/workspace
+--- ksmserver/shutdowndlg.cpp
++++ ksmserver/shutdowndlg.cpp
+@@ -57,6 +57,8 @@
+
+ #include "shutdowndlg.moc"
+
++#include
++
+ #define FONTCOLOR "#bfbfbf"
+
+ KSMShutdownFeedback * KSMShutdownFeedback::s_pSelf = 0L;
+@@ -567,7 +569,9 @@
+ {
+ m_bootOption.clear();
+ Solid::Control::PowerManager::SuspendMethod spdMethod = action->data().valueSolid::Control::PowerManager::SuspendMethod();
+- Solid::Control::PowerManager::suspend( spdMethod );
++ KJob *job = Solid::Control::PowerManager::suspend( spdMethod );
++ if (job != 0)
++ job->start();
+ reject();
+ }
+
--- ksmserver/startup.cpp
+++ ksmserver/startup.cpp
@@ -255,7 +255,9 @@
@@ -88,6 +110,28 @@
Comment[fy]=In paniel applet foar de grutte feroarjen en pleatsbepaling fan X skermen.
Comment[ga]=Feidhmchláirín painéil lenar féidir scáileán X a rothlú agus a mhéid a athrú.
Comment[gl]=Unha aplicacionciña do painel para mudar o tamaño e reorientar as pantallas das X.
+--- kcontrol/kdm/kdm.knsrc
++++ kcontrol/kdm/kdm.knsrc
+@@ -1,4 +1,6 @@
+ [KNewStuff2]
+ ProvidersUrl=http://download.kde.org/khotnewstuff/kdmthemes-providers.xml
+-TargetDir=kdm/themes # becomes $KDEHOME/share/apps/kdm/themes
+-Uncompress=true # unpack the downloaded archive
++# becomes $KDEHOME/share/apps/kdm/themes
++TargetDir=kdm/themes
++# unpack the downloaded archive
++Uncompress=always
+--- kcontrol/kdm/kdm-theme.cpp
++++ kcontrol/kdm/kdm-theme.cpp
+@@ -309,7 +309,7 @@
+
+ void KDMThemeWidget::getNewStuff()
+ {
+- KNS::Engine engine;
++ KNS::Engine engine(this);
+ engine.init("kdm.knsrc");
+ KNS::Entry::List entries = engine.downloadDialogModal(this);
+ }
--- startkde.cmake
+++ startkde.cmake
@@ -383,6 +383,9 @@
@@ -100,6 +144,17 @@
echo 'startkde: Running shutdown scripts...' 1>&2
+--- systemsettings/categories/settings-about-me.desktop
++++ systemsettings/categories/settings-about-me.desktop
+@@ -43,7 +43,7 @@
+ Name[pa]=ਮੇਰੇ ਬਾਰੇ
+ Name[pl]=O mnie
+ Name[pt]=Acerca de Mim
+-Name[pt_BR]=Sobre Eu
++Name[pt_BR]=Meu Usuário
+ Name[ro]=Despre mine
+ Name[ru]=Личные данные
+ Name[se]=Iežan dieđut
--- klipper/urlgrabber.cpp
+++ klipper/urlgrabber.cpp
@@ -83,8 +83,7 @@
@@ -259,6 +314,28 @@
Name[mk]=Постави...
Name[ms]=Tetapan...
Name[nb]=Oppsett …
+--- kscreensaver/libkscreensaver/main.cpp
++++ kscreensaver/libkscreensaver/main.cpp
+@@ -77,6 +77,11 @@
+ if (e->type() == QEvent::KeyPress) {
+ keyPressEvent( (QKeyEvent *)e );
+ return true;
++ } else if( e->type() == QEvent::Close ) {
++ // In demo mode, screensaver's QWidget does create()
++ // with winId of the DemoWidget, which results in two QWidget's
++ // sharing the same winId and Qt delivering events only to one of them.
++ qApp->quit();
+ }
+ return false;
+ }
+@@ -180,6 +185,7 @@
+ }
+
+ target = screenSaverInterface.create( saveWin );
++ target->setAttribute(Qt::WA_PaintOnScreen);
+ target->show();
+
+ if (demoWidget)
--- kscreensaver/krandom_screensaver/krandom.desktop
+++ kscreensaver/krandom_screensaver/krandom.desktop
@@ -113,7 +113,7 @@
@@ -329,6 +406,38 @@
leftbox->addWidget( mBtnAdd );
connect(mBtnAdd, SIGNAL(clicked()), SLOT(slotAdd()));
+--- ksplash/ksplashx/splash.cpp
++++ ksplash/ksplashx/splash.cpp
+@@ -910,12 +910,14 @@
+ QImage img = loadImage( buf );
+ if( !img.isNull())
+ {
++#if 0
+ if( !QRect( 0, 0, geometry.width(), geometry.height())
+ .contains( QRect( x, y, img.width(), img.height())))
+ {
+ fprintf( stderr, "Image outside of geometry: %s\n", line );
+ exit( 3 );
+ }
++#endif
+ blend( img, x, y );
+ updateSplashImage( img, x, y );
+ doPaint( QRect( x, y, img.width(), img.height()));
+@@ -948,12 +950,14 @@
+ {
+ x = makeAbsoluteX( window_ref, x_rel, image_ref, img.width());
+ y = makeAbsoluteY( window_ref, y_rel, image_ref, img.height());
++#if 0
+ if( !QRect( 0, 0, geometry.width(), geometry.height())
+ .contains( QRect( x, y, img.width(), img.height())))
+ {
+ fprintf( stderr, "Image outside of geometry: %s\n", line );
+ exit( 3 );
+ }
++#endif
+ blend( img, x, y );
+ updateSplashImage( img, x, y );
+ doPaint( QRect( x, y, img.width(), img.height()));
--- kwin/effects/sharpen.desktop
+++ kwin/effects/sharpen.desktop
@@ -61,7 +61,7 @@
@@ -387,9 +496,63 @@
Comment[fy]=Fisueel effekt by it ynloggen
Comment[ga]=Maisíocht físe ag am logála isteach
Comment[gl]=Efeito visual de aceso
+--- kwin/composite.cpp
++++ kwin/composite.cpp
+@@ -295,13 +295,7 @@
+ return;
+ }
+ // create a list of all windows in the stacking order
+- ToplevelList windows;
+- foreach( Client* c, stacking_order )
+- windows.append( c );
+- foreach( Unmanaged* c, unmanaged_stacking_order )
+- windows.append( c );
+- foreach( Deleted* c, deleted ) // TODO remember stacking order somehow
+- windows.append( c );
++ ToplevelList windows = rootStackingOrder();
+ foreach( EffectWindow* c, static_cast< EffectsHandlerImpl* >( effects )->elevatedWindows())
+ {
+ Toplevel* t = static_cast< EffectWindowImpl* >( c )->window();
--- kwin/workspace.h
+++ kwin/workspace.h
-@@ -699,8 +699,8 @@
+@@ -74,10 +74,10 @@
+
+ bool hasClient( const Client * );
+
+- template< typename T > Client* findClient( T predicate );
++ template< typename T > Client* findClient( T predicate ) const;
+ template< typename T1, typename T2 > void forEachClient( T1 procedure, T2 predicate );
+ template< typename T > void forEachClient( T procedure );
+- template< typename T > Unmanaged* findUnmanaged( T predicate );
++ template< typename T > Unmanaged* findUnmanaged( T predicate ) const;
+ template< typename T1, typename T2 > void forEachUnmanaged( T1 procedure, T2 predicate );
+ template< typename T > void forEachUnmanaged( T procedure );
+
+@@ -137,7 +137,6 @@
+ void updateClientLayer( Client* c );
+ void raiseOrLowerClient( Client * );
+ void restoreSessionStackingOrder( Client* c );
+- void restackUnmanaged( Unmanaged* c, Window above );
+ void reconfigure();
+ void forceRestacking();
+
+@@ -507,6 +506,7 @@
+ void removeTabBoxGrab();
+
+ void updateStackingOrder( bool propagate_new_clients = false );
++ ToplevelList rootStackingOrder() const;
+ void propagateClients( bool propagate_new_clients ); // called only from updateStackingOrder
+ ClientList constrainedStackingOrder();
+ void raiseClientWithinApplication( Client* c );
+@@ -600,7 +600,6 @@
+
+ ClientList unconstrained_stacking_order; // topmost last
+ ClientList stacking_order; // topmost last
+- UnmanagedList unmanaged_stacking_order;
+ bool force_restacking;
+ QVector< ClientList > focus_chain; // currently ative last
+ ClientList global_focus_chain; // this one is only for things like tabbox's MRU
+@@ -699,8 +698,8 @@
Placement *initPositioning;
@@ -400,6 +563,34 @@
bool managing_topmenus;
KSelectionOwner* topmenu_selection;
+@@ -895,7 +894,7 @@
+ }
+
+ template< typename T >
+-inline Client* Workspace::findClient( T predicate )
++inline Client* Workspace::findClient( T predicate ) const
+ {
+ if( Client* ret = findClientInList( clients, predicate ))
+ return ret;
+@@ -922,7 +921,7 @@
+ }
+
+ template< typename T >
+-inline Unmanaged* Workspace::findUnmanaged( T predicate )
++inline Unmanaged* Workspace::findUnmanaged( T predicate ) const
+ {
+ return findUnmanagedInList( unmanaged, predicate );
+ }
+--- kwin/events.cpp
++++ kwin/events.cpp
+@@ -1713,7 +1713,6 @@
+ if( effects != NULL )
+ static_cast(effects)->windowGeometryShapeChanged( effectWindow(), old );
+ }
+- workspace()->restackUnmanaged( this, e->above );
+ }
+
+ // ****************************************
--- kwin/kwin.notifyrc
+++ kwin/kwin.notifyrc
@@ -4005,6 +4005,7 @@
@@ -475,6 +666,33 @@
? screenarea[ desktop ][ screen ]
: desktopwidget->screenGeometry( screen );
QRect warea = workarea[ desktop ].isNull()
+--- kwin/group.cpp
++++ kwin/group.cpp
+@@ -951,6 +951,14 @@
+ return result;
+ }
+
++ClientList Client::allMainClients() const
++ {
++ ClientList result = mainClients();
++ foreach( const Client* cl, result )
++ result += cl->allMainClients();
++ return result;
++ }
++
+ Client* Client::findModal( bool allow_itself )
+ {
+ for( ClientList::ConstIterator it = transients().begin();
+--- kwin/client.h
++++ kwin/client.h
+@@ -72,6 +72,7 @@
+ bool groupTransient() const;
+ bool wasOriginallyGroupTransient() const;
+ ClientList mainClients() const; // call once before loop , is not indirect
++ ClientList allMainClients() const; // call once before loop , is indirect
+ bool hasTransient( const Client* c, bool indirect ) const;
+ const ClientList& transients() const; // is not indirect
+ void checkTransient( Window w );
--- kwin/main.cpp
+++ kwin/main.cpp
@@ -490,6 +490,8 @@
@@ -486,6 +704,19 @@
KWin::Application a;
KWin::SessionManager weAreIndeed;
KWin::SessionSaveDoneHelper helper;
+--- kwin/manage.cpp
++++ kwin/manage.cpp
+@@ -349,7 +349,9 @@
+ if( !init_minimize && isTransient() && mainClients().count() > 0 )
+ {
+ bool visible_parent = false;
+- ClientList mainclients = mainClients();
++ // use allMainClients(), to include also main clients of group transients
++ // that have been optimized out in Client::checkGroupTransients()
++ ClientList mainclients = allMainClients();
+ for( ClientList::ConstIterator it = mainclients.begin();
+ it != mainclients.end();
+ ++it )
--- kwin/workspace.cpp
+++ kwin/workspace.cpp
@@ -124,8 +124,6 @@
@@ -506,7 +737,23 @@
delete startup;
delete initPositioning;
delete topmenu_watcher;
-@@ -1085,10 +1081,9 @@
+@@ -567,7 +563,6 @@
+ void Workspace::addUnmanaged( Unmanaged* c, allowed_t )
+ {
+ unmanaged.append( c );
+- unmanaged_stacking_order.append( c );
+ }
+
+ /*
+@@ -635,7 +630,6 @@
+ {
+ assert( unmanaged.contains( c ));
+ unmanaged.removeAll( c );
+- unmanaged_stacking_order.removeAll( c );
+ }
+
+ void Workspace::addDeleted( Deleted* c, allowed_t )
+@@ -1085,10 +1079,9 @@
int n = group.readEntry("Number", 4);
number_of_desktops = n;
@@ -520,6 +767,78 @@
rootInfo->setNumberOfDesktops( number_of_desktops );
desktop_focus_chain.resize( n );
// make it +1, so that it can be accessed as [1..numberofdesktops]
+--- kwin/layers.cpp
++++ kwin/layers.cpp
+@@ -83,6 +83,7 @@
+ #include "group.h"
+ #include "rules.h"
+ #include "unmanaged.h"
++#include "deleted.h"
+ #include <QX11Info>
+
+ namespace KWin
+@@ -713,42 +714,27 @@
+ return true;
+ }
+
+-void Workspace::restackUnmanaged( Unmanaged* c, Window above )
+- {
+- if( above == None )
+- {
+- unmanaged_stacking_order.removeAll( c );
+- unmanaged_stacking_order.prepend( c );
+- addRepaint( c->geometry());
+- return;
+- }
+- bool was_below = false;
+- for( int i = 0;
+- i < unmanaged_stacking_order.size();
++// Returns all windows in their stacking order on the root window, used only by compositing.
++// TODO This possibly should be optimized to avoid the X roundtrip and building it every pass.
++ToplevelList Workspace::rootStackingOrder() const
++ {
++ Window dummy;
++ Window* windows;
++ unsigned int count = 0;
++ XQueryTree( display(), rootWindow(), &dummy, &dummy, &windows, &count );
++ ToplevelList ret;
++ for( unsigned int i = 0;
++ i < count;
+ ++i )
+ {
+- if( unmanaged_stacking_order.at( i )->window() == above )
+- {
+- if( i + 1 < unmanaged_stacking_order.size()
+- && unmanaged_stacking_order.at( i ) == c )
+- {
+- // it is already there, do nothing
+- return;
+- }
+- unmanaged_stacking_order.removeAll( c );
+- if( was_below )
+- --i;
+- unmanaged_stacking_order.insert( i, c );
+- addRepaint( c->geometry());
+- return;
+- }
+- if( unmanaged_stacking_order.at( i ) == c )
+- was_below = true;
+- }
+- // TODO not found?
+- unmanaged_stacking_order.removeAll( c );
+- unmanaged_stacking_order.append( c );
+- addRepaint( c->geometry());
++ if( Client* c = findClient( FrameIdMatchPredicate( windows[ i ] )))
++ ret.append( c );
++ else if( Unmanaged* c = findUnmanaged( WindowMatchPredicate( windows[ i ] )))
++ ret.append( c );
++ }
++ foreach( Deleted* c, deleted )
++ ret.append( c );
++ return ret;
+ }
+
+ //*******************************
--- kwin/utils.cpp
+++ kwin/utils.cpp
@@ -298,7 +298,10 @@
@@ -556,6 +875,65 @@
Comment[fy]=In tige ynstelbere lichtgewicht finstersmanager basearre op Blackbox
Comment[ga]=Bainisteoir fuinneog éadrom inchumraithe, bunaithe ar Blackbox
Comment[gl]=Un xestor de fiestras moi configurábel e lixeiro baseado en Blackbox
+--- ksystraycmd/ksystraycmd.h
++++ ksystraycmd/ksystraycmd.h
+@@ -54,13 +54,12 @@
+
+ void windowAdded(WId w);
+ void windowChanged(WId w);
++ void mousePressEvent(QSystemTrayIcon::ActivationReason reason);
+
+ protected:
+ bool startClient();
+ void checkExistingWindows();
+
+- void mousePressEvent( QMouseEvent *e );
+-
+ private:
+ QString command;
+ QString window;
+--- ksystraycmd/ksystraycmd.cpp
++++ ksystraycmd/ksystraycmd.cpp
+@@ -28,6 +28,7 @@
+ isVisible(true), lazyStart( false ), noquit( false ), quitOnHide( false ), onTop(false), ownIcon(false),
+ win(0), client(0), top(0), left(0)
+ {
++ connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), SLOT(mousePressEvent(QSystemTrayIcon::ActivationReason)));
+ refresh();
+ }
+
+@@ -224,7 +225,7 @@
+ KMenu *menu = new KMenu();
+ menu->addTitle( icon(), i18n( "KSysTrayCmd" ) );
+ QAction * hideShowId = menu->addAction( isVisible ? i18n( "&Hide" ) : i18n( "&Restore" ) );
+- QAction * undockId = menu->addAction( KIcon("close"), i18n( "&Undock" ) );
++ QAction * undockId = menu->addAction( KIcon("dialog-close"), i18n( "&Undock" ) );
+ QAction * quitId = menu->addAction( KIcon("application-exit"), i18n( "&Quit" ) );
+
+ QAction * cmd = menu->exec( pos );
+@@ -281,10 +282,10 @@
+ // Tray icon event handlers
+ //
+
+-void KSysTrayCmd::mousePressEvent( QMouseEvent *e )
++void KSysTrayCmd::mousePressEvent( QSystemTrayIcon::ActivationReason reason )
+ {
+- if ( e->button() == Qt::RightButton )
+- execContextMenu( e->globalPos() );
++ if ( reason == QSystemTrayIcon::Context )
++ execContextMenu( QCursor::pos() );
+ else if ( lazyStart && ( !hasRunningClient() ) )
+ {
+ start();
+@@ -296,7 +297,7 @@
+ ri.closeWindowRequest( win );
+ isVisible=false;
+ }
+- else
++ else if ( reason == QSystemTrayIcon::Trigger )
+ toggleWindow();
+ }
+
--- plasma/containments/desktop/desktop.cpp
+++ plasma/containments/desktop/desktop.cpp
@@ -65,6 +65,7 @@
++++++ kdm-all-users-nopass.diff ++++++
--- kdm/backend/client.c
+++ kdm/backend/client.c
@@ -466,6 +466,9 @@ isNoPassAllowed( struct passwd *pw )
if (cursource != PWSRC_MANUAL)
return True;
+ if (td->noPassAllUsers)
+ return True;
+
#if defined(USE_PAM) || defined(_AIX)
/* Give nss_ldap, etc. a chance to normalize (uppercase) the name. */
if (!(pw = getpwnam( un )) ||
--- kdm/config.def
+++ kdm/config.def
@@ -1852,6 +1852,15 @@
(and any other user with UID = 0).
<emphasis>Never</emphasis> list <systemitem class="username">root</systemitem>.
+Key: NoPassAllUsers
+Type: bool
+Default: false
+User: core
+Instance: #:0/true
+Comment: &
+Description:
+ All users can login without password
+
Key: AutoLoginEnable
Type: bool
Default: false
++++++ kdm-suspend-hal.diff ++++++
--- /var/tmp/diff_new_pack.Mu4669/_old 2008-04-26 11:31:12.000000000 +0200
+++ /var/tmp/diff_new_pack.Mu4669/_new 2008-04-26 11:31:12.000000000 +0200
@@ -141,7 +141,7 @@
+
+ KPushButton *btnSuspend;
+ if (sum > 1) {
-+ btnSuspend = new KDMDelayedPushButton( KGuiItem( i18n("&Suspend Computer"), "player_pause"), this );
++ btnSuspend = new KDMDelayedPushButton( KGuiItem( i18n("&Suspend Computer"), "media-playback-pause"), this );
+ QMenu *suspends = new QMenu(this);
+ if (suspend_disk)
+ qa_suspend_disk = suspends->addAction(i18n("Suspend to Disk"));
@@ -158,7 +158,7 @@
+ connect(suspends, SIGNAL(triggered( QAction* )), SLOT(slotSuspend(QAction*)));
+ static_cast(btnSuspend)->setPopup(suspends);
+ } else {
-+ btnSuspend = new KPushButton( KGuiItem( i18n("&Suspend Computer"), "player_pause"), this );
++ btnSuspend = new KPushButton( KGuiItem( i18n("&Suspend Computer"), "media-playback-pause"), this );
+ }
+ buttonlay->addWidget( btnSuspend );
+ connect(btnSuspend, SIGNAL(clicked()), SLOT(slotSuspend()));
++++++ kdm-use-radiobuttons.diff ++++++
--- kdm/kfrontend/kgreeter.h
+++ kdm/kfrontend/kgreeter.h
@@ -35,6 +35,7 @@ class KdmItem;
class KConfigGroup;
class QListWidgetItem;
+class QActionGroup;
struct SessType {
QString name, type;
@@ -81,6 +82,7 @@ class KGreeter : public KGDialog, public
UserListView *userView;
QStringList *userList;
QMenu *sessMenu;
+ QActionGroup* sessGroup;
QVector<SessType> sessionTypes;
int nNormals, nSpecials;
QAction *curPrev, *curSel;
--- kdm/kfrontend/kgreeter.cpp
+++ kdm/kfrontend/kgreeter.cpp
@@ -164,6 +164,9 @@ KGreeter::KGreeter( bool framed )
if (userView || userList)
insertUsers();
+ sessGroup = new QActionGroup(this);
+ sessGroup->setExclusive(true);
+
sessMenu = new QMenu( this );
connect( sessMenu, SIGNAL(triggered( QAction * )),
SLOT(slotSessionSelected( QAction * )) );
@@ -419,7 +422,7 @@ KGreeter::insertSessions()
putSession( "failsafe", i18n("Failsafe"), false, "failsafe" );
qSort( sessionTypes );
for (int i = 0; i < sessionTypes.size() && !sessionTypes[i].hid; i++) {
- sessionTypes[i].action = sessMenu->addAction( sessionTypes[i].name );
+ sessionTypes[i].action = sessGroup->addAction( sessionTypes[i].name );
sessionTypes[i].action->setData( i );
sessionTypes[i].action->setCheckable( true );
switch (sessionTypes[i].prio) {
@@ -427,6 +430,7 @@ KGreeter::insertSessions()
case 2: nNormals++; break;
}
}
+ sessMenu->addActions(sessGroup->actions());
}
void
++++++ ksplashx-scale.diff ++++++
Subject: KSplashX changes for 11.0 splashscreen
From: Lubos Lunak
Feature: bnc#375581
Patch-upstream: r798635
--- ksplash/ksplashx/README.sav 2008-03-18 17:59:16.000000000 +0100
+++ ksplash/ksplashx/README 2008-04-18 19:33:53.000000000 +0200
@@ -44,8 +44,13 @@ FORMAT:
# and current resolution size (e.g. a 80x80 image at 100,0 in 1600x1200
# is scaled to 40x40 at 50,0 for 800x600)
# defaults to ON, it's suggested to always explicitly specify
+# it is possible to toggle scaling also several times (e.g. scale background image, not scale the rest)
SCALE ON/OFF
+# like SCALE, for only one dimension
+SCALEX ON/OFF
+SCALEY ON/OFF
+
# x y w h - geometry of the splash window (screen size by default)
# if x or y are negative, they're relative to the right/bottom side
GEOMETRY x y w h
--- ksplash/ksplashx/splash.cpp.sav 2008-04-18 19:13:40.000000000 +0200
+++ ksplash/ksplashx/splash.cpp 2008-04-18 19:45:08.000000000 +0200
@@ -121,7 +121,8 @@ static AnimData* animations[ MAX_ITEMS ]
static int anim_count;
static Window window = None;
static QRect geometry;
-static bool scale_on = true;
+static bool scalex = true;
+static bool scaley = true;
static Atom kde_splash_progress;
static char kdehome[ 1024 ];
static char theme_name[ 1024 ];
@@ -356,10 +357,10 @@ static QImage loadImage( const char* fil
fprintf( stderr, "Not 32bpp: %s\n", file );
exit( 3 );
}
- if( scale_on && ( w != screenGeometry().width() || h != screenGeometry().height()))
+ if(( scalex && w != screenGeometry().width()) || ( scaley && h != screenGeometry().height()))
{
- double ratiox = double( w ) / screenGeometry().width();
- double ratioy = double( h ) / screenGeometry().height();
+ double ratiox = scalex ? double( w ) / screenGeometry().width() : 1;
+ double ratioy = scaley ? double( h ) / screenGeometry().height() : 1;
#ifdef DEBUG
fprintf( stderr, "PIXMAP SCALING: %f %f\n", ratiox, ratioy );
#endif
@@ -418,10 +419,10 @@ static QImage loadAnimImage( const char*
}
}
frameSize( img, frames, framew, frameh );
- if( scale_on && ( w != screenGeometry().width() || h != screenGeometry().height()))
+ if(( scalex && w != screenGeometry().width()) || ( scaley && h != screenGeometry().height()))
{
- double ratiox = double( w ) / screenGeometry().width();
- double ratioy = double( h ) / screenGeometry().height();
+ double ratiox = scalex ? double( w ) / screenGeometry().width() : 1;
+ double ratioy = scaley ? double( h ) / screenGeometry().height() : 1;
#ifdef DEBUG
fprintf( stderr, "ANIM SCALING: %f %f\n", ratiox, ratioy );
#endif
@@ -859,13 +860,39 @@ void runSplash( const char* them, bool t
bool handled = false;
if( line[ 0 ] == '#' || line[ 0 ] == '\0' )
continue;
+ else if( sscanf( line, "SCALEX %1023s", buf ) == 1 )
+ {
+ handled = true;
+ if( strcmp( buf, "ON" ) == 0 )
+ scalex = true;
+ else if( strcmp( buf, "OFF" ) == 0 )
+ scalex = false;
+ else
+ {
+ fprintf( stderr, "Bad scale x: %s\n", line );
+ exit( 3 );
+ }
+ }
+ else if( sscanf( line, "SCALEY %1023s", buf ) == 1 )
+ {
+ handled = true;
+ if( strcmp( buf, "ON" ) == 0 )
+ scaley = true;
+ else if( strcmp( buf, "OFF" ) == 0 )
+ scaley = false;
+ else
+ {
+ fprintf( stderr, "Bad scale y: %s\n", line );
+ exit( 3 );
+ }
+ }
else if( sscanf( line, "SCALE %1023s", buf ) == 1 )
{
handled = true;
if( strcmp( buf, "ON" ) == 0 )
- scale_on = true;
+ scalex = scaley = true;
else if( strcmp( buf, "OFF" ) == 0 )
- scale_on = false;
+ scalex = scaley = false;
else
{
fprintf( stderr, "Bad scale: %s\n", line );
@@ -875,12 +902,12 @@ void runSplash( const char* them, bool t
else if( sscanf( line, "GEOMETRY %d %d %d %d", &x, &y, &w, &h ) == 4 )
{
handled = true;
- if( scale_on )
+ if( scalex || scaley )
{
- x = round( x / ratiox );
- y = round( y / ratioy );
- w = round( w / ratiox );
- h = round( h / ratioy );
+ x = scalex ? round( x / ratiox ) : x;
+ y = scaley ? round( y / ratioy ) : y;
+ w = scalex ? round( w / ratiox ) : w;
+ h = scaley ? round( h / ratioy ) : h;
}
if( x < 0 )
x += screenGeometry().width();
@@ -910,12 +937,12 @@ void runSplash( const char* them, bool t
screen_ref, &x_rel, &y_rel, window_ref, &w, &h ) == 6 )
{
handled = true;
- if( scale_on )
+ if( scalex || scaley )
{
- x_rel = round( x_rel / ratiox );
- y_rel = round( y_rel / ratioy );
- w = round( w / ratiox );
- h = round( h / ratioy );
+ x_rel = scalex ? round( x_rel / ratiox ) : x_rel;
+ y_rel = scaley ? round( y_rel / ratioy ) : y_rel;
+ w = scalex ? round( w / ratiox ) : w;
+ h = scaley ? round( h / ratioy ) : h;
}
if( !checkRelative( screen_ref )
|| !checkRelative( window_ref ))
@@ -967,10 +994,10 @@ void runSplash( const char* them, bool t
else if( sscanf( line, "IMAGE %d %d %1023s", &x, &y, buf ) == 3 )
{
handled = true;
- if( scale_on )
+ if( scalex || scaley )
{
- x = round( x / ratiox );
- y = round( y / ratioy );
+ x = scalex ? round( x / ratiox ) : x;
+ y = scaley ? round( y / ratioy ) : y;
}
if( splash_image.isNull())
createSplashImage();
@@ -999,10 +1026,10 @@ void runSplash( const char* them, bool t
window_ref, &x_rel, &y_rel, image_ref, buf ) == 5 )
{
handled = true;
- if( scale_on )
+ if( scalex || scaley )
{
- x_rel = round( x_rel / ratiox );
- y_rel = round( y_rel / ratioy );
+ x_rel = scalex ? round( x_rel / ratiox ) : x_rel;
+ y_rel = scaley ? round( y_rel / ratioy ) : y_rel;
}
if( !checkRelative( window_ref )
|| !checkRelative( window_ref ))
@@ -1041,10 +1068,10 @@ void runSplash( const char* them, bool t
if( items == 6 || items == 7 )
{
handled = true;
- if( scale_on )
+ if( scalex || scaley )
{
- x = round( x / ratiox );
- y = round( y / ratioy );
+ x = scalex ? round( x / ratiox ) : x;
+ y = scaley ? round( y / ratioy ) : y;
}
if( number <= 0 || number >= MAX_ITEMS )
{
@@ -1074,10 +1101,10 @@ void runSplash( const char* them, bool t
if( items == 8 || items == 9 )
{
handled = true;
- if( scale_on )
+ if( scalex || scaley )
{
- x_rel = round( x_rel / ratiox );
- y_rel = round( y_rel / ratioy );
+ x_rel = scalex ? round( x_rel / ratiox ) : x_rel;
+ y_rel = scaley ? round( y_rel / ratioy ) : y_rel;
}
if( number <= 0 || number >= MAX_ITEMS )
{
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org