summaryrefslogtreecommitdiff
authorzecke <zecke>2003-10-04 08:59:51 (UTC)
committer zecke <zecke>2003-10-04 08:59:51 (UTC)
commitdc9510f788212a6be063349461540e4bea690f51 (patch) (unidiff)
treeb8728fdc12c1580287f16f3828180beac5d55c13
parent23f729eb7487ad189591c3b0c9af9d3afecd3b91 (diff)
downloadopie-dc9510f788212a6be063349461540e4bea690f51.zip
opie-dc9510f788212a6be063349461540e4bea690f51.tar.gz
opie-dc9510f788212a6be063349461540e4bea690f51.tar.bz2
Allow Opie beeing build with a Plain version of Qt without weak symbols
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Rules.make3
-rw-r--r--config.in4
-rw-r--r--library/library.pro6
-rw-r--r--library/qpeapplication.cpp10
-rw-r--r--library/qt_override.cpp40
5 files changed, 44 insertions, 19 deletions
diff --git a/Rules.make b/Rules.make
index 4833b11..a1e6f09 100644
--- a/Rules.make
+++ b/Rules.make
@@ -1,79 +1,82 @@
1.phony: force 1.phony: force
2force: 2force:
3 3
4$(configs) : 4$(configs) :
5 $(call makecfg,$@) 5 $(call makecfg,$@)
6 6
7$(TOPDIR)/gen.pro : $(TOPDIR)/.config 7$(TOPDIR)/gen.pro : $(TOPDIR)/.config
8 echo > $@ 8 echo > $@
9ifneq ($(CONFIG_DEBUG),) 9ifneq ($(CONFIG_DEBUG),)
10 echo CONFIG += debug >> $@ 10 echo CONFIG += debug >> $@
11 echo CONFIG -= release >> $@ 11 echo CONFIG -= release >> $@
12else 12else
13 echo CONFIG -= debug >> $@ 13 echo CONFIG -= debug >> $@
14 echo CONFIG += release >> $@ 14 echo CONFIG += release >> $@
15endif 15endif
16ifeq ($(filter 3.%,$(QTE_VERSION)),) # not qt3 16ifeq ($(filter 3.%,$(QTE_VERSION)),) # not qt3
17 echo CONFIG -= qt3 >> $@ 17 echo CONFIG -= qt3 >> $@
18else 18else
19 echo CONFIG += qt3 >> $@ 19 echo CONFIG += qt3 >> $@
20endif 20endif
21ifeq ($(CONFIG_QUICK_LAUNCH),) 21ifeq ($(CONFIG_QUICK_LAUNCH),)
22 echo contains\( CONFIG, quick-app \) \{ >> $@ 22 echo contains\( CONFIG, quick-app \) \{ >> $@
23 echo CONFIG -= quick-app >> $@ 23 echo CONFIG -= quick-app >> $@
24 echo CONFIG += quick-app-lib >> $@ 24 echo CONFIG += quick-app-lib >> $@
25 echo \} >> $@ 25 echo \} >> $@
26else 26else
27 echo contains\( CONFIG, quick-app \) \{ >> $@ 27 echo contains\( CONFIG, quick-app \) \{ >> $@
28 echo CONFIG -= quick-app >> $@ 28 echo CONFIG -= quick-app >> $@
29 echo CONFIG += quick-app-bin >> $@ 29 echo CONFIG += quick-app-bin >> $@
30 echo \} >> $@ 30 echo \} >> $@
31 endif 31 endif
32ifeq ($(CONFIG_OPIE_NO_OVERRIDE_QT),y)
33 echo CONFIG += no-override >> $@
34endif
32 35
33$(TOPDIR)/.depends : $(shell if [ -e $(TOPDIR)/config.in ]\; then echo $(TOPDIR)/config.in\; fi\;) $(TOPDIR)/.config $(TOPDIR)/packages 36$(TOPDIR)/.depends : $(shell if [ -e $(TOPDIR)/config.in ]\; then echo $(TOPDIR)/config.in\; fi\;) $(TOPDIR)/.config $(TOPDIR)/packages
34 @echo Generating dependency information... 37 @echo Generating dependency information...
35# add to subdir-y, and add descend rules 38# add to subdir-y, and add descend rules
36 @cat $(TOPDIR)/packages | grep -v '^#' | \ 39 @cat $(TOPDIR)/packages | grep -v '^#' | \
37 awk '{print \ 40 awk '{print \
38 ".PHONY : " $$2 "\n" \ 41 ".PHONY : " $$2 "\n" \
39 "subdir-$$(" $$1 ") += " $$2 "\n\n"; \ 42 "subdir-$$(" $$1 ") += " $$2 "\n\n"; \
40 print $$2 " : " $$2 "/Makefile\n\t$$(call descend,$$@,$(filter-out $$@,$$(filter-out $$@,$$(MAKECMDGOALS))))\n"; }' > $(TOPDIR)/.depends 43 print $$2 " : " $$2 "/Makefile\n\t$$(call descend,$$@,$(filter-out $$@,$$(filter-out $$@,$$(MAKECMDGOALS))))\n"; }' > $(TOPDIR)/.depends
41 cat $(TOPDIR)/packages | grep -v '^#' | \ 44 cat $(TOPDIR)/packages | grep -v '^#' | \
42 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"; }' \ 45 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"; }' \
43 >> $(TOPDIR)/.depends 46 >> $(TOPDIR)/.depends
44# interpackage dependency generation 47# interpackage dependency generation
45 @cat $(TOPDIR)/packages | \ 48 @cat $(TOPDIR)/packages | \
46 $(TOPDIR)/scripts/deps.pl >> $(TOPDIR)/.depends 49 $(TOPDIR)/scripts/deps.pl >> $(TOPDIR)/.depends
47 50
48$(TOPDIR)/.depends.cfgs: 51$(TOPDIR)/.depends.cfgs:
49# config.in interdependencies 52# config.in interdependencies
50 @echo $(configs) | sed -e 's,/config.in,,g' | ( for i in `cat`; do echo $$i; done ) > dirs 53 @echo $(configs) | sed -e 's,/config.in,,g' | ( for i in `cat`; do echo $$i; done ) > dirs
51 @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 ) >> $@ 54 @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 ) >> $@
52 @-rm -f dirs 55 @-rm -f dirs
53 56
54$(QTDIR)/stamp-headers : 57$(QTDIR)/stamp-headers :
55 @-rm -f $(QTDIR)/stamp-headers* 58 @-rm -f $(QTDIR)/stamp-headers*
56 ( cd $(QTDIR)/include; \ 59 ( cd $(QTDIR)/include; \
57 $(patsubst %,ln -sf ../src/kernel/%;,qgfx_qws.h qwsmouse_qws.h \ 60 $(patsubst %,ln -sf ../src/kernel/%;,qgfx_qws.h qwsmouse_qws.h \
58 qcopchannel_qws.h qwindowsystem_qws.h \ 61 qcopchannel_qws.h qwindowsystem_qws.h \
59 qfontmanager_qws.h qwsdefaultdecoration_qws.h)) 62 qfontmanager_qws.h qwsdefaultdecoration_qws.h))
60 touch $@ 63 touch $@
61 64
62$(QTDIR)/stamp-headers-x11 : 65$(QTDIR)/stamp-headers-x11 :
63 @-rm -f $(QTDIR)/stamp-headers* 66 @-rm -f $(QTDIR)/stamp-headers*
64 cd $(QTDIR)/include; $(patsubst %,ln -sf $(OPIEDIR)/x11/libqpe-x11/qt/%;,qgfx_qws.h qwsmouse_qws.h qcopchannel_qws.h qwindowsystem_qws.h qfontmanager_qws.h qwsdefaultdecoration_qws.h) 67 cd $(QTDIR)/include; $(patsubst %,ln -sf $(OPIEDIR)/x11/libqpe-x11/qt/%;,qgfx_qws.h qwsmouse_qws.h qcopchannel_qws.h qwindowsystem_qws.h qfontmanager_qws.h qwsdefaultdecoration_qws.h)
65 touch $@ 68 touch $@
66 69
67$(OPIEDIR)/stamp-headers : 70$(OPIEDIR)/stamp-headers :
68 @-rm -f $(OPIEDIR)/stamp-headers* 71 @-rm -f $(OPIEDIR)/stamp-headers*
69 mkdir -p $(TOPDIR)/include/qpe \ 72 mkdir -p $(TOPDIR)/include/qpe \
70 $(TOPDIR)/include/qtopia \ 73 $(TOPDIR)/include/qtopia \
71 $(TOPDIR)/include/opie \ 74 $(TOPDIR)/include/opie \
72 $(TOPDIR)/include/opie2 \ 75 $(TOPDIR)/include/opie2 \
73 $(TOPDIR)/include/qtopia/private 76 $(TOPDIR)/include/qtopia/private
74 ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; ) 77 ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; )
75 ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; ) 78 ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; )
76 ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; ) 79 ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; )
77 ( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; ) 80 ( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; )
78 ( cd include/opie && ln -sf ../../libopie/pim/*.h .; ) 81 ( cd include/opie && ln -sf ../../libopie/pim/*.h .; )
79 ( cd include/opie && ln -sf ../../libopie/big-screen/*.h .; ) 82 ( cd include/opie && ln -sf ../../libopie/big-screen/*.h .; )
diff --git a/config.in b/config.in
index dac9024..ddbc93b 100644
--- a/config.in
+++ b/config.in
@@ -1,91 +1,95 @@
1mainmenu "Opie Configuration" 1mainmenu "Opie Configuration"
2 2
3menu "Build Parameters" 3menu "Build Parameters"
4 4
5choice 5choice
6 prompt "Target Machine" 6 prompt "Target Machine"
7 default TARGET_X86 7 default TARGET_X86
8 help 8 help
9 Please select the architecture of the machine you will be 9 Please select the architecture of the machine you will be
10 building the OpenZaurus buildroot for. 10 building the OpenZaurus buildroot for.
11 11
12 config TARGET_X86 12 config TARGET_X86
13 boolean "Intel X86" 13 boolean "Intel X86"
14 14
15 config TARGET_SHARP 15 config TARGET_SHARP
16 boolean "Sharp Zaurus" 16 boolean "Sharp Zaurus"
17 17
18 config TARGET_IPAQ 18 config TARGET_IPAQ
19 boolean "iPAQ" 19 boolean "iPAQ"
20 20
21 config TARGET_RAMSES 21 config TARGET_RAMSES
22 boolean "Ramses" 22 boolean "Ramses"
23 23
24 config TARGET_SIMPAD 24 config TARGET_SIMPAD
25 boolean "SIMpad" 25 boolean "SIMpad"
26 26
27endchoice 27endchoice
28 28
29config OPTIMIZE 29config OPTIMIZE
30 boolean "Use optimizations" 30 boolean "Use optimizations"
31 default "y" if ! TARGET_X86 31 default "y" if ! TARGET_X86
32 32
33config DEBUG 33config DEBUG
34 boolean "Enable debug builds" 34 boolean "Enable debug builds"
35 default n 35 default n
36config RELEASE 36config RELEASE
37 bool 37 bool
38 default y 38 default y
39 depends !DEBUG 39 depends !DEBUG
40 40
41config QUICK_LAUNCH 41config QUICK_LAUNCH
42 boolean "Enable Quick Launch" 42 boolean "Enable Quick Launch"
43 default n 43 default n
44
45config OPIE_NO_OVERRIDE_QT
46 boolean "Build Opie against an unpatched version of Qt"
47 default n
44 48
45config SPECFILE 49config SPECFILE
46 string 50 string
47 default "qws/linux-generic-g++" if TARGET_X86 && (! X11) 51 default "qws/linux-generic-g++" if TARGET_X86 && (! X11)
48 default "linux-g++" if TARGET_X86 && X11 52 default "linux-g++" if TARGET_X86 && X11
49 default "qws/linux-sharp-g++" if TARGET_SHARP && (! X11) 53 default "qws/linux-sharp-g++" if TARGET_SHARP && (! X11)
50 default "linux-g++" if TARGET_SHARP && X11 54 default "linux-g++" if TARGET_SHARP && X11
51 default "qws/linux-ipaq-g++" if TARGET_IPAQ && (! X11) 55 default "qws/linux-ipaq-g++" if TARGET_IPAQ && (! X11)
52 default "linux-g++" if TARGET_IPAQ && X11 56 default "linux-g++" if TARGET_IPAQ && X11
53 default "qws/linux-ramses-g++" if TARGET_RAMSES && (! X11) 57 default "qws/linux-ramses-g++" if TARGET_RAMSES && (! X11)
54 default "linux-g++" if TARGET_RAMSES && X11 58 default "linux-g++" if TARGET_RAMSES && X11
55 default "qws/linux-simpad-g++" if TARGET_SIMPAD && (! X11) 59 default "qws/linux-simpad-g++" if TARGET_SIMPAD && (! X11)
56 default "linux-g++" if TARGET_SIMPAD && X11 60 default "linux-g++" if TARGET_SIMPAD && X11
57 61
58config CUSTOMFILE 62config CUSTOMFILE
59 string 63 string
60 default "custom-ipaq.h" if TARGET_IPAQ 64 default "custom-ipaq.h" if TARGET_IPAQ
61 default "custom-sharp.h" if TARGET_SHARP 65 default "custom-sharp.h" if TARGET_SHARP
62 default "custom-ramses.h" if TARGET_RAMSES 66 default "custom-ramses.h" if TARGET_RAMSES
63 default "custom-ipaq.h" if TARGET_SIMPAD 67 default "custom-ipaq.h" if TARGET_SIMPAD
64 68
65config OPTIMIZATIONS 69config OPTIMIZATIONS
66 string "Optimization flags" 70 string "Optimization flags"
67 depends OPTIMIZE 71 depends OPTIMIZE
68 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_IPAQ 72 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_IPAQ
69 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SHARP 73 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SHARP
70 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_RAMSES 74 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_RAMSES
71 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SIMPAD 75 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SIMPAD
72 76
73config EXPERIMENTAL 77config EXPERIMENTAL
74 bool "Prompt for development and/or incomplete items" 78 bool "Prompt for development and/or incomplete items"
75 default y 79 default y
76 80
77endmenu 81endmenu
78 82
79menu "Base" 83menu "Base"
80 choice 84 choice
81 prompt "Qpe Library Selection" 85 prompt "Qpe Library Selection"
82 default LIBQPE 86 default LIBQPE
83 source library/config.in 87 source library/config.in
84 source x11/config.in 88 source x11/config.in
85 endchoice 89 endchoice
86 source libopie/config.in 90 source libopie/config.in
87 source core/opie-login/config.in 91 source core/opie-login/config.in
88 source core/opiealarm/config.in 92 source core/opiealarm/config.in
89 source core/launcher/config.in 93 source core/launcher/config.in
90 source core/qws/config.in 94 source core/qws/config.in
91endmenu 95endmenu
diff --git a/library/library.pro b/library/library.pro
index 80a0f62..ab1f451 100644
--- a/library/library.pro
+++ b/library/library.pro
@@ -73,79 +73,85 @@ SOURCES = calendar.cpp \
73 qdawg.cpp \ 73 qdawg.cpp \
74 datebookmonth.cpp \ 74 datebookmonth.cpp \
75 fileselector.cpp \ 75 fileselector.cpp \
76 imageedit.cpp \ 76 imageedit.cpp \
77 resource.cpp \ 77 resource.cpp \
78 qpedecoration_qws.cpp \ 78 qpedecoration_qws.cpp \
79 qcopenvelope_qws.cpp \ 79 qcopenvelope_qws.cpp \
80 qpeapplication.cpp \ 80 qpeapplication.cpp \
81 qpestyle.cpp \ 81 qpestyle.cpp \
82 qpedialog.cpp \ 82 qpedialog.cpp \
83 lightstyle.cpp \ 83 lightstyle.cpp \
84 config.cpp \ 84 config.cpp \
85 applnk.cpp \ 85 applnk.cpp \
86 sound.cpp \ 86 sound.cpp \
87 tzselect.cpp \ 87 tzselect.cpp \
88 qmath.c \ 88 qmath.c \
89 datebookdb.cpp \ 89 datebookdb.cpp \
90 alarmserver.cpp \ 90 alarmserver.cpp \
91 password.cpp \ 91 password.cpp \
92 process.cpp \ 92 process.cpp \
93 process_unix.cpp \ 93 process_unix.cpp \
94 timestring.cpp \ 94 timestring.cpp \
95 fontdatabase.cpp \ 95 fontdatabase.cpp \
96 power.cpp \ 96 power.cpp \
97 storage.cpp \ 97 storage.cpp \
98 qpemessagebox.cpp \ 98 qpemessagebox.cpp \
99 backend/timeconversion.cpp \ 99 backend/timeconversion.cpp \
100 qpedebug.cpp \ 100 qpedebug.cpp \
101 qpemenubar.cpp \ 101 qpemenubar.cpp \
102 qpetoolbar.cpp \ 102 qpetoolbar.cpp \
103 backend/categories.cpp \ 103 backend/categories.cpp \
104 backend/stringutil.cpp \ 104 backend/stringutil.cpp \
105 backend/palmtoprecord.cpp \ 105 backend/palmtoprecord.cpp \
106 backend/task.cpp \ 106 backend/task.cpp \
107 backend/event.cpp \ 107 backend/event.cpp \
108 backend/contact.cpp \ 108 backend/contact.cpp \
109 categorymenu.cpp \ 109 categorymenu.cpp \
110 categoryedit_p.cpp \ 110 categoryedit_p.cpp \
111 categoryselect.cpp \ 111 categoryselect.cpp \
112 categorywidget.cpp \ 112 categorywidget.cpp \
113 ir.cpp \ 113 ir.cpp \
114 backend/vcc_yacc.cpp \ 114 backend/vcc_yacc.cpp \
115 backend/vobject.cpp \ 115 backend/vobject.cpp \
116 findwidget_p.cpp \ 116 findwidget_p.cpp \
117 finddialog.cpp \ 117 finddialog.cpp \
118 lnkproperties.cpp \ 118 lnkproperties.cpp \
119 qt_override.cpp 119 qt_override.cpp
120 120
121
122
121# Qt 3 compatibility 123# Qt 3 compatibility
122HEADERS += quuid.h qcom.h qlibrary.h qlibrary_p.h 124HEADERS += quuid.h qcom.h qlibrary.h qlibrary_p.h
123SOURCES += quuid.cpp qlibrary.cpp qlibrary_unix.cpp 125SOURCES += quuid.cpp qlibrary.cpp qlibrary_unix.cpp
124INCLUDEPATH += $(OPIEDIR)/include backend 126INCLUDEPATH += $(OPIEDIR)/include backend
125 LIBS += -ldl -lcrypt -lm 127 LIBS += -ldl -lcrypt -lm
126INTERFACES = passwordbase_p.ui categoryeditbase_p.ui findwidgetbase_p.ui lnkpropertiesbase_p.ui 128INTERFACES = passwordbase_p.ui categoryeditbase_p.ui findwidgetbase_p.ui lnkpropertiesbase_p.ui
127 TARGET = qpe 129 TARGET = qpe
128 DESTDIR = $(OPIEDIR)/lib$(PROJMAK) 130 DESTDIR = $(OPIEDIR)/lib$(PROJMAK)
129 VERSION = 1.5.0.1 131 VERSION = 1.5.0.1
130 132
131TRANSLATIONS = ../i18n/de/libqpe.ts \ 133TRANSLATIONS = ../i18n/de/libqpe.ts \
132 ../i18n/nl/libqpe.ts \ 134 ../i18n/nl/libqpe.ts \
133 ../i18n/xx/libqpe.ts \ 135 ../i18n/xx/libqpe.ts \
134 ../i18n/en/libqpe.ts \ 136 ../i18n/en/libqpe.ts \
135 ../i18n/es/libqpe.ts \ 137 ../i18n/es/libqpe.ts \
136 ../i18n/fr/libqpe.ts \ 138 ../i18n/fr/libqpe.ts \
137 ../i18n/hu/libqpe.ts \ 139 ../i18n/hu/libqpe.ts \
138 ../i18n/ja/libqpe.ts \ 140 ../i18n/ja/libqpe.ts \
139 ../i18n/ko/libqpe.ts \ 141 ../i18n/ko/libqpe.ts \
140 ../i18n/no/libqpe.ts \ 142 ../i18n/no/libqpe.ts \
141 ../i18n/pl/libqpe.ts \ 143 ../i18n/pl/libqpe.ts \
142 ../i18n/pt/libqpe.ts \ 144 ../i18n/pt/libqpe.ts \
143 ../i18n/pt_BR/libqpe.ts \ 145 ../i18n/pt_BR/libqpe.ts \
144 ../i18n/sl/libqpe.ts \ 146 ../i18n/sl/libqpe.ts \
145 ../i18n/zh_CN/libqpe.ts \ 147 ../i18n/zh_CN/libqpe.ts \
146 ../i18n/it/libqpe.ts \ 148 ../i18n/it/libqpe.ts \
147 ../i18n/zh_TW/libqpe.ts \ 149 ../i18n/zh_TW/libqpe.ts \
148 ../i18n/da/libqpe.ts 150 ../i18n/da/libqpe.ts
149 151
150 152
151include ( $(OPIEDIR)/include.pro ) 153include ( $(OPIEDIR)/include.pro )
154
155contains( CONFIG, no-override ){
156 DEFINES += OPIE_NO_OVERRIDE_QT
157}
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 28fb13a..feba8b6 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -1079,170 +1079,176 @@ void QPEApplication::setDefaultRotation( int r )
1079 } 1079 }
1080#endif 1080#endif
1081 1081
1082 } 1082 }
1083} 1083}
1084 1084
1085#include <qgfx_qws.h> 1085#include <qgfx_qws.h>
1086#include <qwindowsystem_qws.h> 1086#include <qwindowsystem_qws.h>
1087#include <qpixmapcache.h> 1087#include <qpixmapcache.h>
1088 1088
1089extern void qws_clearLoadedFonts(); 1089extern void qws_clearLoadedFonts();
1090 1090
1091void QPEApplication::setCurrentMode( int x, int y, int depth ) 1091void QPEApplication::setCurrentMode( int x, int y, int depth )
1092{ 1092{
1093 // Reset the caches 1093 // Reset the caches
1094 qws_clearLoadedFonts(); 1094 qws_clearLoadedFonts();
1095 QPixmapCache::clear(); 1095 QPixmapCache::clear();
1096 1096
1097 // Change the screen mode 1097 // Change the screen mode
1098 qt_screen->setMode(x, y, depth); 1098 qt_screen->setMode(x, y, depth);
1099 1099
1100 if ( qApp->type() == GuiServer ) { 1100 if ( qApp->type() == GuiServer ) {
1101 // Reconfigure the GuiServer 1101 // Reconfigure the GuiServer
1102 qwsServer->beginDisplayReconfigure(); 1102 qwsServer->beginDisplayReconfigure();
1103 qwsServer->endDisplayReconfigure(); 1103 qwsServer->endDisplayReconfigure();
1104 1104
1105 // Get all the running apps to reset 1105 // Get all the running apps to reset
1106 QCopEnvelope env( "QPE/System", "reset()" ); 1106 QCopEnvelope env( "QPE/System", "reset()" );
1107 } 1107 }
1108} 1108}
1109 1109
1110void QPEApplication::reset() { 1110void QPEApplication::reset() {
1111 // Reconnect to the screen 1111 // Reconnect to the screen
1112 qt_screen->disconnect(); 1112 qt_screen->disconnect();
1113 qt_screen->connect( QString::null ); 1113 qt_screen->connect( QString::null );
1114 1114
1115 // Redraw everything 1115 // Redraw everything
1116 applyStyle(); 1116 applyStyle();
1117} 1117}
1118 1118
1119/*! 1119/*!
1120 \internal 1120 \internal
1121*/ 1121*/
1122void QPEApplication::applyStyle() 1122void QPEApplication::applyStyle()
1123{ 1123{
1124 Config config( "qpe" ); 1124 Config config( "qpe" );
1125 config.setGroup( "Appearance" ); 1125 config.setGroup( "Appearance" );
1126 1126
1127 #if QT_VERSION > 233 1127#if QT_VERSION > 233
1128#if !defined(OPIE_NO_OVERRIDE_QT)
1128 // don't block ourselves ... 1129 // don't block ourselves ...
1129 Opie::force_appearance = 0; 1130 Opie::force_appearance = 0;
1130 1131
1131 static QString appname = Opie::binaryName ( ); 1132 static QString appname = Opie::binaryName ( );
1132 1133
1133 QStringList ex = config. readListEntry ( "NoStyle", ';' ); 1134 QStringList ex = config. readListEntry ( "NoStyle", ';' );
1134 int nostyle = 0; 1135 int nostyle = 0;
1135 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { 1136 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
1136 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { 1137 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
1137 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); 1138 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
1138 break; 1139 break;
1139 } 1140 }
1140 } 1141 }
1142#else
1143 int nostyle = 0;
1144#endif
1141 1145
1142 // Widget style 1146 // Widget style
1143 QString style = config.readEntry( "Style", "FlatStyle" ); 1147 QString style = config.readEntry( "Style", "FlatStyle" );
1144 1148
1145 // don't set a custom style 1149 // don't set a custom style
1146 if ( nostyle & Opie::Force_Style ) 1150 if ( nostyle & Opie::Force_Style )
1147 style = "FlatStyle"; 1151 style = "FlatStyle";
1148 1152
1149 internalSetStyle ( style ); 1153 internalSetStyle ( style );
1150 1154
1151 // Colors - from /etc/colors/Liquid.scheme 1155 // Colors - from /etc/colors/Liquid.scheme
1152 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) ); 1156 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
1153 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) ); 1157 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
1154 QPalette pal( btncolor, bgcolor ); 1158 QPalette pal( btncolor, bgcolor );
1155 QString color = config.readEntry( "Highlight", "#73adef" ); 1159 QString color = config.readEntry( "Highlight", "#73adef" );
1156 pal.setColor( QColorGroup::Highlight, QColor( color ) ); 1160 pal.setColor( QColorGroup::Highlight, QColor( color ) );
1157 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 1161 color = config.readEntry( "HighlightedText", "#FFFFFF" );
1158 pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); 1162 pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
1159 color = config.readEntry( "Text", "#000000" ); 1163 color = config.readEntry( "Text", "#000000" );
1160 pal.setColor( QColorGroup::Text, QColor( color ) ); 1164 pal.setColor( QColorGroup::Text, QColor( color ) );
1161 color = config.readEntry( "ButtonText", "#000000" ); 1165 color = config.readEntry( "ButtonText", "#000000" );
1162 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); 1166 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
1163 color = config.readEntry( "Base", "#FFFFFF" ); 1167 color = config.readEntry( "Base", "#FFFFFF" );
1164 pal.setColor( QColorGroup::Base, QColor( color ) ); 1168 pal.setColor( QColorGroup::Base, QColor( color ) );
1165 1169
1166 pal.setColor( QPalette::Disabled, QColorGroup::Text, 1170 pal.setColor( QPalette::Disabled, QColorGroup::Text,
1167 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 1171 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
1168 1172
1169 setPalette( pal, TRUE ); 1173 setPalette( pal, TRUE );
1170 1174
1171 // Window Decoration 1175 // Window Decoration
1172 QString dec = config.readEntry( "Decoration", "Flat" ); 1176 QString dec = config.readEntry( "Decoration", "Flat" );
1173 1177
1174 // don't set a custom deco 1178 // don't set a custom deco
1175 if ( nostyle & Opie::Force_Decoration ) 1179 if ( nostyle & Opie::Force_Decoration )
1176 dec = ""; 1180 dec = "";
1177 1181
1178 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle); 1182 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle);
1179 1183
1180 if ( dec != d->decorationName ) { 1184 if ( dec != d->decorationName ) {
1181 qwsSetDecoration( new QPEDecoration( dec ) ); 1185 qwsSetDecoration( new QPEDecoration( dec ) );
1182 d->decorationName = dec; 1186 d->decorationName = dec;
1183 } 1187 }
1184 1188
1185 // Font 1189 // Font
1186 QString ff = config.readEntry( "FontFamily", font().family() ); 1190 QString ff = config.readEntry( "FontFamily", font().family() );
1187 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 1191 int fs = config.readNumEntry( "FontSize", font().pointSize() );
1188 1192
1189 // don't set a custom font 1193 // don't set a custom font
1190 if ( nostyle & Opie::Force_Font ) { 1194 if ( nostyle & Opie::Force_Font ) {
1191 ff = "Vera"; 1195 ff = "Vera";
1192 fs = 10; 1196 fs = 10;
1193 } 1197 }
1194 1198
1195 setFont ( QFont ( ff, fs ), true ); 1199 setFont ( QFont ( ff, fs ), true );
1196 1200
1201#if !defined(OPIE_NO_OVERRIDE_QT)
1197 // revert to global blocking policy ... 1202 // revert to global blocking policy ...
1198 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; 1203 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
1199 Opie::force_appearance &= ~nostyle; 1204 Opie::force_appearance &= ~nostyle;
1200 #endif 1205#endif
1206#endif
1201} 1207}
1202 1208
1203void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1209void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
1204{ 1210{
1205#ifdef Q_WS_QWS 1211#ifdef Q_WS_QWS
1206 QDataStream stream( data, IO_ReadOnly ); 1212 QDataStream stream( data, IO_ReadOnly );
1207 if ( msg == "applyStyle()" ) { 1213 if ( msg == "applyStyle()" ) {
1208 applyStyle(); 1214 applyStyle();
1209 } 1215 }
1210 else if ( msg == "toggleApplicationMenu()" ) { 1216 else if ( msg == "toggleApplicationMenu()" ) {
1211 QWidget *active = activeWindow ( ); 1217 QWidget *active = activeWindow ( );
1212 1218
1213 if ( active ) { 1219 if ( active ) {
1214 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); 1220 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
1215 bool oldactive = man-> isActive ( ); 1221 bool oldactive = man-> isActive ( );
1216 1222
1217 man-> setActive( !man-> isActive() ); 1223 man-> setActive( !man-> isActive() );
1218 1224
1219 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu 1225 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
1220 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); 1226 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
1221 } 1227 }
1222 } 1228 }
1223 } 1229 }
1224 else if ( msg == "setDefaultRotation(int)" ) { 1230 else if ( msg == "setDefaultRotation(int)" ) {
1225 if ( type() == GuiServer ) { 1231 if ( type() == GuiServer ) {
1226 int r; 1232 int r;
1227 stream >> r; 1233 stream >> r;
1228 setDefaultRotation( r ); 1234 setDefaultRotation( r );
1229 } 1235 }
1230 } 1236 }
1231 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net> 1237 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net>
1232 if ( type() == GuiServer ) { 1238 if ( type() == GuiServer ) {
1233 int x, y, depth; 1239 int x, y, depth;
1234 stream >> x; 1240 stream >> x;
1235 stream >> y; 1241 stream >> y;
1236 stream >> depth; 1242 stream >> depth;
1237 setCurrentMode( x, y, depth ); 1243 setCurrentMode( x, y, depth );
1238 } 1244 }
1239 } 1245 }
1240 else if ( msg == "reset()" ) { 1246 else if ( msg == "reset()" ) {
1241 if ( type() != GuiServer ) 1247 if ( type() != GuiServer )
1242 reset(); 1248 reset();
1243 } 1249 }
1244 else if ( msg == "setCurrentRotation(int)" ) { 1250 else if ( msg == "setCurrentRotation(int)" ) {
1245 int r; 1251 int r;
1246 stream >> r; 1252 stream >> r;
1247 setCurrentRotation( r ); 1253 setCurrentRotation( r );
1248 } 1254 }
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 @@
1 1
2#include <qpe/qpeapplication.h> 2#include <qpe/qpeapplication.h>
3#include <qwsdecoration_qws.h> 3#include <qwsdecoration_qws.h>
4#include <qcommonstyle.h> 4#include <qcommonstyle.h>
5#include <qfontdatabase.h> 5#include <qfontdatabase.h>
6 6
7#include <unistd.h> 7#include <unistd.h>
8#include <stdlib.h> 8#include <stdlib.h>
9#include <stdio.h> 9#include <stdio.h>
10#include <limits.h> 10#include <limits.h>
11#include <sys/param.h> // for toolchains with old libc headers 11#include <sys/param.h> // for toolchains with old libc headers
12 12
13#include "qt_override_p.h" 13#include "qt_override_p.h"
14 14
15#if QT_VERSION > 233 15#if QT_VERSION > 233
16 16
17struct color_fix_t { 17struct color_fix_t {
18 char *m_app; 18 char *m_app;
19 char *m_class; 19 char *m_class;
20 char *m_name; 20 char *m_name;
21 QColorGroup::ColorRole m_set; 21 QColorGroup::ColorRole m_set;
22 QColorGroup::ColorRole m_get; 22 QColorGroup::ColorRole m_get;
23}; 23};
24 24
25 25#ifndef OPIE_NO_OVERRIDE_QT
26 26
27static const color_fix_t apps_that_need_special_colors [] = { 27static const color_fix_t apps_that_need_special_colors [] = {
28 { "HancomMobileWord", "HTextEdit", 0, QColorGroup::Background, QColorGroup::Base }, 28 { "HancomMobileWord", "HTextEdit", 0, QColorGroup::Background, QColorGroup::Base },
29 { "neocal", "Display", 0, QColorGroup::Background, QColorGroup::Base }, 29 { "neocal", "Display", 0, QColorGroup::Background, QColorGroup::Base },
30 30
31 { 0, 0, 0, QColorGroup::Base, QColorGroup::Base } 31 { 0, 0, 0, QColorGroup::Base, QColorGroup::Base }
32}; 32};
33 33
34static const char * const apps_that_need_pointsizes_times_10 [] = { 34static const char * const apps_that_need_pointsizes_times_10 [] = {
35 "HancomMobileWord", 35 "HancomMobileWord",
36 "hancomsheet", 36 "hancomsheet",
37 "HancomPresenterViewer", 37 "HancomPresenterViewer",
38 38
39 0 39 0
40}; 40};
41 41
42 42
43 43
44 44
45int Opie::force_appearance = 0; 45int Opie::force_appearance = 0;
46 46
47 47
48// Return the *real* name of the binary - not just a quick guess 48// Return the *real* name of the binary - not just a quick guess
49// by looking at argv [0] (which could be anything) 49// by looking at argv [0] (which could be anything)
50 50
51static void binaryNameFree ( ) 51static void binaryNameFree ( )
52{ 52{
53 ::free ((void *) Opie::binaryName ( )); // we need to cast away the const here 53 ::free ((void *) Opie::binaryName ( )); // we need to cast away the const here
54} 54}
55 55
56const char *Opie::binaryName ( ) 56const char *Opie::binaryName ( )
57{ 57{
58 static const char *appname = 0; 58 static const char *appname = 0;
59 59
60 if ( !appname ) { 60 if ( !appname ) {
61 char dst [PATH_MAX + 1]; 61 char dst [PATH_MAX + 1];
62 int l = ::readlink ( "/proc/self/exe", dst, PATH_MAX ); 62 int l = ::readlink ( "/proc/self/exe", dst, PATH_MAX );
63 63
64 if ( l <= 0 ) 64 if ( l <= 0 )
65 l = 0; 65 l = 0;
66 66
67 dst [l] = 0; 67 dst [l] = 0;
68 const char *b = ::strrchr ( dst, '/' ); 68 const char *b = ::strrchr ( dst, '/' );
69 appname = ::strdup ( b ? b + 1 : dst ); 69 appname = ::strdup ( b ? b + 1 : dst );
70 70
71 ::atexit ( binaryNameFree ); 71 ::atexit ( binaryNameFree );
72 } 72 }
73 return appname; 73 return appname;
74} 74}
75 75
76#else
77int Opie::force_appearance = 0;
78#endif
76 79
77// Fix for a toolchain incompatibility (binaries compiled with 80// Fix for a toolchain incompatibility (binaries compiled with
78// old tcs using shared libs compiled with newer tcs) 81// old tcs using shared libs compiled with newer tcs)
79 82
80extern "C" { 83extern "C" {
81 84
82extern void __gmon_start__ ( ) __attribute__(( weak )); 85extern void __gmon_start__ ( ) __attribute__(( weak ));
83 86
84extern void __gmon_start__ ( ) 87extern void __gmon_start__ ( )
85{ 88{
86} 89}
87 90
88} 91}
89 92
90 93
91// Fix for apps, that use QPainter::eraseRect() which doesn't work with styles 94// Fix for apps, that use QPainter::eraseRect() which doesn't work with styles
92// that set a background pixmap (it would be easier to fix eraseRect(), but 95// that set a background pixmap (it would be easier to fix eraseRect(), but
93// TT made it an inline ...) 96// TT made it an inline ...)
94 97
95void QPEApplication::polish ( QWidget *w ) 98void QPEApplication::polish ( QWidget *w )
96{ 99{
100#ifndef OPIE_NO_OVERRIDE_QT
97 //qDebug ( "QPEApplication::polish()" ); 101 //qDebug ( "QPEApplication::polish()" );
98 102
99 for ( const color_fix_t *ptr = apps_that_need_special_colors; ptr-> m_app; ptr++ ) { 103 for ( const color_fix_t *ptr = apps_that_need_special_colors; ptr-> m_app; ptr++ ) {
100 if (( ::strcmp ( Opie::binaryName ( ), ptr-> m_app ) == 0 ) && 104 if (( ::strcmp ( Opie::binaryName ( ), ptr-> m_app ) == 0 ) &&
101 ( ptr-> m_class ? w-> inherits ( ptr-> m_class ) : true ) && 105 ( ptr-> m_class ? w-> inherits ( ptr-> m_class ) : true ) &&
102 ( ptr-> m_name ? ( ::strcmp ( w-> name ( ), ptr-> m_name ) == 0 ) : true )) { 106 ( ptr-> m_name ? ( ::strcmp ( w-> name ( ), ptr-> m_name ) == 0 ) : true )) {
103 QPalette pal = w-> palette ( ); 107 QPalette pal = w-> palette ( );
104 pal. setColor ( ptr-> m_set, pal. color ( QPalette::Active, ptr-> m_get )); 108 pal. setColor ( ptr-> m_set, pal. color ( QPalette::Active, ptr-> m_get ));
105 w-> setPalette ( pal ); 109 w-> setPalette ( pal );
106 } 110 }
107 } 111 }
112#endif
108 QApplication::polish ( w ); 113 QApplication::polish ( w );
109} 114}
110 115
111 116
117#ifndef OPIE_NO_OVERRIDE_QT
112// Fix for the binary incompatibility that TT introduced in Qt/E 2.3.4 -- point sizes 118// Fix for the binary incompatibility that TT introduced in Qt/E 2.3.4 -- point sizes
113// were multiplied by 10 (which was incorrect) 119// were multiplied by 10 (which was incorrect)
114 120
115QValueList <int> QFontDatabase::pointSizes ( QString const &family, QString const &style, QString const &charset ) 121QValueList <int> QFontDatabase::pointSizes ( QString const &family, QString const &style, QString const &charset )
116{ 122{
117 //qDebug ( "QFontDatabase::pointSizes()" ); 123 //qDebug ( "QFontDatabase::pointSizes()" );
118 124
119 QValueList <int> sl = pointSizes_NonWeak ( family, style, charset ); 125 QValueList <int> sl = pointSizes_NonWeak ( family, style, charset );
120 126
121 for ( const char * const *ptr = apps_that_need_pointsizes_times_10; *ptr; ptr++ ) { 127 for ( const char * const *ptr = apps_that_need_pointsizes_times_10; *ptr; ptr++ ) {
122 if ( ::strcmp ( Opie::binaryName ( ), *ptr ) == 0 ) { 128 if ( ::strcmp ( Opie::binaryName ( ), *ptr ) == 0 ) {
123 for ( QValueList <int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) 129 for ( QValueList <int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it )
124 *it *= 10; 130 *it *= 10;
125 } 131 }
126 } 132 }
127 return sl; 133 return sl;
128} 134}
129 135
130 136
131// Various style/font/color related overrides for weak symbols in Qt/E, 137// Various style/font/color related overrides for weak symbols in Qt/E,
132// which allows us to force the usage of the global Opie appearance. 138// which allows us to force the usage of the global Opie appearance.
133 139
134void QApplication::setStyle ( QStyle *style ) 140void QApplication::setStyle ( QStyle *style )
135{ 141{
136 //qDebug ( "QApplication::setStyle()" ); 142 //qDebug ( "QApplication::setStyle()" );
137 143
138 if ( Opie::force_appearance & Opie::Force_Style ) 144 if ( Opie::force_appearance & Opie::Force_Style )
139 delete style; 145 delete style;
140 else 146 else
141 QApplication::setStyle_NonWeak ( style ); 147 QApplication::setStyle_NonWeak ( style );
142} 148}
143 149
144void QApplication::setPalette ( const QPalette &pal, bool informWidgets, const char *className ) 150void QApplication::setPalette ( const QPalette &pal, bool informWidgets, const char *className )
145{ 151{
146 //qDebug ( "QApplication::setPalette()" ); 152 //qDebug ( "QApplication::setPalette()" );
147 153
148 if (!( Opie::force_appearance & Opie::Force_Style )) 154 if (!( Opie::force_appearance & Opie::Force_Style ))
149 QApplication::setPalette_NonWeak ( pal, informWidgets, className ); 155 QApplication::setPalette_NonWeak ( pal, informWidgets, className );
150} 156}
151 157
152void QApplication::setFont ( const QFont &fnt, bool informWidgets, const char *className ) 158void QApplication::setFont ( const QFont &fnt, bool informWidgets, const char *className )
153{ 159{
154 //qDebug ( "QApplication::setFont()" ); 160 //qDebug ( "QApplication::setFont()" );
155 161
156 if (!( Opie::force_appearance & Opie::Force_Font )) 162 if (!( Opie::force_appearance & Opie::Force_Font ))
157 QApplication::setFont_NonWeak ( fnt, informWidgets, className ); 163 QApplication::setFont_NonWeak ( fnt, informWidgets, className );
158} 164}
159 165
160 166
161void QApplication::qwsSetDecoration ( QWSDecoration *deco ) 167void QApplication::qwsSetDecoration ( QWSDecoration *deco )
162{ 168{
163 //qDebug ( "QApplication::qwsSetDecoration()" ); 169 //qDebug ( "QApplication::qwsSetDecoration()" );
164 170
165 if ( Opie::force_appearance & Opie::Force_Decoration ) 171 if ( Opie::force_appearance & Opie::Force_Decoration )
166 delete deco; 172 delete deco;
167 else 173 else
168 QApplication::qwsSetDecoration_NonWeak ( deco ); 174 QApplication::qwsSetDecoration_NonWeak ( deco );
169} 175}
170 176#endif
171#endif \ No newline at end of file 177#endif