author | zecke <zecke> | 2003-10-04 08:59:51 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-10-04 08:59:51 (UTC) |
commit | dc9510f788212a6be063349461540e4bea690f51 (patch) (side-by-side diff) | |
tree | b8728fdc12c1580287f16f3828180beac5d55c13 | |
parent | 23f729eb7487ad189591c3b0c9af9d3afecd3b91 (diff) | |
download | opie-dc9510f788212a6be063349461540e4bea690f51.zip opie-dc9510f788212a6be063349461540e4bea690f51.tar.gz opie-dc9510f788212a6be063349461540e4bea690f51.tar.bz2 |
Allow Opie beeing build with a Plain version of Qt without weak symbols
-rw-r--r-- | Rules.make | 3 | ||||
-rw-r--r-- | config.in | 4 | ||||
-rw-r--r-- | library/library.pro | 6 | ||||
-rw-r--r-- | library/qpeapplication.cpp | 10 | ||||
-rw-r--r-- | library/qt_override.cpp | 40 |
5 files changed, 44 insertions, 19 deletions
@@ -8,48 +8,51 @@ $(TOPDIR)/gen.pro : $(TOPDIR)/.config echo > $@ ifneq ($(CONFIG_DEBUG),) echo CONFIG += debug >> $@ echo CONFIG -= release >> $@ else echo CONFIG -= debug >> $@ echo CONFIG += release >> $@ endif ifeq ($(filter 3.%,$(QTE_VERSION)),) # not qt3 echo CONFIG -= qt3 >> $@ else echo CONFIG += qt3 >> $@ endif ifeq ($(CONFIG_QUICK_LAUNCH),) echo contains\( CONFIG, quick-app \) \{ >> $@ echo CONFIG -= quick-app >> $@ echo CONFIG += quick-app-lib >> $@ echo \} >> $@ else echo contains\( CONFIG, quick-app \) \{ >> $@ echo CONFIG -= quick-app >> $@ echo CONFIG += quick-app-bin >> $@ echo \} >> $@ endif +ifeq ($(CONFIG_OPIE_NO_OVERRIDE_QT),y) + echo CONFIG += no-override >> $@ +endif $(TOPDIR)/.depends : $(shell if [ -e $(TOPDIR)/config.in ]\; then echo $(TOPDIR)/config.in\; fi\;) $(TOPDIR)/.config $(TOPDIR)/packages @echo Generating dependency information... # add to subdir-y, and add descend rules @cat $(TOPDIR)/packages | grep -v '^#' | \ awk '{print \ ".PHONY : " $$2 "\n" \ "subdir-$$(" $$1 ") += " $$2 "\n\n"; \ print $$2 " : " $$2 "/Makefile\n\t$$(call descend,$$@,$(filter-out $$@,$$(filter-out $$@,$$(MAKECMDGOALS))))\n"; }' > $(TOPDIR)/.depends cat $(TOPDIR)/packages | grep -v '^#' | \ perl -ne '($$cfg, $$dir, $$pro) = $$_ =~ /^(\S+)\s+(\S+)\s+(\S+)/; if ( -e "$$dir/$$pro" ) { print "$$dir/Makefile : $$dir/$$pro \$$(QMAKE) \$$(OPIEDIR)/gen.pro \$$(OPIEDIR)/.config\n\t\$$(call makefilegen,\$$@)\n\n"; }' \ >> $(TOPDIR)/.depends # interpackage dependency generation @cat $(TOPDIR)/packages | \ $(TOPDIR)/scripts/deps.pl >> $(TOPDIR)/.depends $(TOPDIR)/.depends.cfgs: # config.in interdependencies @echo $(configs) | sed -e 's,/config.in,,g' | ( for i in `cat`; do echo $$i; done ) > dirs @cat dirs | ( for i in `cat`; do if [ "`cat dirs|grep $$i 2>/dev/null|wc -l`" -ne "1" ]; then deps=`cat dirs|grep $$i| grep -v "^$$i$$"|for i in \`cat|sed -e's,^$(TOPDIR)/,$$(TOPDIR)/,g'\`; do echo $$i/config.in; done`; echo `echo $$i/config.in|sed -e 's,^$(TOPDIR)/,$$(TOPDIR)/,'` : $$deps; fi; done ) >> $@ @-rm -f dirs $(QTDIR)/stamp-headers : @-rm -f $(QTDIR)/stamp-headers* @@ -20,48 +20,52 @@ choice config TARGET_RAMSES boolean "Ramses" config TARGET_SIMPAD boolean "SIMpad" endchoice config OPTIMIZE boolean "Use optimizations" default "y" if ! TARGET_X86 config DEBUG boolean "Enable debug builds" default n config RELEASE bool default y depends !DEBUG config QUICK_LAUNCH boolean "Enable Quick Launch" default n + +config OPIE_NO_OVERRIDE_QT + boolean "Build Opie against an unpatched version of Qt" + default n config SPECFILE string default "qws/linux-generic-g++" if TARGET_X86 && (! X11) default "linux-g++" if TARGET_X86 && X11 default "qws/linux-sharp-g++" if TARGET_SHARP && (! X11) default "linux-g++" if TARGET_SHARP && X11 default "qws/linux-ipaq-g++" if TARGET_IPAQ && (! X11) default "linux-g++" if TARGET_IPAQ && X11 default "qws/linux-ramses-g++" if TARGET_RAMSES && (! X11) default "linux-g++" if TARGET_RAMSES && X11 default "qws/linux-simpad-g++" if TARGET_SIMPAD && (! X11) default "linux-g++" if TARGET_SIMPAD && X11 config CUSTOMFILE string default "custom-ipaq.h" if TARGET_IPAQ default "custom-sharp.h" if TARGET_SHARP default "custom-ramses.h" if TARGET_RAMSES default "custom-ipaq.h" if TARGET_SIMPAD config OPTIMIZATIONS string "Optimization flags" depends OPTIMIZE diff --git a/library/library.pro b/library/library.pro index 80a0f62..ab1f451 100644 --- a/library/library.pro +++ b/library/library.pro @@ -97,55 +97,61 @@ SOURCES = calendar.cpp \ storage.cpp \ qpemessagebox.cpp \ backend/timeconversion.cpp \ qpedebug.cpp \ qpemenubar.cpp \ qpetoolbar.cpp \ backend/categories.cpp \ backend/stringutil.cpp \ backend/palmtoprecord.cpp \ backend/task.cpp \ backend/event.cpp \ backend/contact.cpp \ categorymenu.cpp \ categoryedit_p.cpp \ categoryselect.cpp \ categorywidget.cpp \ ir.cpp \ backend/vcc_yacc.cpp \ backend/vobject.cpp \ findwidget_p.cpp \ finddialog.cpp \ lnkproperties.cpp \ qt_override.cpp + + # Qt 3 compatibility HEADERS += quuid.h qcom.h qlibrary.h qlibrary_p.h SOURCES += quuid.cpp qlibrary.cpp qlibrary_unix.cpp INCLUDEPATH += $(OPIEDIR)/include backend LIBS += -ldl -lcrypt -lm INTERFACES = passwordbase_p.ui categoryeditbase_p.ui findwidgetbase_p.ui lnkpropertiesbase_p.ui TARGET = qpe DESTDIR = $(OPIEDIR)/lib$(PROJMAK) VERSION = 1.5.0.1 TRANSLATIONS = ../i18n/de/libqpe.ts \ ../i18n/nl/libqpe.ts \ ../i18n/xx/libqpe.ts \ ../i18n/en/libqpe.ts \ ../i18n/es/libqpe.ts \ ../i18n/fr/libqpe.ts \ ../i18n/hu/libqpe.ts \ ../i18n/ja/libqpe.ts \ ../i18n/ko/libqpe.ts \ ../i18n/no/libqpe.ts \ ../i18n/pl/libqpe.ts \ ../i18n/pt/libqpe.ts \ ../i18n/pt_BR/libqpe.ts \ ../i18n/sl/libqpe.ts \ ../i18n/zh_CN/libqpe.ts \ ../i18n/it/libqpe.ts \ ../i18n/zh_TW/libqpe.ts \ ../i18n/da/libqpe.ts include ( $(OPIEDIR)/include.pro ) + +contains( CONFIG, no-override ){ + DEFINES += OPIE_NO_OVERRIDE_QT +} diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index 28fb13a..feba8b6 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp @@ -1103,62 +1103,66 @@ void QPEApplication::setCurrentMode( int x, int y, int depth ) qwsServer->endDisplayReconfigure(); // Get all the running apps to reset QCopEnvelope env( "QPE/System", "reset()" ); } } void QPEApplication::reset() { // Reconnect to the screen qt_screen->disconnect(); qt_screen->connect( QString::null ); // Redraw everything applyStyle(); } /*! \internal */ void QPEApplication::applyStyle() { Config config( "qpe" ); config.setGroup( "Appearance" ); - #if QT_VERSION > 233 +#if QT_VERSION > 233 +#if !defined(OPIE_NO_OVERRIDE_QT) // don't block ourselves ... Opie::force_appearance = 0; static QString appname = Opie::binaryName ( ); QStringList ex = config. readListEntry ( "NoStyle", ';' ); int nostyle = 0; for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); break; } } +#else + int nostyle = 0; +#endif // Widget style QString style = config.readEntry( "Style", "FlatStyle" ); // don't set a custom style if ( nostyle & Opie::Force_Style ) style = "FlatStyle"; internalSetStyle ( style ); // Colors - from /etc/colors/Liquid.scheme QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) ); QColor btncolor( config.readEntry( "Button", "#96c8fa" ) ); QPalette pal( btncolor, bgcolor ); QString color = config.readEntry( "Highlight", "#73adef" ); pal.setColor( QColorGroup::Highlight, QColor( color ) ); color = config.readEntry( "HighlightedText", "#FFFFFF" ); pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); color = config.readEntry( "Text", "#000000" ); pal.setColor( QColorGroup::Text, QColor( color ) ); color = config.readEntry( "ButtonText", "#000000" ); pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); color = config.readEntry( "Base", "#FFFFFF" ); pal.setColor( QColorGroup::Base, QColor( color ) ); @@ -1173,52 +1177,54 @@ void QPEApplication::applyStyle() // don't set a custom deco if ( nostyle & Opie::Force_Decoration ) dec = ""; //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle); if ( dec != d->decorationName ) { qwsSetDecoration( new QPEDecoration( dec ) ); d->decorationName = dec; } // Font QString ff = config.readEntry( "FontFamily", font().family() ); int fs = config.readNumEntry( "FontSize", font().pointSize() ); // don't set a custom font if ( nostyle & Opie::Force_Font ) { ff = "Vera"; fs = 10; } setFont ( QFont ( ff, fs ), true ); +#if !defined(OPIE_NO_OVERRIDE_QT) // revert to global blocking policy ... Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; Opie::force_appearance &= ~nostyle; - #endif +#endif +#endif } void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) { #ifdef Q_WS_QWS QDataStream stream( data, IO_ReadOnly ); if ( msg == "applyStyle()" ) { applyStyle(); } else if ( msg == "toggleApplicationMenu()" ) { QWidget *active = activeWindow ( ); if ( active ) { QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); bool oldactive = man-> isActive ( ); man-> setActive( !man-> isActive() ); if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); } } } else if ( msg == "setDefaultRotation(int)" ) { diff --git a/library/qt_override.cpp b/library/qt_override.cpp index edda874..df5a419 100644 --- a/library/qt_override.cpp +++ b/library/qt_override.cpp @@ -1,171 +1,177 @@ #include <qpe/qpeapplication.h> #include <qwsdecoration_qws.h> #include <qcommonstyle.h> #include <qfontdatabase.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <limits.h> #include <sys/param.h> // for toolchains with old libc headers #include "qt_override_p.h" #if QT_VERSION > 233 struct color_fix_t { char *m_app; char *m_class; char *m_name; QColorGroup::ColorRole m_set; QColorGroup::ColorRole m_get; }; - +#ifndef OPIE_NO_OVERRIDE_QT static const color_fix_t apps_that_need_special_colors [] = { { "HancomMobileWord", "HTextEdit", 0, QColorGroup::Background, QColorGroup::Base }, { "neocal", "Display", 0, QColorGroup::Background, QColorGroup::Base }, - + { 0, 0, 0, QColorGroup::Base, QColorGroup::Base } }; static const char * const apps_that_need_pointsizes_times_10 [] = { "HancomMobileWord", "hancomsheet", "HancomPresenterViewer", - + 0 }; int Opie::force_appearance = 0; // Return the *real* name of the binary - not just a quick guess // by looking at argv [0] (which could be anything) static void binaryNameFree ( ) { ::free ((void *) Opie::binaryName ( )); // we need to cast away the const here } const char *Opie::binaryName ( ) { static const char *appname = 0; - + if ( !appname ) { char dst [PATH_MAX + 1]; int l = ::readlink ( "/proc/self/exe", dst, PATH_MAX ); - - if ( l <= 0 ) + + if ( l <= 0 ) l = 0; - + dst [l] = 0; const char *b = ::strrchr ( dst, '/' ); appname = ::strdup ( b ? b + 1 : dst ); - + ::atexit ( binaryNameFree ); - } + } return appname; } +#else +int Opie::force_appearance = 0; +#endif -// Fix for a toolchain incompatibility (binaries compiled with +// Fix for a toolchain incompatibility (binaries compiled with // old tcs using shared libs compiled with newer tcs) extern "C" { extern void __gmon_start__ ( ) __attribute__(( weak )); -extern void __gmon_start__ ( ) +extern void __gmon_start__ ( ) { } } // Fix for apps, that use QPainter::eraseRect() which doesn't work with styles -// that set a background pixmap (it would be easier to fix eraseRect(), but +// that set a background pixmap (it would be easier to fix eraseRect(), but // TT made it an inline ...) void QPEApplication::polish ( QWidget *w ) { +#ifndef OPIE_NO_OVERRIDE_QT // qDebug ( "QPEApplication::polish()" ); for ( const color_fix_t *ptr = apps_that_need_special_colors; ptr-> m_app; ptr++ ) { if (( ::strcmp ( Opie::binaryName ( ), ptr-> m_app ) == 0 ) && ( ptr-> m_class ? w-> inherits ( ptr-> m_class ) : true ) && ( ptr-> m_name ? ( ::strcmp ( w-> name ( ), ptr-> m_name ) == 0 ) : true )) { QPalette pal = w-> palette ( ); pal. setColor ( ptr-> m_set, pal. color ( QPalette::Active, ptr-> m_get )); w-> setPalette ( pal ); } } +#endif QApplication::polish ( w ); } +#ifndef OPIE_NO_OVERRIDE_QT // Fix for the binary incompatibility that TT introduced in Qt/E 2.3.4 -- point sizes // were multiplied by 10 (which was incorrect) QValueList <int> QFontDatabase::pointSizes ( QString const &family, QString const &style, QString const &charset ) { // qDebug ( "QFontDatabase::pointSizes()" ); QValueList <int> sl = pointSizes_NonWeak ( family, style, charset ); for ( const char * const *ptr = apps_that_need_pointsizes_times_10; *ptr; ptr++ ) { if ( ::strcmp ( Opie::binaryName ( ), *ptr ) == 0 ) { - for ( QValueList <int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) - *it *= 10; + for ( QValueList <int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) + *it *= 10; } } return sl; } // Various style/font/color related overrides for weak symbols in Qt/E, // which allows us to force the usage of the global Opie appearance. void QApplication::setStyle ( QStyle *style ) { // qDebug ( "QApplication::setStyle()" ); if ( Opie::force_appearance & Opie::Force_Style ) delete style; else QApplication::setStyle_NonWeak ( style ); } void QApplication::setPalette ( const QPalette &pal, bool informWidgets, const char *className ) { // qDebug ( "QApplication::setPalette()" ); if (!( Opie::force_appearance & Opie::Force_Style )) QApplication::setPalette_NonWeak ( pal, informWidgets, className ); } void QApplication::setFont ( const QFont &fnt, bool informWidgets, const char *className ) { // qDebug ( "QApplication::setFont()" ); if (!( Opie::force_appearance & Opie::Force_Font )) QApplication::setFont_NonWeak ( fnt, informWidgets, className ); } - + void QApplication::qwsSetDecoration ( QWSDecoration *deco ) { // qDebug ( "QApplication::qwsSetDecoration()" ); if ( Opie::force_appearance & Opie::Force_Decoration ) delete deco; else QApplication::qwsSetDecoration_NonWeak ( deco ); } - -#endif
\ No newline at end of file +#endif +#endif |