summaryrefslogtreecommitdiffstats
path: root/kdm
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-02-11 15:14:55 -0600
committerSlávek Banko <slavek.banko@axis.cz>2012-06-03 03:26:52 +0200
commitb2dacef1e97dc3713a76a055eed24607fb7aa8de (patch)
tree125a233f08f5ffd3bdf7bd58e8d219241c2385ba /kdm
parenta8862198d193c7e70a897d83676da9c367562471 (diff)
downloadtdebase-b2dacef1e97dc3713a76a055eed24607fb7aa8de.tar.gz
tdebase-b2dacef1e97dc3713a76a055eed24607fb7aa8de.zip
Terminate kwin manager unless a TDE or failsafe session was selected
This closes Bug 824 (cherry picked from commit a305c0832688209d5359c212be92f54df9561ecc)
Diffstat (limited to 'kdm')
-rw-r--r--kdm/kfrontend/kgapp.cpp11
-rw-r--r--kdm/kfrontend/kgreeter.cpp2
-rw-r--r--kdm/kfrontend/kgreeter.h2
3 files changed, 12 insertions, 3 deletions
diff --git a/kdm/kfrontend/kgapp.cpp b/kdm/kfrontend/kgapp.cpp
index b9038f698..b9461dbdf 100644
--- a/kdm/kfrontend/kgapp.cpp
+++ b/kdm/kfrontend/kgapp.cpp
@@ -257,6 +257,7 @@ kg_main( const char *argv0 )
XSetIOErrorHandler( xIOErr );
TQString login_user;
+ TQString login_session_wm;
Display *dpy = qt_xdisplay();
@@ -409,6 +410,7 @@ kg_main( const char *argv0 )
Debug( "left event loop\n" );
login_user = static_cast<KGreeter*>(dialog)->curUser;
+ login_session_wm = static_cast<KGreeter*>(dialog)->curWMSession;
if (rslt != ex_greet) {
delete dialog;
@@ -451,8 +453,13 @@ kg_main( const char *argv0 )
delete comp;
}
if (kwin) {
- kwin->closeStdin();
- kwin->detach();
+ if (login_session_wm.endsWith("/startkde") || (login_session_wm == "failsafe")) {
+ kwin->closeStdin();
+ kwin->detach();
+ }
+ else {
+ kwin->kill();
+ }
delete kwin;
}
delete proc;
diff --git a/kdm/kfrontend/kgreeter.cpp b/kdm/kfrontend/kgreeter.cpp
index 5877cb6c7..07e9e3f70 100644
--- a/kdm/kfrontend/kgreeter.cpp
+++ b/kdm/kfrontend/kgreeter.cpp
@@ -842,10 +842,12 @@ KGreeter::verifyOk()
GSendInt( G_PutDmrc );
GSendStr( "Session" );
GSendStr( sessionTypes[curSel].type.utf8() );
+ curWMSession = sessionTypes[curSel].type.utf8();
} else if (!prevValid) {
GSendInt( G_PutDmrc );
GSendStr( "Session" );
GSendStr( "default" );
+ curWMSession = sessionTypes[curSel].type.utf8();
}
GSendInt( G_Ready );
closingDown = true;
diff --git a/kdm/kfrontend/kgreeter.h b/kdm/kfrontend/kgreeter.h
index 8ec8dd9c1..dc0cef044 100644
--- a/kdm/kfrontend/kgreeter.h
+++ b/kdm/kfrontend/kgreeter.h
@@ -75,7 +75,7 @@ class KGreeter : public KGDialog, public KGVerifyHandler {
void handleInputPipe();
public:
- TQString curUser, dName;
+ TQString curUser, curWMSession, dName;
protected:
void readFacesList();