summaryrefslogtreecommitdiff
path: root/library
authorzecke <zecke>2004-05-17 21:15:42 (UTC)
committer zecke <zecke>2004-05-17 21:15:42 (UTC)
commit598c9bc76840120fa3efdb000461bae2c1fef639 (patch) (unidiff)
tree4cf0c66149f7bee38a2bcface9e7fbfd0d28b85a /library
parent1827ce23d0719a22c14613dc5859093818da1d0a (diff)
downloadopie-598c9bc76840120fa3efdb000461bae2c1fef639.zip
opie-598c9bc76840120fa3efdb000461bae2c1fef639.tar.gz
opie-598c9bc76840120fa3efdb000461bae2c1fef639.tar.bz2
ich@opiezilla:~/programming/opie/head/opie$ nm lib/libopiecore2.so | grep polish
U _ZN14QPEApplication6polishEP7QWidget ich@opiezilla:~/programming/opie/head/opie$ nm lib/libopiecore2.so | grep polish U _ZN12QApplication6polishEP7QWidget in qt_override we had to overwrite the Palette for some widgets for some styles (setting no background liquid and such) we overwrote the polish method. As we did not inherit from QPEApplication the 'polish' symbol was only internal to libqpe and this way Opie apps worked on Opies and Sharps libqpe, and Sharp apps work on our libqpe. Now with libopiecore the compiler tries to include different symbols as shown above. So for now we could disable the legacy palette polishing which shouldn't hurt anyway. OApplication is the source of all evil, we wouldn't 'pull' in the polish symbol... but having a 'shadow' weak symbol as backup isn't good as well. Chicken you may enable the option in config.in...
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.h4
-rw-r--r--library/qt_override.cpp9
2 files changed, 11 insertions, 2 deletions
diff --git a/library/qpeapplication.h b/library/qpeapplication.h
index 8c85ad0..d2782e4 100644
--- a/library/qpeapplication.h
+++ b/library/qpeapplication.h
@@ -1,268 +1,270 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef __QPE_APPLICATION_H__ 20#ifndef __QPE_APPLICATION_H__
21#define __QPE_APPLICATION_H__ 21#define __QPE_APPLICATION_H__
22 22
23#include <stdlib.h> // for setenv() 23#include <stdlib.h> // for setenv()
24 24
25#include <qglobal.h> 25#include <qglobal.h>
26#include <qapplication.h> 26#include <qapplication.h>
27#include <qdialog.h> 27#include <qdialog.h>
28#include <qwsdisplay_qws.h> 28#include <qwsdisplay_qws.h>
29#if defined(_WS_QWS_) && !defined(Q_WS_QWS) 29#if defined(_WS_QWS_) && !defined(Q_WS_QWS)
30#define Q_WS_QWS 30#define Q_WS_QWS
31#endif 31#endif
32#include "qpedecoration_qws.h" 32#include "qpedecoration_qws.h"
33#include "timestring.h" 33#include "timestring.h"
34 34
35class QCopChannel; 35class QCopChannel;
36class QPEApplicationData; 36class QPEApplicationData;
37class QWSEvent; 37class QWSEvent;
38class QWSKeyEvent; 38class QWSKeyEvent;
39 39
40/** 40/**
41 \brief The QPEApplication class implements various system services 41 \brief The QPEApplication class implements various system services
42 that are available to all Qtopia applications. 42 that are available to all Qtopia applications.
43 43
44 Simply by using QPEApplication instead of QApplication, a standard Qt 44 Simply by using QPEApplication instead of QApplication, a standard Qt
45 application becomes a Qtopia application. It automatically follows 45 application becomes a Qtopia application. It automatically follows
46 style changes, quits and raises, and in the 46 style changes, quits and raises, and in the
47 case of \link docwidget.html document-oriented\endlink applications, 47 case of \link docwidget.html document-oriented\endlink applications,
48 changes the currently displayed document in response to the environment. 48 changes the currently displayed document in response to the environment.
49 49
50 To create a \link docwidget.html document-oriented\endlink 50 To create a \link docwidget.html document-oriented\endlink
51 application use showMainDocumentWidget(); to create a 51 application use showMainDocumentWidget(); to create a
52 non-document-oriented application use showMainWidget(). The 52 non-document-oriented application use showMainWidget(). The
53 keepRunning() function indicates whether the application will 53 keepRunning() function indicates whether the application will
54 continue running after it's processed the last \link qcop.html 54 continue running after it's processed the last \link qcop.html
55 QCop\endlink message. This can be changed using setKeepRunning(). 55 QCop\endlink message. This can be changed using setKeepRunning().
56 56
57 A variety of signals are emitted when certain events occur, for 57 A variety of signals are emitted when certain events occur, for
58 example, timeChanged(), clockChanged(), weekChanged(), 58 example, timeChanged(), clockChanged(), weekChanged(),
59 dateFormatChanged() and volumeChanged(). If the application receives 59 dateFormatChanged() and volumeChanged(). If the application receives
60 a \link qcop.html QCop\endlink message on the application's 60 a \link qcop.html QCop\endlink message on the application's
61 QPE/Application/\e{appname} channel, the appMessage() signal is 61 QPE/Application/\e{appname} channel, the appMessage() signal is
62 emitted. There are also flush() and reload() signals, which 62 emitted. There are also flush() and reload() signals, which
63 are emitted when synching begins and ends respectively - upon these 63 are emitted when synching begins and ends respectively - upon these
64 signals, the application should save and reload any data 64 signals, the application should save and reload any data
65 files that are involved in synching. Most of these signals will initially 65 files that are involved in synching. Most of these signals will initially
66 be received and unfiltered through the appMessage() signal. 66 be received and unfiltered through the appMessage() signal.
67 67
68 This class also provides a set of useful static functions. The 68 This class also provides a set of useful static functions. The
69 qpeDir() and documentDir() functions return the respective paths. 69 qpeDir() and documentDir() functions return the respective paths.
70 The grabKeyboard() and ungrabKeyboard() functions are used to 70 The grabKeyboard() and ungrabKeyboard() functions are used to
71 control whether the application takes control of the device's 71 control whether the application takes control of the device's
72 physical buttons (e.g. application launch keys). The stylus' mode of 72 physical buttons (e.g. application launch keys). The stylus' mode of
73 operation is set with setStylusOperation() and retrieved with 73 operation is set with setStylusOperation() and retrieved with
74 stylusOperation(). There are also setInputMethodHint() and 74 stylusOperation(). There are also setInputMethodHint() and
75 inputMethodHint() functions. 75 inputMethodHint() functions.
76 76
77 \ingroup qtopiaemb 77 \ingroup qtopiaemb
78*/ 78*/
79class QPEApplication : public QApplication 79class QPEApplication : public QApplication
80{ 80{
81 Q_OBJECT 81 Q_OBJECT
82public: 82public:
83 QPEApplication( int& argc, char **argv, Type=GuiClient ); 83 QPEApplication( int& argc, char **argv, Type=GuiClient );
84 ~QPEApplication(); 84 ~QPEApplication();
85 85
86 static QString qpeDir(); 86 static QString qpeDir();
87 static QString documentDir(); 87 static QString documentDir();
88 void applyStyle(); 88 void applyStyle();
89 void reset(); 89 void reset();
90 static int defaultRotation(); 90 static int defaultRotation();
91 static void setDefaultRotation(int r); 91 static void setDefaultRotation(int r);
92 static void setCurrentRotation(int r); 92 static void setCurrentRotation(int r);
93 static void setCurrentMode(int x, int y, int depth ); 93 static void setCurrentMode(int x, int y, int depth );
94 static void grabKeyboard(); 94 static void grabKeyboard();
95 static void ungrabKeyboard(); 95 static void ungrabKeyboard();
96 96
97 enum StylusMode { 97 enum StylusMode {
98 LeftOnly, 98 LeftOnly,
99 RightOnHold 99 RightOnHold
100 // RightOnHoldLeftDelayed, etc. 100 // RightOnHoldLeftDelayed, etc.
101 }; 101 };
102 static void setStylusOperation( QWidget*, StylusMode ); 102 static void setStylusOperation( QWidget*, StylusMode );
103 static StylusMode stylusOperation( QWidget* ); 103 static StylusMode stylusOperation( QWidget* );
104 104
105 enum InputMethodHint { 105 enum InputMethodHint {
106 Normal, 106 Normal,
107 AlwaysOff, 107 AlwaysOff,
108 AlwaysOn 108 AlwaysOn
109 }; 109 };
110 110
111 enum screenSaverHint { 111 enum screenSaverHint {
112 Disable = 0, 112 Disable = 0,
113 DisableLightOff = 1, 113 DisableLightOff = 1,
114 DisableSuspend = 2, 114 DisableSuspend = 2,
115 Enable = 100 115 Enable = 100
116 }; 116 };
117 117
118 static void setInputMethodHint( QWidget *, InputMethodHint ); 118 static void setInputMethodHint( QWidget *, InputMethodHint );
119 static InputMethodHint inputMethodHint( QWidget * ); 119 static InputMethodHint inputMethodHint( QWidget * );
120 120
121 void showMainWidget( QWidget*, bool nomax=FALSE ); 121 void showMainWidget( QWidget*, bool nomax=FALSE );
122 void showMainDocumentWidget( QWidget*, bool nomax=FALSE ); 122 void showMainDocumentWidget( QWidget*, bool nomax=FALSE );
123 static void showDialog( QDialog*, bool nomax=FALSE ); 123 static void showDialog( QDialog*, bool nomax=FALSE );
124 static int execDialog( QDialog*, bool nomax=FALSE ); 124 static int execDialog( QDialog*, bool nomax=FALSE );
125 static void showWidget( QWidget*, bool nomax=FALSE ); 125 static void showWidget( QWidget*, bool nomax=FALSE );
126 /* Merge setTempScreenSaverMode */ 126 /* Merge setTempScreenSaverMode */
127#ifdef QTOPIA_INTERNAL_INITAPP 127#ifdef QTOPIA_INTERNAL_INITAPP
128 void initApp( int argv, char **argv ); 128 void initApp( int argv, char **argv );
129#endif 129#endif
130 130
131 static void setKeepRunning(); 131 static void setKeepRunning();
132 bool keepRunning() const; 132 bool keepRunning() const;
133 133
134 bool keyboardGrabbed() const; 134 bool keyboardGrabbed() const;
135 135
136 int exec(); 136 int exec();
137 137
138signals: 138signals:
139 void clientMoused(); 139 void clientMoused();
140 void timeChanged(); 140 void timeChanged();
141 void clockChanged( bool pm ); 141 void clockChanged( bool pm );
142 void micChanged( bool muted ); 142 void micChanged( bool muted );
143 void volumeChanged( bool muted ); 143 void volumeChanged( bool muted );
144 void appMessage( const QCString& msg, const QByteArray& data); 144 void appMessage( const QCString& msg, const QByteArray& data);
145 void weekChanged( bool startOnMonday ); 145 void weekChanged( bool startOnMonday );
146 void dateFormatChanged( DateFormat ); 146 void dateFormatChanged( DateFormat );
147 void flush(); 147 void flush();
148 void reload(); 148 void reload();
149 /* linkChanged signal */ 149 /* linkChanged signal */
150 150
151private slots: 151private slots:
152 void systemMessage( const QCString &msg, const QByteArray &data ); 152 void systemMessage( const QCString &msg, const QByteArray &data );
153 void pidMessage( const QCString &msg, const QByteArray &data ); 153 void pidMessage( const QCString &msg, const QByteArray &data );
154 void removeSenderFromStylusDict(); 154 void removeSenderFromStylusDict();
155 void hideOrQuit(); 155 void hideOrQuit();
156 156
157protected: 157protected:
158 bool qwsEventFilter( QWSEvent * ); 158 bool qwsEventFilter( QWSEvent * );
159 void internalSetStyle( const QString &style ); 159 void internalSetStyle( const QString &style );
160 void prepareForTermination(bool willrestart); 160 void prepareForTermination(bool willrestart);
161 virtual void restart(); 161 virtual void restart();
162 virtual void shutdown(); 162 virtual void shutdown();
163 bool eventFilter( QObject *, QEvent * ); 163 bool eventFilter( QObject *, QEvent * );
164 void timerEvent( QTimerEvent * ); 164 void timerEvent( QTimerEvent * );
165 bool raiseAppropriateWindow(); 165 bool raiseAppropriateWindow();
166 virtual void tryQuit(); 166 virtual void tryQuit();
167#if QT_VERSION > 233 167#ifndef OPIE_NO_ERASE_RECT_HACKFIX
168 #if QT_VERSION > 233
168 virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!) 169 virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!)
170 #endif
169#endif 171#endif
170private: 172private:
171#ifndef QT_NO_TRANSLATION 173#ifndef QT_NO_TRANSLATION
172 void installTranslation( const QString& baseName ); 174 void installTranslation( const QString& baseName );
173#endif 175#endif
174 void mapToDefaultAction( QWSKeyEvent *ke, int defKey ); 176 void mapToDefaultAction( QWSKeyEvent *ke, int defKey );
175 void processQCopFile(); 177 void processQCopFile();
176 178
177#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 179#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
178 QCopChannel *sysChannel; 180 QCopChannel *sysChannel;
179 QCopChannel *pidChannel; 181 QCopChannel *pidChannel;
180#endif 182#endif
181 QPEApplicationData *d; 183 QPEApplicationData *d;
182 184
183 bool reserved_sh; 185 bool reserved_sh;
184 186
185 187
186 188
187}; 189};
188 190
189inline void QPEApplication::showDialog( QDialog* d, bool nomax ) 191inline void QPEApplication::showDialog( QDialog* d, bool nomax )
190{ 192{
191 showWidget( d, nomax ); 193 showWidget( d, nomax );
192} 194}
193 195
194inline int QPEApplication::execDialog( QDialog* d, bool nomax ) 196inline int QPEApplication::execDialog( QDialog* d, bool nomax )
195{ 197{
196 showDialog( d, nomax ); 198 showDialog( d, nomax );
197 return d->exec(); 199 return d->exec();
198} 200}
199 201
200#ifdef Q_WS_QWS 202#ifdef Q_WS_QWS
201extern Q_EXPORT QRect qt_maxWindowRect; 203extern Q_EXPORT QRect qt_maxWindowRect;
202#endif 204#endif
203 205
204inline void QPEApplication::showWidget( QWidget* wg, bool nomax ) 206inline void QPEApplication::showWidget( QWidget* wg, bool nomax )
205{ 207{
206 if ( wg->isVisible() ) 208 if ( wg->isVisible() )
207 wg->show(); 209 wg->show();
208 else 210 else
209 { 211 {
210 if ( !nomax 212 if ( !nomax
211 && ( qApp->desktop()->width() <= 320 ) ) 213 && ( qApp->desktop()->width() <= 320 ) )
212 { 214 {
213 wg->showMaximized(); 215 wg->showMaximized();
214 } else { 216 } else {
215 #ifdef Q_WS_QWS 217 #ifdef Q_WS_QWS
216 QSize desk = QSize( qApp->desktop()->width(), qApp->desktop()->height() ); 218 QSize desk = QSize( qApp->desktop()->width(), qApp->desktop()->height() );
217 #else 219 #else
218 QSize desk = QSize( qt_maxWindowRect.width(), qt_maxWindowRect.height() ); 220 QSize desk = QSize( qt_maxWindowRect.width(), qt_maxWindowRect.height() );
219 #endif 221 #endif
220 222
221 QSize sh = wg->sizeHint(); 223 QSize sh = wg->sizeHint();
222 int w = QMAX( sh.width(), wg->width() ); 224 int w = QMAX( sh.width(), wg->width() );
223 int h = QMAX( sh.height(), wg->height() ); 225 int h = QMAX( sh.height(), wg->height() );
224 // desktop widget-frame taskbar 226 // desktop widget-frame taskbar
225 w = QMIN( w, ( desk.width() - ( wg->frameGeometry().width() - wg->geometry().width() ) - 25 ) ); 227 w = QMIN( w, ( desk.width() - ( wg->frameGeometry().width() - wg->geometry().width() ) - 25 ) );
226 h = QMIN( h, ( desk.height() - ( wg->frameGeometry().height() - wg->geometry().height() ) - 25 ) ); 228 h = QMIN( h, ( desk.height() - ( wg->frameGeometry().height() - wg->geometry().height() ) - 25 ) );
227 229
228 wg->resize( w, h ); 230 wg->resize( w, h );
229 wg->show(); 231 wg->show();
230 } 232 }
231 } 233 }
232} 234}
233 235
234enum Transformation { Rot0, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */ 236enum Transformation { Rot0, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */
235 237
236inline int TransToDeg ( Transformation t ) 238inline int TransToDeg ( Transformation t )
237{ 239{
238 int d = static_cast<int>( t ); 240 int d = static_cast<int>( t );
239 return d * 90; 241 return d * 90;
240} 242}
241 243
242inline Transformation DegToTrans ( int d ) 244inline Transformation DegToTrans ( int d )
243{ 245{
244 Transformation t = static_cast<Transformation>( d / 90 ); 246 Transformation t = static_cast<Transformation>( d / 90 );
245 return t; 247 return t;
246} 248}
247 249
248/* 250/*
249 * Set current rotation of Opie, and rotation for newly started apps. 251 * Set current rotation of Opie, and rotation for newly started apps.
250 * Differs from setDefaultRotation in that 1) it rotates currently running apps, 252 * Differs from setDefaultRotation in that 1) it rotates currently running apps,
251 * and 2) does not set deforient or save orientation to qpe.conf. 253 * and 2) does not set deforient or save orientation to qpe.conf.
252 */ 254 */
253 255
254inline void QPEApplication::setCurrentRotation( int r ) 256inline void QPEApplication::setCurrentRotation( int r )
255{ 257{
256 // setTransformation has been introduced in Qt/Embedded 2.3.4 snapshots 258 // setTransformation has been introduced in Qt/Embedded 2.3.4 snapshots
257 // for compatibility with the SharpROM use fallback to setDefaultTransformation() 259 // for compatibility with the SharpROM use fallback to setDefaultTransformation()
258#if QT_VERSION > 233 260#if QT_VERSION > 233
259 Transformation e = DegToTrans( r ); 261 Transformation e = DegToTrans( r );
260 ::setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 262 ::setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
261 qApp->desktop()->qwsDisplay()->setTransformation( e ); 263 qApp->desktop()->qwsDisplay()->setTransformation( e );
262#else 264#else
263 setDefaultRotation( r ); 265 setDefaultRotation( r );
264#endif 266#endif
265} 267}
266 268
267 269
268#endif 270#endif
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,175 +1,182 @@
1 1
2#include <qpe/qpeapplication.h> 2#include <qpe/qpeapplication.h>
3#include <qfontdatabase.h> 3#include <qfontdatabase.h>
4 4
5#include <unistd.h> 5#include <unistd.h>
6#include <stdlib.h> 6#include <stdlib.h>
7#include <stdio.h> 7#include <stdio.h>
8#include <limits.h> 8#include <limits.h>
9#include <sys/param.h> // for toolchains with old libc headers 9#include <sys/param.h> // for toolchains with old libc headers
10 10
11#include "qt_override_p.h" 11#include "qt_override_p.h"
12 12
13#if QT_VERSION > 233 13#if QT_VERSION > 233
14 14
15#ifndef OPIE_NO_ERASE_RECT_HACKFIX
15struct color_fix_t { 16struct color_fix_t {
16 char *m_app; 17 char *m_app;
17 char *m_class; 18 char *m_class;
18 char *m_name; 19 char *m_name;
19 QColorGroup::ColorRole m_set; 20 QColorGroup::ColorRole m_set;
20 QColorGroup::ColorRole m_get; 21 QColorGroup::ColorRole m_get;
21}; 22};
22 23
23#ifndef OPIE_NO_OVERRIDE_QT 24
24 25
25static const color_fix_t apps_that_need_special_colors [] = { 26static const color_fix_t apps_that_need_special_colors [] = {
26 { "HancomMobileWord", "HTextEdit", 0, QColorGroup::Background, QColorGroup::Base }, 27 { "HancomMobileWord", "HTextEdit", 0, QColorGroup::Background, QColorGroup::Base },
27 { "neocal", "Display", 0, QColorGroup::Background, QColorGroup::Base }, 28 { "neocal", "Display", 0, QColorGroup::Background, QColorGroup::Base },
28 29
29 { 0, 0, 0, QColorGroup::Base, QColorGroup::Base } 30 { 0, 0, 0, QColorGroup::Base, QColorGroup::Base }
30}; 31};
31 32
33#endif
34
35#ifndef OPIE_NO_OVERRIDE_QT
36
32static const char * const apps_that_need_pointsizes_times_10 [] = { 37static const char * const apps_that_need_pointsizes_times_10 [] = {
33 "HancomMobileWord", 38 "HancomMobileWord",
34 "hancomsheet", 39 "hancomsheet",
35 "HancomPresenterViewer", 40 "HancomPresenterViewer",
36 41
37 0 42 0
38}; 43};
39 44
40 45
41 46
42 47
43int Opie::force_appearance = 0; 48int Opie::force_appearance = 0;
44 49
45 50
46// Return the *real* name of the binary - not just a quick guess 51// Return the *real* name of the binary - not just a quick guess
47// by looking at argv [0] (which could be anything) 52// by looking at argv [0] (which could be anything)
48 53
49static void binaryNameFree ( ) 54static void binaryNameFree ( )
50{ 55{
51 ::free ((void *) Opie::binaryName ( )); // we need to cast away the const here 56 ::free ((void *) Opie::binaryName ( )); // we need to cast away the const here
52} 57}
53 58
54const char *Opie::binaryName ( ) 59const char *Opie::binaryName ( )
55{ 60{
56 static const char *appname = 0; 61 static const char *appname = 0;
57 62
58 if ( !appname ) { 63 if ( !appname ) {
59 char dst [PATH_MAX + 1]; 64 char dst [PATH_MAX + 1];
60 int l = ::readlink ( "/proc/self/exe", dst, PATH_MAX ); 65 int l = ::readlink ( "/proc/self/exe", dst, PATH_MAX );
61 66
62 if ( l <= 0 ) 67 if ( l <= 0 )
63 l = 0; 68 l = 0;
64 69
65 dst [l] = 0; 70 dst [l] = 0;
66 const char *b = ::strrchr ( dst, '/' ); 71 const char *b = ::strrchr ( dst, '/' );
67 appname = ::strdup ( b ? b + 1 : dst ); 72 appname = ::strdup ( b ? b + 1 : dst );
68 73
69 ::atexit ( binaryNameFree ); 74 ::atexit ( binaryNameFree );
70 } 75 }
71 return appname; 76 return appname;
72} 77}
73 78
74#else 79#else
75int Opie::force_appearance = 0; 80int Opie::force_appearance = 0;
76#endif 81#endif
77 82
78// Fix for a toolchain incompatibility (binaries compiled with 83// Fix for a toolchain incompatibility (binaries compiled with
79// old tcs using shared libs compiled with newer tcs) 84// old tcs using shared libs compiled with newer tcs)
80 85
81extern "C" { 86extern "C" {
82 87
83extern void __gmon_start__ ( ) __attribute__(( weak )); 88extern void __gmon_start__ ( ) __attribute__(( weak ));
84 89
85extern void __gmon_start__ ( ) 90extern void __gmon_start__ ( )
86{ 91{
87} 92}
88 93
89} 94}
90 95
91 96
97#ifndef OPIE_NO_ERASE_RECT_HACKFIX
92// Fix for apps, that use QPainter::eraseRect() which doesn't work with styles 98// Fix for apps, that use QPainter::eraseRect() which doesn't work with styles
93// that set a background pixmap (it would be easier to fix eraseRect(), but 99// that set a background pixmap (it would be easier to fix eraseRect(), but
94// TT made it an inline ...) 100// TT made it an inline ...)
95 101
96void QPEApplication::polish ( QWidget *w ) 102void QPEApplication::polish ( QWidget *w )
97{ 103{
98#ifndef OPIE_NO_OVERRIDE_QT 104#ifndef OPIE_NO_OVERRIDE_QT
99 //qDebug ( "QPEApplication::polish()" ); 105 //qDebug ( "QPEApplication::polish()" );
100 106
101 for ( const color_fix_t *ptr = apps_that_need_special_colors; ptr-> m_app; ptr++ ) { 107 for ( const color_fix_t *ptr = apps_that_need_special_colors; ptr-> m_app; ptr++ ) {
102 if (( ::strcmp ( Opie::binaryName ( ), ptr-> m_app ) == 0 ) && 108 if (( ::strcmp ( Opie::binaryName ( ), ptr-> m_app ) == 0 ) &&
103 ( ptr-> m_class ? w-> inherits ( ptr-> m_class ) : true ) && 109 ( ptr-> m_class ? w-> inherits ( ptr-> m_class ) : true ) &&
104 ( ptr-> m_name ? ( ::strcmp ( w-> name ( ), ptr-> m_name ) == 0 ) : true )) { 110 ( ptr-> m_name ? ( ::strcmp ( w-> name ( ), ptr-> m_name ) == 0 ) : true )) {
105 QPalette pal = w-> palette ( ); 111 QPalette pal = w-> palette ( );
106 pal. setColor ( ptr-> m_set, pal. color ( QPalette::Active, ptr-> m_get )); 112 pal. setColor ( ptr-> m_set, pal. color ( QPalette::Active, ptr-> m_get ));
107 w-> setPalette ( pal ); 113 w-> setPalette ( pal );
108 } 114 }
109 } 115 }
110#endif 116#endif
111 QApplication::polish ( w ); 117 QApplication::polish ( w );
112} 118}
119#endif
113 120
114 121
115#ifndef OPIE_NO_OVERRIDE_QT 122#ifndef OPIE_NO_OVERRIDE_QT
116// Fix for the binary incompatibility that TT introduced in Qt/E 2.3.4 -- point sizes 123// Fix for the binary incompatibility that TT introduced in Qt/E 2.3.4 -- point sizes
117// were multiplied by 10 (which was incorrect) 124// were multiplied by 10 (which was incorrect)
118 125
119QValueList <int> QFontDatabase::pointSizes ( QString const &family, QString const &style, QString const &charset ) 126QValueList <int> QFontDatabase::pointSizes ( QString const &family, QString const &style, QString const &charset )
120{ 127{
121 //qDebug ( "QFontDatabase::pointSizes()" ); 128 //qDebug ( "QFontDatabase::pointSizes()" );
122 129
123 QValueList <int> sl = pointSizes_NonWeak ( family, style, charset ); 130 QValueList <int> sl = pointSizes_NonWeak ( family, style, charset );
124 131
125 for ( const char * const *ptr = apps_that_need_pointsizes_times_10; *ptr; ptr++ ) { 132 for ( const char * const *ptr = apps_that_need_pointsizes_times_10; *ptr; ptr++ ) {
126 if ( ::strcmp ( Opie::binaryName ( ), *ptr ) == 0 ) { 133 if ( ::strcmp ( Opie::binaryName ( ), *ptr ) == 0 ) {
127 for ( QValueList <int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) 134 for ( QValueList <int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it )
128 *it *= 10; 135 *it *= 10;
129 } 136 }
130 } 137 }
131 return sl; 138 return sl;
132} 139}
133 140
134 141
135// Various style/font/color related overrides for weak symbols in Qt/E, 142// Various style/font/color related overrides for weak symbols in Qt/E,
136// which allows us to force the usage of the global Opie appearance. 143// which allows us to force the usage of the global Opie appearance.
137 144
138void QApplication::setStyle ( QStyle *style ) 145void QApplication::setStyle ( QStyle *style )
139{ 146{
140 //qDebug ( "QApplication::setStyle()" ); 147 //qDebug ( "QApplication::setStyle()" );
141 148
142 if ( Opie::force_appearance & Opie::Force_Style ) 149 if ( Opie::force_appearance & Opie::Force_Style )
143 delete style; 150 delete style;
144 else 151 else
145 QApplication::setStyle_NonWeak ( style ); 152 QApplication::setStyle_NonWeak ( style );
146} 153}
147 154
148void QApplication::setPalette ( const QPalette &pal, bool informWidgets, const char *className ) 155void QApplication::setPalette ( const QPalette &pal, bool informWidgets, const char *className )
149{ 156{
150 //qDebug ( "QApplication::setPalette()" ); 157 //qDebug ( "QApplication::setPalette()" );
151 158
152 if (!( Opie::force_appearance & Opie::Force_Style )) 159 if (!( Opie::force_appearance & Opie::Force_Style ))
153 QApplication::setPalette_NonWeak ( pal, informWidgets, className ); 160 QApplication::setPalette_NonWeak ( pal, informWidgets, className );
154} 161}
155 162
156void QApplication::setFont ( const QFont &fnt, bool informWidgets, const char *className ) 163void QApplication::setFont ( const QFont &fnt, bool informWidgets, const char *className )
157{ 164{
158 //qDebug ( "QApplication::setFont()" ); 165 //qDebug ( "QApplication::setFont()" );
159 166
160 if (!( Opie::force_appearance & Opie::Force_Font )) 167 if (!( Opie::force_appearance & Opie::Force_Font ))
161 QApplication::setFont_NonWeak ( fnt, informWidgets, className ); 168 QApplication::setFont_NonWeak ( fnt, informWidgets, className );
162} 169}
163 170
164 171
165void QApplication::qwsSetDecoration ( QWSDecoration *deco ) 172void QApplication::qwsSetDecoration ( QWSDecoration *deco )
166{ 173{
167 //qDebug ( "QApplication::qwsSetDecoration()" ); 174 //qDebug ( "QApplication::qwsSetDecoration()" );
168 175
169 if ( Opie::force_appearance & Opie::Force_Decoration ) 176 if ( Opie::force_appearance & Opie::Force_Decoration )
170 delete deco; 177 delete deco;
171 else 178 else
172 QApplication::qwsSetDecoration_NonWeak ( deco ); 179 QApplication::qwsSetDecoration_NonWeak ( deco );
173} 180}
174#endif 181#endif
175#endif 182#endif