summaryrefslogtreecommitdiff
authorzecke <zecke>2004-06-13 19:32:42 (UTC)
committer zecke <zecke>2004-06-13 19:32:42 (UTC)
commit6092529865660fee46ffab29177ca281f6252b2a (patch) (unidiff)
tree45373de9c58a31e3951f745c90aa223f260d47cd
parentf74ad6f0e20cb803321cec629cd8d37abc966571 (diff)
downloadopie-6092529865660fee46ffab29177ca281f6252b2a.zip
opie-6092529865660fee46ffab29177ca281f6252b2a.tar.gz
opie-6092529865660fee46ffab29177ca281f6252b2a.tar.bz2
Set the ScrollBar position right on start.
This works on Qt2.3.8 and Qt2.3.7
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 040b2fe..26e310a 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -1192,320 +1192,326 @@ bool QPEApplication::qwsEventFilter( QWSEvent * e )
1192 } 1192 }
1193 1193
1194 1194
1195 return QApplication::qwsEventFilter( e ); 1195 return QApplication::qwsEventFilter( e );
1196} 1196}
1197#endif 1197#endif
1198 1198
1199/*! 1199/*!
1200 Destroys the QPEApplication. 1200 Destroys the QPEApplication.
1201*/ 1201*/
1202QPEApplication::~QPEApplication() 1202QPEApplication::~QPEApplication()
1203{ 1203{
1204 ungrabKeyboard(); 1204 ungrabKeyboard();
1205#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 1205#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
1206 // Need to delete QCopChannels early, since the display will 1206 // Need to delete QCopChannels early, since the display will
1207 // be gone by the time we get to ~QObject(). 1207 // be gone by the time we get to ~QObject().
1208 delete sysChannel; 1208 delete sysChannel;
1209 delete pidChannel; 1209 delete pidChannel;
1210#endif 1210#endif
1211 1211
1212 delete d; 1212 delete d;
1213} 1213}
1214 1214
1215/*! 1215/*!
1216 Returns <tt>$OPIEDIR/</tt>. 1216 Returns <tt>$OPIEDIR/</tt>.
1217*/ 1217*/
1218QString QPEApplication::qpeDir() 1218QString QPEApplication::qpeDir()
1219{ 1219{
1220 const char * base = getenv( "OPIEDIR" ); 1220 const char * base = getenv( "OPIEDIR" );
1221 if ( base ) 1221 if ( base )
1222 return QString( base ) + "/"; 1222 return QString( base ) + "/";
1223 1223
1224 return QString( "../" ); 1224 return QString( "../" );
1225} 1225}
1226 1226
1227/*! 1227/*!
1228 Returns the user's current Document directory. There is a trailing "/". 1228 Returns the user's current Document directory. There is a trailing "/".
1229 .. well, it does now,, and there's no trailing '/' 1229 .. well, it does now,, and there's no trailing '/'
1230*/ 1230*/
1231QString QPEApplication::documentDir() 1231QString QPEApplication::documentDir()
1232{ 1232{
1233 const char* base = getenv( "HOME"); 1233 const char* base = getenv( "HOME");
1234 if ( base ) 1234 if ( base )
1235 return QString( base ) + "/Documents"; 1235 return QString( base ) + "/Documents";
1236 1236
1237 return QString( "../Documents" ); 1237 return QString( "../Documents" );
1238} 1238}
1239 1239
1240static int deforient = -1; 1240static int deforient = -1;
1241 1241
1242/*! 1242/*!
1243 \internal 1243 \internal
1244*/ 1244*/
1245int QPEApplication::defaultRotation() 1245int QPEApplication::defaultRotation()
1246{ 1246{
1247 if ( deforient < 0 ) { 1247 if ( deforient < 0 ) {
1248 QString d = getenv( "QWS_DISPLAY" ); 1248 QString d = getenv( "QWS_DISPLAY" );
1249 if ( d.contains( "Rot90" ) ) { 1249 if ( d.contains( "Rot90" ) ) {
1250 deforient = 90; 1250 deforient = 90;
1251 } 1251 }
1252 else if ( d.contains( "Rot180" ) ) { 1252 else if ( d.contains( "Rot180" ) ) {
1253 deforient = 180; 1253 deforient = 180;
1254 } 1254 }
1255 else if ( d.contains( "Rot270" ) ) { 1255 else if ( d.contains( "Rot270" ) ) {
1256 deforient = 270; 1256 deforient = 270;
1257 } 1257 }
1258 else { 1258 else {
1259 deforient = 0; 1259 deforient = 0;
1260 } 1260 }
1261 } 1261 }
1262 return deforient; 1262 return deforient;
1263} 1263}
1264 1264
1265/*! 1265/*!
1266 \internal 1266 \internal
1267*/ 1267*/
1268void QPEApplication::setDefaultRotation( int r ) 1268void QPEApplication::setDefaultRotation( int r )
1269{ 1269{
1270 if ( qApp->type() == GuiServer ) { 1270 if ( qApp->type() == GuiServer ) {
1271 deforient = r; 1271 deforient = r;
1272 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 1272 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
1273 Config config("qpe"); 1273 Config config("qpe");
1274 config.setGroup( "Rotation" ); 1274 config.setGroup( "Rotation" );
1275 config.writeEntry( "Rot", r ); 1275 config.writeEntry( "Rot", r );
1276 } 1276 }
1277 else { 1277 else {
1278#ifndef QT_NO_COP 1278#ifndef QT_NO_COP
1279 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); 1279 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
1280 e << r; 1280 e << r;
1281 } 1281 }
1282#endif 1282#endif
1283 1283
1284 } 1284 }
1285} 1285}
1286 1286
1287#include <qgfx_qws.h> 1287#include <qgfx_qws.h>
1288#include <qwindowsystem_qws.h> 1288#include <qwindowsystem_qws.h>
1289 1289
1290extern void qws_clearLoadedFonts(); 1290extern void qws_clearLoadedFonts();
1291 1291
1292void QPEApplication::setCurrentMode( int x, int y, int depth ) 1292void QPEApplication::setCurrentMode( int x, int y, int depth )
1293{ 1293{
1294 // Reset the caches 1294 // Reset the caches
1295 qws_clearLoadedFonts(); 1295 qws_clearLoadedFonts();
1296 QPixmapCache::clear(); 1296 QPixmapCache::clear();
1297 1297
1298 // Change the screen mode 1298 // Change the screen mode
1299 qt_screen->setMode(x, y, depth); 1299 qt_screen->setMode(x, y, depth);
1300 1300
1301 if ( qApp->type() == GuiServer ) { 1301 if ( qApp->type() == GuiServer ) {
1302 // Reconfigure the GuiServer 1302 // Reconfigure the GuiServer
1303 qwsServer->beginDisplayReconfigure(); 1303 qwsServer->beginDisplayReconfigure();
1304 qwsServer->endDisplayReconfigure(); 1304 qwsServer->endDisplayReconfigure();
1305 1305
1306 // Get all the running apps to reset 1306 // Get all the running apps to reset
1307 QCopEnvelope env( "QPE/System", "reset()" ); 1307 QCopEnvelope env( "QPE/System", "reset()" );
1308 } 1308 }
1309} 1309}
1310 1310
1311void QPEApplication::reset() { 1311void QPEApplication::reset() {
1312 // Reconnect to the screen 1312 // Reconnect to the screen
1313 qt_screen->disconnect(); 1313 qt_screen->disconnect();
1314 qt_screen->connect( QString::null ); 1314 qt_screen->connect( QString::null );
1315 1315
1316 // Redraw everything 1316 // Redraw everything
1317 applyStyle(); 1317 applyStyle();
1318} 1318}
1319 1319
1320
1321extern bool qt_left_hand_scrollbars __attribute__(( weak ));
1320/*! 1322/*!
1321 \internal 1323 \internal
1322*/ 1324*/
1323void QPEApplication::applyStyle() 1325void QPEApplication::applyStyle()
1324{ 1326{
1325 Config config( "qpe" ); 1327 Config config( "qpe" );
1326 config.setGroup( "Appearance" ); 1328 config.setGroup( "Appearance" );
1327 1329
1328#if QT_VERSION > 233 1330#if QT_VERSION > 233
1329#if !defined(OPIE_NO_OVERRIDE_QT) 1331#if !defined(OPIE_NO_OVERRIDE_QT)
1330 // don't block ourselves ... 1332 // don't block ourselves ...
1331 Opie::force_appearance = 0; 1333 Opie::force_appearance = 0;
1332 1334
1333 static QString appname = Opie::binaryName ( ); 1335 static QString appname = Opie::binaryName ( );
1334 1336
1335 QStringList ex = config. readListEntry ( "NoStyle", ';' ); 1337 QStringList ex = config. readListEntry ( "NoStyle", ';' );
1336 int nostyle = 0; 1338 int nostyle = 0;
1337 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { 1339 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
1338 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { 1340 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
1339 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); 1341 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
1340 break; 1342 break;
1341 } 1343 }
1342 } 1344 }
1343#else 1345#else
1344 int nostyle = 0; 1346 int nostyle = 0;
1345#endif 1347#endif
1346 1348
1347 // Widget style 1349 // Widget style
1348 QString style = config.readEntry( "Style", "FlatStyle" ); 1350 QString style = config.readEntry( "Style", "FlatStyle" );
1349 1351
1350 // don't set a custom style 1352 // don't set a custom style
1351 if ( nostyle & Opie::Force_Style ) 1353 if ( nostyle & Opie::Force_Style )
1352 style = "FlatStyle"; 1354 style = "FlatStyle";
1353 1355
1354 internalSetStyle ( style ); 1356 internalSetStyle ( style );
1355 1357
1356 // Colors - from /etc/colors/Liquid.scheme 1358 // Colors - from /etc/colors/Liquid.scheme
1357 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) ); 1359 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
1358 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) ); 1360 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
1359 QPalette pal( btncolor, bgcolor ); 1361 QPalette pal( btncolor, bgcolor );
1360 QString color = config.readEntry( "Highlight", "#73adef" ); 1362 QString color = config.readEntry( "Highlight", "#73adef" );
1361 pal.setColor( QColorGroup::Highlight, QColor( color ) ); 1363 pal.setColor( QColorGroup::Highlight, QColor( color ) );
1362 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 1364 color = config.readEntry( "HighlightedText", "#FFFFFF" );
1363 pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); 1365 pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
1364 color = config.readEntry( "Text", "#000000" ); 1366 color = config.readEntry( "Text", "#000000" );
1365 pal.setColor( QColorGroup::Text, QColor( color ) ); 1367 pal.setColor( QColorGroup::Text, QColor( color ) );
1366 color = config.readEntry( "ButtonText", "#000000" ); 1368 color = config.readEntry( "ButtonText", "#000000" );
1367 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); 1369 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
1368 color = config.readEntry( "Base", "#FFFFFF" ); 1370 color = config.readEntry( "Base", "#FFFFFF" );
1369 pal.setColor( QColorGroup::Base, QColor( color ) ); 1371 pal.setColor( QColorGroup::Base, QColor( color ) );
1370 1372
1371 pal.setColor( QPalette::Disabled, QColorGroup::Text, 1373 pal.setColor( QPalette::Disabled, QColorGroup::Text,
1372 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 1374 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
1373 1375
1374 setPalette( pal, TRUE ); 1376 setPalette( pal, TRUE );
1375 1377
1378
1379 // Set the ScrollBar on the 'right' side but only if the weak symbol is present
1380 if (&qt_left_hand_scrollbars )
1381 qt_left_hand_scrollbars = config.readBoolEntry( "LeftHand", false );
1382
1376 // Window Decoration 1383 // Window Decoration
1377 QString dec = config.readEntry( "Decoration", "Flat" ); 1384 QString dec = config.readEntry( "Decoration", "Flat" );
1378 1385
1379 // don't set a custom deco 1386 // don't set a custom deco
1380 if ( nostyle & Opie::Force_Decoration ) 1387 if ( nostyle & Opie::Force_Decoration )
1381 dec = ""; 1388 dec = "";
1382 1389
1383 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle);
1384 1390
1385 if ( dec != d->decorationName ) { 1391 if ( dec != d->decorationName ) {
1386 qwsSetDecoration( new QPEDecoration( dec ) ); 1392 qwsSetDecoration( new QPEDecoration( dec ) );
1387 d->decorationName = dec; 1393 d->decorationName = dec;
1388 } 1394 }
1389 1395
1390 // Font 1396 // Font
1391 QString ff = config.readEntry( "FontFamily", font().family() ); 1397 QString ff = config.readEntry( "FontFamily", font().family() );
1392 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 1398 int fs = config.readNumEntry( "FontSize", font().pointSize() );
1393 1399
1394 // don't set a custom font 1400 // don't set a custom font
1395 if ( nostyle & Opie::Force_Font ) { 1401 if ( nostyle & Opie::Force_Font ) {
1396 ff = "Vera"; 1402 ff = "Vera";
1397 fs = 10; 1403 fs = 10;
1398 } 1404 }
1399 1405
1400 setFont ( QFont ( ff, fs ), true ); 1406 setFont ( QFont ( ff, fs ), true );
1401 1407
1402#if !defined(OPIE_NO_OVERRIDE_QT) 1408#if !defined(OPIE_NO_OVERRIDE_QT)
1403 // revert to global blocking policy ... 1409 // revert to global blocking policy ...
1404 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; 1410 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
1405 Opie::force_appearance &= ~nostyle; 1411 Opie::force_appearance &= ~nostyle;
1406#endif 1412#endif
1407#endif 1413#endif
1408} 1414}
1409 1415
1410void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1416void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
1411{ 1417{
1412#ifdef Q_WS_QWS 1418#ifdef Q_WS_QWS
1413 QDataStream stream( data, IO_ReadOnly ); 1419 QDataStream stream( data, IO_ReadOnly );
1414 if ( msg == "applyStyle()" ) { 1420 if ( msg == "applyStyle()" ) {
1415 applyStyle(); 1421 applyStyle();
1416 } 1422 }
1417 else if ( msg == "toggleApplicationMenu()" ) { 1423 else if ( msg == "toggleApplicationMenu()" ) {
1418 QWidget *active = activeWindow ( ); 1424 QWidget *active = activeWindow ( );
1419 1425
1420 if ( active ) { 1426 if ( active ) {
1421 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); 1427 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
1422 bool oldactive = man-> isActive ( ); 1428 bool oldactive = man-> isActive ( );
1423 1429
1424 man-> setActive( !man-> isActive() ); 1430 man-> setActive( !man-> isActive() );
1425 1431
1426 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu 1432 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
1427 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); 1433 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
1428 } 1434 }
1429 } 1435 }
1430 } 1436 }
1431 else if ( msg == "setDefaultRotation(int)" ) { 1437 else if ( msg == "setDefaultRotation(int)" ) {
1432 if ( type() == GuiServer ) { 1438 if ( type() == GuiServer ) {
1433 int r; 1439 int r;
1434 stream >> r; 1440 stream >> r;
1435 setDefaultRotation( r ); 1441 setDefaultRotation( r );
1436 } 1442 }
1437 } 1443 }
1438 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net> 1444 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net>
1439 if ( type() == GuiServer ) { 1445 if ( type() == GuiServer ) {
1440 int x, y, depth; 1446 int x, y, depth;
1441 stream >> x; 1447 stream >> x;
1442 stream >> y; 1448 stream >> y;
1443 stream >> depth; 1449 stream >> depth;
1444 setCurrentMode( x, y, depth ); 1450 setCurrentMode( x, y, depth );
1445 } 1451 }
1446 } 1452 }
1447 else if ( msg == "reset()" ) { 1453 else if ( msg == "reset()" ) {
1448 if ( type() != GuiServer ) 1454 if ( type() != GuiServer )
1449 reset(); 1455 reset();
1450 } 1456 }
1451 else if ( msg == "setCurrentRotation(int)" ) { 1457 else if ( msg == "setCurrentRotation(int)" ) {
1452 int r; 1458 int r;
1453 stream >> r; 1459 stream >> r;
1454 setCurrentRotation( r ); 1460 setCurrentRotation( r );
1455 } 1461 }
1456 else if ( msg == "shutdown()" ) { 1462 else if ( msg == "shutdown()" ) {
1457 if ( type() == GuiServer ) 1463 if ( type() == GuiServer )
1458 shutdown(); 1464 shutdown();
1459 } 1465 }
1460 else if ( msg == "quit()" ) { 1466 else if ( msg == "quit()" ) {
1461 if ( type() != GuiServer ) 1467 if ( type() != GuiServer )
1462 tryQuit(); 1468 tryQuit();
1463 } 1469 }
1464 else if ( msg == "forceQuit()" ) { 1470 else if ( msg == "forceQuit()" ) {
1465 if ( type() != GuiServer ) 1471 if ( type() != GuiServer )
1466 quit(); 1472 quit();
1467 } 1473 }
1468 else if ( msg == "restart()" ) { 1474 else if ( msg == "restart()" ) {
1469 if ( type() == GuiServer ) 1475 if ( type() == GuiServer )
1470 restart(); 1476 restart();
1471 } 1477 }
1472 else if ( msg == "language(QString)" ) { 1478 else if ( msg == "language(QString)" ) {
1473 if ( type() == GuiServer ) { 1479 if ( type() == GuiServer ) {
1474 QString l; 1480 QString l;
1475 stream >> l; 1481 stream >> l;
1476 QString cl = getenv( "LANG" ); 1482 QString cl = getenv( "LANG" );
1477 if ( cl != l ) { 1483 if ( cl != l ) {
1478 if ( l.isNull() ) 1484 if ( l.isNull() )
1479 unsetenv( "LANG" ); 1485 unsetenv( "LANG" );
1480 else 1486 else
1481 setenv( "LANG", l.latin1(), 1 ); 1487 setenv( "LANG", l.latin1(), 1 );
1482 restart(); 1488 restart();
1483 } 1489 }
1484 } 1490 }
1485 } 1491 }
1486 else if ( msg == "timeChange(QString)" ) { 1492 else if ( msg == "timeChange(QString)" ) {
1487 QString t; 1493 QString t;
1488 stream >> t; 1494 stream >> t;
1489 if ( t.isNull() ) 1495 if ( t.isNull() )
1490 unsetenv( "TZ" ); 1496 unsetenv( "TZ" );
1491 else 1497 else
1492 setenv( "TZ", t.latin1(), 1 ); 1498 setenv( "TZ", t.latin1(), 1 );
1493 // emit the signal so everyone else knows... 1499 // emit the signal so everyone else knows...
1494 emit timeChanged(); 1500 emit timeChanged();
1495 } 1501 }
1496 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1502 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1497 if ( type() == GuiServer ) { 1503 if ( type() == GuiServer ) {
1498 QDateTime when; 1504 QDateTime when;
1499 QCString channel, message; 1505 QCString channel, message;
1500 int data; 1506 int data;
1501 stream >> when >> channel >> message >> data; 1507 stream >> when >> channel >> message >> data;
1502 AlarmServer::addAlarm( when, channel, message, data ); 1508 AlarmServer::addAlarm( when, channel, message, data );
1503 } 1509 }
1504 } 1510 }
1505 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1511 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1506 if ( type() == GuiServer ) { 1512 if ( type() == GuiServer ) {
1507 QDateTime when; 1513 QDateTime when;
1508 QCString channel, message; 1514 QCString channel, message;
1509 int data; 1515 int data;
1510 stream >> when >> channel >> message >> data; 1516 stream >> when >> channel >> message >> data;
1511 AlarmServer::deleteAlarm( when, channel, message, data ); 1517 AlarmServer::deleteAlarm( when, channel, message, data );