-rw-r--r-- | library/global.cpp | 16 | ||||
-rw-r--r-- | library/qpeapplication.cpp | 56 |
2 files changed, 70 insertions, 2 deletions
diff --git a/library/global.cpp b/library/global.cpp index 9b3c51e..42c2729 100644 --- a/library/global.cpp +++ b/library/global.cpp | |||
@@ -604,6 +604,18 @@ void Global::invoke(const QString &c) | |||
604 | } else | 604 | } else |
605 | #endif | 605 | #endif |
606 | { | 606 | { |
607 | char *oldpre = ::getenv ( "LD_PRELOAD" ); | ||
608 | |||
609 | extern bool opie_block_style; | ||
610 | |||
611 | QString newpre = QPEApplication::qpeDir ( ) + "/lib/libpreload.so"; | ||
612 | if ( opie_block_style && QFile::exists ( newpre )) { | ||
613 | if ( oldpre && oldpre [0] ) | ||
614 | newpre = newpre + ":" + oldpre; | ||
615 | ::setenv ( "LD_PRELOAD", newpre. latin1( ), 1 ); | ||
616 | qDebug ( "\nPRELOADING\n" ); | ||
617 | } | ||
618 | |||
607 | if ( !::vfork() ) { | 619 | if ( !::vfork() ) { |
608 | for ( int fd = 3; fd < 100; fd++ ) | 620 | for ( int fd = 3; fd < 100; fd++ ) |
609 | ::close( fd ); | 621 | ::close( fd ); |
@@ -613,6 +625,10 @@ void Global::invoke(const QString &c) | |||
613 | ::execvp( args[0], (char * const *)args ); | 625 | ::execvp( args[0], (char * const *)args ); |
614 | _exit( -1 ); | 626 | _exit( -1 ); |
615 | } | 627 | } |
628 | if ( oldpre ) | ||
629 | ::setenv ( "LD_PRELOAD", oldpre, 1 ); | ||
630 | else | ||
631 | ::unsetenv ( "LD_PRELOAD" ); | ||
616 | } | 632 | } |
617 | StartingAppList::add( list[0] ); | 633 | StartingAppList::add( list[0] ); |
618 | #endif //QT_NO_QWS_MULTIPROCESS | 634 | #endif //QT_NO_QWS_MULTIPROCESS |
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index efa65bc..a54fb20 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp | |||
@@ -898,17 +898,54 @@ void QPEApplication::setDefaultRotation( int r ) | |||
898 | } | 898 | } |
899 | } | 899 | } |
900 | 900 | ||
901 | // exported to libpreload.so | ||
902 | bool opie_block_style = false; | ||
903 | |||
901 | /*! | 904 | /*! |
902 | \internal | 905 | \internal |
903 | */ | 906 | */ |
904 | void QPEApplication::applyStyle() | 907 | void QPEApplication::applyStyle() |
905 | { | 908 | { |
906 | Config config( "qpe" ); | 909 | Config config( "qpe" ); |
907 | |||
908 | config.setGroup( "Appearance" ); | 910 | config.setGroup( "Appearance" ); |
909 | 911 | ||
912 | // don't block ourselves ... | ||
913 | opie_block_style = false; | ||
914 | |||
915 | |||
916 | static QString appname; | ||
917 | |||
918 | if ( appname. isNull ( )) { | ||
919 | char src [32]; | ||
920 | char dst [PATH_MAX + 1]; | ||
921 | ::sprintf ( src, "/proc/%d/exe", ::getpid ( )); | ||
922 | int l = ::readlink ( src, dst, PATH_MAX ); | ||
923 | if ( l > 0 ) { | ||
924 | dst [l] = 0; | ||
925 | const char *b = ::strrchr ( dst, '/' ); | ||
926 | appname = ( b ? b + 1 : dst ); | ||
927 | } | ||
928 | else | ||
929 | appname = ""; | ||
930 | } | ||
931 | |||
932 | |||
933 | QStringList ex = config. readListEntry ( "NoStyle", ';' ); | ||
934 | int nostyle = 0; | ||
935 | for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { | ||
936 | if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { | ||
937 | nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); | ||
938 | break; | ||
939 | } | ||
940 | } | ||
941 | |||
910 | // Widget style | 942 | // Widget style |
911 | QString style = config.readEntry( "Style", "Light" ); | 943 | QString style = config.readEntry( "Style", "Light" ); |
944 | |||
945 | // don't set a custom style | ||
946 | if ( nostyle & 0x01 ) | ||
947 | style = "Light"; | ||
948 | |||
912 | internalSetStyle( style ); | 949 | internalSetStyle( style ); |
913 | 950 | ||
914 | // Colors | 951 | // Colors |
@@ -933,6 +970,11 @@ void QPEApplication::applyStyle() | |||
933 | 970 | ||
934 | // Window Decoration | 971 | // Window Decoration |
935 | QString dec = config.readEntry( "Decoration", "Qtopia" ); | 972 | QString dec = config.readEntry( "Decoration", "Qtopia" ); |
973 | |||
974 | // don't set a custom deco | ||
975 | if ( nostyle & 0x04 ) | ||
976 | dec = ""; | ||
977 | |||
936 | if ( dec != d->decorationName ) { | 978 | if ( dec != d->decorationName ) { |
937 | qwsSetDecoration( new QPEDecoration( dec ) ); | 979 | qwsSetDecoration( new QPEDecoration( dec ) ); |
938 | d->decorationName = dec; | 980 | d->decorationName = dec; |
@@ -941,7 +983,17 @@ void QPEApplication::applyStyle() | |||
941 | // Font | 983 | // Font |
942 | QString ff = config.readEntry( "FontFamily", font().family() ); | 984 | QString ff = config.readEntry( "FontFamily", font().family() ); |
943 | int fs = config.readNumEntry( "FontSize", font().pointSize() ); | 985 | int fs = config.readNumEntry( "FontSize", font().pointSize() ); |
986 | |||
987 | // don't set a custom font | ||
988 | if ( nostyle & 0x02 ) { | ||
989 | ff = "Helvetica"; | ||
990 | fs = 10; | ||
991 | } | ||
992 | |||
944 | setFont( QFont(ff, fs) ); | 993 | setFont( QFont(ff, fs) ); |
994 | |||
995 | // revert to global blocking policy ... | ||
996 | opie_block_style = config. readBoolEntry ( "ForceStyle", false ); | ||
945 | } | 997 | } |
946 | 998 | ||
947 | void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) | 999 | void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) |
@@ -1323,7 +1375,7 @@ void QPEApplication::internalSetStyle( const QString &style ) | |||
1323 | iface-> release ( ); | 1375 | iface-> release ( ); |
1324 | delete lib; | 1376 | delete lib; |
1325 | 1377 | ||
1326 | setStyle ( new QPEStyle ( )); | 1378 | setStyle ( new LightStyle ( )); |
1327 | } | 1379 | } |
1328 | } | 1380 | } |
1329 | #endif | 1381 | #endif |