-rw-r--r-- | Rules.make | 3 | ||||
-rw-r--r-- | config.in | 4 | ||||
-rw-r--r-- | library/qpeapplication.h | 4 | ||||
-rw-r--r-- | library/qt_override.cpp | 9 |
4 files changed, 18 insertions, 2 deletions
@@ -3,96 +3,99 @@ force: $(configs) : $(call makecfg,$@) $(TOPDIR)/gen.pro : $(TOPDIR)/.config echo > $@ # added for threaded version ifneq ($(CONFIG_THREADED),) echo CONFIG += thread >> $@ else echo CONFIG -= thread >> $@ endif ifneq ($(CONFIG_DEBUG),) echo CONFIG += debug >> $@ echo CONFIG -= release >> $@ echo DEFINES += "QT_COMPONENT_DEBUG=2" >> $@ echo DEFINES += QT_DEBUG >> $@ else echo CONFIG -= debug >> $@ echo CONFIG += release >> $@ echo DEFINES += "OPIE_NO_DEBUG" >> $@ endif ifeq ($(filter 3.%,$(QTE_VERSION)),) # not qt3 echo CONFIG -= qt3 >> $@ else echo CONFIG += qt3 >> $@ endif ifneq ($(CONFIG_QUICK_LAUNCH),) echo contains\( CONFIG, quick-app \) \{ >> $@ echo CONFIG -= quick-app >> $@ echo CONFIG += quick-app-lib >> $@ echo QUICKLAUNCH_PATH = $(CONFIG_QUICKLAUNCH_PATH) >> $@ echo \} >> $@ else echo contains\( CONFIG, quick-app \) \{ >> $@ echo CONFIG -= quick-app >> $@ echo CONFIG += quick-app-bin >> $@ echo \} >> $@ endif ifeq ($(CONFIG_SQL_PIM_BACKEND),y) echo ENABLE_SQL_PIM_BACKEND=$(CONFIG_SQL_PIM_BACKEND) >> $@ else echo ENABLE_SQL_PIM_BACKEND=n >> $@ endif ifeq ($(CONFIG_OPIE_NO_OVERRIDE_QT),y) echo CONFIG += no-override >> $@ endif +ifeq ($(CONFIG_OPIE_NO_ERASERECT_FIX),y) + echo DEFINES += OPIE_NO_ERASE_RECT_HACKFIX >> $@ +endif ifeq ($(CONFIG_OPIE_NO_BUILTIN_SHUTDOWN),y) echo DEFINES += OPIE_NO_BUILTIN_SHUTDOWN >> $@ endif ifeq ($(CONFIG_OPIE_NO_BUILTIN_CALIBRATE),y) echo DEFINES += OPIE_NO_BUILTIN_CALIBRATE >> $@ endif ifeq ($(CONFIG_USE_REALTIME_AUDIO_THREAD),y) echo DEFINES += USE_REALTIME_AUDIO_THREAD >> $@ endif ifeq ($(CONFIG_USE_FILE_NOTIFICATION),y) echo DEFINES += USE_FILE_NOTIFICATION >> $@ endif ifeq ($(CONFIG_QT_QWS_ALLOW_CLOCK),y) echo DEFINES += QT_QWS_ALLOW_OVERCLOCK >> $@ endif ifeq ($(CONFIG_OPIE_HIGH_RES_SMALL_PHY),y) echo DEFINES += OPIE_HIGH_RES_SMALL_PHY >> $@ endif ifeq ($(CONFIG_OPIE_NEW_ALLOC),y) echo DEFINES += OPIE_NEW_MALLOC >> $@ endif ifeq ($(CONFIG_OPIE_NO_SOUND_PCM_READ_BITS),y) echo DEFINES += OPIE_NO_SOUND_PCM_READ_BITS >> $@ endif echo DEFINES += OPIE_SOUND_FRAGMENT_SHIFT=$(CONFIG_OPIE_SOUND_FRAGMENT_SHIFT) >> $@ ifeq ($(CONFIG_OPIE_WE_VERSION_OVERRIDE),y) echo DEFINES += OPIE_WE_VERSION=$(CONFIG_OPIE_WE_VERSION) >> $@ endif # Write LIB dirs and INC dirs... ifeq ($(CONFIG_LIBETPAN_DEP),y) echo LIBETPAN_LIB_DIR = $(CONFIG_LIBETPAN_LIB_DIR) >> $@ echo LIBETPAN_INC_DIR = $(CONFIG_LIBETPAN_INC_DIR) >> $@ endif ifeq ($(CONFIG_LIBPCAP_DEP),y) echo LIBPCAP_LIB_DIR = $(CONFIG_LIBPCAP_LIB_DIR) >> $@ echo LIBPCAP_INC_DIR = $(CONFIG_LIBPCAP_INC_DIR) >> $@ endif ifeq ($(CONFIG_LIBSQLITE_DEP),y) echo LIBSQLITE_LIB_DIR = $(CONFIG_LIBSQLITE_LIB_DIR) >> $@ echo LIBSQLITE_INC_DIR = $(CONFIG_LIBSQLITE_INC_DIR) >> $@ endif ifeq ($(CONFIG_LIBXINE_DEP),y) echo LIBXINE_LIB_DIR = $(CONFIG_LIBXINE_LIB_DIR) >> $@ echo LIBXINE_INC_DIR = $(CONFIG_LIBXINE_INC_DIR) >> $@ endif ifeq ($(CONFIG_LIBIPK_DEP),y) echo LIBIPK_LIB_DIR = $(CONFIG_LIBIPK_LIB_DIR) >> $@ echo LIBIPK_INC_DIR = $(CONFIG_LIBIPK_INC_DIR) >> $@ @@ -61,96 +61,100 @@ config QUICKLAUNCH_PATH string "Path to quicklauncher" default "./quicklauncher" if TARGET_X86 default "/opt/QtPalmtop/bin/quicklauncher" if ! TARGET_X86 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 default "qws/linux-yopy-g++" if TARGET_YOPY && (! X11) default "qws/macx-generic-g++" if TARGET_MACOSX && (! 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 default "custom-yopy.h" if TARGET_YOPY config OPTIMIZATIONS string "Optimization flags" depends OPTIMIZE default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_IPAQ default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_YOPY default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SHARP default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_RAMSES default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SIMPAD default "-march=armv5te -mtune=xscale -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_C700 config EXPERIMENTAL bool "Prompt for development and/or incomplete items" default y endmenu menu "Configuration" config OPIE_NO_OVERRIDE_QT boolean "Build Opie against an unpatched version of Qt" default n +config OPIE_NO_ERASERECT_FIX + boolean "Disable Fixup eraseRect for HancomMobileWord,neocal.. to make libopiecore work on Sharps libqpe" + default n + config OPIE_NO_BUILTIN_SHUTDOWN boolean "Disable the built in shutdown application" default y config OPIE_NO_BUILTIN_CALIBRATE boolean "Disable the built in calibrate application" default y if TARGET_YOPY default n if ! TARGET_YOPY config OPIE_SOUND_FRAGMENT_SHIFT string "The sound fragment used in Opie Player I" default "14" if TARGET_IPAQ default "16" if ! TARGET_IPAQ config USE_REALTIME_AUDIO_THREAD boolean "Use a realtime thread in Opie Player I" default y if TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP default n if ! (TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP) config QT_QWS_ALLOW_OVERCLOCK boolean "Allow the user to overclock the device" depends TARGET_RAMSES default n config OPIE_HIGH_RES_SMALL_PHY boolean "Resolution is bigger than physical screen" default y if TARGET_C700 default n if ! TARGET_C700 config USE_FILE_NOTIFICATION boolean "Substitute (some) polling interfaces with OFileNotifier" default y config OPIE_NEW_ALLOC boolean "Use malloc and free for the implementation" default y if TARGET_RAMSES || TARGET_IPAQ || TARGET_SIMPAD || TARGET_SHARP default n if ! (TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP) config OPIE_NO_SOUND_PCM_READ_BITS boolean "There is not a pcm_read_bits io control" default y if TARGET_SHARP default n if ! TARGET_SHARP endmenu menu "Dependencies" source dependencies.in endmenu diff --git a/library/qpeapplication.h b/library/qpeapplication.h index 8c85ad0..d2782e4 100644 --- a/library/qpeapplication.h +++ b/library/qpeapplication.h @@ -119,98 +119,100 @@ public: static InputMethodHint inputMethodHint( QWidget * ); void showMainWidget( QWidget*, bool nomax=FALSE ); void showMainDocumentWidget( QWidget*, bool nomax=FALSE ); static void showDialog( QDialog*, bool nomax=FALSE ); static int execDialog( QDialog*, bool nomax=FALSE ); static void showWidget( QWidget*, bool nomax=FALSE ); /* Merge setTempScreenSaverMode */ #ifdef QTOPIA_INTERNAL_INITAPP void initApp( int argv, char **argv ); #endif static void setKeepRunning(); bool keepRunning() const; bool keyboardGrabbed() const; int exec(); signals: void clientMoused(); void timeChanged(); void clockChanged( bool pm ); void micChanged( bool muted ); void volumeChanged( bool muted ); void appMessage( const QCString& msg, const QByteArray& data); void weekChanged( bool startOnMonday ); void dateFormatChanged( DateFormat ); void flush(); void reload(); /* linkChanged signal */ private slots: void systemMessage( const QCString &msg, const QByteArray &data ); void pidMessage( const QCString &msg, const QByteArray &data ); void removeSenderFromStylusDict(); void hideOrQuit(); protected: bool qwsEventFilter( QWSEvent * ); void internalSetStyle( const QString &style ); void prepareForTermination(bool willrestart); virtual void restart(); virtual void shutdown(); bool eventFilter( QObject *, QEvent * ); void timerEvent( QTimerEvent * ); bool raiseAppropriateWindow(); virtual void tryQuit(); -#if QT_VERSION > 233 +#ifndef OPIE_NO_ERASE_RECT_HACKFIX + #if QT_VERSION > 233 virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!) + #endif #endif private: #ifndef QT_NO_TRANSLATION void installTranslation( const QString& baseName ); #endif void mapToDefaultAction( QWSKeyEvent *ke, int defKey ); void processQCopFile(); #if defined(Q_WS_QWS) && !defined(QT_NO_COP) QCopChannel *sysChannel; QCopChannel *pidChannel; #endif QPEApplicationData *d; bool reserved_sh; }; inline void QPEApplication::showDialog( QDialog* d, bool nomax ) { showWidget( d, nomax ); } inline int QPEApplication::execDialog( QDialog* d, bool nomax ) { showDialog( d, nomax ); return d->exec(); } #ifdef Q_WS_QWS extern Q_EXPORT QRect qt_maxWindowRect; #endif inline void QPEApplication::showWidget( QWidget* wg, bool nomax ) { if ( wg->isVisible() ) wg->show(); else { if ( !nomax && ( qApp->desktop()->width() <= 320 ) ) { wg->showMaximized(); } else { #ifdef Q_WS_QWS QSize desk = QSize( qApp->desktop()->width(), qApp->desktop()->height() ); diff --git a/library/qt_override.cpp b/library/qt_override.cpp index 4d1f475..56f82d7 100644 --- a/library/qt_override.cpp +++ b/library/qt_override.cpp @@ -1,160 +1,167 @@ #include <qpe/qpeapplication.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 +#ifndef OPIE_NO_ERASE_RECT_HACKFIX 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 } }; +#endif + +#ifndef OPIE_NO_OVERRIDE_QT + 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 ) 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 // old tcs using shared libs compiled with newer tcs) extern "C" { extern void __gmon_start__ ( ) __attribute__(( weak )); extern void __gmon_start__ ( ) { } } +#ifndef OPIE_NO_ERASE_RECT_HACKFIX // 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 // 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 ); } +#endif #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; } } 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 )) |