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
@@ -949,97 +949,97 @@ bool QPEApplication::qwsEventFilter( QWSEvent * e )
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 '/'
@@ -1420,97 +1420,97 @@ bool QPEApplication::raiseAppropriateWindow()
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;