summaryrefslogtreecommitdiff
path: root/vcl/unx/source/app/sm.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/unx/source/app/sm.cxx')
-rw-r--r--vcl/unx/source/app/sm.cxx13
1 files changed, 10 insertions, 3 deletions
diff --git a/vcl/unx/source/app/sm.cxx b/vcl/unx/source/app/sm.cxx
index ff981b04259b..c5605cec1dfb 100644
--- a/vcl/unx/source/app/sm.cxx
+++ b/vcl/unx/source/app/sm.cxx
@@ -114,7 +114,7 @@ void IceSalSession::queryInteraction()
void IceSalSession::interactionDone()
{
- SessionManagerClient::interactionDone();
+ SessionManagerClient::interactionDone( false );
}
void IceSalSession::saveDone()
@@ -129,6 +129,7 @@ void IceSalSession::saveDone()
bool IceSalSession::cancelShutdown()
{
+ SessionManagerClient::interactionDone( true );
return false;
}
@@ -368,6 +369,12 @@ void SessionManagerClient::SaveYourselfProc(
IMPL_STATIC_LINK_NOINSTANCE( SessionManagerClient, ShutDownHdl, void*, EMPTYARG )
{
+ if( pOneInstance )
+ {
+ SalSessionQuitEvent aEvent;
+ pOneInstance->CallCallback( &aEvent );
+ }
+
const std::list< SalFrame* >& rFrames = GetX11SalData()->GetDisplay()->getFrames();
SMprintf( rFrames.begin() != rFrames.end() ? "shutdown on first frame\n" : "shutdown event but no frame\n" );
if( rFrames.begin() != rFrames.end() )
@@ -526,12 +533,12 @@ bool SessionManagerClient::queryInteraction()
return bRet;
}
-void SessionManagerClient::interactionDone()
+void SessionManagerClient::interactionDone( bool bCancelShutdown )
{
if( aSmcConnection )
{
ICEConnectionObserver::lock();
- SmcInteractDone( aSmcConnection, False );
+ SmcInteractDone( aSmcConnection, bCancelShutdown ? True : False );
ICEConnectionObserver::unlock();
}
}