Allow TQApplication objects to be constructed without a session manager

This relates to Bug 760
(cherry picked from commit 49075fd69d)
v3.5.13-sru
Timothy Pearson 11 years ago committed by Slávek Banko
parent 3dccb6a206
commit 1f7ae30324

@ -730,10 +730,9 @@ void QApplication::process_cmdline( int* argcptr, char ** argv )
//######### BINARY COMPATIBILITY constructor
QApplication::QApplication( int &argc, char **argv )
{
construct( argc, argv, GuiClient );
construct( argc, argv, GuiClient, true );
}
/*!
Constructs an application object with \a argc command line arguments
in \a argv. If \a GUIenabled is TRUE, a GUI application is
@ -775,7 +774,55 @@ QApplication::QApplication( int &argc, char **argv )
QApplication::QApplication( int &argc, char **argv, bool GUIenabled )
{
construct( argc, argv, GUIenabled ? GuiClient : Tty );
construct( argc, argv, GUIenabled ? GuiClient : Tty, true );
}
/*!
Constructs an application object with \a argc command line arguments
in \a argv. If \a GUIenabled is TRUE, a GUI application is
constructed, otherwise a non-GUI (console) application is created.
If \a SMEnabled is TRUE, session management support is enabled (default).
Set \a GUIenabled to FALSE for programs without a graphical user
interface that should be able to run without a window system.
Set \a SMEnabled to FALSE to disable session management.
Session management cannot be enabled at a later time if disabled here.
On X11, the window system is initialized if \a GUIenabled is TRUE.
If \a GUIenabled is FALSE, the application does not connect to the
X-server.
On Windows and Macintosh, currently the window system is always
initialized, regardless of the value of GUIenabled. This may change in
future versions of Qt.
The following example shows how to create an application that
uses a graphical interface when available.
\code
int main( int argc, char **argv )
{
#ifdef Q_WS_X11
bool useGUI = getenv( "DISPLAY" ) != 0;
#else
bool useGUI = TRUE;
#endif
QApplication app(argc, argv, useGUI);
if ( useGUI ) {
//start GUI version
...
} else {
//start non-GUI version
...
}
return app.exec();
}
\endcode
*/
QApplication::QApplication( int &argc, char **argv, bool GUIenabled, bool SMenabled )
{
construct( argc, argv, GUIenabled ? GuiClient : Tty, SMenabled );
}
/*!
@ -788,7 +835,7 @@ QApplication::QApplication( int &argc, char **argv, bool GUIenabled )
*/
QApplication::QApplication( int &argc, char **argv, Type type )
{
construct( argc, argv, type );
construct( argc, argv, type, true );
}
Q_EXPORT void qt_ucm_initialize( QApplication *theApp )
@ -797,12 +844,12 @@ Q_EXPORT void qt_ucm_initialize( QApplication *theApp )
return;
int argc = theApp->argc();
char **argv = theApp->argv();
theApp->construct( argc, argv, qApp->type() );
theApp->construct( argc, argv, qApp->type(), true );
Q_ASSERT( qApp == theApp );
}
void QApplication::construct( int &argc, char **argv, Type type )
void QApplication::construct( int &argc, char **argv, Type type, bool enable_sm )
{
qt_appType = type;
qt_is_gui_used = (type != Tty);
@ -817,7 +864,7 @@ void QApplication::construct( int &argc, char **argv, Type type )
qt_init( &argc, argv, type ); // Must be called before initialize()
process_cmdline( &argc, argv );
initialize( argc, argv );
initialize( argc, argv, enable_sm );
if ( qt_is_gui_used )
qt_maxWindowRect = desktop()->rect();
if ( eventloop )
@ -944,7 +991,7 @@ void QApplication::init_precmdline()
Initializes the QApplication object, called from the constructors.
*/
void QApplication::initialize( int argc, char **argv )
void QApplication::initialize( int argc, char **argv, bool enable_sm )
{
#ifdef QT_THREAD_SUPPORT
qt_mutex = new QMutex( TRUE );
@ -963,10 +1010,12 @@ void QApplication::initialize( int argc, char **argv )
is_app_running = TRUE; // no longer starting up
#ifndef QT_NO_SESSIONMANAGER
// connect to the session manager
if ( !session_key )
session_key = new QString;
session_manager = new QSessionManager( qApp, session_id, *session_key );
if (enable_sm) {
// connect to the session manager
if ( !session_key )
session_key = new QString;
session_manager = new QSessionManager( qApp, session_id, *session_key );
}
#endif
}

@ -76,6 +76,7 @@ class Q_EXPORT QApplication : public QObject
public:
QApplication( int &argc, char **argv );
QApplication( int &argc, char **argv, bool GUIenabled );
QApplication( int &argc, char **argv, bool GUIenabled, bool SMenabled );
enum Type { Tty, GuiClient, GuiServer };
QApplication( int &argc, char **argv, Type );
#if defined(Q_WS_X11)
@ -320,8 +321,8 @@ protected:
bool event(QEvent *);
private:
void construct( int &argc, char **argv, Type );
void initialize( int, char ** );
void construct( int &argc, char **argv, Type, bool enable_sm );
void initialize( int, char **, bool enable_sm = true );
void init_precmdline();
void process_cmdline( int* argcptr, char ** argv );
bool internalNotify( QObject *, QEvent * );

Loading…
Cancel
Save