summaryrefslogtreecommitdiff
authorsandman <sandman>2002-12-03 01:11:05 (UTC)
committer sandman <sandman>2002-12-03 01:11:05 (UTC)
commit5a3a7cb4b7d0c1b569e68fa1cde43b9c10376e80 (patch) (side-by-side diff)
tree512867937241ef5a50ea7ac86499d534226d3013
parentee1180d2aa5e59db52078aa5dee06477093b3d35 (diff)
downloadopie-5a3a7cb4b7d0c1b569e68fa1cde43b9c10376e80.zip
opie-5a3a7cb4b7d0c1b569e68fa1cde43b9c10376e80.tar.gz
opie-5a3a7cb4b7d0c1b569e68fa1cde43b9c10376e80.tar.bz2
Two additional functions preloaded to make HancomWord happy ...
1) the old pointSizes() problem in the FontDatabase (bic change from qt/e 2.3.3 -> 2.3.4) 2) the QPalette for the text widget has to be adjusted (hancom uses QPainter::eraseRect(), which doesn't work with background pixmaps, like e.g. in liquid)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/libpreload/libpreload.pro2
-rw-r--r--core/launcher/libpreload/preload.cpp45
2 files changed, 45 insertions, 2 deletions
diff --git a/core/launcher/libpreload/libpreload.pro b/core/launcher/libpreload/libpreload.pro
index 7630d01..ed426da 100644
--- a/core/launcher/libpreload/libpreload.pro
+++ b/core/launcher/libpreload/libpreload.pro
@@ -1,14 +1,14 @@
TEMPLATE = lib
-CONFIG = release warn_on
+CONFIG = qt release warn_on
SOURCES = preload.cpp
HEADERS =
INCLUDEPATH += $(QTDIR)/include
DESTDIR = $(QTDIR)/lib
TARGET = preload
VERSION = 1.0.0
diff --git a/core/launcher/libpreload/preload.cpp b/core/launcher/libpreload/preload.cpp
index cc1baac..345620b 100644
--- a/core/launcher/libpreload/preload.cpp
+++ b/core/launcher/libpreload/preload.cpp
@@ -1,95 +1,138 @@
#define _GNU_SOURCE
//#define private public
//#define protected public
+#include <qapplication.h>
#include <qwsdecoration_qws.h>
#include <qcommonstyle.h>
//#include <qapplication.h>
//#include <qfont.h>
//class QStyle;
-class QApplication;
+//class QApplication;
class QFont;
//class QWSDecoration;
+class QFontDatabase;
#include <dlfcn.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
typedef void ( *qapp_setstyle_t ) ( QStyle * );
typedef void ( *qapp_setdeco_t ) ( QWSDecoration * );
typedef void ( *qapp_setfont_t ) ( const QFont &, bool, const char * );
+typedef void ( *qapp_polish_t ) ( QApplication *, QWidget * );
+typedef QValueList <int> ( *qfdb_pointsizes_t ) ( QFontDatabase *, QString const &, QString const &, QString const & );
static int *opie_block_style_p = 0;
extern "C" {
extern void __gmon_start ( ) __attribute(( weak ));
extern void __gmon_start__ ( )
{
}
static void *resolve_symbol ( const char *sym )
{
void *adr = ::dlsym ( RTLD_NEXT, sym );
if ( !adr )
::fprintf ( stderr, "PANIC: Could not resolve symbol \"%s\"\n", sym );
return adr;
}
+void polish__12QApplicationP7QWidget ( QApplication *that, QWidget *w )
+{
+ static qapp_polish_t qpolish = 0;
+
+ if ( !qpolish )
+ qpolish = (qapp_polish_t) resolve_symbol ( "polish__12QApplicationP7QWidget" );
+
+ if ( qpolish )
+ ( *qpolish ) ( that, w );
+
+ if (( ::strcmp ( qApp-> argv ( ) [0], "HancomMobileWord" ) == 0 ) && ( w-> inherits ( "HTextEdit" ))) {
+ QPalette pal = w-> palette ( );
+ pal. setColor ( QColorGroup::Background, pal. color ( QPalette::Active, QColorGroup::Base ));
+ w-> setPalette ( pal );
+ // w-> setPalette ( w-> palette ( ). active ( ). color ( QColorGroup::Base ));
+ }
+}
+
+extern QValueList <int> pointSizes__13QFontDatabaseRC7QStringN21 ( QFontDatabase *that, QString const &family, QString const &style, QString const &charset )
+{
+ static qfdb_pointsizes_t qpointsizes = 0;
+
+ if ( !qpointsizes )
+ qpointsizes = (qfdb_pointsizes_t) resolve_symbol ( "pointSizes__13QFontDatabaseRC7QStringN21" );
+
+ QValueList <int> sl;
+
+ if ( qpointsizes ) {
+ sl = ( *qpointsizes ) ( that, family, style, charset );
+
+ if ( ::strcmp ( qApp-> argv ( ) [0], "HancomMobileWord" ) == 0 ) {
+ for ( QValueList <int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it )
+ *it *= 10;
+ }
+ }
+
+ return sl;
+}
+
extern void setStyle__12QApplicationP6QStyle ( QStyle *style )
{
static qapp_setstyle_t qsetstyle = 0;
if ( !qsetstyle )
qsetstyle = (qapp_setstyle_t) resolve_symbol ( "setStyle__12QApplicationP6QStyle" );
if ( !opie_block_style_p )
opie_block_style_p = (int *) resolve_symbol ( "opie_block_style" );
if ( !qsetstyle || ( opie_block_style_p && ( *opie_block_style_p & 0x01 )))
delete style;
else
( *qsetstyle ) ( style );
}
extern void setFont__12QApplicationRC5QFontbPCc ( const QFont &fnt, bool informWidgets, const char * className )
{
static qapp_setfont_t qsetfont = 0;
if ( !qsetfont )
qsetfont = (qapp_setfont_t) resolve_symbol ( "setFont__12QApplicationRC5QFontbPCc" );
if ( !opie_block_style_p )
opie_block_style_p = (int *) resolve_symbol ( "opie_block_style" );
if ( qsetfont && !( opie_block_style_p && ( *opie_block_style_p & 0x02 )))
( *qsetfont ) ( fnt, informWidgets, className );
}
extern void qwsSetDecoration__12QApplicationP13QWSDecoration ( QWSDecoration *deco )
{
static qapp_setdeco_t qsetdeco = 0;
if ( !qsetdeco )
qsetdeco = (qapp_setdeco_t) resolve_symbol ( "qwsSetDecoration__12QApplicationP13QWSDecoration" );
if ( !opie_block_style_p )
opie_block_style_p = (int *) resolve_symbol ( "opie_block_style" );
if ( !qsetdeco || ( opie_block_style_p && ( *opie_block_style_p & 0x04 )))
delete deco;
else
( *qsetdeco ) ( deco );
}
}