summaryrefslogtreecommitdiff
authorzecke <zecke>2004-04-05 13:11:21 (UTC)
committer zecke <zecke>2004-04-05 13:11:21 (UTC)
commit3c2e23bacf25fc73d51bfa98a3b2ea9c0890d540 (patch) (unidiff)
tree7541a347abc4b028163ce9ed1b05d692c2941a56
parentf1708be741dfb73ceaffb633b44093f2cb2b3d57 (diff)
downloadopie-3c2e23bacf25fc73d51bfa98a3b2ea9c0890d540.zip
opie-3c2e23bacf25fc73d51bfa98a3b2ea9c0890d540.tar.gz
opie-3c2e23bacf25fc73d51bfa98a3b2ea9c0890d540.tar.bz2
Don't lock up with Qt2.3.8
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 5d05ed5..3370264 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -869,257 +869,257 @@ public:
869 bool needsOk() 869 bool needsOk()
870 { 870 {
871 return ( getWState() & WState_Reserved1 ); 871 return ( getWState() & WState_Reserved1 );
872 } 872 }
873}; 873};
874 874
875/*! 875/*!
876 \internal 876 \internal
877*/ 877*/
878 878
879#ifdef QWS 879#ifdef QWS
880bool QPEApplication::qwsEventFilter( QWSEvent * e ) 880bool QPEApplication::qwsEventFilter( QWSEvent * e )
881{ 881{
882 if ( !d->notbusysent && e->type == QWSEvent::Focus ) { 882 if ( !d->notbusysent && e->type == QWSEvent::Focus ) {
883 if ( qApp->type() != QApplication::GuiServer ) { 883 if ( qApp->type() != QApplication::GuiServer ) {
884 QCopEnvelope e( "QPE/System", "notBusy(QString)" ); 884 QCopEnvelope e( "QPE/System", "notBusy(QString)" );
885 e << d->appName; 885 e << d->appName;
886 } 886 }
887 d->notbusysent = TRUE; 887 d->notbusysent = TRUE;
888 } 888 }
889 if ( type() == GuiServer ) { 889 if ( type() == GuiServer ) {
890 switch ( e->type ) { 890 switch ( e->type ) {
891 case QWSEvent::Mouse: 891 case QWSEvent::Mouse:
892 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) 892 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) )
893 emit clientMoused(); 893 emit clientMoused();
894 break; 894 break;
895 default: 895 default:
896 break; 896 break;
897 } 897 }
898 } 898 }
899 if ( e->type == QWSEvent::Key ) { 899 if ( e->type == QWSEvent::Key ) {
900 QWSKeyEvent *ke = ( QWSKeyEvent * ) e; 900 QWSKeyEvent *ke = ( QWSKeyEvent * ) e;
901 if ( ke->simpleData.keycode == Qt::Key_F33 ) { 901 if ( ke->simpleData.keycode == Qt::Key_F33 ) {
902 // Use special "OK" key to press "OK" on top level widgets 902 // Use special "OK" key to press "OK" on top level widgets
903 QWidget * active = activeWindow(); 903 QWidget * active = activeWindow();
904 QWidget *popup = 0; 904 QWidget *popup = 0;
905 if ( active && active->isPopup() ) { 905 if ( active && active->isPopup() ) {
906 popup = active; 906 popup = active;
907 active = active->parentWidget(); 907 active = active->parentWidget();
908 } 908 }
909 if ( active && ( int ) active->winId() == ke->simpleData.window && 909 if ( active && ( int ) active->winId() == ke->simpleData.window &&
910 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { 910 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) {
911 if ( ke->simpleData.is_press ) { 911 if ( ke->simpleData.is_press ) {
912 if ( popup ) 912 if ( popup )
913 popup->close(); 913 popup->close();
914 if ( active->inherits( "QDialog" ) ) { 914 if ( active->inherits( "QDialog" ) ) {
915 HackDialog * d = ( HackDialog * ) active; 915 HackDialog * d = ( HackDialog * ) active;
916 d->acceptIt(); 916 d->acceptIt();
917 return TRUE; 917 return TRUE;
918 } 918 }
919 else if ( ( ( HackWidget * ) active ) ->needsOk() ) { 919 else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
920 QSignal s; 920 QSignal s;
921 s.connect( active, SLOT( accept() ) ); 921 s.connect( active, SLOT( accept() ) );
922 s.activate(); 922 s.activate();
923 } 923 }
924 else { 924 else {
925 // do the same as with the select key: Map to the default action of the widget: 925 // do the same as with the select key: Map to the default action of the widget:
926 mapToDefaultAction( ke, Qt::Key_Return ); 926 mapToDefaultAction( ke, Qt::Key_Return );
927 } 927 }
928 } 928 }
929 } 929 }
930 } 930 }
931 else if ( ke->simpleData.keycode == Qt::Key_F30 ) { 931 else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
932 // Use special "select" key to do whatever default action a widget has 932 // Use special "select" key to do whatever default action a widget has
933 mapToDefaultAction( ke, Qt::Key_Space ); 933 mapToDefaultAction( ke, Qt::Key_Space );
934 } 934 }
935 else if ( ke->simpleData.keycode == Qt::Key_Escape && 935 else if ( ke->simpleData.keycode == Qt::Key_Escape &&
936 ke->simpleData.is_press ) { 936 ke->simpleData.is_press ) {
937 // Escape key closes app if focus on toplevel 937 // Escape key closes app if focus on toplevel
938 QWidget * active = activeWindow(); 938 QWidget * active = activeWindow();
939 if ( active && active->testWFlags( WType_TopLevel ) && 939 if ( active && active->testWFlags( WType_TopLevel ) &&
940 ( int ) active->winId() == ke->simpleData.window && 940 ( int ) active->winId() == ke->simpleData.window &&
941 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { 941 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) {
942 if ( active->inherits( "QDialog" ) ) { 942 if ( active->inherits( "QDialog" ) ) {
943 HackDialog * d = ( HackDialog * ) active; 943 HackDialog * d = ( HackDialog * ) active;
944 d->rejectIt(); 944 d->rejectIt();
945 return TRUE; 945 return TRUE;
946 } 946 }
947 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) { 947 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) {
948 active->close(); 948 active->close();
949 } 949 }
950 } 950 }
951 } 951 }
952 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) { 952 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) {
953 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... )) 953 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... ))
954 // but we cannot access libopie function within libqpe :( 954 // but we cannot access libopie function within libqpe :(
955 955
956 QWidget * active = activeWindow ( ); 956 QWidget * active = activeWindow ( );
957 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) { 957 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) {
958 if ( d-> kbgrabbed ) { // we grabbed the keyboard 958 if ( d-> kbgrabbed ) { // we grabbed the keyboard
959 QChar ch ( ke-> simpleData.unicode ); 959 QChar ch ( ke-> simpleData.unicode );
960 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease, 960 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease,
961 ke-> simpleData.keycode, 961 ke-> simpleData.keycode,
962 ch. latin1 ( ), 962 ch. latin1 ( ),
963 ke-> simpleData.modifiers, 963 ke-> simpleData.modifiers,
964 QString ( ch ), 964 QString ( ch ),
965 ke-> simpleData.is_auto_repeat, 1 ); 965 ke-> simpleData.is_auto_repeat, 1 );
966 966
967 QObject *which = QWidget::keyboardGrabber ( ); 967 QObject *which = QWidget::keyboardGrabber ( );
968 if ( !which ) 968 if ( !which )
969 which = QApplication::focusWidget ( ); 969 which = QApplication::focusWidget ( );
970 if ( !which ) 970 if ( !which )
971 which = QApplication::activeWindow ( ); 971 which = QApplication::activeWindow ( );
972 if ( !which ) 972 if ( !which )
973 which = qApp; 973 which = qApp;
974 974
975 QApplication::sendEvent ( which, &qke ); 975 QApplication::sendEvent ( which, &qke );
976 } 976 }
977 else { // we didn't grab the keyboard, so send the event to the launcher 977 else { // we didn't grab the keyboard, so send the event to the launcher
978 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" ); 978 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" );
979 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat ); 979 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat );
980 } 980 }
981 } 981 }
982 return true; 982 return true;
983 } 983 }
984 } 984 }
985 if ( e->type == QWSEvent::Focus ) { 985 if ( e->type == QWSEvent::Focus ) {
986 QWSFocusEvent * fe = ( QWSFocusEvent* ) e; 986 QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
987 if ( !fe->simpleData.get_focus ) { 987 if ( !fe->simpleData.get_focus ) {
988 QWidget * active = activeWindow(); 988 QWidget * active = activeWindow();
989 while ( active && active->isPopup() ) { 989 while ( active && active->isPopup() ) {
990 active->close(); 990 active->close();
991 active = activeWindow(); 991 active = activeWindow();
992 } 992 }
993 } 993 }
994 else { 994 else {
995 // make sure our modal widget is ALWAYS on top 995 // make sure our modal widget is ALWAYS on top
996 QWidget *topm = activeModalWidget(); 996 QWidget *topm = activeModalWidget();
997 if ( topm ) { 997 if ( topm && static_cast<int>( topm->winId() ) != fe->simpleData.window) {
998 topm->raise(); 998 topm->raise();
999 } 999 }
1000 } 1000 }
1001 if ( fe->simpleData.get_focus && inputMethodDict ) { 1001 if ( fe->simpleData.get_focus && inputMethodDict ) {
1002 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); 1002 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) );
1003 if ( m == AlwaysOff ) 1003 if ( m == AlwaysOff )
1004 Global::hideInputMethod(); 1004 Global::hideInputMethod();
1005 if ( m == AlwaysOn ) 1005 if ( m == AlwaysOn )
1006 Global::showInputMethod(); 1006 Global::showInputMethod();
1007 } 1007 }
1008 } 1008 }
1009 1009
1010 1010
1011 return QApplication::qwsEventFilter( e ); 1011 return QApplication::qwsEventFilter( e );
1012} 1012}
1013#endif 1013#endif
1014 1014
1015/*! 1015/*!
1016 Destroys the QPEApplication. 1016 Destroys the QPEApplication.
1017*/ 1017*/
1018QPEApplication::~QPEApplication() 1018QPEApplication::~QPEApplication()
1019{ 1019{
1020 ungrabKeyboard(); 1020 ungrabKeyboard();
1021#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 1021#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
1022 // Need to delete QCopChannels early, since the display will 1022 // Need to delete QCopChannels early, since the display will
1023 // be gone by the time we get to ~QObject(). 1023 // be gone by the time we get to ~QObject().
1024 delete sysChannel; 1024 delete sysChannel;
1025 delete pidChannel; 1025 delete pidChannel;
1026#endif 1026#endif
1027 1027
1028 delete d; 1028 delete d;
1029} 1029}
1030 1030
1031/*! 1031/*!
1032 Returns <tt>$OPIEDIR/</tt>. 1032 Returns <tt>$OPIEDIR/</tt>.
1033*/ 1033*/
1034QString QPEApplication::qpeDir() 1034QString QPEApplication::qpeDir()
1035{ 1035{
1036 const char * base = getenv( "OPIEDIR" ); 1036 const char * base = getenv( "OPIEDIR" );
1037 if ( base ) 1037 if ( base )
1038 return QString( base ) + "/"; 1038 return QString( base ) + "/";
1039 1039
1040 return QString( "../" ); 1040 return QString( "../" );
1041} 1041}
1042 1042
1043/*! 1043/*!
1044 Returns the user's current Document directory. There is a trailing "/". 1044 Returns the user's current Document directory. There is a trailing "/".
1045 .. well, it does now,, and there's no trailing '/' 1045 .. well, it does now,, and there's no trailing '/'
1046*/ 1046*/
1047QString QPEApplication::documentDir() 1047QString QPEApplication::documentDir()
1048{ 1048{
1049 const char* base = getenv( "HOME"); 1049 const char* base = getenv( "HOME");
1050 if ( base ) 1050 if ( base )
1051 return QString( base ) + "/Documents"; 1051 return QString( base ) + "/Documents";
1052 1052
1053 return QString( "../Documents" ); 1053 return QString( "../Documents" );
1054} 1054}
1055 1055
1056static int deforient = -1; 1056static int deforient = -1;
1057 1057
1058/*! 1058/*!
1059 \internal 1059 \internal
1060*/ 1060*/
1061int QPEApplication::defaultRotation() 1061int QPEApplication::defaultRotation()
1062{ 1062{
1063 if ( deforient < 0 ) { 1063 if ( deforient < 0 ) {
1064 QString d = getenv( "QWS_DISPLAY" ); 1064 QString d = getenv( "QWS_DISPLAY" );
1065 if ( d.contains( "Rot90" ) ) { 1065 if ( d.contains( "Rot90" ) ) {
1066 deforient = 90; 1066 deforient = 90;
1067 } 1067 }
1068 else if ( d.contains( "Rot180" ) ) { 1068 else if ( d.contains( "Rot180" ) ) {
1069 deforient = 180; 1069 deforient = 180;
1070 } 1070 }
1071 else if ( d.contains( "Rot270" ) ) { 1071 else if ( d.contains( "Rot270" ) ) {
1072 deforient = 270; 1072 deforient = 270;
1073 } 1073 }
1074 else { 1074 else {
1075 deforient = 0; 1075 deforient = 0;
1076 } 1076 }
1077 } 1077 }
1078 return deforient; 1078 return deforient;
1079} 1079}
1080 1080
1081/*! 1081/*!
1082 \internal 1082 \internal
1083*/ 1083*/
1084void QPEApplication::setDefaultRotation( int r ) 1084void QPEApplication::setDefaultRotation( int r )
1085{ 1085{
1086 if ( qApp->type() == GuiServer ) { 1086 if ( qApp->type() == GuiServer ) {
1087 deforient = r; 1087 deforient = r;
1088 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 1088 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
1089 Config config("qpe"); 1089 Config config("qpe");
1090 config.setGroup( "Rotation" ); 1090 config.setGroup( "Rotation" );
1091 config.writeEntry( "Rot", r ); 1091 config.writeEntry( "Rot", r );
1092 } 1092 }
1093 else { 1093 else {
1094#ifndef QT_NO_COP 1094#ifndef QT_NO_COP
1095 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); 1095 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
1096 e << r; 1096 e << r;
1097 } 1097 }
1098#endif 1098#endif
1099 1099
1100 } 1100 }
1101} 1101}
1102 1102
1103#include <qgfx_qws.h> 1103#include <qgfx_qws.h>
1104#include <qwindowsystem_qws.h> 1104#include <qwindowsystem_qws.h>
1105 1105
1106extern void qws_clearLoadedFonts(); 1106extern void qws_clearLoadedFonts();
1107 1107
1108void QPEApplication::setCurrentMode( int x, int y, int depth ) 1108void QPEApplication::setCurrentMode( int x, int y, int depth )
1109{ 1109{
1110 // Reset the caches 1110 // Reset the caches
1111 qws_clearLoadedFonts(); 1111 qws_clearLoadedFonts();
1112 QPixmapCache::clear(); 1112 QPixmapCache::clear();
1113 1113
1114 // Change the screen mode 1114 // Change the screen mode
1115 qt_screen->setMode(x, y, depth); 1115 qt_screen->setMode(x, y, depth);
1116 1116
1117 if ( qApp->type() == GuiServer ) { 1117 if ( qApp->type() == GuiServer ) {
1118 // Reconfigure the GuiServer 1118 // Reconfigure the GuiServer
1119 qwsServer->beginDisplayReconfigure(); 1119 qwsServer->beginDisplayReconfigure();
1120 qwsServer->endDisplayReconfigure(); 1120 qwsServer->endDisplayReconfigure();
1121 1121
1122 // Get all the running apps to reset 1122 // Get all the running apps to reset
1123 QCopEnvelope env( "QPE/System", "reset()" ); 1123 QCopEnvelope env( "QPE/System", "reset()" );
1124 } 1124 }
1125} 1125}
@@ -1340,257 +1340,257 @@ void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data
1340 else if ( msg == "setDateFormat(DateFormat)" ) { 1340 else if ( msg == "setDateFormat(DateFormat)" ) {
1341 DateFormat tmp; 1341 DateFormat tmp;
1342 stream >> tmp; 1342 stream >> tmp;
1343 emit dateFormatChanged( tmp ); 1343 emit dateFormatChanged( tmp );
1344 } 1344 }
1345 else if ( msg == "setVolume(int,int)" ) { 1345 else if ( msg == "setVolume(int,int)" ) {
1346 int t, v; 1346 int t, v;
1347 stream >> t >> v; 1347 stream >> t >> v;
1348 setVolume( t, v ); 1348 setVolume( t, v );
1349 emit volumeChanged( muted ); 1349 emit volumeChanged( muted );
1350 } 1350 }
1351 else if ( msg == "volumeChange(bool)" ) { 1351 else if ( msg == "volumeChange(bool)" ) {
1352 stream >> muted; 1352 stream >> muted;
1353 setVolume(); 1353 setVolume();
1354 emit volumeChanged( muted ); 1354 emit volumeChanged( muted );
1355 } 1355 }
1356 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1356 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1357 int t, v; 1357 int t, v;
1358 stream >> t >> v; 1358 stream >> t >> v;
1359 setMic( t, v ); 1359 setMic( t, v );
1360 emit micChanged( micMuted ); 1360 emit micChanged( micMuted );
1361 } 1361 }
1362 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1362 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1363 stream >> micMuted; 1363 stream >> micMuted;
1364 setMic(); 1364 setMic();
1365 emit micChanged( micMuted ); 1365 emit micChanged( micMuted );
1366 } 1366 }
1367 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1367 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1368 int t, v; 1368 int t, v;
1369 stream >> t >> v; 1369 stream >> t >> v;
1370 setBass( t, v ); 1370 setBass( t, v );
1371 } 1371 }
1372 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1372 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1373 setBass(); 1373 setBass();
1374 } 1374 }
1375 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1375 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1376 int t, v; 1376 int t, v;
1377 stream >> t >> v; 1377 stream >> t >> v;
1378 setTreble( t, v ); 1378 setTreble( t, v );
1379 } 1379 }
1380 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1380 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1381 setTreble(); 1381 setTreble();
1382 } else if ( msg == "getMarkedText()" ) { 1382 } else if ( msg == "getMarkedText()" ) {
1383 if ( type() == GuiServer ) { 1383 if ( type() == GuiServer ) {
1384 const ushort unicode = 'C'-'@'; 1384 const ushort unicode = 'C'-'@';
1385 const int scan = Key_C; 1385 const int scan = Key_C;
1386 qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE ); 1386 qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE );
1387 qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE ); 1387 qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE );
1388 } 1388 }
1389 } else if ( msg == "newChannel(QString)") { 1389 } else if ( msg == "newChannel(QString)") {
1390 QString myChannel = "QPE/Application/" + d->appName; 1390 QString myChannel = "QPE/Application/" + d->appName;
1391 QString channel; 1391 QString channel;
1392 stream >> channel; 1392 stream >> channel;
1393 if (channel == myChannel) { 1393 if (channel == myChannel) {
1394 processQCopFile(); 1394 processQCopFile();
1395 d->sendQCopQ(); 1395 d->sendQCopQ();
1396 } 1396 }
1397 } 1397 }
1398 1398
1399 1399
1400#endif 1400#endif
1401} 1401}
1402 1402
1403 1403
1404 1404
1405 1405
1406 1406
1407/*! 1407/*!
1408 \internal 1408 \internal
1409*/ 1409*/
1410bool QPEApplication::raiseAppropriateWindow() 1410bool QPEApplication::raiseAppropriateWindow()
1411{ 1411{
1412 bool r=FALSE; 1412 bool r=FALSE;
1413 1413
1414 // 1. Raise the main widget 1414 // 1. Raise the main widget
1415 QWidget *top = d->qpe_main_widget; 1415 QWidget *top = d->qpe_main_widget;
1416 if ( !top ) top = mainWidget(); 1416 if ( !top ) top = mainWidget();
1417 1417
1418 if ( top && d->keep_running ) { 1418 if ( top && d->keep_running ) {
1419 if ( top->isVisible() ) 1419 if ( top->isVisible() )
1420 r = TRUE; 1420 r = TRUE;
1421 else if (d->preloaded) { 1421 else if (d->preloaded) {
1422 // We are preloaded and not visible.. pretend we just started.. 1422 // We are preloaded and not visible.. pretend we just started..
1423#ifndef QT_NO_COP 1423#ifndef QT_NO_COP
1424 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1424 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1425 e << d->appName; 1425 e << d->appName;
1426#endif 1426#endif
1427 } 1427 }
1428 1428
1429 d->show_mx(top,d->nomaximize, d->appName); 1429 d->show_mx(top,d->nomaximize, d->appName);
1430 top->raise(); 1430 top->raise();
1431 } 1431 }
1432 1432
1433 QWidget *topm = activeModalWidget(); 1433 QWidget *topm = activeModalWidget();
1434 1434
1435 // 2. Raise any parentless widgets (except top and topm, as they 1435 // 2. Raise any parentless widgets (except top and topm, as they
1436 // are raised before and after this loop). Order from most 1436 // are raised before and after this loop). Order from most
1437 // recently raised as deepest to least recently as top, so 1437 // recently raised as deepest to least recently as top, so
1438 // that repeated calls cycle through widgets. 1438 // that repeated calls cycle through widgets.
1439 QWidgetList *list = topLevelWidgets(); 1439 QWidgetList *list = topLevelWidgets();
1440 if ( list ) { 1440 if ( list ) {
1441 bool foundlast = FALSE; 1441 bool foundlast = FALSE;
1442 QWidget* topsub = 0; 1442 QWidget* topsub = 0;
1443 if ( d->lastraised ) { 1443 if ( d->lastraised ) {
1444 for (QWidget* w = list->first(); w; w = list->next()) { 1444 for (QWidget* w = list->first(); w; w = list->next()) {
1445 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { 1445 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
1446 if ( w == d->lastraised ) 1446 if ( w == d->lastraised )
1447 foundlast = TRUE; 1447 foundlast = TRUE;
1448 if ( foundlast ) { 1448 if ( foundlast ) {
1449 w->raise(); 1449 w->raise();
1450 topsub = w; 1450 topsub = w;
1451 } 1451 }
1452 } 1452 }
1453 } 1453 }
1454 } 1454 }
1455 for (QWidget* w = list->first(); w; w = list->next()) { 1455 for (QWidget* w = list->first(); w; w = list->next()) {
1456 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { 1456 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
1457 if ( w == d->lastraised ) 1457 if ( w == d->lastraised )
1458 break; 1458 break;
1459 w->raise(); 1459 w->raise();
1460 topsub = w; 1460 topsub = w;
1461 } 1461 }
1462 } 1462 }
1463 d->lastraised = topsub; 1463 d->lastraised = topsub;
1464 delete list; 1464 delete list;
1465 } 1465 }
1466 1466
1467 // 3. Raise the active modal widget. 1467 // 3. Raise the active modal widget.
1468 if ( topm && topm != top ) { 1468 if ( topm ) {
1469 topm->show(); 1469 topm->show();
1470 topm->raise(); 1470 topm->raise();
1471 // If we haven't already handled the fastAppShowing message 1471 // If we haven't already handled the fastAppShowing message
1472 if (!top && d->preloaded) { 1472 if (!top && d->preloaded) {
1473#ifndef QT_NO_COP 1473#ifndef QT_NO_COP
1474 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1474 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1475 e << d->appName; 1475 e << d->appName;
1476#endif 1476#endif
1477 } 1477 }
1478 r = FALSE; 1478 r = FALSE;
1479 } 1479 }
1480 1480
1481 return r; 1481 return r;
1482} 1482}
1483 1483
1484 1484
1485void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1485void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1486{ 1486{
1487#ifdef Q_WS_QWS 1487#ifdef Q_WS_QWS
1488 1488
1489 if ( msg == "quit()" ) { 1489 if ( msg == "quit()" ) {
1490 tryQuit(); 1490 tryQuit();
1491 } 1491 }
1492 else if ( msg == "quitIfInvisible()" ) { 1492 else if ( msg == "quitIfInvisible()" ) {
1493 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1493 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1494 quit(); 1494 quit();
1495 } 1495 }
1496 else if ( msg == "close()" ) { 1496 else if ( msg == "close()" ) {
1497 hideOrQuit(); 1497 hideOrQuit();
1498 } 1498 }
1499 else if ( msg == "disablePreload()" ) { 1499 else if ( msg == "disablePreload()" ) {
1500 d->preloaded = FALSE; 1500 d->preloaded = FALSE;
1501 d->keep_running = TRUE; 1501 d->keep_running = TRUE;
1502 /* so that quit will quit */ 1502 /* so that quit will quit */
1503 } 1503 }
1504 else if ( msg == "enablePreload()" ) { 1504 else if ( msg == "enablePreload()" ) {
1505 if (d->qpe_main_widget) 1505 if (d->qpe_main_widget)
1506 d->preloaded = TRUE; 1506 d->preloaded = TRUE;
1507 d->keep_running = TRUE; 1507 d->keep_running = TRUE;
1508 /* so next quit won't quit */ 1508 /* so next quit won't quit */
1509 } 1509 }
1510 else if ( msg == "raise()" ) { 1510 else if ( msg == "raise()" ) {
1511 d->keep_running = TRUE; 1511 d->keep_running = TRUE;
1512 d->notbusysent = FALSE; 1512 d->notbusysent = FALSE;
1513 raiseAppropriateWindow(); 1513 raiseAppropriateWindow();
1514 // Tell the system we're still chugging along... 1514 // Tell the system we're still chugging along...
1515 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1515 QCopEnvelope e("QPE/System", "appRaised(QString)");
1516 e << d->appName; 1516 e << d->appName;
1517 } 1517 }
1518 else if ( msg == "flush()" ) { 1518 else if ( msg == "flush()" ) {
1519 emit flush(); 1519 emit flush();
1520 // we need to tell the desktop 1520 // we need to tell the desktop
1521 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1521 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1522 e << d->appName; 1522 e << d->appName;
1523 } 1523 }
1524 else if ( msg == "reload()" ) { 1524 else if ( msg == "reload()" ) {
1525 emit reload(); 1525 emit reload();
1526 } 1526 }
1527 else if ( msg == "setDocument(QString)" ) { 1527 else if ( msg == "setDocument(QString)" ) {
1528 d->keep_running = TRUE; 1528 d->keep_running = TRUE;
1529 QDataStream stream( data, IO_ReadOnly ); 1529 QDataStream stream( data, IO_ReadOnly );
1530 QString doc; 1530 QString doc;
1531 stream >> doc; 1531 stream >> doc;
1532 QWidget *mw = mainWidget(); 1532 QWidget *mw = mainWidget();
1533 if ( !mw ) 1533 if ( !mw )
1534 mw = d->qpe_main_widget; 1534 mw = d->qpe_main_widget;
1535 if ( mw ) 1535 if ( mw )
1536 Global::setDocument( mw, doc ); 1536 Global::setDocument( mw, doc );
1537 1537
1538 } else if ( msg == "QPEProcessQCop()" ) { 1538 } else if ( msg == "QPEProcessQCop()" ) {
1539 processQCopFile(); 1539 processQCopFile();
1540 d->sendQCopQ(); 1540 d->sendQCopQ();
1541 }else 1541 }else
1542 { 1542 {
1543 bool p = d->keep_running; 1543 bool p = d->keep_running;
1544 d->keep_running = FALSE; 1544 d->keep_running = FALSE;
1545 emit appMessage( msg, data); 1545 emit appMessage( msg, data);
1546 if ( d->keep_running ) { 1546 if ( d->keep_running ) {
1547 d->notbusysent = FALSE; 1547 d->notbusysent = FALSE;
1548 raiseAppropriateWindow(); 1548 raiseAppropriateWindow();
1549 if ( !p ) { 1549 if ( !p ) {
1550 // Tell the system we're still chugging along... 1550 // Tell the system we're still chugging along...
1551#ifndef QT_NO_COP 1551#ifndef QT_NO_COP
1552 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1552 QCopEnvelope e("QPE/System", "appRaised(QString)");
1553 e << d->appName; 1553 e << d->appName;
1554#endif 1554#endif
1555 } 1555 }
1556 } 1556 }
1557 if ( p ) 1557 if ( p )
1558 d->keep_running = p; 1558 d->keep_running = p;
1559 } 1559 }
1560#endif 1560#endif
1561} 1561}
1562 1562
1563 1563
1564/*! 1564/*!
1565 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1565 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1566 consider passing TRUE for \a nomaximize rather than the default FALSE. 1566 consider passing TRUE for \a nomaximize rather than the default FALSE.
1567 1567
1568 \sa showMainDocumentWidget() 1568 \sa showMainDocumentWidget()
1569*/ 1569*/
1570void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1570void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1571{ 1571{
1572 // setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit 1572 // setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit
1573 d->show(mw, nomaximize ); 1573 d->show(mw, nomaximize );
1574} 1574}
1575 1575
1576/*! 1576/*!
1577 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1577 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1578 consider passing TRUE for \a nomaximize rather than the default FALSE. 1578 consider passing TRUE for \a nomaximize rather than the default FALSE.
1579 1579
1580 This calls designates the application as 1580 This calls designates the application as
1581 a \link docwidget.html document-oriented\endlink application. 1581 a \link docwidget.html document-oriented\endlink application.
1582 1582
1583 The \a mw widget \e must have this slot: setDocument(const QString&). 1583 The \a mw widget \e must have this slot: setDocument(const QString&).
1584 1584
1585 \sa showMainWidget() 1585 \sa showMainWidget()
1586*/ 1586*/
1587void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1587void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1588{ 1588{
1589 if ( mw && argc() == 2 ) 1589 if ( mw && argc() == 2 )
1590 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1590 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1591 1591
1592 1592
1593 //setMainWidget(mw); see above 1593 //setMainWidget(mw); see above
1594 d->show(mw, nomaximize ); 1594 d->show(mw, nomaximize );
1595} 1595}
1596 1596