[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.0
From: Luboš Luňák <l.lunak () kde ! org>
Date: 2008-03-31 16:16:58
Message-ID: 1206980218.859944.18346.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 792196 by lunakl:
Make KDE4 applications restart in saved session using a wrapper script \
'kde4' if not running in a KDE4 session \
(http://lists.kde.org/?t=120569055200005&r=1&w=2).
M +2 -0 kdebase/runtime/CMakeLists.txt
AM kdebase/runtime/kde4
M +29 -0 kdelibs/kdeui/kernel/kapplication.cpp
--- branches/KDE/4.0/kdebase/runtime/CMakeLists.txt #792195:792196
@@ -79,3 +79,5 @@
macro_display_feature_log()
endif(CMAKE_SOURCE_DIR STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
+########### install files ###############
+install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/kde4 DESTINATION \
${BIN_INSTALL_DIR})
** branches/KDE/4.0/kdebase/runtime/kde4 #property svn:executable
+ *
--- branches/KDE/4.0/kdelibs/kdeui/kernel/kapplication.cpp #792195:792196
@@ -731,6 +731,34 @@
d->session_save = false;
}
+static void checkRestartVersion( QSessionManager& sm )
+{
+ Display* dpy = QX11Info::display();
+ Atom type;
+ int format;
+ unsigned long nitems, after;
+ unsigned char* data;
+ if( XGetWindowProperty( dpy, DefaultRootWindow( dpy ), XInternAtom( \
dpy, "KDE_SESSION_VERSION", False ), + 0, 1, False, AnyPropertyType, \
&type, &format, &nitems, &after, &data ) == Success ) { + if( type \
== XA_INTEGER && format == 32 ) { + int version = *( long* ) \
data; + if( version == KDE_VERSION_MAJOR ) { // we run in our \
native session + XFree( data );
+ return; // no need to wrap
+ }
+ }
+ XFree( data );
+ }
+#define NUM_TO_STRING2( num ) #num
+#define NUM_TO_STRING( num ) NUM_TO_STRING2( num )
+ QString wrapper = KStandardDirs::findExe( "kde" NUM_TO_STRING( \
KDE_VERSION_MAJOR ) ); // "kde4", etc. +#undef NUM_TO_STRING
+#undef NUM_TO_STRING2
+ QStringList restartCommand = sm.restartCommand();
+ restartCommand.prepend( wrapper );
+ sm.setRestartCommand( restartCommand );
+}
+
void KApplication::saveState( QSessionManager& sm )
{
d->session_save = true;
@@ -784,6 +812,7 @@
sm.setRestartCommand( restartCommand );
}
+ checkRestartVersion( sm );
// finally: do session management
emit saveYourself(); // for compatibility
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic