summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/patch_capabilities.pl10
-rwxr-xr-xconfigure8
-rw-r--r--dist/changes-4.6.236
-rw-r--r--doc/src/getting-started/installation.qdoc5
-rw-r--r--examples/multimedia/audioinput/audioinput.cpp3
-rw-r--r--examples/multimedia/audiooutput/audiooutput.cpp3
-rw-r--r--mkspecs/common/symbian/symbian.conf16
-rw-r--r--mkspecs/features/qttest_p4.prf26
-rw-r--r--src/3rdparty/phonon/ds9/videowidget.cpp3
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog38
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/ScrollbarThemeQt.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/ScrollbarThemeQt.h8
-rw-r--r--src/corelib/codecs/qtextcodec.cpp4
-rw-r--r--src/corelib/kernel/qabstractitemmodel.cpp3
-rw-r--r--src/gui/dialogs/qfiledialog.cpp3
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp5
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h10
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp32
-rw-r--r--src/gui/graphicsview/qgraphicssceneindex.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp1
-rw-r--r--src/gui/image/qimagepixmapcleanuphooks.cpp20
-rw-r--r--src/gui/image/qimagepixmapcleanuphooks_p.h23
-rw-r--r--src/gui/image/qpixmap.cpp12
-rw-r--r--src/gui/image/qpixmap_x11.cpp14
-rw-r--r--src/gui/image/qpixmapdata.cpp11
-rw-r--r--src/gui/image/qpixmapdata_p.h8
-rw-r--r--src/gui/inputmethod/qcoefepinputcontext_p.h5
-rw-r--r--src/gui/inputmethod/qcoefepinputcontext_s60.cpp28
-rw-r--r--src/gui/kernel/qaction.cpp4
-rw-r--r--src/gui/kernel/qapplication_s60.cpp17
-rw-r--r--src/gui/kernel/qsoftkeymanager_s60.cpp19
-rw-r--r--src/gui/kernel/qwidget.cpp14
-rw-r--r--src/gui/kernel/qwidget_s60.cpp108
-rw-r--r--src/gui/kernel/qwidget_x11.cpp77
-rw-r--r--src/gui/painting/qdrawhelper.cpp4
-rw-r--r--src/gui/painting/qmath_p.h6
-rw-r--r--src/gui/painting/qpainter.cpp4
-rw-r--r--src/gui/painting/qpathclipper.cpp6
-rw-r--r--src/gui/painting/qpathclipper_p.h2
-rw-r--r--src/gui/styles/qcommonstyle.cpp4
-rw-r--r--src/gui/styles/qstylesheetstyle.cpp2
-rw-r--r--src/gui/text/qfontdatabase_s60.cpp11
-rw-r--r--src/gui/text/qzip.cpp9
-rw-r--r--src/gui/text/qzipreader_p.h2
-rw-r--r--src/gui/text/qzipwriter_p.h2
-rw-r--r--src/gui/widgets/qabstractscrollarea.cpp11
-rw-r--r--src/gui/widgets/qabstractslider.cpp69
-rw-r--r--src/gui/widgets/qabstractslider_p.h1
-rw-r--r--src/gui/widgets/qdialogbuttonbox.cpp2
-rw-r--r--src/gui/widgets/qmainwindowlayout.cpp14
-rw-r--r--src/gui/widgets/qscrollbar.cpp16
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp6
-rw-r--r--src/opengl/qgl.cpp31
-rw-r--r--src/opengl/qgl_p.h9
-rw-r--r--src/opengl/qglpixmapfilter.cpp22
-rw-r--r--src/openvg/qpaintengine_vg.cpp76
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp2
-rw-r--r--src/plugins/imageformats/gif/qgifhandler.cpp308
-rw-r--r--src/plugins/imageformats/gif/qgifhandler.h3
-rw-r--r--src/plugins/imageformats/ico/qicohandler.cpp24
-rw-r--r--src/plugins/imageformats/ico/qicohandler.h3
-rw-r--r--src/plugins/kbddrivers/linuxinput/main.cpp2
-rw-r--r--src/s60installs/bwins/QtGuiu.def27
-rw-r--r--src/s60installs/eabi/QtGuiu.def25
-rw-r--r--src/s60main/s60main.pro3
-rw-r--r--src/xml/dom/qdom.cpp2
-rw-r--r--tests/auto/auto.pro8
-rw-r--r--tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp97
-rw-r--r--tests/auto/qabstractslider/tst_qabstractslider.cpp8
-rw-r--r--tests/auto/qgl/qgl.pro4
-rw-r--r--tests/auto/qgl/qgl.qrc5
-rw-r--r--tests/auto/qgl/tst_qgl.cpp240
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp149
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp8
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp43
-rw-r--r--tests/auto/qimagereader/images/qt-gif-anim.gifbin0 -> 1661 bytes
-rw-r--r--tests/auto/qimagereader/images/qt-gif-noanim.gifbin0 -> 1642 bytes
-rw-r--r--tests/auto/qimagereader/qimagereader.qrc4
-rw-r--r--tests/auto/qimagereader/tst_qimagereader.cpp34
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp238
-rw-r--r--tests/auto/uiloader/baseline/css_qtbug7737_borderimageradius.ui44
-rw-r--r--tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp2
-rw-r--r--tools/installer/README12
-rwxr-xr-xtools/installer/batch/build.bat157
-rwxr-xr-xtools/installer/batch/copy.bat121
-rwxr-xr-xtools/installer/batch/delete.bat73
-rwxr-xr-xtools/installer/batch/env.bat141
-rwxr-xr-xtools/installer/batch/extract.bat83
-rwxr-xr-xtools/installer/batch/installer.bat247
-rwxr-xr-xtools/installer/batch/log.bat58
-rwxr-xr-xtools/installer/batch/toupper.bat69
-rw-r--r--tools/installer/config/config.default.sample64
-rw-r--r--tools/installer/config/mingw-opensource.conf136
-rwxr-xr-xtools/installer/iwmake.bat124
-rw-r--r--tools/installer/nsis/confirmpage.ini59
-rw-r--r--tools/installer/nsis/gwdownload.ini118
-rw-r--r--tools/installer/nsis/gwmirror.ini67
-rw-r--r--tools/installer/nsis/images/install.icobin22486 -> 0 bytes
-rw-r--r--tools/installer/nsis/images/qt-header.bmpbin25818 -> 0 bytes
-rw-r--r--tools/installer/nsis/images/qt-wizard.bmpbin154542 -> 0 bytes
-rw-r--r--tools/installer/nsis/includes/global.nsh143
-rw-r--r--tools/installer/nsis/includes/instdir.nsh254
-rw-r--r--tools/installer/nsis/includes/list.nsh136
-rw-r--r--tools/installer/nsis/includes/qtcommon.nsh549
-rw-r--r--tools/installer/nsis/includes/qtenv.nsh303
-rw-r--r--tools/installer/nsis/includes/system.nsh269
-rw-r--r--tools/installer/nsis/installer.nsi524
-rw-r--r--tools/installer/nsis/modules/environment.nsh216
-rw-r--r--tools/installer/nsis/modules/mingw.nsh670
-rw-r--r--tools/installer/nsis/modules/opensource.nsh94
-rw-r--r--tools/installer/nsis/modules/registeruiext.nsh207
-rw-r--r--tools/installer/nsis/opensource.ini78
115 files changed, 1691 insertions, 5514 deletions
diff --git a/bin/patch_capabilities.pl b/bin/patch_capabilities.pl
index 8afe776..f82c48f 100755
--- a/bin/patch_capabilities.pl
+++ b/bin/patch_capabilities.pl
@@ -131,9 +131,13 @@ if (@ARGV)
}
}
- # Remove all dependencies to other packages to reduce unnecessary error messages
- # from depended packages that are also patched and therefore have different UID.
- if ($line =~ m/^\(0x[0-9|a-f|A-F]*\).*\{.*\}$/)
+ # Remove dependencies to known problem packages (i.e. packages that are likely to be patched, also)
+ # to reduce unnecessary error messages.
+ if ($line =~ m/^\(0x2002af5f\).*\{.*\}$/)
+ {
+ $newLine = "\n"
+ }
+ if ($line =~ m/^\(0x2001E61C\).*\{.*\}$/)
{
$newLine = "\n"
}
diff --git a/configure b/configure
index dc23392..9a3ee32 100755
--- a/configure
+++ b/configure
@@ -3369,10 +3369,10 @@ Configure options:
-debug-and-release . Compile and link two versions of Qt, with and without
debugging turned on (Mac only).
- -developer-build.... Compile and link Qt with Qt developer options (including auto-tests exporting)
+ -developer-build ... Compile and link Qt with Qt developer options (including auto-tests exporting)
- -opensource......... Compile and link the Open-Source Edition of Qt.
- -commercial......... Compile and link the Commercial Edition of Qt.
+ -opensource ........ Compile and link the Open-Source Edition of Qt.
+ -commercial ........ Compile and link the Commercial Edition of Qt.
* -shared ............ Create and use shared Qt libraries.
@@ -3765,7 +3765,7 @@ Qt/X11 only:
Requires fontconfig/fontconfig.h, libfontconfig,
freetype.h and libfreetype.
- $XIN -no-xinput.......... Do not compile Xinput support.
+ $XIN -no-xinput ......... Do not compile Xinput support.
$XIY -xinput ............ Compile Xinput support. This also enabled tablet support
which requires IRIX with wacom.h and libXi or
XFree86 with X11/extensions/XInput.h and libXi.
diff --git a/dist/changes-4.6.2 b/dist/changes-4.6.2
index aa8d40b..aaaaacc 100644
--- a/dist/changes-4.6.2
+++ b/dist/changes-4.6.2
@@ -66,8 +66,21 @@ QtCore
QtGui
-----
- - foo
- * bar
+ - QAbstractScrollArea
+ * [QTBUG-1760] Reverted horizontal scrolling with mouse wheel when vertical scrollbar is hidden
+
+ - QBmpHandler
+ * [QTBUG-7530] Fixed an infinite loop that could occur when reading invalid BMP images.
+
+ - QGraphicsEffect
+ * [QTBUG-6901] Fixed performance problem when translating items with
+ graphics effects.
+
+ - QImage
+ * [QTBUG-7231] Avoid an unnecessary copy in QImage::scaled().
+
+ - QPDFEngine
+ * [QTBUG-7249] Fixed the encoding of the Tile and Creator tags in the PDF engine.
- QApplication
* [QTBUG-6098] Added a flag to avoid construction of application panes.
@@ -113,6 +126,15 @@ QtOpenGL
- [QTBUG-7490] Better support for user-generated binary shaders.
+ - QGLWidget
+ * [QTBUG-7213] Fixed QGLWidget::renderPixmap() on Windows.
+
+ - QGLPixelBuffer
+ * [QTBUG-7476] Fixed a crash under X11 when drawing QPixmaps to QGLPixelBuffers.
+
+ - QGL2PaintEngineEx
+ * [QTBUG-7203] Reset the GL stencil mask, op and function in resetGLState().
+
QtOpenVG
--------
@@ -196,6 +218,7 @@ Qt for Mac OS X
- [QTBUG-7832]: Restored missing margins around non-unified toolbars.
- [QTBUG-7312]: Menubar and dock disappear after hiding a fullscreen widget on Cocoa.
+ - [QTBUG-7481]: Re-added the Close button in QPrintPreviewDialog for Mac/Carbon.
- [QTBUG-7522]: Drawing fake buttons using QMacStyle+QStyleOptionViewItemV4 lead to crash.
- [QTBUG-7625]: Calling showFullScreen() then showNormal() on a widget results in top menu hiding.
- [QTBUG-7086]: QFileDialog now correctly responds to fileMode & acceptMode changes.
@@ -203,6 +226,7 @@ Qt for Mac OS X
- [QTBUG-7305]: Fixed a crash when deleting QMainWindow with native toolbar on Cocoa.
- [QTBUG-6882]: Fixed a text layout issue with QHeaderView in right-to-left mode.
+
Qt for Embedded Linux
---------------------
@@ -227,6 +251,14 @@ Qt for Windows CE
Qt for Symbian
--------------
+ * [QTBUG-6556] Improve the DEF file handling scheme, to allow simple enable/
+ disable of DEF file usage (for use _during development only_ to decouple
+ the need to update the DEF files at the precise point that symbols are
+ removed, therefore allowing builds by CI systems to succeed even if symbols
+ have been removed. This does not remove the need to update the DEF files
+ before release. NOTE: Builds generated using this flag are not binary
+ compatible with previous versions of Qt.)
+
- QProcess
* [QTBUG-7667] Fixed no-timeout case for QProcess::waitForFinished.
diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc
index 5f95c5a..b679250 100644
--- a/doc/src/getting-started/installation.qdoc
+++ b/doc/src/getting-started/installation.qdoc
@@ -1038,8 +1038,9 @@ If you are using pre-built binaries, follow the instructions given in the
\list
\o \bold{Note:} This is not required if you are using pre-built binary package.
\endlist
- \o Building Qt libraries requires \l{http://www.arm.com/products/DevTools/RVCT.html}{RVCT} 2.2 [build 686] or later,
- which is not available free of charge.
+ \o Building Qt libraries requires \l{http://www.arm.com/products/DevTools/RVCT.html}{RVCT} version 2.2 (build 686 or later),
+ which is not available free of charge. Usage of later versions of RVCT, including the 3.x and 4.x series, is not supported
+ in this release.
\endlist
Running Qt on real device requires the Open C to be installed on the device.
diff --git a/examples/multimedia/audioinput/audioinput.cpp b/examples/multimedia/audioinput/audioinput.cpp
index 8cc9948..fbf4dc4 100644
--- a/examples/multimedia/audioinput/audioinput.cpp
+++ b/examples/multimedia/audioinput/audioinput.cpp
@@ -213,6 +213,9 @@ InputTest::InputTest()
if(format.sampleSize() != 16) {
qWarning()<<"audio device doesn't support 16 bit samples, example cannot run";
+ audioInput = 0;
+ button->setDisabled(true);
+ button2->setDisabled(true);
return;
}
diff --git a/examples/multimedia/audiooutput/audiooutput.cpp b/examples/multimedia/audiooutput/audiooutput.cpp
index 0c57f4d..b44accd 100644
--- a/examples/multimedia/audiooutput/audiooutput.cpp
+++ b/examples/multimedia/audiooutput/audiooutput.cpp
@@ -179,6 +179,9 @@ AudioTest::AudioTest()
if(settings.sampleSize() != 16) {
qWarning()<<"audio device doesn't support 16 bit samples, example cannot run";
+ button->setDisabled(true);
+ button2->setDisabled(true);
+ audioOutput = 0;
return;
}
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index 7162bad..6113746 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -148,3 +148,19 @@ exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/Series60v5.0.sis
MMP_RULES -= PAGED
}
}
+
+QMAKE_CXXFLAGS_FAST_VFP.ARMCC = --fpmode fast
+# [TODO] QMAKE_CXXFLAGS_FAST_VFP.GCCE =
+
+symbian {
+ armfpu = $$find(MMP_RULES, "ARMFPU")
+ !isEmpty(armfpu) {
+ vfpv2 = $$find(MMP_RULES, "vfpv2")
+ !isEmpty(vfpv2) {
+ # we will respect fpu setting obtained from configure, but,
+ # if vfpv2 or softvfp+vfpv2 used we want to force RunFast VFP mode
+ QMAKE_CXXFLAGS.ARMCC += $${QMAKE_CXXFLAGS_FAST_VFP.ARMCC}
+ # [TODO] QMAKE_CXXFLAGS.GCCE += $${QMAKE_CXXFLAGS_FAST_VFP.GCCE}
+ }
+ }
+} \ No newline at end of file
diff --git a/mkspecs/features/qttest_p4.prf b/mkspecs/features/qttest_p4.prf
index 525e7b2..e0b22f2 100644
--- a/mkspecs/features/qttest_p4.prf
+++ b/mkspecs/features/qttest_p4.prf
@@ -13,23 +13,19 @@ symbian:{
# prefix test binary with tst_
!contains(TARGET, ^tst_.*):TARGET = $$join(TARGET,,"tst_")
-########################################################################
-# Use install rule to run test application.
-# This lets you do 'make install' on a test to both build and run it,
-# and lets you easily build and run all tests from the parent directory.
-# ----------------------------------------------------------------------
-runme.files =
-runme.path = .
-!isEmpty(DESTDIR): runme.commands = cd ./$(DESTDIR) &&
-macx: runme.commands += ./$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
-else:unix: runme.commands += ./$(QMAKE_TARGET)
+check.files =
+check.path = .
+!isEmpty(DESTDIR): check.commands = cd ./$(DESTDIR) &&
+macx: check.commands += ./$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
+else:unix: check.commands += ./$(QMAKE_TARGET)
else:win32: {
- CONFIG(debug, debug|release):runme.commands += debug\\$(QMAKE_TARGET)
- else:runme.commands += release\\$(QMAKE_TARGET)
+ CONFIG(debug, debug|release):check.commands += debug\\$(QMAKE_TARGET)
+ else:check.commands += release\\$(QMAKE_TARGET)
}
-embedded: runme.commands += -qws
-INSTALLS += runme
+embedded: check.commands += -qws
+QMAKE_EXTRA_TARGETS += check
-########################################################################
+target.path += $$[QT_INSTALL_PREFIX]/tests/qt4
+INSTALLS += target
diff --git a/src/3rdparty/phonon/ds9/videowidget.cpp b/src/3rdparty/phonon/ds9/videowidget.cpp
index 091be16..95423c6 100644
--- a/src/3rdparty/phonon/ds9/videowidget.cpp
+++ b/src/3rdparty/phonon/ds9/videowidget.cpp
@@ -218,6 +218,9 @@ namespace Phonon
if (toNative && m_noNativeRendererSupported)
return current; //no switch here
+ if (!mediaObject())
+ return current;
+
//firt we delete the renderer
//initialization of the widgets
for(int i = 0; i < FILTER_COUNT; ++i) {
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index c304876..4348cbc 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -8,4 +8,4 @@ The commit imported was from the
and has the sha1 checksum
- 69dd29fbeb12d076741dce70ac6bc155101ccd6f
+ da5d96a26e80162027bc95ce7e5725fe4b277ff7
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index 18d119a..1f6f290 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -2,6 +2,44 @@
Reviewed by Kenneth Rohde Christiansen.
+ [Qt] In the StyledPainter determine the style from the Render and Scrollbar theme instead of from the paint device
+ https://bugs.webkit.org/show_bug.cgi?id=34054
+
+ Getting the style from the painter's paint device is a hack that breaks when
+ the paint device's style is different than the style that is used when
+ calculating the metries earlier when there is no painter available.
+
+ This change moves us closer to always using the same style.
+
+ * platform/qt/RenderThemeQt.cpp:
+ (WebCore::StylePainter::StylePainter):
+ (WebCore::StylePainter::init):
+ (WebCore::RenderThemeQt::paintButton):
+ (WebCore::RenderThemeQt::paintTextField):
+ (WebCore::RenderThemeQt::paintMenuList):
+ (WebCore::RenderThemeQt::paintMenuListButton):
+ (WebCore::RenderThemeQt::paintSliderTrack):
+ (WebCore::RenderThemeQt::paintMediaMuteButton):
+ (WebCore::RenderThemeQt::paintMediaPlayButton):
+ (WebCore::RenderThemeQt::paintMediaSliderTrack):
+ (WebCore::RenderThemeQt::paintMediaSliderThumb):
+ * platform/qt/RenderThemeQt.h:
+ * platform/qt/ScrollbarThemeQt.cpp:
+ (WebCore::ScrollbarThemeQt::paint):
+ (WebCore::ScrollbarThemeQt::hitTest):
+ (WebCore::ScrollbarThemeQt::shouldCenterOnThumb):
+ (WebCore::ScrollbarThemeQt::scrollbarThickness):
+ (WebCore::ScrollbarThemeQt::thumbLength):
+ (WebCore::ScrollbarThemeQt::trackPosition):
+ (WebCore::ScrollbarThemeQt::trackLength):
+ (WebCore::ScrollbarThemeQt::paintScrollCorner):
+ (WebCore::ScrollbarThemeQt::style):
+ * platform/qt/ScrollbarThemeQt.h:
+
+2010-01-25 Simon Hausmann <hausmann@webkit.org>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
[Qt] Use the fallback style on Maemo 5
https://bugs.webkit.org/show_bug.cgi?id=34376
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
index 6a1eee8..37a6408 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
@@ -44,6 +44,7 @@
#include "Page.h"
#include "RenderBox.h"
#include "RenderTheme.h"
+#include "ScrollbarThemeQt.h"
#include "UserAgentStyleSheets.h"
#include "QWebPageClient.h"
#include "qwebpage.h"
@@ -66,17 +67,17 @@ namespace WebCore {
using namespace HTMLNames;
-StylePainter::StylePainter(const RenderObject::PaintInfo& paintInfo)
+StylePainter::StylePainter(RenderThemeQt* theme, const RenderObject::PaintInfo& paintInfo)
{
- init(paintInfo.context ? paintInfo.context : 0);
+ init(paintInfo.context ? paintInfo.context : 0, theme->qStyle());
}
-StylePainter::StylePainter(GraphicsContext* context)
+StylePainter::StylePainter(ScrollbarThemeQt* theme, GraphicsContext* context)
{
- init(context);
+ init(context, theme->style());
}
-void StylePainter::init(GraphicsContext* context)
+void StylePainter::init(GraphicsContext* context, QStyle* themeStyle)
{
painter = static_cast<QPainter*>(context->platformContext());
widget = 0;
@@ -85,7 +86,7 @@ void StylePainter::init(GraphicsContext* context)
dev = painter->device();
if (dev && dev->devType() == QInternal::Widget)
widget = static_cast<QWidget*>(dev);
- style = (widget ? widget->style() : QApplication::style());
+ style = themeStyle;
if (painter) {
// the styles often assume being called with a pristine painter where no brush is set,
@@ -464,7 +465,7 @@ void RenderThemeQt::setButtonPadding(RenderStyle* style) const
bool RenderThemeQt::paintButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r)
{
- StylePainter p(i);
+ StylePainter p(this, i);
if (!p.isValid())
return true;
@@ -497,7 +498,7 @@ void RenderThemeQt::adjustTextFieldStyle(CSSStyleSelector*, RenderStyle* style,
bool RenderThemeQt::paintTextField(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r)
{
- StylePainter p(i);
+ StylePainter p(this, i);
if (!p.isValid())
return true;
@@ -566,7 +567,7 @@ void RenderThemeQt::setPopupPadding(RenderStyle* style) const
bool RenderThemeQt::paintMenuList(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r)
{
- StylePainter p(i);
+ StylePainter p(this, i);
if (!p.isValid())
return true;
@@ -606,7 +607,7 @@ void RenderThemeQt::adjustMenuListButtonStyle(CSSStyleSelector*, RenderStyle* st
bool RenderThemeQt::paintMenuListButton(RenderObject* o, const RenderObject::PaintInfo& i,
const IntRect& r)
{
- StylePainter p(i);
+ StylePainter p(this, i);
if (!p.isValid())
return true;
@@ -837,7 +838,7 @@ bool RenderThemeQt::paintMediaMuteButton(RenderObject* o, const RenderObject::Pa
if (!mediaElement)
return false;
- StylePainter p(paintInfo);
+ StylePainter p(this, paintInfo);
if (!p.isValid())
return true;
@@ -866,7 +867,7 @@ bool RenderThemeQt::paintMediaPlayButton(RenderObject* o, const RenderObject::Pa
if (!mediaElement)
return false;
- StylePainter p(paintInfo);
+ StylePainter p(this, paintInfo);
if (!p.isValid())
return true;
@@ -905,7 +906,7 @@ bool RenderThemeQt::paintMediaSliderTrack(RenderObject* o, const RenderObject::P
if (!mediaElement)
return false;
- StylePainter p(paintInfo);
+ StylePainter p(this, paintInfo);
if (!p.isValid())
return true;
@@ -932,7 +933,7 @@ bool RenderThemeQt::paintMediaSliderThumb(RenderObject* o, const RenderObject::P
if (!mediaElement)
return false;
- StylePainter p(paintInfo);
+ StylePainter p(this, paintInfo);
if (!p.isValid())
return true;
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h
index 19337ac..13fb42f 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h
@@ -35,6 +35,7 @@ namespace WebCore {
class RenderStyle;
class HTMLMediaElement;
+class ScrollbarThemeQt;
class RenderThemeQt : public RenderTheme {
private:
@@ -75,6 +76,8 @@ public:
virtual String extraMediaControlsStyleSheet();
#endif
+ QStyle* qStyle() const;
+
protected:
virtual bool paintCheckbox(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
virtual void setCheckboxSize(RenderStyle*) const;
@@ -137,7 +140,6 @@ private:
void setButtonPadding(RenderStyle*) const;
void setPopupPadding(RenderStyle*) const;
- QStyle* qStyle() const;
QStyle* fallbackStyle() const;
Page* m_page;
@@ -152,8 +154,8 @@ private:
class StylePainter {
public:
- explicit StylePainter(const RenderObject::PaintInfo& paintInfo);
- explicit StylePainter(GraphicsContext* context);
+ explicit StylePainter(RenderThemeQt*, const RenderObject::PaintInfo&);
+ explicit StylePainter(ScrollbarThemeQt*, GraphicsContext*);
~StylePainter();
bool isValid() const { return painter && style; }
@@ -170,7 +172,7 @@ public:
{ style->drawComplexControl(cc, &opt, painter, widget); }
private:
- void init(GraphicsContext* context);
+ void init(GraphicsContext* context, QStyle*);
QBrush oldBrush;
bool oldAntialiasing;
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/ScrollbarThemeQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/ScrollbarThemeQt.cpp
index 561e55f..c0692ca 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/ScrollbarThemeQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/qt/ScrollbarThemeQt.cpp
@@ -140,7 +140,7 @@ bool ScrollbarThemeQt::paint(Scrollbar* scrollbar, GraphicsContext* graphicsCont
return false;
}
- StylePainter p(graphicsContext);
+ StylePainter p(this, graphicsContext);
if (!p.isValid())
return true;
@@ -172,14 +172,14 @@ ScrollbarPart ScrollbarThemeQt::hitTest(Scrollbar* scrollbar, const PlatformMous
QStyleOptionSlider* opt = styleOptionSlider(scrollbar);
const QPoint pos = scrollbar->convertFromContainingWindow(evt.pos());
opt->rect.moveTo(QPoint(0, 0));
- QStyle::SubControl sc = QApplication::style()->hitTestComplexControl(QStyle::CC_ScrollBar, opt, pos, 0);
+ QStyle::SubControl sc = style()->hitTestComplexControl(QStyle::CC_ScrollBar, opt, pos, 0);
return scrollbarPart(sc);
}
bool ScrollbarThemeQt::shouldCenterOnThumb(Scrollbar*, const PlatformMouseEvent& evt)
{
// Middle click centers slider thumb (if supported)
- return QApplication::style()->styleHint(QStyle::SH_ScrollBar_MiddleClickAbsolutePosition) && evt.button() == MiddleButton;
+ return style()->styleHint(QStyle::SH_ScrollBar_MiddleClickAbsolutePosition) && evt.button() == MiddleButton;
}
void ScrollbarThemeQt::invalidatePart(Scrollbar* scrollbar, ScrollbarPart)
@@ -190,13 +190,12 @@ void ScrollbarThemeQt::invalidatePart(Scrollbar* scrollbar, ScrollbarPart)
int ScrollbarThemeQt::scrollbarThickness(ScrollbarControlSize controlSize)
{
- QStyle* s = QApplication::style();
QStyleOptionSlider o;
o.orientation = Qt::Vertical;
o.state &= ~QStyle::State_Horizontal;
if (controlSize != RegularScrollbar)
o.state |= QStyle::State_Mini;
- return s->pixelMetric(QStyle::PM_ScrollBarExtent, &o, 0);
+ return style()->pixelMetric(QStyle::PM_ScrollBarExtent, &o, 0);
}
int ScrollbarThemeQt::thumbPosition(Scrollbar* scrollbar)
@@ -209,21 +208,21 @@ int ScrollbarThemeQt::thumbPosition(Scrollbar* scrollbar)
int ScrollbarThemeQt::thumbLength(Scrollbar* scrollbar)
{
QStyleOptionSlider* opt = styleOptionSlider(scrollbar);
- IntRect thumb = QApplication::style()->subControlRect(QStyle::CC_ScrollBar, opt, QStyle::SC_ScrollBarSlider, 0);
+ IntRect thumb = style()->subControlRect(QStyle::CC_ScrollBar, opt, QStyle::SC_ScrollBarSlider, 0);
return scrollbar->orientation() == HorizontalScrollbar ? thumb.width() : thumb.height();
}
int ScrollbarThemeQt::trackPosition(Scrollbar* scrollbar)
{
QStyleOptionSlider* opt = styleOptionSlider(scrollbar);
- IntRect track = QApplication::style()->subControlRect(QStyle::CC_ScrollBar, opt, QStyle::SC_ScrollBarGroove, 0);
+ IntRect track = style()->subControlRect(QStyle::CC_ScrollBar, opt, QStyle::SC_ScrollBarGroove, 0);
return scrollbar->orientation() == HorizontalScrollbar ? track.x() - scrollbar->x() : track.y() - scrollbar->y();
}
int ScrollbarThemeQt::trackLength(Scrollbar* scrollbar)
{
QStyleOptionSlider* opt = styleOptionSlider(scrollbar);
- IntRect track = QApplication::style()->subControlRect(QStyle::CC_ScrollBar, opt, QStyle::SC_ScrollBarGroove, 0);
+ IntRect track = style()->subControlRect(QStyle::CC_ScrollBar, opt, QStyle::SC_ScrollBarGroove, 0);
return scrollbar->orientation() == HorizontalScrollbar ? track.width() : track.height();
}
@@ -237,7 +236,7 @@ void ScrollbarThemeQt::paintScrollCorner(ScrollView* scrollView, GraphicsContext
#if QT_VERSION < 0x040500
context->fillRect(rect, QApplication::palette().color(QPalette::Normal, QPalette::Window));
#else
- StylePainter p(context);
+ StylePainter p(this, context);
if (!p.isValid())
return;
@@ -247,5 +246,10 @@ void ScrollbarThemeQt::paintScrollCorner(ScrollView* scrollView, GraphicsContext
#endif
}
+QStyle* ScrollbarThemeQt::style() const
+{
+ return QApplication::style();
+}
+
}
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/ScrollbarThemeQt.h b/src/3rdparty/webkit/WebCore/platform/qt/ScrollbarThemeQt.h
index 6ca44ea..cf4882d 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/ScrollbarThemeQt.h
+++ b/src/3rdparty/webkit/WebCore/platform/qt/ScrollbarThemeQt.h
@@ -28,6 +28,12 @@
#include "ScrollbarTheme.h"
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_NAMESPACE
+class QStyle;
+QT_END_NAMESPACE
+
namespace WebCore {
class ScrollbarThemeQt : public ScrollbarTheme {
@@ -49,6 +55,8 @@ public:
virtual int trackLength(Scrollbar*);
virtual int scrollbarThickness(ScrollbarControlSize = RegularScrollbar);
+
+ QStyle* style() const;
};
}
diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp
index 698ca9e..b63a82e 100644
--- a/src/corelib/codecs/qtextcodec.cpp
+++ b/src/corelib/codecs/qtextcodec.cpp
@@ -958,8 +958,8 @@ QTextCodec *QTextCodec::codecForName(const QByteArray &name)
if (nameMatch(cursor->name(), name))
return cursor;
QList<QByteArray> aliases = cursor->aliases();
- for (int i = 0; i < aliases.size(); ++i)
- if (nameMatch(aliases.at(i), name))
+ for (int y = 0; y < aliases.size(); ++y)
+ if (nameMatch(aliases.at(y), name))
return cursor;
}
diff --git a/src/corelib/kernel/qabstractitemmodel.cpp b/src/corelib/kernel/qabstractitemmodel.cpp
index dbf422e..36e4af9 100644
--- a/src/corelib/kernel/qabstractitemmodel.cpp
+++ b/src/corelib/kernel/qabstractitemmodel.cpp
@@ -1006,6 +1006,9 @@ void QAbstractItemModelPrivate::columnsRemoved(const QModelIndex &parent,
Returns the child of the model index that is stored in the given \a row and
\a column.
+ \note This function does not work for an invalid model index which is often
+ used as the root index.
+
\sa parent(), sibling()
*/
diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp
index 21650bb..089e04a 100644
--- a/src/gui/dialogs/qfiledialog.cpp
+++ b/src/gui/dialogs/qfiledialog.cpp
@@ -229,11 +229,10 @@ Q_GUI_EXPORT _qt_filedialog_save_filename_hook qt_filedialog_save_filename_hook
\value ReadOnly Indicates that the model is readonly.
\value HideNameFilterDetails Indicates if the is hidden or not.
- This value is obsolete and does nothing since Qt 4.5:
\value DontUseSheet In previous versions of Qt, the static
functions would create a sheet by default if the static function
- was given a parent. This is no longer supported in Qt 4.5, The
+ was given a parent. This is no longer supported and does nothing in Qt 4.5, The
static functions will always be an application modal dialog. If
you want to use sheets, use QFileDialog::open() instead.
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index ed36f87..b4e19d1 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -2569,6 +2569,7 @@ void QGraphicsItem::setOpacity(qreal opacity)
if (newOpacity == d_ptr->opacity)
return;
+ bool wasFullyTransparent = d_ptr->isOpacityNull();
d_ptr->opacity = newOpacity;
// Notify change.
@@ -2584,7 +2585,9 @@ void QGraphicsItem::setOpacity(qreal opacity)
d_ptr->scene->d_func()->markDirty(this, QRectF(),
/*invalidateChildren=*/true,
/*force=*/false,
- /*ignoreOpacity=*/true);
+ /*ignoreOpacity=*/d_ptr->isOpacityNull());
+ if (wasFullyTransparent)
+ d_ptr->paintedViewBoundingRectsNeedRepaint = 1;
}
if (d_ptr->isObject)
diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h
index 5ad6cd5..b3ca3b5 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -358,14 +358,20 @@ public:
return o;
}
+ inline bool isOpacityNull() const
+ { return (opacity < qreal(0.001)); }
+
+ static inline bool isOpacityNull(qreal opacity)
+ { return (opacity < qreal(0.001)); }
+
inline bool isFullyTransparent() const
{
- if (opacity < 0.001)
+ if (isOpacityNull())
return true;
if (!parent)
return false;
- return calcEffectiveOpacity() < 0.001;
+ return isOpacityNull(calcEffectiveOpacity());
}
inline qreal effectiveOpacity() const {
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 54d47fa..66707fc 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -251,6 +251,7 @@
#endif
#include <private/qgraphicseffect_p.h>
#include <private/qgesturemanager_p.h>
+#include <private/qpathclipper_p.h>
// #define GESTURE_DEBUG
#ifndef GESTURE_DEBUG
@@ -372,7 +373,10 @@ void QGraphicsScenePrivate::_q_emitUpdated()
}
}
} else {
- updateAll = false;
+ if (views.isEmpty()) {
+ updateAll = false;
+ return;
+ }
for (int i = 0; i < views.size(); ++i)
views.at(i)->d_func()->processPendingUpdates();
// It's important that we update all views before we dispatch, hence two for-loops.
@@ -4603,6 +4607,7 @@ void QGraphicsScenePrivate::drawItems(QPainter *painter, const QTransform *const
if (!unpolishedItems.isEmpty())
_q_polishItems();
+ updateAll = false;
QRectF exposedSceneRect;
if (exposedRegion && indexMethod != QGraphicsScene::NoIndex) {
exposedSceneRect = exposedRegion->boundingRect().adjusted(-1, -1, 1, 1);
@@ -4630,7 +4635,7 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter *
return; // Item has neither contents nor children!(?)
const qreal opacity = item->d_ptr->combineOpacityFromParent(parentOpacity);
- const bool itemIsFullyTransparent = (opacity < 0.0001);
+ const bool itemIsFullyTransparent = QGraphicsItemPrivate::isOpacityNull(opacity);
if (itemIsFullyTransparent && (!itemHasChildren || item->d_ptr->childrenCombineOpacity()))
return;
@@ -4750,7 +4755,7 @@ void QGraphicsScenePrivate::draw(QGraphicsItem *item, QPainter *painter, const Q
qreal opacity, const QTransform *effectTransform,
bool wasDirtyParentSceneTransform, bool drawItem)
{
- const bool itemIsFullyTransparent = (opacity < 0.0001);
+ const bool itemIsFullyTransparent = QGraphicsItemPrivate::isOpacityNull(opacity);
const bool itemClipsChildrenToShape = (item->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape);
const bool itemHasChildren = !item->d_ptr->children.isEmpty();
@@ -4765,7 +4770,12 @@ void QGraphicsScenePrivate::draw(QGraphicsItem *item, QPainter *painter, const Q
painter->setWorldTransform(*transformPtr * *effectTransform);
else
painter->setWorldTransform(*transformPtr);
- painter->setClipPath(item->shape(), Qt::IntersectClip);
+ QRectF clipRect;
+ const QPainterPath clipPath(item->shape());
+ if (QPathClipper::pathToRect(clipPath, &clipRect))
+ painter->setClipRect(clipRect, Qt::IntersectClip);
+ else
+ painter->setClipPath(clipPath, Qt::IntersectClip);
}
// Draw children behind
@@ -4801,8 +4811,14 @@ void QGraphicsScenePrivate::draw(QGraphicsItem *item, QPainter *painter, const Q
painter->setWorldTransform(*transformPtr);
}
- if (itemClipsToShape)
- painter->setClipPath(item->shape(), Qt::IntersectClip);
+ if (itemClipsToShape) {
+ QRectF clipRect;
+ const QPainterPath clipPath(item->shape());
+ if (QPathClipper::pathToRect(clipPath, &clipRect))
+ painter->setClipRect(clipRect, Qt::IntersectClip);
+ else
+ painter->setClipPath(clipPath, Qt::IntersectClip);
+ }
painter->setOpacity(opacity);
if (!item->d_ptr->cacheMode && !item->d_ptr->isWidget)
@@ -4980,7 +4996,8 @@ void QGraphicsScenePrivate::processDirtyItemsRecursive(QGraphicsItem *item, bool
}
const qreal opacity = item->d_ptr->combineOpacityFromParent(parentOpacity);
- const bool itemIsFullyTransparent = !item->d_ptr->ignoreOpacity && opacity < 0.0001;
+ const bool itemIsFullyTransparent = !item->d_ptr->ignoreOpacity
+ && QGraphicsItemPrivate::isOpacityNull(opacity);
if (itemIsFullyTransparent && (!itemHasChildren || item->d_ptr->childrenCombineOpacity())) {
resetDirtyItem(item, /*recursive=*/itemHasChildren);
return;
@@ -5153,6 +5170,7 @@ void QGraphicsScene::drawItems(QPainter *painter,
if (!d->unpolishedItems.isEmpty())
d->_q_polishItems();
+ d->updateAll = false;
QTransform viewTransform = painter->worldTransform();
Q_UNUSED(options);
diff --git a/src/gui/graphicsview/qgraphicssceneindex.cpp b/src/gui/graphicsview/qgraphicssceneindex.cpp
index 043c4eb..707c71f 100644
--- a/src/gui/graphicsview/qgraphicssceneindex.cpp
+++ b/src/gui/graphicsview/qgraphicssceneindex.cpp
@@ -279,7 +279,7 @@ void QGraphicsSceneIndexPrivate::recursive_items_helper(QGraphicsItem *item, QRe
return;
const qreal opacity = item->d_ptr->combineOpacityFromParent(parentOpacity);
- const bool itemIsFullyTransparent = (opacity < 0.0001);
+ const bool itemIsFullyTransparent = QGraphicsItemPrivate::isOpacityNull(opacity);
const bool itemHasChildren = !item->d_ptr->children.isEmpty();
if (itemIsFullyTransparent && (!itemHasChildren || item->d_ptr->childrenCombineOpacity()))
return;
@@ -554,7 +554,7 @@ QList<QGraphicsItem *> QGraphicsSceneIndex::estimateTopLevelItems(const QRectF &
/*!
\fn QList<QGraphicsItem *> QGraphicsSceneIndex::items(Qt::SortOrder order = Qt::DescendingOrder) const
-
+
This pure virtual function all items in the index and sort them using
\a order.
*/
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 451f183..96b9373 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -2748,7 +2748,6 @@ bool QGraphicsView::viewportEvent(QEvent *event)
}
}
}
- d->scene->d_func()->updateAll = false;
}
break;
case QEvent::TouchBegin:
diff --git a/src/gui/image/qimagepixmapcleanuphooks.cpp b/src/gui/image/qimagepixmapcleanuphooks.cpp
index 61d538f..ace4bb6 100644
--- a/src/gui/image/qimagepixmapcleanuphooks.cpp
+++ b/src/gui/image/qimagepixmapcleanuphooks.cpp
@@ -62,12 +62,12 @@ QImagePixmapCleanupHooks *QImagePixmapCleanupHooks::instance()
return qt_image_and_pixmap_cleanup_hooks();
}
-void QImagePixmapCleanupHooks::addPixmapModificationHook(_qt_pixmap_cleanup_hook_pm hook)
+void QImagePixmapCleanupHooks::addPixmapDataModificationHook(_qt_pixmap_cleanup_hook_pmd hook)
{
pixmapModificationHooks.append(hook);
}
-void QImagePixmapCleanupHooks::addPixmapDestructionHook(_qt_pixmap_cleanup_hook_pm hook)
+void QImagePixmapCleanupHooks::addPixmapDataDestructionHook(_qt_pixmap_cleanup_hook_pmd hook)
{
pixmapDestructionHooks.append(hook);
}
@@ -78,12 +78,12 @@ void QImagePixmapCleanupHooks::addImageHook(_qt_image_cleanup_hook_64 hook)
imageHooks.append(hook);
}
-void QImagePixmapCleanupHooks::removePixmapModificationHook(_qt_pixmap_cleanup_hook_pm hook)
+void QImagePixmapCleanupHooks::removePixmapDataModificationHook(_qt_pixmap_cleanup_hook_pmd hook)
{
pixmapModificationHooks.removeAll(hook);
}
-void QImagePixmapCleanupHooks::removePixmapDestructionHook(_qt_pixmap_cleanup_hook_pm hook)
+void QImagePixmapCleanupHooks::removePixmapDataDestructionHook(_qt_pixmap_cleanup_hook_pmd hook)
{
pixmapDestructionHooks.removeAll(hook);
}
@@ -93,24 +93,24 @@ void QImagePixmapCleanupHooks::removeImageHook(_qt_image_cleanup_hook_64 hook)
imageHooks.removeAll(hook);
}
-void QImagePixmapCleanupHooks::executePixmapModificationHooks(QPixmap* pm)
+void QImagePixmapCleanupHooks::executePixmapDataModificationHooks(QPixmapData* pmd)
{
QImagePixmapCleanupHooks *h = qt_image_and_pixmap_cleanup_hooks();
for (int i = 0; i < h->pixmapModificationHooks.count(); ++i)
- h->pixmapModificationHooks[i](pm);
+ h->pixmapModificationHooks[i](pmd);
if (qt_pixmap_cleanup_hook_64)
- qt_pixmap_cleanup_hook_64(pm->cacheKey());
+ qt_pixmap_cleanup_hook_64(pmd->cacheKey());
}
-void QImagePixmapCleanupHooks::executePixmapDestructionHooks(QPixmap* pm)
+void QImagePixmapCleanupHooks::executePixmapDataDestructionHooks(QPixmapData* pmd)
{
QImagePixmapCleanupHooks *h = qt_image_and_pixmap_cleanup_hooks();
for (int i = 0; i < h->pixmapDestructionHooks.count(); ++i)
- h->pixmapDestructionHooks[i](pm);
+ h->pixmapDestructionHooks[i](pmd);
if (qt_pixmap_cleanup_hook_64)
- qt_pixmap_cleanup_hook_64(pm->cacheKey());
+ qt_pixmap_cleanup_hook_64(pmd->cacheKey());
}
void QImagePixmapCleanupHooks::executeImageHooks(qint64 key)
diff --git a/src/gui/image/qimagepixmapcleanuphooks_p.h b/src/gui/image/qimagepixmapcleanuphooks_p.h
index 7176044..88dd3a6 100644
--- a/src/gui/image/qimagepixmapcleanuphooks_p.h
+++ b/src/gui/image/qimagepixmapcleanuphooks_p.h
@@ -58,7 +58,8 @@
QT_BEGIN_NAMESPACE
typedef void (*_qt_image_cleanup_hook_64)(qint64);
-typedef void (*_qt_pixmap_cleanup_hook_pm)(QPixmap*);
+typedef void (*_qt_pixmap_cleanup_hook_pmd)(QPixmapData*);
+
class QImagePixmapCleanupHooks;
@@ -71,27 +72,27 @@ public:
static void enableCleanupHooks(const QPixmap &pixmap);
static void enableCleanupHooks(QPixmapData *pixmapData);
- // Gets called when a pixmap is about to be modified:
- void addPixmapModificationHook(_qt_pixmap_cleanup_hook_pm);
+ // Gets called when a pixmap data is about to be modified:
+ void addPixmapDataModificationHook(_qt_pixmap_cleanup_hook_pmd);
- // Gets called when a pixmap is about to be destroyed:
- void addPixmapDestructionHook(_qt_pixmap_cleanup_hook_pm);
+ // Gets called when a pixmap data is about to be destroyed:
+ void addPixmapDataDestructionHook(_qt_pixmap_cleanup_hook_pmd);
// Gets called when an image is about to be modified or destroyed:
void addImageHook(_qt_image_cleanup_hook_64);
- void removePixmapModificationHook(_qt_pixmap_cleanup_hook_pm);
- void removePixmapDestructionHook(_qt_pixmap_cleanup_hook_pm);
+ void removePixmapDataModificationHook(_qt_pixmap_cleanup_hook_pmd);
+ void removePixmapDataDestructionHook(_qt_pixmap_cleanup_hook_pmd);
void removeImageHook(_qt_image_cleanup_hook_64);
- static void executePixmapModificationHooks(QPixmap*);
- static void executePixmapDestructionHooks(QPixmap*);
+ static void executePixmapDataModificationHooks(QPixmapData*);
+ static void executePixmapDataDestructionHooks(QPixmapData*);
static void executeImageHooks(qint64 key);
private:
QList<_qt_image_cleanup_hook_64> imageHooks;
- QList<_qt_pixmap_cleanup_hook_pm> pixmapModificationHooks;
- QList<_qt_pixmap_cleanup_hook_pm> pixmapDestructionHooks;
+ QList<_qt_pixmap_cleanup_hook_pmd> pixmapModificationHooks;
+ QList<_qt_pixmap_cleanup_hook_pmd> pixmapDestructionHooks;
};
QT_END_NAMESPACE
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index f823fdc..d1e5c40 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -320,8 +320,6 @@ QPixmap::QPixmap(const char * const xpm[])
QPixmap::~QPixmap()
{
Q_ASSERT(!data || data->ref >= 1); // Catch if ref-counting changes again
- if (data && data->is_cached && data->ref == 1) // ref will be decrememnted after destructor returns
- QImagePixmapCleanupHooks::executePixmapDestructionHooks(this);
}
/*!
@@ -1025,12 +1023,8 @@ qint64 QPixmap::cacheKey() const
if (isNull())
return 0;
- int classKey = data->classId();
- if (classKey >= 1024)
- classKey = -(classKey >> 10);
- return ((((qint64) classKey) << 56)
- | (((qint64) data->serialNumber()) << 32)
- | ((qint64) (data->detach_no)));
+ Q_ASSERT(data);
+ return data->cacheKey();
}
static void sendResizeEvents(QWidget *target)
@@ -1943,7 +1937,7 @@ void QPixmap::detach()
}
if (data->is_cached && data->ref == 1)
- QImagePixmapCleanupHooks::executePixmapModificationHooks(this);
+ QImagePixmapCleanupHooks::executePixmapDataModificationHooks(data.data());
#if defined(Q_WS_MAC)
QMacPixmapData *macData = id == QPixmapData::MacClass ? static_cast<QMacPixmapData*>(data.data()) : 0;
diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp
index 0e66e09..e1e8a0d 100644
--- a/src/gui/image/qpixmap_x11.cpp
+++ b/src/gui/image/qpixmap_x11.cpp
@@ -68,6 +68,7 @@
#include "qx11info_x11.h"
#include <private/qdrawhelper_p.h>
#include <private/qimage_p.h>
+#include <private/qimagepixmapcleanuphooks_p.h>
#include <stdlib.h>
@@ -1228,6 +1229,12 @@ void QX11PixmapData::fill(const QColor &fillColor)
QX11PixmapData::~QX11PixmapData()
{
+ // Cleanup hooks have to be called before the handles are freed
+ if (is_cached) {
+ QImagePixmapCleanupHooks::executePixmapDataDestructionHooks(this);
+ is_cached = false;
+ }
+
release();
}
@@ -1236,8 +1243,13 @@ void QX11PixmapData::release()
delete pengine;
pengine = 0;
- if (!X11)
+ if (!X11) {
+#ifndef QT_NO_DEBUG
+ qWarning("~QX11PixmapData(): QPixmap objects must be destroyed before the QApplication"
+ " object, otherwise the native pixmap object will be leaked.");
+#endif
return;
+ }
if (x11_mask) {
#ifndef QT_NO_XRENDER
diff --git a/src/gui/image/qpixmapdata.cpp b/src/gui/image/qpixmapdata.cpp
index 65032da..ea4fe6b 100644
--- a/src/gui/image/qpixmapdata.cpp
+++ b/src/gui/image/qpixmapdata.cpp
@@ -45,6 +45,7 @@
#include <QtGui/qimagereader.h>
#include <private/qgraphicssystem_p.h>
#include <private/qapplication_p.h>
+#include <private/qimagepixmapcleanuphooks_p.h>
QT_BEGIN_NAMESPACE
@@ -80,6 +81,16 @@ QPixmapData::QPixmapData(PixelType pixelType, int objectId)
QPixmapData::~QPixmapData()
{
+ // Sometimes the pixmap cleanup hooks will be called from derrived classes, which will
+ // then set is_cached to false. For example, on X11 QtOpenGL needs to delete the GLXPixmap
+ // or EGL Pixmap Surface for a given pixmap _before_ the native X11 pixmap is deleted,
+ // otherwise some drivers will leak the GL surface. In this case, QX11PixmapData will
+ // call the cleanup hooks itself before deleting the native pixmap and set is_cached to
+ // false.
+ if (is_cached) {
+ QImagePixmapCleanupHooks::executePixmapDataDestructionHooks(this);
+ is_cached = false;
+ }
}
QPixmapData *QPixmapData::createCompatiblePixmapData() const
diff --git a/src/gui/image/qpixmapdata_p.h b/src/gui/image/qpixmapdata_p.h
index 1125515..827fa18 100644
--- a/src/gui/image/qpixmapdata_p.h
+++ b/src/gui/image/qpixmapdata_p.h
@@ -117,6 +117,14 @@ public:
inline int colorCount() const { return metric(QPaintDevice::PdmNumColors); }
inline int depth() const { return d; }
inline bool isNull() const { return is_null; }
+ inline qint64 cacheKey() const {
+ int classKey = id;
+ if (classKey >= 1024)
+ classKey = -(classKey >> 10);
+ return ((((qint64) classKey) << 56)
+ | (((qint64) ser_no) << 32)
+ | ((qint64) detach_no));
+ }
#if defined(Q_OS_SYMBIAN)
virtual void* toNativeType(NativeType type);
diff --git a/src/gui/inputmethod/qcoefepinputcontext_p.h b/src/gui/inputmethod/qcoefepinputcontext_p.h
index f5034fc..d5243c3 100644
--- a/src/gui/inputmethod/qcoefepinputcontext_p.h
+++ b/src/gui/inputmethod/qcoefepinputcontext_p.h
@@ -96,7 +96,7 @@ protected:
void timerEvent(QTimerEvent *timerEvent);
private:
- void commitCurrentString(bool triggeredBySymbian);
+ void commitCurrentString(bool cancelFepTransaction);
void updateHints(bool mustUpdateInputCapabilities);
void applyHints(Qt::InputMethodHints hints);
void applyFormat(QList<QInputMethodEvent::Attribute> *attributes);
@@ -127,7 +127,7 @@ public:
private:
void DoCommitFepInlineEditL();
MCoeFepAwareTextEditor_Extension1* Extension1(TBool& aSetToTrue);
- void ReportAknEdStateEvent(MAknEdStateObserver::EAknEdwinStateEvent aEventType);
+ void ReportAknEdStateEvent(MAknEdStateObserver::EAknEdwinStateEvent aEventType);
// From MCoeFepAwareTextEditor_Extension1
public:
@@ -151,7 +151,6 @@ private:
int m_inlinePosition;
MFepInlineTextFormatRetriever *m_formatRetriever;
MFepPointerEventHandlerDuringInlineEdit *m_pointerHandler;
- int m_longPress;
int m_cursorPos;
QBasicTimer m_tempPreeditStringTimeout;
bool m_hasTempPreeditString;
diff --git a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
index e5ab300..2b91711 100644
--- a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
+++ b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
@@ -71,7 +71,6 @@ QCoeFepInputContext::QCoeFepInputContext(QObject *parent)
m_inlinePosition(0),
m_formatRetriever(0),
m_pointerHandler(0),
- m_longPress(0),
m_cursorPos(0),
m_hasTempPreeditString(false)
{
@@ -101,7 +100,7 @@ QCoeFepInputContext::~QCoeFepInputContext()
void QCoeFepInputContext::reset()
{
- commitCurrentString(false);
+ commitCurrentString(true);
}
void QCoeFepInputContext::ReportAknEdStateEvent(MAknEdStateObserver::EAknEdwinStateEvent aEventType)
@@ -126,7 +125,7 @@ void QCoeFepInputContext::update()
void QCoeFepInputContext::setFocusWidget(QWidget *w)
{
- commitCurrentString(false);
+ commitCurrentString(true);
QInputContext::setFocusWidget(w);
@@ -219,7 +218,7 @@ bool QCoeFepInputContext::filterEvent(const QEvent *event)
break;
case Qt::Key_Select:
if (!m_preeditString.isEmpty()) {
- commitCurrentString(false);
+ commitCurrentString(true);
return true;
}
break;
@@ -231,10 +230,11 @@ bool QCoeFepInputContext::filterEvent(const QEvent *event)
&& focusWidget()->inputMethodHints() & Qt::ImhHiddenText
&& !keyEvent->text().isEmpty()) {
// Send some temporary preedit text in order to make text visible for a moment.
+ m_cursorPos = focusWidget()->inputMethodQuery(Qt::ImCursorPosition).toInt();
m_preeditString = keyEvent->text();
QList<QInputMethodEvent::Attribute> attributes;
QInputMethodEvent imEvent(m_preeditString, attributes);
- QApplication::sendEvent(focusWidget(), &imEvent);
+ sendEvent(imEvent);
m_tempPreeditStringTimeout.start(1000, this);
m_hasTempPreeditString = true;
update();
@@ -293,7 +293,7 @@ void QCoeFepInputContext::mouseHandler( int x, QMouseEvent *event)
Q_ASSERT(focusWidget());
if (event->type() == QEvent::MouseButtonPress && event->button() == Qt::LeftButton) {
- commitCurrentString(false);
+ commitCurrentString(true);
int pos = focusWidget()->inputMethodQuery(Qt::ImCursorPosition).toInt();
QList<QInputMethodEvent::Attribute> attributes;
@@ -739,31 +739,33 @@ void QCoeFepInputContext::GetScreenCoordinatesForFepL(TPoint& aLeftSideOfBaseLin
void QCoeFepInputContext::DoCommitFepInlineEditL()
{
- commitCurrentString(true);
+ commitCurrentString(false);
}
-void QCoeFepInputContext::commitCurrentString(bool triggeredBySymbian)
+void QCoeFepInputContext::commitCurrentString(bool cancelFepTransaction)
{
+ int longPress = 0;
+
if (m_preeditString.size() == 0) {
QWidget *w = focusWidget();
- if (triggeredBySymbian && w) {
+ if (!cancelFepTransaction && w) {
// We must replace the last character only if the input box has already accepted one
if (w->inputMethodQuery(Qt::ImCursorPosition).toInt() != m_cursorPos)
- m_longPress = 1;
+ longPress = 1;
}
return;
}
QList<QInputMethodEvent::Attribute> attributes;
QInputMethodEvent event(QLatin1String(""), attributes);
- event.setCommitString(m_preeditString, 0-m_longPress, m_longPress);
+ event.setCommitString(m_preeditString, 0-longPress, longPress);
m_preeditString.clear();
sendEvent(event);
m_hasTempPreeditString = false;
- m_longPress = 0;
+ longPress = 0;
- if (!triggeredBySymbian) {
+ if (cancelFepTransaction) {
CCoeFep* fep = CCoeEnv::Static()->Fep();
if (fep)
fep->CancelTransaction();
diff --git a/src/gui/kernel/qaction.cpp b/src/gui/kernel/qaction.cpp
index 4b7d949..8ddd051 100644
--- a/src/gui/kernel/qaction.cpp
+++ b/src/gui/kernel/qaction.cpp
@@ -715,6 +715,10 @@ QActionGroup *QAction::actionGroup() const
it is displayed to the left of the menu text. There is no default
icon.
+ On Symbian the icons which are passed to softkeys, i.e. to actions with
+ softkey role, need to have pixmap alpha channel correctly set otherwise
+ drawing artifacts will appear when softkey is pressed down.
+
If a null icon (QIcon::isNull() is passed into this function,
the icon of the action is cleared.
*/
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 6e03d7c..4a137ee 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -924,8 +924,8 @@ void QSymbianControl::PositionChanged()
cr.moveTopLeft(newPos);
qwidget->data->crect = cr;
QTLWExtra *top = qwidget->d_func()->maybeTopData();
- if (top)
- top->normalGeometry = cr;
+ if (top && (qwidget->windowState() & (~Qt::WindowActive)) == Qt::WindowNoState)
+ top->normalGeometry.moveTopLeft(newPos);
if (qwidget->isVisible()) {
QMoveEvent e(newPos, oldPos);
qt_sendSpontaneousEvent(qwidget, &e);
@@ -960,15 +960,14 @@ void QSymbianControl::FocusChanged(TDrawNow /* aDrawNow */)
qwidget->d_func()->setWindowIcon_sys(true);
qwidget->d_func()->setWindowTitle_sys(qwidget->windowTitle());
#ifdef Q_WS_S60
- // If widget is fullscreen, hide status pane and button container
- // otherwise show them.
+ // If widget is fullscreen/minimized, hide status pane and button container otherwise show them.
CEikStatusPane* statusPane = S60->statusPane();
CEikButtonGroupContainer* buttonGroup = S60->buttonGroupContainer();
- bool isFullscreen = qwidget->windowState() & Qt::WindowFullScreen;
- if (statusPane && (bool)statusPane->IsVisible() == isFullscreen)
- statusPane->MakeVisible(!isFullscreen);
- if (buttonGroup && (bool)buttonGroup->IsVisible() == isFullscreen)
- buttonGroup->MakeVisible(!isFullscreen);
+ TBool visible = !(qwidget->windowState() & (Qt::WindowFullScreen | Qt::WindowMinimized));
+ if (statusPane)
+ statusPane->MakeVisible(visible);
+ if (buttonGroup)
+ buttonGroup->MakeVisible(visible);
#endif
} else if (QApplication::activeWindow() == qwidget->window()) {
if (CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog()) {
diff --git a/src/gui/kernel/qsoftkeymanager_s60.cpp b/src/gui/kernel/qsoftkeymanager_s60.cpp
index a72d16c..af84a8f 100644
--- a/src/gui/kernel/qsoftkeymanager_s60.cpp
+++ b/src/gui/kernel/qsoftkeymanager_s60.cpp
@@ -237,21 +237,18 @@ bool QSoftKeyManagerPrivateS60::setSoftkeyImage(CEikButtonGroupContainer *cba,
// prepareSoftkeyPixmap creates a new pixmap with requiredIconSize and blits the 'pmWihtAspectRatio'
// to correct location of it
QPixmap softkeyPixmap = prepareSoftkeyPixmap(pmWihtAspectRatio, position, requiredIconSize);
- QBitmap softkeyMask = softkeyPixmap.mask();
- if (softkeyMask.isNull()) {
- softkeyMask = QBitmap(softkeyPixmap.size());
- softkeyMask.fill(Qt::color1);
- }
- // Softkey mask in > SV_S60_5_1 has to be inverted
- if(QSysInfo::s60Version() > QSysInfo::SV_S60_5_1) {
- QImage maskImage = softkeyMask.toImage();
- maskImage.invertPixels();
- softkeyMask = QPixmap::fromImage(maskImage);
+ QPixmap softkeyAlpha = softkeyPixmap.alphaChannel();
+ // Alpha channel in 5.1 and older devices need to be inverted
+ // TODO: Switch to use toSymbianCFbsBitmap with invert when available
+ if(QSysInfo::s60Version() <= QSysInfo::SV_S60_5_1) {
+ QImage alphaImage = softkeyAlpha.toImage();
+ alphaImage.invertPixels();
+ softkeyAlpha = QPixmap::fromImage(alphaImage);
}
CFbsBitmap* nBitmap = softkeyPixmap.toSymbianCFbsBitmap();
- CFbsBitmap* nMask = softkeyMask.toSymbianCFbsBitmap();
+ CFbsBitmap* nMask = softkeyAlpha.toSymbianCFbsBitmap();
CEikImage* myimage = new (ELeave) CEikImage;
myimage->SetPicture( nBitmap, nMask ); // nBitmap and nMask ownership transfered
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index 78a25ac..c072d9d 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -1439,6 +1439,18 @@ QWidget::~QWidget()
}
#endif
+#ifdef Q_OS_SYMBIAN
+ if (d->extra && d->extra->topextra && d->extra->topextra->backingStore) {
+ // Okay, we are about to destroy the top-level window that owns
+ // the backing store. Make sure we delete the backing store right away
+ // before the window handle is invalid. This is important because
+ // the backing store will delete its window surface, which may or may
+ // not have a reference to this widget that will be used later to
+ // notify the window it no longer has a surface.
+ delete d->extra->topextra->backingStore;
+ d->extra->topextra->backingStore = 0;
+ }
+#endif
if (QWidgetBackingStore *bs = d->maybeBackingStore()) {
bs->removeDirtyWidget(this);
if (testAttribute(Qt::WA_StaticContents))
@@ -6427,6 +6439,8 @@ void QWidget::setTabOrder(QWidget* first, QWidget *second)
first = fp;
}
+ if (fp == second)
+ return;
if (QWidget *sp = second->focusProxy())
second = sp;
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index 0ce7534..a844430 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -1046,96 +1046,48 @@ void QWidget::setWindowState(Qt::WindowStates newstate)
return;
if (isWindow()) {
-#ifdef Q_WS_S60
- // Change window decoration visibility if switching to or from fullsccreen
- // In addition decoration visibility is changed when the initial has been
- // WindowNoState.
- // The window decoration visibility has to be changed before doing actual
- // window state change since in that order the availableGeometry will return
- // directly the right size and we will avoid unnecessarty redraws
- if ((oldstate & Qt::WindowFullScreen) != (newstate & Qt::WindowFullScreen) ||
- oldstate == Qt::WindowNoState) {
- CEikStatusPane* statusPane = S60->statusPane();
- CEikButtonGroupContainer* buttonGroup = S60->buttonGroupContainer();
- if (newstate & Qt::WindowFullScreen) {
- if (statusPane)
- statusPane->MakeVisible(false);
- if (buttonGroup)
- buttonGroup->MakeVisible(false);
- } else {
- if (statusPane)
- statusPane->MakeVisible(true);
- if (buttonGroup)
- buttonGroup->MakeVisible(true);
- }
+ QSymbianControl *window = static_cast<QSymbianControl *>(effectiveWinId());
+ if (window && newstate & Qt::WindowMinimized) {
+ window->setFocusSafely(false);
+ window->MakeVisible(false);
+ } else if (window && oldstate & Qt::WindowMinimized) {
+ window->setFocusSafely(true);
+ window->MakeVisible(true);
}
+
+#ifdef Q_WS_S60
+ // Hide window decoration when switching to fullsccreen / minimized otherwise show decoration.
+ // The window decoration visibility has to be changed before doing actual window state
+ // change since in that order the availableGeometry will return directly the right size and
+ // we will avoid unnecessarty redraws
+ CEikStatusPane* statusPane = S60->statusPane();
+ CEikButtonGroupContainer* buttonGroup = S60->buttonGroupContainer();
+ TBool visible = !(newstate & (Qt::WindowFullScreen | Qt::WindowMinimized));
+ if (statusPane)
+ statusPane->MakeVisible(visible);
+ if (buttonGroup)
+ buttonGroup->MakeVisible(visible);
#endif // Q_WS_S60
createWinId();
Q_ASSERT(testAttribute(Qt::WA_WState_Created));
- QTLWExtra *top = d->topData();
-
// Ensure the initial size is valid, since we store it as normalGeometry below.
if (!testAttribute(Qt::WA_Resized) && !isVisible())
adjustSize();
- if ((oldstate & Qt::WindowMaximized) != (newstate & Qt::WindowMaximized)) {
- if ((newstate & Qt::WindowMaximized)) {
- const QRect normalGeometry = geometry();
+ QTLWExtra *top = d->topData();
+ const QRect normalGeometry = (top->normalGeometry.width() < 0) ? geometry() : top->normalGeometry;
- const QRect r = top->normalGeometry;
- setGeometry(qApp->desktop()->availableGeometry(this));
- top->normalGeometry = r;
+ if (newstate & Qt::WindowFullScreen)
+ setGeometry(qApp->desktop()->screenGeometry(this));
+ else if (newstate & Qt::WindowMaximized)
+ setGeometry(qApp->desktop()->availableGeometry(this));
+ else
+ setGeometry(normalGeometry);
- if (top->normalGeometry.width() < 0)
- top->normalGeometry = normalGeometry;
- } else {
- // restore original geometry
- setGeometry(top->normalGeometry);
- }
- }
- if ((oldstate & Qt::WindowFullScreen) != (newstate & Qt::WindowFullScreen)) {
- if (newstate & Qt::WindowFullScreen) {
- const QRect normalGeometry = geometry();
- const QRect r = top->normalGeometry;
- setGeometry(qApp->desktop()->screenGeometry(this));
-
- top->normalGeometry = r;
- if (top->normalGeometry.width() < 0)
- top->normalGeometry = normalGeometry;
- } else {
- if (newstate & Qt::WindowMaximized) {
- const QRect r = top->normalGeometry;
- setGeometry(qApp->desktop()->availableGeometry(this));
- top->normalGeometry = r;
- } else {
- setGeometry(top->normalGeometry);
- }
- }
- }
- if ((oldstate & Qt::WindowMinimized) != (newstate & Qt::WindowMinimized)) {
- if (newstate & Qt::WindowMinimized) {
- if (isVisible()) {
- QSymbianControl *id = static_cast<QSymbianControl *>(effectiveWinId());
- if (id->IsFocused()) // Avoid unnecessary calls to FocusChanged()
- id->setFocusSafely(false);
- id->MakeVisible(false);
- }
- } else {
- if (isVisible()) {
- QSymbianControl *id = static_cast<QSymbianControl *>(effectiveWinId());
- id->MakeVisible(true);
- if (!id->IsFocused()) // Avoid unnecessary calls to FocusChanged()
- id->setFocusSafely(true);
- }
- const QRect normalGeometry = geometry();
- const QRect r = top->normalGeometry;
- top->normalGeometry = r;
- if (top->normalGeometry.width() < 0)
- top->normalGeometry = normalGeometry;
- }
- }
+ //restore normal geometry
+ top->normalGeometry = normalGeometry;
}
data->window_state = newstate;
diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp
index 4684bc1..10fb009 100644
--- a/src/gui/kernel/qwidget_x11.cpp
+++ b/src/gui/kernel/qwidget_x11.cpp
@@ -346,11 +346,6 @@ Q_GUI_EXPORT void qt_x11_enforce_cursor(QWidget * w)
qt_x11_enforce_cursor(w, false);
}
-static Bool checkForConfigureAndExpose(Display *, XEvent *e, XPointer)
-{
- return e->type == ConfigureNotify || e->type == Expose;
-}
-
Q_GUI_EXPORT void qt_x11_wait_for_window_manager(QWidget* w)
{
if (!w || (!w->isWindow() && !w->internalWinId()))
@@ -363,38 +358,60 @@ Q_GUI_EXPORT void qt_x11_wait_for_window_manager(QWidget* w)
if (!w->testAttribute(Qt::WA_WState_Created))
return;
- if (!(w->windowFlags() & Qt::X11BypassWindowManagerHint)) {
- // if the window is not override-redirect, then the window manager
- // will reparent us to the frame decoration window.
- while (!XCheckTypedWindowEvent(X11->display, w->effectiveWinId(), ReparentNotify, &ev)) {
- if (t.elapsed() > maximumWaitTime)
- return;
- qApp->syncX(); // non-busy wait
- }
- }
+ WId winid = w->internalWinId();
- while (!XCheckTypedWindowEvent(X11->display, w->effectiveWinId(), MapNotify, &ev)) {
- if (t.elapsed() > maximumWaitTime)
- return;
- qApp->syncX(); // non-busy wait
- }
+ // first deliver events that are already in the local queue
+ QApplication::sendPostedEvents();
- qApp->x11ProcessEvent(&ev);
+ // the normal sequence is:
+ // ... ConfigureNotify ... ReparentNotify ... MapNotify ... Expose
+ // with X11BypassWindowManagerHint:
+ // ConfigureNotify ... MapNotify ... Expose
- // ok, seems like the window manager successfully reparented us, we'll wait
- // for the first paint event to arrive, while handling ConfigureNotify in
- // the arrival order
- while(1)
- {
- if (XCheckIfEvent(X11->display, &ev, checkForConfigureAndExpose, 0)) {
+ enum State {
+ Initial, Reparented, Mapped
+ } state = Initial;
+
+ do {
+ if (XEventsQueued(X11->display, QueuedAlready)) {
+ XNextEvent(X11->display, &ev);
qApp->x11ProcessEvent(&ev);
- if (ev.type == Expose)
- return;
+
+ if (w->windowFlags() & Qt::X11BypassWindowManagerHint) {
+ switch (state) {
+ case Initial:
+ case Reparented:
+ if (ev.type == MapNotify && ev.xany.window == winid)
+ state = Mapped;
+ break;
+ case Mapped:
+ if (ev.type == Expose && ev.xany.window == winid)
+ return;
+ break;
+ }
+ } else {
+ switch (state) {
+ case Initial:
+ if (ev.type == ReparentNotify && ev.xany.window == winid)
+ state = Reparented;
+ break;
+ case Reparented:
+ if (ev.type == MapNotify && ev.xany.window == winid)
+ state = Mapped;
+ break;
+ case Mapped:
+ if (ev.type == Expose && ev.xany.window == winid)
+ return;
+ break;
+ }
+ }
+ } else {
+ if (!XEventsQueued(X11->display, QueuedAfterFlush))
+ qApp->syncX(); // non-busy wait
}
if (t.elapsed() > maximumWaitTime)
return;
- qApp->syncX(); // non-busy wait
- }
+ } while(1);
}
void qt_change_net_wm_state(const QWidget* w, bool set, Atom one, Atom two = 0)
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index 194dda3..660a2a8 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -2408,7 +2408,11 @@ static inline int soft_light_op(int dst, int src, int da, int sa)
else if (4 * dst <= da)
return (dst * sa * 255 + da * (src2 - sa) * ((((16 * dst_np - 12 * 255) * dst_np + 3 * 65025) * dst_np) / 65025) + temp) / 65025;
else {
+# ifdef Q_CC_RVCT // needed to avoid compiler crash in RVCT 2.2
+ return (dst * sa * 255 + da * (src2 - sa) * (qIntSqrtInt(dst_np * 255) - dst_np) + temp) / 65025;
+# else
return (dst * sa * 255 + da * (src2 - sa) * (int(sqrt(qreal(dst_np * 255))) - dst_np) + temp) / 65025;
+# endif
}
}
diff --git a/src/gui/painting/qmath_p.h b/src/gui/painting/qmath_p.h
index cd9f5ea..8a5f5ab 100644
--- a/src/gui/painting/qmath_p.h
+++ b/src/gui/painting/qmath_p.h
@@ -54,6 +54,7 @@
//
#include <math.h>
+#include <qmath.h>
QT_BEGIN_NAMESPACE
@@ -61,6 +62,11 @@ static const qreal Q_PI = qreal(3.14159265358979323846); // pi
static const qreal Q_2PI = qreal(6.28318530717958647693); // 2*pi
static const qreal Q_PI2 = qreal(1.57079632679489661923); // pi/2
+inline int qIntSqrtInt(int v)
+{
+ return static_cast<int>(qSqrt(static_cast<qreal>(v)));
+}
+
QT_END_NAMESPACE
#endif // QMATH_P_H
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index cde6a2d..bf12c6b 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -7509,7 +7509,7 @@ QPaintDevice *QPainter::redirected(const QPaintDevice *device, QPoint *offset)
return widgetPrivate->redirected(offset);
}
- if (*globalRedirectionAtomic() == 0)
+ if (!globalRedirectionAtomic() || *globalRedirectionAtomic() == 0)
return 0;
QMutexLocker locker(globalRedirectionsMutex());
@@ -7529,7 +7529,7 @@ QPaintDevice *QPainter::redirected(const QPaintDevice *device, QPoint *offset)
void qt_painter_removePaintDevice(QPaintDevice *dev)
{
- if (*globalRedirectionAtomic() == 0)
+ if (!globalRedirectionAtomic() || *globalRedirectionAtomic() == 0)
return;
QMutex *mutex = 0;
diff --git a/src/gui/painting/qpathclipper.cpp b/src/gui/painting/qpathclipper.cpp
index 7997e77..bc81514 100644
--- a/src/gui/painting/qpathclipper.cpp
+++ b/src/gui/painting/qpathclipper.cpp
@@ -90,8 +90,6 @@ static QPointF normalize(const QPointF &p)
return p / qSqrt(p.x() * p.x() + p.y() * p.y());
}
-static bool pathToRect(const QPainterPath &path, QRectF *rect = 0);
-
struct QIntersection
{
qreal alphaA;
@@ -1660,7 +1658,7 @@ static bool fuzzyCompare(qreal a, qreal b)
return qFuzzyCompare(a, b);
}
-static bool pathToRect(const QPainterPath &path, QRectF *rect)
+bool QPathClipper::pathToRect(const QPainterPath &path, QRectF *rect)
{
if (path.elementCount() != 5)
return false;
@@ -1693,7 +1691,7 @@ static bool pathToRect(const QPainterPath &path, QRectF *rect)
return false;
if (rect)
- *rect = QRectF(QPointF(x1, y1), QPointF(x2, y2));
+ rect->setCoords(x1, y1, x2, y2);
return true;
}
diff --git a/src/gui/painting/qpathclipper_p.h b/src/gui/painting/qpathclipper_p.h
index 0d2c049..b900862 100644
--- a/src/gui/painting/qpathclipper_p.h
+++ b/src/gui/painting/qpathclipper_p.h
@@ -86,6 +86,8 @@ public:
bool intersect();
bool contains();
+ static bool pathToRect(const QPainterPath &path, QRectF *rect = 0);
+
private:
Q_DISABLE_COPY(QPathClipper)
diff --git a/src/gui/styles/qcommonstyle.cpp b/src/gui/styles/qcommonstyle.cpp
index 74d3ec3..b1924e7 100644
--- a/src/gui/styles/qcommonstyle.cpp
+++ b/src/gui/styles/qcommonstyle.cpp
@@ -1149,10 +1149,10 @@ void QCommonStylePrivate::tabLayout(const QStyleOptionTabV3 *opt, const QWidget
int vpadding = proxyStyle->pixelMetric(QStyle::PM_TabBarTabVSpace, opt, widget) / 2;
if (opt->shape == QTabBar::RoundedSouth || opt->shape == QTabBar::TriangularSouth)
verticalShift = -verticalShift;
- tr.adjust(hpadding, vpadding, horizontalShift - hpadding, verticalShift - vpadding);
+ tr.adjust(hpadding, verticalShift - vpadding, horizontalShift - hpadding, vpadding);
bool selected = opt->state & QStyle::State_Selected;
if (selected) {
- tr.setBottom(tr.bottom() - verticalShift);
+ tr.setTop(tr.top() - verticalShift);
tr.setRight(tr.right() - horizontalShift);
}
diff --git a/src/gui/styles/qstylesheetstyle.cpp b/src/gui/styles/qstylesheetstyle.cpp
index 498313b..b36294a 100644
--- a/src/gui/styles/qstylesheetstyle.cpp
+++ b/src/gui/styles/qstylesheetstyle.cpp
@@ -1125,6 +1125,7 @@ void QRenderRule::fixupBorder(int nativeWidth)
void QRenderRule::drawBorderImage(QPainter *p, const QRect& rect)
{
+ setClip(p, rect);
static const Qt::TileRule tileMode2TileRule[] = {
Qt::StretchTile, Qt::RoundTile, Qt::StretchTile, Qt::RepeatTile, Qt::StretchTile };
@@ -1142,6 +1143,7 @@ void QRenderRule::drawBorderImage(QPainter *p, const QRect& rect)
QRect(QPoint(), borderImageData->pixmap.size()), sourceMargins,
QTileRules(tileMode2TileRule[borderImageData->horizStretch], tileMode2TileRule[borderImageData->vertStretch]));
p->setRenderHint(QPainter::SmoothPixmapTransform, wasSmoothPixmapTransform);
+ unsetClip(p);
}
QRect QRenderRule::originRect(const QRect &rect, Origin origin) const
diff --git a/src/gui/text/qfontdatabase_s60.cpp b/src/gui/text/qfontdatabase_s60.cpp
index f8de08f..7e5397d 100644
--- a/src/gui/text/qfontdatabase_s60.cpp
+++ b/src/gui/text/qfontdatabase_s60.cpp
@@ -246,8 +246,8 @@ static void initializeDb()
QSymbianFbsHeapLock lock(QSymbianFbsHeapLock::Unlock);
const int numTypeFaces = QS60Data::screenDevice()->NumTypefaces();
- const QFontDatabaseS60StoreImplementation *store = dynamic_cast<const QFontDatabaseS60StoreImplementation*>(db->s60Store);
- Q_ASSERT(store);
+ const QFontDatabaseS60StoreImplementation *store =
+ static_cast<const QFontDatabaseS60StoreImplementation*>(db->s60Store);
bool fontAdded = false;
for (int i = 0; i < numTypeFaces; i++) {
TTypefaceSupport typefaceSupport;
@@ -258,8 +258,7 @@ static void initializeDb()
continue;
if (font->TypeUid() == KCFbsFontUid) {
TOpenFontFaceAttrib faceAttrib;
- const CFbsFont *cfbsFont = dynamic_cast<const CFbsFont *>(font);
- Q_ASSERT(cfbsFont);
+ const CFbsFont *cfbsFont = static_cast<const CFbsFont *>(font);
cfbsFont->GetFaceAttrib(faceAttrib);
QtFontStyle::Key styleKey;
@@ -390,8 +389,8 @@ QFontEngine *QFontDatabase::findFont(int script, const QFontPrivate *, const QFo
QFontDef request = req;
request.family = fontFamily;
#if defined(QT_NO_FREETYPE)
- const QFontDatabaseS60StoreImplementation *store = dynamic_cast<const QFontDatabaseS60StoreImplementation*>(db->s60Store);
- Q_ASSERT(store);
+ const QFontDatabaseS60StoreImplementation *store =
+ static_cast<const QFontDatabaseS60StoreImplementation*>(db->s60Store);
const QFontEngineS60Extensions *extension = store->extension(fontFamily);
fe = new QFontEngineS60(request, extension);
#else
diff --git a/src/gui/text/qzip.cpp b/src/gui/text/qzip.cpp
index 2fc1940..d30c996 100644
--- a/src/gui/text/qzip.cpp
+++ b/src/gui/text/qzip.cpp
@@ -54,10 +54,13 @@
#include <zlib.h>
#if defined(Q_OS_WIN)
-#undef S_IFREG
-#define S_IFREG 0100000
+# undef S_IFREG
+# define S_IFREG 0100000
+# ifndef S_IFDIR
+# define S_IFDIR 0040000
+# endif
# ifndef S_ISDIR
-# define S_ISDIR(x) ((x) & 0040000) > 0
+# define S_ISDIR(x) ((x) & S_IFDIR) > 0
# endif
# ifndef S_ISREG
# define S_ISREG(x) ((x) & 0170000) == S_IFREG
diff --git a/src/gui/text/qzipreader_p.h b/src/gui/text/qzipreader_p.h
index 1086464..67a2ace 100644
--- a/src/gui/text/qzipreader_p.h
+++ b/src/gui/text/qzipreader_p.h
@@ -49,7 +49,7 @@
// -------------
//
// This file is not part of the Qt API. It exists for the convenience
-// of the QLibrary class. This header file may change from
+// of the QZipReader class. This header file may change from
// version to version without notice, or even be removed.
//
// We mean it.
diff --git a/src/gui/text/qzipwriter_p.h b/src/gui/text/qzipwriter_p.h
index 7b97937..9322f4a 100644
--- a/src/gui/text/qzipwriter_p.h
+++ b/src/gui/text/qzipwriter_p.h
@@ -47,7 +47,7 @@
// -------------
//
// This file is not part of the Qt API. It exists for the convenience
-// of the QLibrary class. This header file may change from
+// of the QZipWriter class. This header file may change from
// version to version without notice, or even be removed.
//
// We mean it.
diff --git a/src/gui/widgets/qabstractscrollarea.cpp b/src/gui/widgets/qabstractscrollarea.cpp
index 87f6c83..1d496d5 100644
--- a/src/gui/widgets/qabstractscrollarea.cpp
+++ b/src/gui/widgets/qabstractscrollarea.cpp
@@ -1134,13 +1134,10 @@ void QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e)
void QAbstractScrollArea::wheelEvent(QWheelEvent *e)
{
Q_D(QAbstractScrollArea);
- QScrollBar *const bars[2] = { d->hbar, d->vbar };
- int idx = (e->orientation() == Qt::Vertical) ? 1 : 0;
- int other = (idx + 1) % 2;
- if (!bars[idx]->isVisible() && bars[other]->isVisible())
- idx = other; // If the scrollbar of the event orientation is hidden, fallback to the other.
-
- QApplication::sendEvent(bars[idx], e);
+ if (static_cast<QWheelEvent*>(e)->orientation() == Qt::Horizontal)
+ QApplication::sendEvent(d->hbar, e);
+ else
+ QApplication::sendEvent(d->vbar, e);
}
#endif
diff --git a/src/gui/widgets/qabstractslider.cpp b/src/gui/widgets/qabstractslider.cpp
index 2874647..73c17db 100644
--- a/src/gui/widgets/qabstractslider.cpp
+++ b/src/gui/widgets/qabstractslider.cpp
@@ -214,8 +214,8 @@ QT_BEGIN_NAMESPACE
*/
QAbstractSliderPrivate::QAbstractSliderPrivate()
- : minimum(0), maximum(99), singleStep(1), pageStep(10),
- value(0), position(0), pressValue(-1), offset_accumulated(0), tracking(true),
+ : minimum(0), maximum(99), pageStep(10), value(0), position(0), pressValue(-1),
+ singleStep(1), offset_accumulated(0), tracking(true),
blocktracking(false), pressed(false),
invertedAppearance(false), invertedControls(false),
orientation(Qt::Horizontal), repeatAction(QAbstractSlider::SliderNoAction)
@@ -688,51 +688,62 @@ void QAbstractSlider::sliderChange(SliderChange)
update();
}
-
-/*!
- \reimp
-*/
-#ifndef QT_NO_WHEELEVENT
-void QAbstractSlider::wheelEvent(QWheelEvent * e)
+bool QAbstractSliderPrivate::scrollByDelta(Qt::Orientation orientation, Qt::KeyboardModifiers modifiers, int delta)
{
- Q_D(QAbstractSlider);
- e->ignore();
-
+ Q_Q(QAbstractSlider);
int stepsToScroll = 0;
- qreal offset = qreal(e->delta()) / 120;
+ // in Qt scrolling to the right gives negative values.
+ if (orientation == Qt::Horizontal)
+ delta = -delta;
+ qreal offset = qreal(delta) / 120;
- if ((e->modifiers() & Qt::ControlModifier) || (e->modifiers() & Qt::ShiftModifier)) {
+ if ((modifiers & Qt::ControlModifier) || (modifiers & Qt::ShiftModifier)) {
// Scroll one page regardless of delta:
- stepsToScroll = qBound(-d->pageStep, int(offset * d->pageStep), d->pageStep);
- d->offset_accumulated = 0;
+ stepsToScroll = qBound(-pageStep, int(offset * pageStep), pageStep);
+ offset_accumulated = 0;
} else {
// Calculate how many lines to scroll. Depending on what delta is (and
// offset), we might end up with a fraction (e.g. scroll 1.3 lines). We can
// only scroll whole lines, so we keep the reminder until next event.
- qreal stepsToScrollF = offset * QApplication::wheelScrollLines() * d->effectiveSingleStep();
+ qreal stepsToScrollF = offset * QApplication::wheelScrollLines() * effectiveSingleStep();
// Check if wheel changed direction since last event:
- if (d->offset_accumulated != 0 && (offset / d->offset_accumulated) < 0)
- d->offset_accumulated = 0;
+ if (offset_accumulated != 0 && (offset / offset_accumulated) < 0)
+ offset_accumulated = 0;
- d->offset_accumulated += stepsToScrollF;
- stepsToScroll = qBound(-d->pageStep, int(d->offset_accumulated), d->pageStep);
- d->offset_accumulated -= int(d->offset_accumulated);
+ offset_accumulated += stepsToScrollF;
+ stepsToScroll = qBound(-pageStep, int(offset_accumulated), pageStep);
+ offset_accumulated -= int(offset_accumulated);
if (stepsToScroll == 0)
- return;
+ return false;
}
- if (d->invertedControls)
+ if (invertedControls)
stepsToScroll = -stepsToScroll;
- int prevValue = d->value;
- d->position = d->overflowSafeAdd(stepsToScroll); // value will be updated by triggerAction()
- triggerAction(SliderMove);
+ int prevValue = value;
+ position = overflowSafeAdd(stepsToScroll); // value will be updated by triggerAction()
+ q->triggerAction(QAbstractSlider::SliderMove);
+
+ if (prevValue == value) {
+ offset_accumulated = 0;
+ return false;
+ }
+ return true;
+}
- if (prevValue == d->value)
- d->offset_accumulated = 0;
- else
+/*!
+ \reimp
+*/
+#ifndef QT_NO_WHEELEVENT
+void QAbstractSlider::wheelEvent(QWheelEvent * e)
+{
+ Q_D(QAbstractSlider);
+ e->ignore();
+ int delta = e->delta();
+ if (d->scrollByDelta(e->orientation(), e->modifiers(), delta))
e->accept();
}
+
#endif
#ifdef QT_KEYPAD_NAVIGATION
/*!
diff --git a/src/gui/widgets/qabstractslider_p.h b/src/gui/widgets/qabstractslider_p.h
index 6cde468..6e6ff6e 100644
--- a/src/gui/widgets/qabstractslider_p.h
+++ b/src/gui/widgets/qabstractslider_p.h
@@ -138,6 +138,7 @@ public:
}
q->triggerAction(repeatAction);
}
+ bool scrollByDelta(Qt::Orientation orientation, Qt::KeyboardModifiers modifiers, int delta);
};
QT_END_NAMESPACE
diff --git a/src/gui/widgets/qdialogbuttonbox.cpp b/src/gui/widgets/qdialogbuttonbox.cpp
index 48d7022..6a0e363 100644
--- a/src/gui/widgets/qdialogbuttonbox.cpp
+++ b/src/gui/widgets/qdialogbuttonbox.cpp
@@ -1017,6 +1017,8 @@ void QDialogButtonBox::removeButton(QAbstractButton *button)
If the button has already been added, it is removed and added again with the
new role.
+ \note The button box takes ownership of the button.
+
\sa removeButton(), clear()
*/
void QDialogButtonBox::addButton(QAbstractButton *button, ButtonRole role)
diff --git a/src/gui/widgets/qmainwindowlayout.cpp b/src/gui/widgets/qmainwindowlayout.cpp
index d1e7285..fc75c92 100644
--- a/src/gui/widgets/qmainwindowlayout.cpp
+++ b/src/gui/widgets/qmainwindowlayout.cpp
@@ -1627,6 +1627,13 @@ void QMainWindowLayout::animationFinished(QWidget *widget)
tb->d_func()->plug(currentGapRect);
#endif
+ savedState.clear();
+ currentGapPos.clear();
+ pluggingWidget = 0;
+ //applying the state will make sure that the currentGap is updated correctly
+ //and all the geometries (especially the one from the central widget) is correct
+ layoutState.apply(false);
+
#ifndef QT_NO_DOCKWIDGET
#ifndef QT_NO_TABBAR
if (qobject_cast<QDockWidget*>(widget) != 0) {
@@ -1637,13 +1644,6 @@ void QMainWindowLayout::animationFinished(QWidget *widget)
}
#endif
#endif
-
- savedState.clear();
- currentGapPos.clear();
- pluggingWidget = 0;
- //applying the state will make sure that the currentGap is updated correctly
- //and all the geometries (especially the one from the central widget) is correct
- layoutState.apply(false);
}
if (!widgetAnimator.animating()) {
diff --git a/src/gui/widgets/qscrollbar.cpp b/src/gui/widgets/qscrollbar.cpp
index 73ce122..3eed3a9 100644
--- a/src/gui/widgets/qscrollbar.cpp
+++ b/src/gui/widgets/qscrollbar.cpp
@@ -521,6 +521,22 @@ bool QScrollBar::event(QEvent *event)
if (const QHoverEvent *he = static_cast<const QHoverEvent *>(event))
d_func()->updateHoverControl(he->pos());
break;
+ case QEvent::Wheel: {
+ // override wheel event without adding virtual function override
+ QWheelEvent *ev = static_cast<QWheelEvent *>(event);
+ int delta = ev->delta();
+ // scrollbar is a special case - in vertical mode it reaches minimum
+ // value in the upper position, however QSlider's minimum value is on
+ // the bottom. So we need to invert a value, but since the scrollbar is
+ // inverted by default, we need to inverse the delta value for the
+ // horizontal orientation.
+ if (ev->orientation() == Qt::Horizontal)
+ delta = -delta;
+ Q_D(QScrollBar);
+ if (d->scrollByDelta(ev->orientation(), ev->modifiers(), delta))
+ event->accept();
+ return true;
+ }
default:
break;
}
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index b282676..07f3159 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -558,6 +558,12 @@ void QGL2PaintEngineExPrivate::resetGLState()
glStencilMask(0xff);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
glStencilFunc(GL_ALWAYS, 0, 0xff);
+ glDisableVertexAttribArray(QT_TEXTURE_COORDS_ATTR);
+ glDisableVertexAttribArray(QT_VERTEX_COORDS_ATTR);
+ glDisableVertexAttribArray(QT_OPACITY_ATTR);
+#ifndef QT_OPENGL_ES_2
+ glColor4f(1.0f, 1.0f, 1.0f, 1.0f); // color may have been changed by glVertexAttrib()
+#endif
}
void QGL2PaintEngineEx::endNativePainting()
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 2a60708..fce9fdb 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -1590,10 +1590,8 @@ QGLTextureCache::QGLTextureCache()
Q_ASSERT(qt_gl_texture_cache == 0);
qt_gl_texture_cache = this;
- QImagePixmapCleanupHooks::instance()->addPixmapModificationHook(cleanupTextures);
-#ifdef Q_WS_X11
- QImagePixmapCleanupHooks::instance()->addPixmapDestructionHook(cleanupPixmapSurfaces);
-#endif
+ QImagePixmapCleanupHooks::instance()->addPixmapDataModificationHook(cleanupTextures);
+ QImagePixmapCleanupHooks::instance()->addPixmapDataDestructionHook(cleanupBeforePixmapDestruction);
QImagePixmapCleanupHooks::instance()->addImageHook(imageCleanupHook);
}
@@ -1601,10 +1599,8 @@ QGLTextureCache::~QGLTextureCache()
{
qt_gl_texture_cache = 0;
- QImagePixmapCleanupHooks::instance()->removePixmapModificationHook(cleanupTextures);
-#ifdef Q_WS_X11
- QImagePixmapCleanupHooks::instance()->removePixmapDestructionHook(cleanupPixmapSurfaces);
-#endif
+ QImagePixmapCleanupHooks::instance()->removePixmapDataModificationHook(cleanupTextures);
+ QImagePixmapCleanupHooks::instance()->removePixmapDataDestructionHook(cleanupBeforePixmapDestruction);
QImagePixmapCleanupHooks::instance()->removeImageHook(imageCleanupHook);
}
@@ -1672,30 +1668,29 @@ void QGLTextureCache::imageCleanupHook(qint64 cacheKey)
}
-void QGLTextureCache::cleanupTextures(QPixmap* pixmap)
+void QGLTextureCache::cleanupTextures(QPixmapData* pmd)
{
// ### remove when the GL texture cache becomes thread-safe
if (qApp->thread() == QThread::currentThread()) {
- const qint64 cacheKey = pixmap->cacheKey();
+ const qint64 cacheKey = pmd->cacheKey();
QGLTexture *texture = instance()->getTexture(cacheKey);
if (texture && texture->options & QGLContext::MemoryManagedBindOption)
instance()->remove(cacheKey);
}
}
-#if defined(Q_WS_X11)
-void QGLTextureCache::cleanupPixmapSurfaces(QPixmap* pixmap)
+void QGLTextureCache::cleanupBeforePixmapDestruction(QPixmapData* pmd)
{
// Remove any bound textures first:
- cleanupTextures(pixmap);
+ cleanupTextures(pmd);
- QPixmapData *pd = pixmap->data_ptr().data();
- if (pd->classId() == QPixmapData::X11Class) {
- Q_ASSERT(pd->ref == 1); // Make sure reference counting isn't broken
- QGLContextPrivate::destroyGlSurfaceForPixmap(pd);
+#if defined(Q_WS_X11)
+ if (pmd->classId() == QPixmapData::X11Class) {
+ Q_ASSERT(pmd->ref == 0); // Make sure reference counting isn't broken
+ QGLContextPrivate::destroyGlSurfaceForPixmap(pmd);
}
-}
#endif
+}
void QGLTextureCache::deleteIfEmpty()
{
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index 0104f07..713b067 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -522,7 +522,7 @@ public:
QSize bindCompressedTexturePVR(const char *buf, int len);
};
-class QGLTextureCache {
+class Q_AUTOTEST_EXPORT QGLTextureCache {
public:
QGLTextureCache();
~QGLTextureCache();
@@ -539,11 +539,8 @@ public:
static QGLTextureCache *instance();
static void deleteIfEmpty();
static void imageCleanupHook(qint64 cacheKey);
- static void cleanupTextures(QPixmap* pixmap);
-#ifdef Q_WS_X11
- // X11 needs to catch pixmap data destruction to delete EGL/GLX pixmap surfaces
- static void cleanupPixmapSurfaces(QPixmap* pixmap);
-#endif
+ static void cleanupTextures(QPixmapData* pixmap);
+ static void cleanupBeforePixmapDestruction(QPixmapData* pixmap);
private:
QCache<qint64, QGLTexture> m_cache;
diff --git a/src/opengl/qglpixmapfilter.cpp b/src/opengl/qglpixmapfilter.cpp
index 11011ee..37bb7c0 100644
--- a/src/opengl/qglpixmapfilter.cpp
+++ b/src/opengl/qglpixmapfilter.cpp
@@ -319,14 +319,14 @@ public:
~QGLBlurTextureCache();
QGLBlurTextureInfo *takeBlurTextureInfo(const QPixmap &pixmap);
- bool hasBlurTextureInfo(const QPixmap &pixmap) const;
+ bool hasBlurTextureInfo(quint64 cacheKey) const;
void insertBlurTextureInfo(const QPixmap &pixmap, QGLBlurTextureInfo *info);
- void clearBlurTextureInfo(const QPixmap &pixmap);
+ void clearBlurTextureInfo(quint64 cacheKey);
void timerEvent(QTimerEvent *event);
private:
- static void pixmapDestroyed(QPixmap *pixmap);
+ static void pixmapDestroyed(QPixmapData *pixmap);
QCache<quint64, QGLBlurTextureInfo > cache;
@@ -379,21 +379,21 @@ QGLBlurTextureInfo *QGLBlurTextureCache::takeBlurTextureInfo(const QPixmap &pixm
return cache.take(pixmap.cacheKey());
}
-void QGLBlurTextureCache::clearBlurTextureInfo(const QPixmap &pixmap)
+void QGLBlurTextureCache::clearBlurTextureInfo(quint64 cacheKey)
{
- cache.remove(pixmap.cacheKey());
+ cache.remove(cacheKey);
}
-bool QGLBlurTextureCache::hasBlurTextureInfo(const QPixmap &pixmap) const
+bool QGLBlurTextureCache::hasBlurTextureInfo(quint64 cacheKey) const
{
- return cache.contains(pixmap.cacheKey());
+ return cache.contains(cacheKey);
}
void QGLBlurTextureCache::insertBlurTextureInfo(const QPixmap &pixmap, QGLBlurTextureInfo *info)
{
static bool hookAdded = false;
if (!hookAdded) {
- QImagePixmapCleanupHooks::instance()->addPixmapDestructionHook(pixmapDestroyed);
+ QImagePixmapCleanupHooks::instance()->addPixmapDataDestructionHook(pixmapDestroyed);
hookAdded = true;
}
@@ -406,11 +406,11 @@ void QGLBlurTextureCache::insertBlurTextureInfo(const QPixmap &pixmap, QGLBlurTe
timerId = startTimer(8000);
}
-void QGLBlurTextureCache::pixmapDestroyed(QPixmap *pixmap)
+void QGLBlurTextureCache::pixmapDestroyed(QPixmapData *pmd)
{
foreach (QGLBlurTextureCache *cache, blurTextureCaches) {
- if (cache->hasBlurTextureInfo(*pixmap))
- cache->clearBlurTextureInfo(*pixmap);
+ if (cache->hasBlurTextureInfo(pmd->cacheKey()))
+ cache->clearBlurTextureInfo(pmd->cacheKey());
}
}
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index cc9ba77..6813d2f 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -188,6 +188,7 @@ public:
bool maskValid; // True if vgMask() contains valid data.
bool maskIsSet; // True if mask would be fully set if it was valid.
+ bool scissorMask; // True if scissor is used in place of the mask.
bool rawVG; // True if processing a raw VG escape.
QRect maskRect; // Rectangle version of mask if it is simple.
@@ -355,6 +356,7 @@ void QVGPaintEnginePrivate::init()
maskValid = false;
maskIsSet = false;
+ scissorMask = false;
rawVG = false;
scissorActive = false;
@@ -1542,7 +1544,28 @@ void QVGPaintEngine::stroke(const QVectorPath &path, const QPen &pen)
static inline bool clipTransformIsSimple(const QTransform& transform)
{
QTransform::TransformationType type = transform.type();
- return (type == QTransform::TxNone || type == QTransform::TxTranslate);
+ if (type == QTransform::TxNone || type == QTransform::TxTranslate)
+ return true;
+ if (type == QTransform::TxRotate) {
+ // Check for 0, 90, 180, and 270 degree rotations.
+ // (0 might happen after 4 rotations of 90 degrees).
+ qreal m11 = transform.m11();
+ qreal m12 = transform.m12();
+ qreal m21 = transform.m21();
+ qreal m22 = transform.m22();
+ if (m11 == 0.0f && m22 == 0.0f) {
+ if (m12 == 1.0f && m21 == -1.0f)
+ return true; // 90 degrees.
+ else if (m12 == -1.0f && m21 == 1.0f)
+ return true; // 270 degrees.
+ } else if (m12 == 0.0f && m21 == 0.0f) {
+ if (m11 == -1.0f && m22 == -1.0f)
+ return true; // 180 degrees.
+ else if (m11 == 1.0f && m22 == 1.0f)
+ return true; // 0 degrees.
+ }
+ }
+ return false;
}
#if defined(QVG_SCISSOR_CLIP)
@@ -1664,12 +1687,12 @@ void QVGPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
if (op == Qt::NoClip) {
d->maskValid = false;
d->maskIsSet = true;
+ d->scissorMask = false;
d->maskRect = QRect();
vgSeti(VG_MASKING, VG_FALSE);
return;
}
-#if defined(QVG_NO_RENDER_TO_MASK)
// We don't have vgRenderToMask(), so handle simple QRectF's only.
if (path.shape() == QVectorPath::RectangleHint &&
path.elementCount() == 4 && clipTransformIsSimple(d->transform)) {
@@ -1679,8 +1702,10 @@ void QVGPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
QRectF rect(points[0], points[1], points[2] - points[0],
points[5] - points[1]);
clip(rect.toRect(), op);
+ return;
}
-#else
+
+#if !defined(QVG_NO_RENDER_TO_MASK)
QPaintDevice *pdev = paintDevice();
int width = pdev->width();
int height = pdev->height();
@@ -1711,6 +1736,7 @@ void QVGPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
vgSeti(VG_MASKING, VG_TRUE);
d->maskValid = true;
d->maskIsSet = false;
+ d->scissorMask = false;
#endif
}
@@ -1731,6 +1757,7 @@ void QVGPaintEngine::clip(const QRect &rect, Qt::ClipOperation op)
{
d->maskValid = false;
d->maskIsSet = true;
+ d->scissorMask = false;
d->maskRect = QRect();
vgSeti(VG_MASKING, VG_FALSE);
}
@@ -1746,6 +1773,7 @@ void QVGPaintEngine::clip(const QRect &rect, Qt::ClipOperation op)
vgSeti(VG_MASKING, VG_FALSE);
d->maskValid = false;
d->maskIsSet = true;
+ d->scissorMask = false;
d->maskRect = QRect();
} else {
// Special case: if the intersection of the system
@@ -1763,6 +1791,7 @@ void QVGPaintEngine::clip(const QRect &rect, Qt::ClipOperation op)
if (clip.rectCount() != 1) {
d->maskValid = false;
d->maskIsSet = false;
+ d->scissorMask = false;
d->maskRect = QRect();
d->modifyMask(this, VG_FILL_MASK, r);
break;
@@ -1771,6 +1800,7 @@ void QVGPaintEngine::clip(const QRect &rect, Qt::ClipOperation op)
}
d->maskValid = false;
d->maskIsSet = false;
+ d->scissorMask = true;
d->maskRect = clipRect;
vgSeti(VG_MASKING, VG_FALSE);
updateScissor();
@@ -1781,13 +1811,30 @@ void QVGPaintEngine::clip(const QRect &rect, Qt::ClipOperation op)
case Qt::IntersectClip:
{
QRect r = d->transform.mapRect(rect);
- if (d->maskIsSet && isDefaultClipRect(r)) {
+ if (!d->maskValid) {
+ // Mask has not been used yet, so intersect with
+ // the previous scissor-based region in maskRect.
+ if (d->scissorMask)
+ r = r.intersect(d->maskRect);
+ if (isDefaultClipRect(r)) {
+ // The clip is the full window, so turn off clipping.
+ d->maskIsSet = true;
+ d->maskRect = QRect();
+ } else {
+ // Activate the scissor on a smaller maskRect.
+ d->maskIsSet = false;
+ d->maskRect = r;
+ }
+ d->scissorMask = true;
+ updateScissor();
+ } else if (d->maskIsSet && isDefaultClipRect(r)) {
// Intersecting a full-window clip with a full-window
// region is the same as turning off clipping.
if (d->maskValid)
vgSeti(VG_MASKING, VG_FALSE);
d->maskValid = false;
d->maskIsSet = true;
+ d->scissorMask = false;
d->maskRect = QRect();
} else {
d->modifyMask(this, VG_INTERSECT_MASK, r);
@@ -1829,6 +1876,7 @@ void QVGPaintEngine::clip(const QRegion &region, Qt::ClipOperation op)
{
d->maskValid = false;
d->maskIsSet = true;
+ d->scissorMask = false;
d->maskRect = QRect();
vgSeti(VG_MASKING, VG_FALSE);
}
@@ -1844,6 +1892,7 @@ void QVGPaintEngine::clip(const QRegion &region, Qt::ClipOperation op)
vgSeti(VG_MASKING, VG_FALSE);
d->maskValid = false;
d->maskIsSet = true;
+ d->scissorMask = false;
d->maskRect = QRect();
} else {
// Special case: if the intersection of the system
@@ -1857,12 +1906,14 @@ void QVGPaintEngine::clip(const QRegion &region, Qt::ClipOperation op)
if (clip.rectCount() == 1) {
d->maskValid = false;
d->maskIsSet = false;
+ d->scissorMask = true;
d->maskRect = clip.boundingRect();
vgSeti(VG_MASKING, VG_FALSE);
updateScissor();
} else {
d->maskValid = false;
d->maskIsSet = false;
+ d->scissorMask = false;
d->maskRect = QRect();
d->modifyMask(this, VG_FILL_MASK, r);
}
@@ -1887,6 +1938,7 @@ void QVGPaintEngine::clip(const QRegion &region, Qt::ClipOperation op)
vgSeti(VG_MASKING, VG_FALSE);
d->maskValid = false;
d->maskIsSet = true;
+ d->scissorMask = false;
d->maskRect = QRect();
} else {
d->modifyMask(this, VG_INTERSECT_MASK, r);
@@ -1965,6 +2017,7 @@ void QVGPaintEngine::clip(const QPainterPath &path, Qt::ClipOperation op)
if (op == Qt::NoClip) {
d->maskValid = false;
d->maskIsSet = true;
+ d->scissorMask = false;
d->maskRect = QRect();
vgSeti(VG_MASKING, VG_FALSE);
return;
@@ -2000,6 +2053,7 @@ void QVGPaintEngine::clip(const QPainterPath &path, Qt::ClipOperation op)
vgSeti(VG_MASKING, VG_TRUE);
d->maskValid = true;
d->maskIsSet = false;
+ d->scissorMask = false;
#else
QPaintEngineEx::clip(path, op);
#endif
@@ -2043,6 +2097,7 @@ void QVGPaintEnginePrivate::modifyMask
vgSeti(VG_MASKING, VG_TRUE);
maskValid = true;
maskIsSet = false;
+ scissorMask = false;
}
void QVGPaintEnginePrivate::modifyMask
@@ -2064,6 +2119,7 @@ void QVGPaintEnginePrivate::modifyMask
vgSeti(VG_MASKING, VG_TRUE);
maskValid = true;
maskIsSet = false;
+ scissorMask = false;
}
#endif // !QVG_SCISSOR_CLIP
@@ -2096,7 +2152,7 @@ void QVGPaintEngine::updateScissor()
{
#if !defined(QVG_SCISSOR_CLIP)
// Combine the system clip with the simple mask rectangle.
- if (!d->maskRect.isNull()) {
+ if (d->scissorMask) {
if (region.isEmpty())
region = d->maskRect;
else
@@ -2187,6 +2243,7 @@ void QVGPaintEngine::clipEnabledChanged()
// Replay the entire clip stack to put the mask into the right state.
d->maskValid = false;
d->maskIsSet = true;
+ d->scissorMask = false;
d->maskRect = QRect();
s->clipRegion = defaultClipRegion();
d->replayClipOperations();
@@ -2196,6 +2253,7 @@ void QVGPaintEngine::clipEnabledChanged()
vgSeti(VG_MASKING, VG_FALSE);
d->maskValid = false;
d->maskIsSet = false;
+ d->scissorMask = false;
d->maskRect = QRect();
}
#endif
@@ -2314,12 +2372,7 @@ bool QVGPaintEngine::clearRect(const QRectF &rect, const QColor &color)
Q_D(QVGPaintEngine);
QVGPainterState *s = state();
if (!s->clipEnabled || s->clipOperation == Qt::NoClip) {
- // The transform will either be identity or a simple translation,
- // so do a simpler version of "r = d->transform.map(rect).toRect()".
- QRect r = QRect(qRound(rect.x() + d->transform.dx()),
- qRound(rect.y() + d->transform.dy()),
- qRound(rect.width()),
- qRound(rect.height()));
+ QRect r = d->transform.mapRect(rect).toRect();
int height = paintDevice()->height();
if (d->clearColor != color || d->clearOpacity != s->opacity) {
VGfloat values[4];
@@ -3398,6 +3451,7 @@ void QVGPaintEngine::restoreState(QPaintEngine::DirtyFlags dirty)
QPaintEngine::DirtyClipEnabled)) != 0) {
d->maskValid = false;
d->maskIsSet = false;
+ d->scissorMask = false;
d->maskRect = QRect();
clipEnabledChanged();
}
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
index 6b251c7..cd4d5c2 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
@@ -921,7 +921,7 @@ void QDirectFBScreenPrivate::setFlipFlags(const QStringList &args)
qPrintable(flip));
}
} else {
- flipFlags = DSFLIP_BLIT;
+ flipFlags = DSFLIP_BLIT|DSFLIP_ONSYNC;
}
}
diff --git a/src/plugins/imageformats/gif/qgifhandler.cpp b/src/plugins/imageformats/gif/qgifhandler.cpp
index 6f049be..25d3dfa 100644
--- a/src/plugins/imageformats/gif/qgifhandler.cpp
+++ b/src/plugins/imageformats/gif/qgifhandler.cpp
@@ -71,7 +71,8 @@ public:
~QGIFFormat();
int decode(QImage *image, const uchar* buffer, int length,
- int *nextFrameDelay, int *loopCount, QSize *nextSize);
+ int *nextFrameDelay, int *loopCount);
+ static void scan(QIODevice *device, QVector<QSize> *imageSizes, int *loopCount);
bool newFrame;
bool partialNewFrame;
@@ -229,7 +230,7 @@ void QGIFFormat::disposePrevious(QImage *image)
Returns the number of bytes consumed.
*/
int QGIFFormat::decode(QImage *image, const uchar *buffer, int length,
- int *nextFrameDelay, int *loopCount, QSize *nextSize)
+ int *nextFrameDelay, int *loopCount)
{
// We are required to state that
// "The Graphics Interchange Format(c) is the Copyright property of
@@ -346,10 +347,6 @@ int QGIFFormat::decode(QImage *image, const uchar *buffer, int length,
bpl = image->bytesPerLine();
bits = image->bits();
memset(bits, 0, image->byteCount());
-
- // ### size of the upcoming frame, should rather
- // be known before decoding it.
- *nextSize = QSize(swidth, sheight);
}
disposePrevious(image);
@@ -645,6 +642,273 @@ int QGIFFormat::decode(QImage *image, const uchar *buffer, int length,
return initial-length;
}
+/*!
+ Scans through the data stream defined by \a device and returns the image
+ sizes found in the stream in the \a imageSizes vector.
+*/
+void QGIFFormat::scan(QIODevice *device, QVector<QSize> *imageSizes, int *loopCount)
+{
+ if (!device)
+ return;
+
+ qint64 oldPos = device->pos();
+ if (!device->seek(0))
+ return;
+
+ int colorCount = 0;
+ int localColorCount = 0;
+ int globalColorCount = 0;
+ int colorReadCount = 0;
+ bool localColormap = false;
+ bool globalColormap = false;
+ int count = 0;
+ int blockSize = 0;
+ int imageWidth = 0;
+ int imageHeight = 0;
+ bool done = false;
+ uchar hold[16];
+ State state = Header;
+
+ const int readBufferSize = 40960; // 40k read buffer
+ QByteArray readBuffer(device->read(readBufferSize));
+
+ if (readBuffer.isEmpty()) {
+ device->seek(oldPos);
+ return;
+ }
+
+ // This is a specialized version of the state machine from decode(),
+ // which doesn't do any image decoding or mallocing, and has an
+ // optimized way of skipping SkipBlocks, ImageDataBlocks and
+ // Global/LocalColorMaps.
+
+ while (!readBuffer.isEmpty()) {
+ int length = readBuffer.size();
+ const uchar *buffer = (const uchar *) readBuffer.constData();
+ while (!done && length) {
+ length--;
+ uchar ch = *buffer++;
+ switch (state) {
+ case Header:
+ hold[count++] = ch;
+ if (count == 6) {
+ state = LogicalScreenDescriptor;
+ count = 0;
+ }
+ break;
+ case LogicalScreenDescriptor:
+ hold[count++] = ch;
+ if (count == 7) {
+ imageWidth = LM(hold[0], hold[1]);
+ imageHeight = LM(hold[2], hold[3]);
+ globalColormap = !!(hold[4] & 0x80);
+ globalColorCount = 2 << (hold[4] & 0x7);
+ count = 0;
+ colorCount = globalColorCount;
+ if (globalColormap) {
+ int colorTableSize = 3 * globalColorCount;
+ if (length >= colorTableSize) {
+ // skip the global color table in one go
+ length -= colorTableSize;
+ buffer += colorTableSize;
+ state = Introducer;
+ } else {
+ colorReadCount = 0;
+ state = GlobalColorMap;
+ }
+ } else {
+ state=Introducer;
+ }
+ }
+ break;
+ case GlobalColorMap:
+ case LocalColorMap:
+ hold[count++] = ch;
+ if (count == 3) {
+ if (++colorReadCount >= colorCount) {
+ if (state == LocalColorMap)
+ state = TableImageLZWSize;
+ else
+ state = Introducer;
+ }
+ count = 0;
+ }
+ break;
+ case Introducer:
+ hold[count++] = ch;
+ switch (ch) {
+ case 0x2c:
+ state = ImageDescriptor;
+ break;
+ case 0x21:
+ state = ExtensionLabel;
+ break;
+ case 0x3b:
+ state = Done;
+ break;
+ default:
+ done = true;
+ state = Error;
+ }
+ break;
+ case ImageDescriptor:
+ hold[count++] = ch;
+ if (count == 10) {
+ int newLeft = LM(hold[1], hold[2]);
+ int newTop = LM(hold[3], hold[4]);
+ int newWidth = LM(hold[5], hold[6]);
+ int newHeight = LM(hold[7], hold[8]);
+
+ if (imageWidth/10 > qMax(newWidth,200))
+ imageWidth = -1;
+ if (imageHeight/10 > qMax(newHeight,200))
+ imageHeight = -1;
+
+ if (imageWidth <= 0)
+ imageWidth = newLeft + newWidth;
+ if (imageHeight <= 0)
+ imageHeight = newTop + newHeight;
+
+ *imageSizes << QSize(imageWidth, imageHeight);
+
+ localColormap = !!(hold[9] & 0x80);
+ localColorCount = localColormap ? (2 << (hold[9] & 0x7)) : 0;
+ if (localColorCount)
+ colorCount = localColorCount;
+ else
+ colorCount = globalColorCount;
+
+ count = 0;
+ if (localColormap) {
+ int colorTableSize = 3 * localColorCount;
+ if (length >= colorTableSize) {
+ // skip the local color table in one go
+ length -= colorTableSize;
+ buffer += colorTableSize;
+ state = TableImageLZWSize;
+ } else {
+ colorReadCount = 0;
+ state = LocalColorMap;
+ }
+ } else {
+ state = TableImageLZWSize;
+ }
+ }
+ break;
+ case TableImageLZWSize:
+ if (ch > max_lzw_bits)
+ state = Error;
+ else
+ state = ImageDataBlockSize;
+ count = 0;
+ break;
+ case ImageDataBlockSize:
+ blockSize = ch;
+ if (blockSize) {
+ if (length >= blockSize) {
+ // we can skip the block in one go
+ length -= blockSize;
+ buffer += blockSize;
+ count = 0;
+ } else {
+ state = ImageDataBlock;
+ }
+ } else {
+ state = Introducer;
+ }
+ break;
+ case ImageDataBlock:
+ ++count;
+ if (count == blockSize) {
+ count = 0;
+ state = ImageDataBlockSize;
+ }
+ break;
+ case ExtensionLabel:
+ switch (ch) {
+ case 0xf9:
+ state = GraphicControlExtension;
+ break;
+ case 0xff:
+ state = ApplicationExtension;
+ break;
+ default:
+ state = SkipBlockSize;
+ }
+ count = 0;
+ break;
+ case ApplicationExtension:
+ if (count < 11)
+ hold[count] = ch;
+ ++count;
+ if (count == hold[0] + 1) {
+ if (qstrncmp((char*)(hold+1), "NETSCAPE", 8) == 0)
+ state=NetscapeExtensionBlockSize;
+ else
+ state=SkipBlockSize;
+ count = 0;
+ }
+ break;
+ case GraphicControlExtension:
+ if (count < 5)
+ hold[count] = ch;
+ ++count;
+ if (count == hold[0] + 1) {
+ count = 0;
+ state = SkipBlockSize;
+ }
+ break;
+ case NetscapeExtensionBlockSize:
+ blockSize = ch;
+ count = 0;
+ if (blockSize)
+ state = NetscapeExtensionBlock;
+ else
+ state = Introducer;
+ break;
+ case NetscapeExtensionBlock:
+ if (count < 3)
+ hold[count] = ch;
+ count++;
+ if (count == blockSize) {
+ *loopCount = LM(hold[1], hold[2]);
+ state = SkipBlockSize;
+ }
+ break;
+ case SkipBlockSize:
+ blockSize = ch;
+ count = 0;
+ if (blockSize) {
+ if (length >= blockSize) {
+ // we can skip the block in one go
+ length -= blockSize;
+ buffer += blockSize;
+ } else {
+ state = SkipBlock;
+ }
+ } else {
+ state = Introducer;
+ }
+ break;
+ case SkipBlock:
+ ++count;
+ if (count == blockSize)
+ state = SkipBlockSize;
+ break;
+ case Done:
+ done = true;
+ break;
+ case Error:
+ device->seek(oldPos);
+ return;
+ }
+ }
+ readBuffer = device->read(readBufferSize);
+ }
+ device->seek(oldPos);
+ return;
+}
+
void QGIFFormat::fillRect(QImage *image, int col, int row, int w, int h, QRgb color)
{
if (w>0) {
@@ -763,9 +1027,9 @@ QGifHandler::QGifHandler()
{
gifFormat = new QGIFFormat;
nextDelay = 0;
- loopCnt = 0;
+ loopCnt = 1;
frameNumber = -1;
- nextSize = QSize();
+ scanIsCached = false;
}
QGifHandler::~QGifHandler()
@@ -787,7 +1051,7 @@ bool QGifHandler::imageIsComing() const
}
int decoded = gifFormat->decode(&lastImage, (const uchar *)buffer.constData(), buffer.size(),
- &nextDelay, &loopCnt, &nextSize);
+ &nextDelay, &loopCnt);
if (decoded == -1)
break;
buffer.remove(0, decoded);
@@ -831,7 +1095,7 @@ bool QGifHandler::read(QImage *image)
}
int decoded = gifFormat->decode(&lastImage, (const uchar *)buffer.constData(), buffer.size(),
- &nextDelay, &loopCnt, &nextSize);
+ &nextDelay, &loopCnt);
if (decoded == -1)
break;
buffer.remove(0, decoded);
@@ -862,8 +1126,18 @@ bool QGifHandler::supportsOption(ImageOption option) const
QVariant QGifHandler::option(ImageOption option) const
{
if (option == Size) {
- if (imageIsComing())
- return nextSize;
+ if (!scanIsCached) {
+ QGIFFormat::scan(device(), &imageSizes, &loopCnt);
+ scanIsCached = true;
+ }
+ // before the first frame is read, or we have an empty data stream
+ if (frameNumber == -1)
+ return (imageSizes.count() > 0) ? QVariant(imageSizes.at(0)) : QVariant();
+ // after the last frame has been read, the next size is undefined
+ if (frameNumber >= imageSizes.count() - 1)
+ return QVariant();
+ // and the last case: the size of the next frame
+ return imageSizes.at(frameNumber + 1);
} else if (option == Animation) {
return true;
}
@@ -883,11 +1157,19 @@ int QGifHandler::nextImageDelay() const
int QGifHandler::imageCount() const
{
- return 0; // Don't know
+ if (!scanIsCached) {
+ QGIFFormat::scan(device(), &imageSizes, &loopCnt);
+ scanIsCached = true;
+ }
+ return imageSizes.count();
}
int QGifHandler::loopCount() const
{
+ if (!scanIsCached) {
+ QGIFFormat::scan(device(), &imageSizes, &loopCnt);
+ scanIsCached = true;
+ }
return loopCnt-1; // In GIF, loop count is iteration count, so subtract one
}
diff --git a/src/plugins/imageformats/gif/qgifhandler.h b/src/plugins/imageformats/gif/qgifhandler.h
index a6e520f..8e07aff 100644
--- a/src/plugins/imageformats/gif/qgifhandler.h
+++ b/src/plugins/imageformats/gif/qgifhandler.h
@@ -87,7 +87,8 @@ private:
mutable int nextDelay;
mutable int loopCnt;
int frameNumber;
- mutable QSize nextSize;
+ mutable QVector<QSize> imageSizes;
+ mutable bool scanIsCached;
};
QT_END_NAMESPACE
diff --git a/src/plugins/imageformats/ico/qicohandler.cpp b/src/plugins/imageformats/ico/qicohandler.cpp
index b2351fa..4edb87a 100644
--- a/src/plugins/imageformats/ico/qicohandler.cpp
+++ b/src/plugins/imageformats/ico/qicohandler.cpp
@@ -53,6 +53,7 @@
#include <QtGui/QImage>
#include <QtCore/QFile>
#include <QtCore/QBuffer>
+#include <qvariant.h>
// These next two structs represent how the icon information is stored
// in an ICO file.
typedef struct
@@ -772,6 +773,29 @@ QtIcoHandler::~QtIcoHandler()
delete m_pICOReader;
}
+QVariant QtIcoHandler::option(ImageOption option) const
+{
+ if (option == Size) {
+ QIODevice *device = QImageIOHandler::device();
+ qint64 oldPos = device->pos();
+ ICONDIRENTRY iconEntry;
+ if (device->seek(oldPos + ICONDIR_SIZE + (m_currentIconIndex * ICONDIRENTRY_SIZE))) {
+ if (readIconDirEntry(device, &iconEntry)) {
+ device->seek(oldPos);
+ return QSize(iconEntry.bWidth, iconEntry.bHeight);
+ }
+ }
+ if (!device->isSequential())
+ device->seek(oldPos);
+ }
+ return QVariant();
+}
+
+bool QtIcoHandler::supportsOption(ImageOption option) const
+{
+ return option == Size;
+}
+
/*!
* Verifies if some values (magic bytes) are set as expected in the header of the file.
* If the magic bytes were found, it is assumed that the QtIcoHandler can read the file.
diff --git a/src/plugins/imageformats/ico/qicohandler.h b/src/plugins/imageformats/ico/qicohandler.h
index b9ef27e..394a5eb 100644
--- a/src/plugins/imageformats/ico/qicohandler.h
+++ b/src/plugins/imageformats/ico/qicohandler.h
@@ -62,6 +62,9 @@ public:
static bool canRead(QIODevice *device);
+ bool supportsOption(ImageOption option) const;
+ QVariant option(ImageOption option) const;
+
private:
int m_currentIconIndex;
ICOReader *m_pICOReader;
diff --git a/src/plugins/kbddrivers/linuxinput/main.cpp b/src/plugins/kbddrivers/linuxinput/main.cpp
index 19a3145..db5167e 100644
--- a/src/plugins/kbddrivers/linuxinput/main.cpp
+++ b/src/plugins/kbddrivers/linuxinput/main.cpp
@@ -69,7 +69,7 @@ QWSKeyboardHandler* QLinuxInputKbdDriver::create(const QString &driver,
Q_UNUSED(device);
if (driver.compare(QLatin1String("LinuxInput"), Qt::CaseInsensitive))
return 0;
- return new QWSLinuxInputKeyboardHandler(driver, device);
+ return new QWSLinuxInputKeyboardHandler(device);
}
Q_EXPORT_PLUGIN2(qwslinuxinputkbddriver, QLinuxInputKbdDriver)
diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def
index 155e3e7..be7a6a0 100644
--- a/src/s60installs/bwins/QtGuiu.def
+++ b/src/s60installs/bwins/QtGuiu.def
@@ -2081,8 +2081,8 @@ EXPORTS
?addPixmap@QGraphicsScene@@QAEPAVQGraphicsPixmapItem@@ABVQPixmap@@@Z @ 2080 NONAME ; class QGraphicsPixmapItem * QGraphicsScene::addPixmap(class QPixmap const &)
?addPixmap@QIcon@@QAEXABVQPixmap@@W4Mode@1@W4State@1@@Z @ 2081 NONAME ; void QIcon::addPixmap(class QPixmap const &, enum QIcon::Mode, enum QIcon::State)
?addPixmap@QIconEngine@@UAEXABVQPixmap@@W4Mode@QIcon@@W4State@4@@Z @ 2082 NONAME ; void QIconEngine::addPixmap(class QPixmap const &, enum QIcon::Mode, enum QIcon::State)
- ?addPixmapDestructionHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmap@@@Z@Z @ 2083 NONAME ; void QImagePixmapCleanupHooks::addPixmapDestructionHook(void (*)(class QPixmap *))
- ?addPixmapModificationHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmap@@@Z@Z @ 2084 NONAME ; void QImagePixmapCleanupHooks::addPixmapModificationHook(void (*)(class QPixmap *))
+ ?addPixmapDestructionHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmap@@@Z@Z @ 2083 NONAME ABSENT ; void QImagePixmapCleanupHooks::addPixmapDestructionHook(void (*)(class QPixmap *))
+ ?addPixmapModificationHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmap@@@Z@Z @ 2084 NONAME ABSENT ; void QImagePixmapCleanupHooks::addPixmapModificationHook(void (*)(class QPixmap *))
?addPolygon@QGraphicsScene@@QAEPAVQGraphicsPolygonItem@@ABVQPolygonF@@ABVQPen@@ABVQBrush@@@Z @ 2085 NONAME ; class QGraphicsPolygonItem * QGraphicsScene::addPolygon(class QPolygonF const &, class QPen const &, class QBrush const &)
?addPolygon@QPainterPath@@QAEXABVQPolygonF@@@Z @ 2086 NONAME ; void QPainterPath::addPolygon(class QPolygonF const &)
?addRect@QGraphicsScene@@QAEPAVQGraphicsRectItem@@ABVQRectF@@ABVQPen@@ABVQBrush@@@Z @ 2087 NONAME ; class QGraphicsRectItem * QGraphicsScene::addRect(class QRectF const &, class QPen const &, class QBrush const &)
@@ -4283,8 +4283,8 @@ EXPORTS
?executeDelayedItemsLayout@QAbstractItemView@@IAEXXZ @ 4282 NONAME ; void QAbstractItemView::executeDelayedItemsLayout(void)
?executeImageHooks@QImagePixmapCleanupHooks@@SAX_J@Z @ 4283 NONAME ; void QImagePixmapCleanupHooks::executeImageHooks(long long)
?executePendingSort@QTreeWidgetItem@@ABEXXZ @ 4284 NONAME ; void QTreeWidgetItem::executePendingSort(void) const
- ?executePixmapDestructionHooks@QImagePixmapCleanupHooks@@SAXPAVQPixmap@@@Z @ 4285 NONAME ; void QImagePixmapCleanupHooks::executePixmapDestructionHooks(class QPixmap *)
- ?executePixmapModificationHooks@QImagePixmapCleanupHooks@@SAXPAVQPixmap@@@Z @ 4286 NONAME ; void QImagePixmapCleanupHooks::executePixmapModificationHooks(class QPixmap *)
+ ?executePixmapDestructionHooks@QImagePixmapCleanupHooks@@SAXPAVQPixmap@@@Z @ 4285 NONAME ABSENT ; void QImagePixmapCleanupHooks::executePixmapDestructionHooks(class QPixmap *)
+ ?executePixmapModificationHooks@QImagePixmapCleanupHooks@@SAXPAVQPixmap@@@Z @ 4286 NONAME ABSENT ; void QImagePixmapCleanupHooks::executePixmapModificationHooks(class QPixmap *)
?expand@QTreeView@@QAEXABVQModelIndex@@@Z @ 4287 NONAME ; void QTreeView::expand(class QModelIndex const &)
?expandAll@QTreeView@@QAEXXZ @ 4288 NONAME ; void QTreeView::expandAll(void)
?expandItem@QTreeWidget@@QAEXPBVQTreeWidgetItem@@@Z @ 4289 NONAME ; void QTreeWidget::expandItem(class QTreeWidgetItem const *)
@@ -7927,8 +7927,8 @@ EXPORTS
?removeItemWidget@QTreeWidget@@QAEXPAVQTreeWidgetItem@@H@Z @ 7926 NONAME ; void QTreeWidget::removeItemWidget(class QTreeWidgetItem *, int)
?removeMapping@QDataWidgetMapper@@QAEXPAVQWidget@@@Z @ 7927 NONAME ; void QDataWidgetMapper::removeMapping(class QWidget *)
?removePage@QWizard@@QAEXH@Z @ 7928 NONAME ; void QWizard::removePage(int)
- ?removePixmapDestructionHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmap@@@Z@Z @ 7929 NONAME ; void QImagePixmapCleanupHooks::removePixmapDestructionHook(void (*)(class QPixmap *))
- ?removePixmapModificationHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmap@@@Z@Z @ 7930 NONAME ; void QImagePixmapCleanupHooks::removePixmapModificationHook(void (*)(class QPixmap *))
+ ?removePixmapDestructionHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmap@@@Z@Z @ 7929 NONAME ABSENT ; void QImagePixmapCleanupHooks::removePixmapDestructionHook(void (*)(class QPixmap *))
+ ?removePixmapModificationHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmap@@@Z@Z @ 7930 NONAME ABSENT ; void QImagePixmapCleanupHooks::removePixmapModificationHook(void (*)(class QPixmap *))
?removeRow@QStandardItem@@QAEXH@Z @ 7931 NONAME ; void QStandardItem::removeRow(int)
?removeRow@QTableWidget@@QAEXH@Z @ 7932 NONAME ; void QTableWidget::removeRow(int)
?removeRows@QSortFilterProxyModel@@UAE_NHHABVQModelIndex@@@Z @ 7933 NONAME ; bool QSortFilterProxyModel::removeRows(int, int, class QModelIndex const &)
@@ -12533,4 +12533,19 @@ EXPORTS
?symbianHandleCommand@QApplicationPrivate@@QAEHPBVQSymbianEvent@@@Z @ 12532 NONAME ; int QApplicationPrivate::symbianHandleCommand(class QSymbianEvent const *)
?symbianProcessWsEvent@QApplicationPrivate@@QAEHPBVQSymbianEvent@@@Z @ 12533 NONAME ; int QApplicationPrivate::symbianProcessWsEvent(class QSymbianEvent const *)
?symbianResourceChange@QApplicationPrivate@@QAEHPBVQSymbianEvent@@@Z @ 12534 NONAME ; int QApplicationPrivate::symbianResourceChange(class QSymbianEvent const *)
+ ?addPixmapDataDestructionHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmapData@@@Z@Z @ 12535 NONAME ; void QImagePixmapCleanupHooks::addPixmapDataDestructionHook(void (*)(class QPixmapData *))
+ ?addPixmapDataModificationHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmapData@@@Z@Z @ 12536 NONAME ; void QImagePixmapCleanupHooks::addPixmapDataModificationHook(void (*)(class QPixmapData *))
+ ?cacheKey@QPixmapData@@QBE_JXZ @ 12537 NONAME ; long long QPixmapData::cacheKey(void) const
+ ?eventFilter@QS60Style@@MAE_NPAVQObject@@PAVQEvent@@@Z @ 12538 NONAME ; bool QS60Style::eventFilter(class QObject *, class QEvent *)
+ ?executePixmapDataDestructionHooks@QImagePixmapCleanupHooks@@SAXPAVQPixmapData@@@Z @ 12539 NONAME ; void QImagePixmapCleanupHooks::executePixmapDataDestructionHooks(class QPixmapData *)
+ ?executePixmapDataModificationHooks@QImagePixmapCleanupHooks@@SAXPAVQPixmapData@@@Z @ 12540 NONAME ; void QImagePixmapCleanupHooks::executePixmapDataModificationHooks(class QPixmapData *)
+ ?invalidateChildGraphicsEffectsRecursively@QGraphicsItemPrivate@@QAEXW4InvalidateReason@1@@Z @ 12541 NONAME ; void QGraphicsItemPrivate::invalidateChildGraphicsEffectsRecursively(enum QGraphicsItemPrivate::InvalidateReason)
+ ?invalidateParentGraphicsEffectsRecursively@QGraphicsItemPrivate@@QAEXXZ @ 12542 NONAME ; void QGraphicsItemPrivate::invalidateParentGraphicsEffectsRecursively(void)
+ ?markParentDirty@QGraphicsItemPrivate@@QAEX_N@Z @ 12543 NONAME ; void QGraphicsItemPrivate::markParentDirty(bool)
+ ?removePixmapDataDestructionHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmapData@@@Z@Z @ 12544 NONAME ; void QImagePixmapCleanupHooks::removePixmapDataDestructionHook(void (*)(class QPixmapData *))
+ ?removePixmapDataModificationHook@QImagePixmapCleanupHooks@@QAEXP6AXPAVQPixmapData@@@Z@Z @ 12545 NONAME ; void QImagePixmapCleanupHooks::removePixmapDataModificationHook(void (*)(class QPixmapData *))
+ ?setParentItemHelper@QGraphicsItemPrivate@@QAEXPAVQGraphicsItem@@PBVQVariant@@1@Z @ 12546 NONAME ; void QGraphicsItemPrivate::setParentItemHelper(class QGraphicsItem *, class QVariant const *, class QVariant const *)
+ ?timerEvent@QS60Style@@MAEXPAVQTimerEvent@@@Z @ 12547 NONAME ; void QS60Style::timerEvent(class QTimerEvent *)
+ ?updateAncestorFlags@QGraphicsItemPrivate@@QAEXXZ @ 12548 NONAME ; void QGraphicsItemPrivate::updateAncestorFlags(void)
+ ?updateChildWithGraphicsEffectFlagRecursively@QGraphicsItemPrivate@@QAEXXZ @ 12549 NONAME ; void QGraphicsItemPrivate::updateChildWithGraphicsEffectFlagRecursively(void)
diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def
index a9a69aa..5cf700b 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -11648,12 +11648,12 @@ EXPORTS
_ZN24QImagePixmapCleanupHooks18enableCleanupHooksEP11QPixmapData @ 11647 NONAME
_ZN24QImagePixmapCleanupHooks18enableCleanupHooksERK6QImage @ 11648 NONAME
_ZN24QImagePixmapCleanupHooks18enableCleanupHooksERK7QPixmap @ 11649 NONAME
- _ZN24QImagePixmapCleanupHooks24addPixmapDestructionHookEPFvP7QPixmapE @ 11650 NONAME
- _ZN24QImagePixmapCleanupHooks25addPixmapModificationHookEPFvP7QPixmapE @ 11651 NONAME
- _ZN24QImagePixmapCleanupHooks27removePixmapDestructionHookEPFvP7QPixmapE @ 11652 NONAME
- _ZN24QImagePixmapCleanupHooks28removePixmapModificationHookEPFvP7QPixmapE @ 11653 NONAME
- _ZN24QImagePixmapCleanupHooks29executePixmapDestructionHooksEP7QPixmap @ 11654 NONAME
- _ZN24QImagePixmapCleanupHooks30executePixmapModificationHooksEP7QPixmap @ 11655 NONAME
+ _ZN24QImagePixmapCleanupHooks24addPixmapDestructionHookEPFvP7QPixmapE @ 11650 NONAME ABSENT
+ _ZN24QImagePixmapCleanupHooks25addPixmapModificationHookEPFvP7QPixmapE @ 11651 NONAME ABSENT
+ _ZN24QImagePixmapCleanupHooks27removePixmapDestructionHookEPFvP7QPixmapE @ 11652 NONAME ABSENT
+ _ZN24QImagePixmapCleanupHooks28removePixmapModificationHookEPFvP7QPixmapE @ 11653 NONAME ABSENT
+ _ZN24QImagePixmapCleanupHooks29executePixmapDestructionHooksEP7QPixmap @ 11654 NONAME ABSENT
+ _ZN24QImagePixmapCleanupHooks30executePixmapModificationHooksEP7QPixmap @ 11655 NONAME ABSENT
_ZN25QGraphicsDropShadowEffect13setBlurRadiusEf @ 11656 NONAME
_ZN25QGraphicsDropShadowEffect17blurRadiusChangedEf @ 11657 NONAME
_ZN25QGraphicsDropShadowEffect4drawEP8QPainter @ 11658 NONAME
@@ -11792,4 +11792,17 @@ EXPORTS
_ZN19QApplicationPrivate20symbianHandleCommandEPK13QSymbianEvent @ 11791 NONAME
_ZN19QApplicationPrivate21symbianProcessWsEventEPK13QSymbianEvent @ 11792 NONAME
_ZN19QApplicationPrivate21symbianResourceChangeEPK13QSymbianEvent @ 11793 NONAME
+ _ZN20QGraphicsItemPrivate19setParentItemHelperEP13QGraphicsItemPK8QVariantS4_ @ 11794 NONAME
+ _ZN20QGraphicsItemPrivate19updateAncestorFlagsEv @ 11795 NONAME
+ _ZN20QGraphicsItemPrivate41invalidateChildGraphicsEffectsRecursivelyENS_16InvalidateReasonE @ 11796 NONAME
+ _ZN20QGraphicsItemPrivate42invalidateParentGraphicsEffectsRecursivelyEv @ 11797 NONAME
+ _ZN20QGraphicsItemPrivate44updateChildWithGraphicsEffectFlagRecursivelyEv @ 11798 NONAME
+ _ZN24QImagePixmapCleanupHooks28addPixmapDataDestructionHookEPFvP11QPixmapDataE @ 11799 NONAME
+ _ZN24QImagePixmapCleanupHooks29addPixmapDataModificationHookEPFvP11QPixmapDataE @ 11800 NONAME
+ _ZN24QImagePixmapCleanupHooks31removePixmapDataDestructionHookEPFvP11QPixmapDataE @ 11801 NONAME
+ _ZN24QImagePixmapCleanupHooks32removePixmapDataModificationHookEPFvP11QPixmapDataE @ 11802 NONAME
+ _ZN24QImagePixmapCleanupHooks33executePixmapDataDestructionHooksEP11QPixmapData @ 11803 NONAME
+ _ZN24QImagePixmapCleanupHooks34executePixmapDataModificationHooksEP11QPixmapData @ 11804 NONAME
+ _ZN9QS60Style10timerEventEP11QTimerEvent @ 11805 NONAME
+ _ZN9QS60Style11eventFilterEP7QObjectP6QEvent @ 11806 NONAME
diff --git a/src/s60main/s60main.pro b/src/s60main/s60main.pro
index 47cf020..25fb188 100644
--- a/src/s60main/s60main.pro
+++ b/src/s60main/s60main.pro
@@ -22,6 +22,9 @@ symbian {
# staticlib should not have any lib depencies in s60
# This seems not to work, some hard coded libs are still added as dependency
LIBS =
+
+ # Workaround for abld toolchain problem to make ARMV6 qtmain.lib link with GCCE apps
+ symbian-abld: QMAKE_CXXFLAGS.ARMCC += --dllimport_runtime
} else {
error("$$_FILE_ is intended only for Symbian!")
}
diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp
index cae959b..8d9ae4f 100644
--- a/src/xml/dom/qdom.cpp
+++ b/src/xml/dom/qdom.cpp
@@ -2973,7 +2973,7 @@ QDomElement QDomNode::lastChildElement(const QString &tagName) const
}
/*!
- Returns the next sibilng element with tag name \a tagName if \a tagName
+ Returns the next sibling element with tag name \a tagName if \a tagName
is non-empty; otherwise returns any next sibling element.
Returns a null element if no such sibling exists.
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index 3198a65..022b19a 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -587,3 +587,11 @@ contains(QT_CONFIG, declarative): SUBDIRS += declarative
xmlpatternsview \
xmlpatternsxqts \
xmlpatternsxslts
+
+
+############### make check recursively for testcases ##################
+check.CONFIG = recursive
+check.recurse = $$SUBDIRS
+check.recurse_target = check
+QMAKE_EXTRA_TARGETS += check
+###########################################################
diff --git a/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp b/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
index 3e062b8..da83826 100644
--- a/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
+++ b/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
@@ -71,8 +71,6 @@ private slots:
void viewportCrash();
void task214488_layoutDirection_data();
void task214488_layoutDirection();
- void wheelEvent_data();
- void wheelEvent();
};
tst_QAbstractScrollArea::tst_QAbstractScrollArea()
@@ -298,10 +296,10 @@ public:
setAttribute(Qt::WA_DropSiteRegistered, true);
- startTimer(200);
+ startTimer(2000);
}
- void timerEvent(QTimerEvent *)
+ void timerEvent(QTimerEvent *event)
{
// should not crash.
(void)new QScrollArea(this);
@@ -387,96 +385,5 @@ void tst_QAbstractScrollArea::patternBackground()
QCOMPARE(image.pixel(QPoint(20,20)) , QColor(Qt::red).rgb());
}
-Q_DECLARE_METATYPE(QWheelEvent *);
-
-void tst_QAbstractScrollArea::wheelEvent_data()
-{
- QTest::addColumn<QSize>("widgetSize");
- QTest::addColumn<QPoint>("initialOffset");
- QTest::addColumn<QWheelEvent *>("event");
- QTest::addColumn<int>("movedX"); // -1 , 0 , or 1
- QTest::addColumn<int>("movedY");
-
- QPoint pos(100,100);
- int delta =-120;
-
- QTest::newRow("1") << QSize(600,600) << QPoint(50,50)
- << new QWheelEvent(pos, delta, 0, 0, Qt::Horizontal) << 1 << 0;
-
- QTest::newRow("2") << QSize(600,600) << QPoint(50,50)
- << new QWheelEvent(pos, delta, 0, 0, Qt::Vertical) << 0 << 1;
-
- QTest::newRow("3") << QSize(600,600) << QPoint(50,50)
- << new QWheelEvent(pos, -delta, 0, 0, Qt::Horizontal) << -1 << 0;
-
- QTest::newRow("4") << QSize(600,600) << QPoint(50,50)
- << new QWheelEvent(pos, -delta, 0, 0, Qt::Vertical) << 0 << -1;
-
- QTest::newRow("5") << QSize(20,600) << QPoint(0,50)
- << new QWheelEvent(pos, delta, 0, 0, Qt::Horizontal) << 0 << 1;
-
- QTest::newRow("6") << QSize(20,600) << QPoint(0,50)
- << new QWheelEvent(pos, delta, 0, 0, Qt::Vertical) << 0 << 1;
-
- QTest::newRow("7") << QSize(20,600) << QPoint(0,50)
- << new QWheelEvent(pos, -delta, 0, 0, Qt::Horizontal) << 0 << -1;
-
- QTest::newRow("8") << QSize(20,600) << QPoint(0,50)
- << new QWheelEvent(pos, -delta, 0, 0, Qt::Vertical) << 0 << -1;
-
- QTest::newRow("9") << QSize(600,20) << QPoint(50,0)
- << new QWheelEvent(pos, delta, 0, 0, Qt::Horizontal) << 1 << 0;
-
- QTest::newRow("a") << QSize(600,20) << QPoint(50,0)
- << new QWheelEvent(pos, delta, 0, 0, Qt::Vertical) << 1 << 0;
-
- QTest::newRow("b") << QSize(600,20) << QPoint(50,0)
- << new QWheelEvent(pos, -delta, 0, 0, Qt::Horizontal) << -1 << 0;
-
- QTest::newRow("c") << QSize(600,20) << QPoint(50,0)
- << new QWheelEvent(pos, -delta, 0, 0, Qt::Vertical) << -1 << 0;
-}
-
-
-
-
-void tst_QAbstractScrollArea::wheelEvent()
-{
- QFETCH(QSize, widgetSize);
- QFETCH(QPoint, initialOffset);
- QFETCH(QWheelEvent *, event);
- QFETCH(int, movedX);
- QFETCH(int, movedY);
-
- QScrollArea scrollArea;
- scrollArea.resize(200, 200);
- QLabel widget("H e l l o");
- widget.resize(widgetSize);
- scrollArea.setWidget(&widget);
- scrollArea.show();
- QTest::qWait(20);
-
- scrollArea.verticalScrollBar()->setValue(initialOffset.y());
- scrollArea.horizontalScrollBar()->setValue(initialOffset.x());
-
- QCOMPARE(scrollArea.verticalScrollBar()->value(), initialOffset.y());
- QCOMPARE(scrollArea.horizontalScrollBar()->value(), initialOffset.x());
-
- QApplication::sendEvent(scrollArea.viewport(), event);
-
- if(movedX == 0)
- QCOMPARE(scrollArea.horizontalScrollBar()->value(), initialOffset.x());
- else
- QVERIFY(movedX * scrollArea.horizontalScrollBar()->value() > movedX * initialOffset.x());
-
- if(movedY == 0)
- QCOMPARE(scrollArea.verticalScrollBar()->value(), initialOffset.y());
- else
- QVERIFY(movedY * scrollArea.verticalScrollBar()->value() > movedY * initialOffset.y());
-
- delete event;
-}
-
-
QTEST_MAIN(tst_QAbstractScrollArea)
#include "tst_qabstractscrollarea.moc"
diff --git a/tests/auto/qabstractslider/tst_qabstractslider.cpp b/tests/auto/qabstractslider/tst_qabstractslider.cpp
index 40281c6..293af36 100644
--- a/tests/auto/qabstractslider/tst_qabstractslider.cpp
+++ b/tests/auto/qabstractslider/tst_qabstractslider.cpp
@@ -768,7 +768,7 @@ void tst_QAbstractSlider::wheelEvent_data()
<< true // inverted controls
<< 20 // wheel scroll lines
<< false // with modifiers
- << 1 // delta
+ << -1 // delta
<< int(Qt::Horizontal) // orientation of slider
<< int(Qt::Horizontal) // orientation of wheel
<< 30 // expected position after
@@ -782,7 +782,7 @@ void tst_QAbstractSlider::wheelEvent_data()
<< false // inverted controls
<< 1 // wheel scroll lines
<< false // with modifiers
- << 2 // delta
+ << -2 // delta
<< int(Qt::Horizontal) // orientation of slider
<< int(Qt::Horizontal) // orientation of wheel
<< 100 // expected position after
@@ -796,7 +796,7 @@ void tst_QAbstractSlider::wheelEvent_data()
<< false // inverted controls
<< 1 // wheel scroll lines
<< false // with modifiers
- << -2 // delta
+ << 2 // delta
<< int(Qt::Horizontal) // orientation of slider
<< int(Qt::Horizontal) // orientation of wheel
<< 0 // expected position after
@@ -810,7 +810,7 @@ void tst_QAbstractSlider::wheelEvent_data()
<< false // inverted controls
<< 20 // wheel scroll lines
<< true // with modifiers
- << 1 // delta
+ << -1 // delta
<< int(Qt::Horizontal) // orientation of slider
<< int(Qt::Horizontal) // orientation of wheel
<< 90 // expected position after
diff --git a/tests/auto/qgl/qgl.pro b/tests/auto/qgl/qgl.pro
index 420c4bb..9116f39 100644
--- a/tests/auto/qgl/qgl.pro
+++ b/tests/auto/qgl/qgl.pro
@@ -6,6 +6,6 @@ load(qttest_p4)
requires(contains(QT_CONFIG,opengl))
QT += opengl
-SOURCES += tst_qgl.cpp
-
+SOURCES += tst_qgl.cpp
+RESOURCES = qgl.qrc
diff --git a/tests/auto/qgl/qgl.qrc b/tests/auto/qgl/qgl.qrc
new file mode 100644
index 0000000..653794a
--- /dev/null
+++ b/tests/auto/qgl/qgl.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file alias="designer.png">../qpixmap/images/designer.png</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp
index cf4616e..d37d727 100644
--- a/tests/auto/qgl/tst_qgl.cpp
+++ b/tests/auto/qgl/tst_qgl.cpp
@@ -56,6 +56,7 @@
#ifdef QT_BUILD_INTERNAL
#include <QtOpenGL/private/qgl_p.h>
+#include <QtGui/private/qpixmapdata_p.h>
#endif
//TESTED_CLASS=
@@ -91,6 +92,8 @@ private slots:
void clipTest();
void destroyFBOAfterContext();
void shareRegister();
+ void qglContextDefaultBindTexture();
+ void textureCleanup();
};
tst_QGL::tst_QGL()
@@ -1938,5 +1941,242 @@ void tst_QGL::shareRegister()
#endif
}
+// Tests QGLContext::bindTexture with default options
+void tst_QGL::qglContextDefaultBindTexture()
+{
+#ifdef QT_BUILD_INTERNAL
+ QGLWidget w;
+ w.makeCurrent();
+
+ QGLContext *ctx = const_cast<QGLContext*>(w.context());
+
+ QImage *boundImage = new QImage(256, 256, QImage::Format_RGB32);
+ boundImage->fill(0xFFFFFFFF);
+ QPixmap *boundPixmap = new QPixmap(256, 256);
+ boundPixmap->fill(Qt::red);
+
+ // Check that calling QGLContext::bindTexture with default args adds textures to cache
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ GLuint boundImageTextureId = ctx->bindTexture(*boundImage);
+ GLuint boundPixmapTextureId = ctx->bindTexture(*boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ // Make sure the texture IDs returned are valid:
+ QCOMPARE((bool)glIsTexture(boundImageTextureId), GL_TRUE);
+ QCOMPARE((bool)glIsTexture(boundPixmapTextureId), GL_TRUE);
+
+ // Make sure the textures are still there after we delete the image/pixmap:
+ delete boundImage;
+ boundImage = 0;
+ delete boundPixmap;
+ boundPixmap = 0;
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ // Make sure the textures are deleted from the cache after calling QGLContext::deleteTexture()
+ ctx->deleteTexture(boundImageTextureId);
+ ctx->deleteTexture(boundPixmapTextureId);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ // Finally, make sure QGLContext::deleteTexture also deleted the texture IDs:
+ QCOMPARE((bool)glIsTexture(boundImageTextureId), GL_FALSE);
+ QCOMPARE((bool)glIsTexture(boundPixmapTextureId), GL_FALSE);
+#endif
+}
+
+void tst_QGL::textureCleanup()
+{
+#ifdef QT_BUILD_INTERNAL
+ QGLWidget w;
+ w.resize(200,200);
+ w.show();
+ w.makeCurrent();
+
+ // Test pixmaps which have been loaded via QPixmapCache are removed from the texture cache
+ // when the pixmap cache is cleared
+ {
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ QPainter p(&w);
+
+ QPixmap boundPixmap(":designer.png");
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawPixmap(0, 0, boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ // Check that the texture doesn't get removed from the cache when the pixmap is cleared
+ // as it should still be in the cache:
+ boundPixmap = QPixmap();
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ QPixmapCache::clear();
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+ }
+
+ // Test pixmaps which have been loaded via QPixmapCache are removed from the texture cache
+ // when they are explicitly removed from the pixmap cache
+ {
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ QPainter p(&w);
+
+ QPixmap boundPixmap(128, 128);
+ QString cacheKey = QString::fromLatin1("myPixmap");
+ QPixmapCache::insert(cacheKey, boundPixmap);
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawPixmap(0, 0, boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ // Check that the texture doesn't get removed from the cache when the pixmap is cleared
+ // as it should still be in the cache:
+ boundPixmap = QPixmap();
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ // Finally, we check that the texture cache entry is removed when we remove the
+ // pixmap cache entry, which should hold the last reference:
+ QPixmapCache::remove(cacheKey);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+ }
+
+ // Check images & pixmaps are removed from the cache when they are deleted
+ {
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ QPainter p(&w);
+
+ QImage *boundImage = new QImage(256, 256, QImage::Format_RGB32);
+ boundImage->fill(0xFFFFFFFF);
+ QPixmap *boundPixmap = new QPixmap(256, 256);
+ boundPixmap->fill(Qt::red);
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawImage(0, 0, *boundImage);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ p.drawPixmap(0, 0, *boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ delete boundImage;
+ boundImage = 0;
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ delete boundPixmap;
+ boundPixmap = 0;
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+ }
+
+ // Check images & pixmaps are removed from the cache when they are assigned to
+ {
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ QPainter p(&w);
+
+ QImage boundImage(256, 256, QImage::Format_RGB32);
+ boundImage.fill(0xFFFFFFFF);
+ QPixmap boundPixmap(256, 256);
+ boundPixmap.fill(Qt::red);
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawImage(0, 0, boundImage);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ p.drawPixmap(0, 0, boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ boundImage = QImage(64, 64, QImage::Format_RGB32);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ boundPixmap = QPixmap(64, 64);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+ }
+
+ // Check images & pixmaps are removed from the cache when they are modified (detached)
+ {
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ QPainter p(&w);
+
+ QImage boundImage(256, 256, QImage::Format_RGB32);
+ boundImage.fill(0xFFFFFFFF);
+ QPixmap boundPixmap(256, 256);
+ boundPixmap.fill(Qt::red);
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawImage(0, 0, boundImage);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ p.drawPixmap(0, 0, boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ boundImage.fill(0x00000000);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ boundPixmap.fill(Qt::blue);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+ }
+
+ // Check that images/pixmaps aren't removed from the cache if a shallow copy has been made
+ QImage copyOfImage;
+ QPixmap copyOfPixmap;
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ {
+ QPainter p(&w);
+
+ QImage boundImage(256, 256, QImage::Format_RGB32);
+ boundImage.fill(0xFFFFFFFF);
+ QPixmap boundPixmap(256, 256);
+ boundPixmap.fill(Qt::red);
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawImage(0, 0, boundImage);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ p.drawPixmap(0, 0, boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ copyOfImage = boundImage;
+ copyOfPixmap = boundPixmap;
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+ } // boundImage & boundPixmap would have been deleted when they went out of scope
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ copyOfImage = QImage();
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ copyOfPixmap = QPixmap();
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+#endif
+}
+
QTEST_MAIN(tst_QGL)
#include "tst_qgl.moc"
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 14b9ef0..7b54a3b 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -251,6 +251,21 @@ public:
QBrush brush;
};
+class MyGraphicsView : public QGraphicsView
+{
+public:
+ int repaints;
+ QRegion paintedRegion;
+ MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {}
+ void paintEvent(QPaintEvent *e)
+ {
+ paintedRegion += e->region();
+ ++repaints;
+ QGraphicsView::paintEvent(e);
+ }
+ void reset() { repaints = 0; paintedRegion = QRegion(); }
+};
+
class tst_QGraphicsItem : public QObject
{
Q_OBJECT
@@ -419,6 +434,8 @@ private slots:
void QTBUG_4233_updateCachedWithSceneRect();
void QTBUG_5418_textItemSetDefaultColor();
void QTBUG_6738_missingUpdateWithSetParent();
+ void QTBUG_7714_fullUpdateDiscardingOpacityUpdate2();
+ void QT_2653_fullUpdateDiscardingOpacityUpdate();
private:
QList<QGraphicsItem *> paintedItems;
@@ -3165,7 +3182,6 @@ void tst_QGraphicsItem::childrenBoundingRect()
childChild->setPos(500, 500);
child->rotate(90);
-
scene.addPolygon(parent->mapToScene(parent->boundingRect() | parent->childrenBoundingRect()))->setPen(QPen(Qt::red));;
QGraphicsView view(&scene);
@@ -6252,13 +6268,6 @@ void tst_QGraphicsItem::opacity2()
QGraphicsScene scene;
scene.addItem(parent);
- class MyGraphicsView : public QGraphicsView
- { public:
- int repaints;
- MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {}
- void paintEvent(QPaintEvent *e) { ++repaints; QGraphicsView::paintEvent(e); }
- };
-
MyGraphicsView view(&scene);
view.show();
QTest::qWaitForWindowShown(&view);
@@ -6336,20 +6345,6 @@ void tst_QGraphicsItem::opacityZeroUpdates()
QGraphicsScene scene;
scene.addItem(parent);
- class MyGraphicsView : public QGraphicsView
- { public:
- int repaints;
- QRegion paintedRegion;
- MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {}
- void paintEvent(QPaintEvent *e)
- {
- ++repaints;
- paintedRegion += e->region();
- QGraphicsView::paintEvent(e);
- }
- void reset() { repaints = 0; paintedRegion = QRegion(); }
- };
-
MyGraphicsView view(&scene);
view.show();
QTest::qWaitForWindowShown(&view);
@@ -7076,21 +7071,6 @@ void tst_QGraphicsItem::deviceTransform()
QCOMPARE(rect3->deviceTransform(deviceX).map(QPointF(50, 50)), mapResult3);
}
-class MyGraphicsView : public QGraphicsView
-{
-public:
- int repaints;
- QRegion paintedRegion;
- MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {}
- void paintEvent(QPaintEvent *e)
- {
- paintedRegion += e->region();
- ++repaints;
- QGraphicsView::paintEvent(e);
- }
- void reset() { repaints = 0; paintedRegion = QRegion(); }
-};
-
void tst_QGraphicsItem::update()
{
QGraphicsScene scene;
@@ -9835,7 +9815,7 @@ void tst_QGraphicsItem::scenePosChange()
QCOMPARE(child2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 0);
}
-void tst_QGraphicsItem::QTBUG_5418_textItemSetDefaultColor()
+void tst_QGraphicsItem::QTBUG_5418_textItemSetDefaultColor()
{
struct Item : public QGraphicsTextItem
{
@@ -9914,20 +9894,6 @@ void tst_QGraphicsItem::QTBUG_6738_missingUpdateWithSetParent()
QGraphicsScene scene;
scene.addItem(parent);
- class MyGraphicsView : public QGraphicsView
- { public:
- int repaints;
- QRegion paintedRegion;
- MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {}
- void paintEvent(QPaintEvent *e)
- {
- ++repaints;
- paintedRegion += e->region();
- QGraphicsView::paintEvent(e);
- }
- void reset() { repaints = 0; paintedRegion = QRegion(); }
- };
-
MyGraphicsView view(&scene);
view.show();
QTest::qWaitForWindowShown(&view);
@@ -9955,5 +9921,84 @@ void tst_QGraphicsItem::QTBUG_6738_missingUpdateWithSetParent()
QTRY_VERIFY(view.repaints == 1);
}
+void tst_QGraphicsItem::QT_2653_fullUpdateDiscardingOpacityUpdate()
+{
+ QGraphicsScene scene(0, 0, 200, 200);
+ MyGraphicsView view(&scene);
+
+ EventTester *parentGreen = new EventTester();
+ parentGreen->setGeometry(QRectF(20, 20, 100, 100));
+ parentGreen->brush = Qt::green;
+
+ EventTester *childYellow = new EventTester(parentGreen);
+ childYellow->setGeometry(QRectF(10, 10, 50, 50));
+ childYellow->brush = Qt::yellow;
+
+ scene.addItem(parentGreen);
+
+ childYellow->setOpacity(0.0);
+ parentGreen->setOpacity(0.0);
+
+ // set any of the flags below to trigger a fullUpdate to reproduce the bug:
+ // ItemIgnoresTransformations, ItemClipsChildrenToShape, ItemIsSelectable
+ parentGreen->setFlag(QGraphicsItem::ItemIgnoresTransformations);
+
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ view.reset();
+
+ parentGreen->setOpacity(1.0);
+
+ QTRY_COMPARE(view.repaints, 1);
+
+ view.reset();
+ childYellow->repaints = 0;
+
+ childYellow->setOpacity(1.0);
+
+ QTRY_COMPARE(view.repaints, 1);
+ QTRY_COMPARE(childYellow->repaints, 1);
+}
+
+void tst_QGraphicsItem::QTBUG_7714_fullUpdateDiscardingOpacityUpdate2()
+{
+ QGraphicsScene scene(0, 0, 200, 200);
+ MyGraphicsView view(&scene);
+ MyGraphicsView origView(&scene);
+
+ EventTester *parentGreen = new EventTester();
+ parentGreen->setGeometry(QRectF(20, 20, 100, 100));
+ parentGreen->brush = Qt::green;
+
+ EventTester *childYellow = new EventTester(parentGreen);
+ childYellow->setGeometry(QRectF(10, 10, 50, 50));
+ childYellow->brush = Qt::yellow;
+
+ scene.addItem(parentGreen);
+
+ origView.show();
+ QTest::qWaitForWindowShown(&origView);
+ origView.setGeometry(origView.width() + 20, 20,
+ origView.width(), origView.height());
+
+ parentGreen->setFlag(QGraphicsItem::ItemIgnoresTransformations);
+
+ origView.reset();
+ childYellow->setOpacity(0.0);
+
+ QTRY_COMPARE(origView.repaints, 1);
+
+ view.show();
+
+ QTest::qWaitForWindowShown(&view);
+ view.reset();
+ origView.reset();
+
+ childYellow->setOpacity(1.0);
+
+ QTRY_COMPARE(origView.repaints, 1);
+ QTRY_COMPARE(view.repaints, 1);
+}
+
QTEST_MAIN(tst_QGraphicsItem)
#include "tst_qgraphicsitem.moc"
diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
index 6743fbe..469ded0 100644
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -2806,14 +2806,14 @@ void tst_QGraphicsScene::contextMenuEvent_ItemIgnoresTransformations()
{
QPoint pos(50, 50);
- QContextMenuEvent event(QContextMenuEvent::Keyboard, pos, view.mapToGlobal(pos));
+ QContextMenuEvent event(QContextMenuEvent::Keyboard, pos, view.viewport()->mapToGlobal(pos));
event.ignore();
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(event.isAccepted());
}
{
QPoint pos(150, 150);
- QContextMenuEvent event(QContextMenuEvent::Keyboard, pos, view.mapToGlobal(pos));
+ QContextMenuEvent event(QContextMenuEvent::Keyboard, pos, view.viewport()->mapToGlobal(pos));
event.ignore();
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(!event.isAccepted());
@@ -2821,14 +2821,14 @@ void tst_QGraphicsScene::contextMenuEvent_ItemIgnoresTransformations()
view.scale(1.5, 1.5);
{
QPoint pos(25, 25);
- QContextMenuEvent event(QContextMenuEvent::Keyboard, pos, view.mapToGlobal(pos));
+ QContextMenuEvent event(QContextMenuEvent::Keyboard, pos, view.viewport()->mapToGlobal(pos));
event.ignore();
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(event.isAccepted());
}
{
QPoint pos(55, 55);
- QContextMenuEvent event(QContextMenuEvent::Keyboard, pos, view.mapToGlobal(pos));
+ QContextMenuEvent event(QContextMenuEvent::Keyboard, pos, view.viewport()->mapToGlobal(pos));
event.ignore();
QApplication::sendEvent(view.viewport(), &event);
QVERIFY(!event.isAccepted());
diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
index d3132fe..00bf144 100644
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -164,6 +164,7 @@ private slots:
void polishEvent();
void polishEvent2();
void initialShow();
+ void initialShow2();
// Task fixes
void task236127_bspTreeIndexFails();
@@ -2881,6 +2882,48 @@ void tst_QGraphicsWidget::initialShow()
QCOMPARE(widget->repaints, 1);
}
+void tst_QGraphicsWidget::initialShow2()
+{
+ class MyGraphicsWidget : public QGraphicsWidget
+ { public:
+ MyGraphicsWidget() : repaints(0) {}
+ int repaints;
+ void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget*) { ++repaints; }
+ void polishEvent() { update(); }
+ };
+
+ // Don't let paint events triggered by the windowing system
+ // influence our test case. We're only interested in knowing
+ // whether a QGraphicsWidget generates an additional repaint
+ // on the inital show. Hence create a dummy scenario to find out
+ // how many repaints we should expect.
+ QGraphicsScene dummyScene(0, 0, 200, 200);
+ dummyScene.addItem(new QGraphicsRectItem(0, 0, 100, 100));
+
+ QGraphicsView *dummyView = new QGraphicsView(&dummyScene);
+ dummyView->setWindowFlags(Qt::X11BypassWindowManagerHint);
+ EventSpy paintSpy(dummyView->viewport(), QEvent::Paint);
+ dummyView->show();
+ QTest::qWaitForWindowShown(dummyView);
+ const int expectedRepaintCount = paintSpy.count();
+ delete dummyView;
+ dummyView = 0;
+ QTest::qWait(200);
+
+ MyGraphicsWidget *widget = new MyGraphicsWidget;
+ widget->resize(100, 100);
+
+ QGraphicsScene scene(0, 0, 200, 200);
+ scene.addItem(widget);
+
+ QGraphicsView view(&scene);
+ view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QCOMPARE(widget->repaints, expectedRepaintCount);
+}
+
void tst_QGraphicsWidget::QT_BUG_6544_tabFocusFirstUnsetWhenRemovingItems()
{
QGraphicsScene scene;
diff --git a/tests/auto/qimagereader/images/qt-gif-anim.gif b/tests/auto/qimagereader/images/qt-gif-anim.gif
new file mode 100644
index 0000000..8bca4a8
--- /dev/null
+++ b/tests/auto/qimagereader/images/qt-gif-anim.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qt-gif-noanim.gif b/tests/auto/qimagereader/images/qt-gif-noanim.gif
new file mode 100644
index 0000000..b6a8540
--- /dev/null
+++ b/tests/auto/qimagereader/images/qt-gif-noanim.gif
Binary files differ
diff --git a/tests/auto/qimagereader/qimagereader.qrc b/tests/auto/qimagereader/qimagereader.qrc
index 58f2f74..bc48244 100644
--- a/tests/auto/qimagereader/qimagereader.qrc
+++ b/tests/auto/qimagereader/qimagereader.qrc
@@ -1,5 +1,5 @@
<RCC>
- <qresource prefix="/" >
+ <qresource prefix="/">
<file>images/16bpp.bmp</file>
<file>images/4bpp-rle.bmp</file>
<file>images/YCbCr_cmyk.jpg</file>
@@ -59,5 +59,7 @@
<file>images/qt8.gif</file>
<file>images/endless-anim.gif</file>
<file>images/four-frames.gif</file>
+ <file>images/qt-gif-anim.gif</file>
+ <file>images/qt-gif-noanim.gif</file>
</qresource>
</RCC>
diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp
index e7cfe68..121a8fa 100644
--- a/tests/auto/qimagereader/tst_qimagereader.cpp
+++ b/tests/auto/qimagereader/tst_qimagereader.cpp
@@ -142,6 +142,7 @@ private slots:
void gifHandlerBugs();
void animatedGif();
void gifImageCount();
+ void gifLoopCount();
#endif
void readCorruptImage_data();
@@ -765,6 +766,8 @@ void tst_QImageReader::gifImageCount()
QVERIFY(io.canRead());
QImage greenFrame = io.read();
+ QVERIFY(io.imageCount() == 4);
+
QVERIFY(io.canRead());
QImage blueFrame = io.read();
@@ -876,7 +879,25 @@ void tst_QImageReader::gifImageCount()
QCOMPARE(blueFrame.size(), QSize(64,64));
QVERIFY(emptyFrame.isNull());
}
+ {
+ QImageReader io(":images/trolltech.gif");
+ QVERIFY(io.imageCount() == 34);
+ QVERIFY(io.size() == QSize(128,64));
+ }
+}
+
+void tst_QImageReader::gifLoopCount()
+{
+ {
+ QImageReader io(":images/qt-gif-anim.gif");
+ QCOMPARE(io.loopCount(), -1); // infinite loop
+ }
+ {
+ QImageReader io(":images/qt-gif-noanim.gif");
+ QCOMPARE(io.loopCount(), 0); // no loop
+ }
}
+
#endif
class Server : public QObject
@@ -1641,10 +1662,16 @@ void tst_QImageReader::pixelCompareWithBaseline()
{
QFETCH(QString, fileName);
+ static int enteredCount = 0; // Used for better error diagnostics if something fails. We
+ static int loadFailCount = 0; // don't know if the reason load() fails is that the plugin
+ // does not exist or because of a bug in the plugin. But if at
+ // least one file succeeded we know that the plugin was built.
+ // The other failures are then real failures.
QImage icoImg;
const QString inputFileName(QString::fromAscii("images/%1").arg(fileName));
QFileInfo fi(inputFileName);
+ ++enteredCount;
// might fail if the plugin does not exist, which is ok.
if (icoImg.load(inputFileName)) {
icoImg = icoImg.convertToFormat(QImage::Format_ARGB32_Premultiplied);
@@ -1658,6 +1685,13 @@ void tst_QImageReader::pixelCompareWithBaseline()
QCOMPARE(int(baseImg.format()), int(icoImg.format()));
QCOMPARE(baseImg, icoImg);
#endif
+ } else {
+ ++loadFailCount;
+ if (enteredCount != loadFailCount) {
+ QFAIL("Plugin is built, but some did not load properly");
+ } else {
+ qWarning("loading failed, check if ico plugin is built");
+ }
}
}
diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index ea90ae3..03eddee 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -391,11 +391,17 @@ private slots:
#ifdef Q_OS_SYMBIAN
void cbaVisibility();
+ void fullScreenWindowModeTransitions();
+ void maximizedWindowModeTransitions();
+ void minimizedWindowModeTransitions();
+ void normalWindowModeTransitions();
#endif
void focusProxyAndInputMethods();
void scrollWithoutBackingStore();
+ void taskQTBUG_7532_tabOrderWithFocusProxy();
+
private:
bool ensureScreenSize(int width, int height);
QWidget *testWidget;
@@ -9687,6 +9693,226 @@ void tst_QWidget::cbaVisibility()
CEikButtonGroupContainer* buttonGroup = CEikonEnv::Static()->AppUiFactory()->Cba();
QVERIFY(buttonGroup->IsVisible());
}
+
+void tst_QWidget::fullScreenWindowModeTransitions()
+{
+ QWidget widget;
+ QVBoxLayout *layout = new QVBoxLayout;
+ QPushButton *button = new QPushButton("test Button");
+ layout->addWidget(button);
+ widget.setLayout(layout);
+ widget.show();
+
+ const QRect normalGeometry = widget.normalGeometry();
+ const QRect fullScreenGeometry = qApp->desktop()->screenGeometry(&widget);
+ const QRect maximumScreenGeometry = qApp->desktop()->availableGeometry(&widget);
+ CEikStatusPane *statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
+ CEikButtonGroupContainer *buttonGroup = CEikonEnv::Static()->AppUiFactory()->Cba();
+
+ //Enter
+ widget.showNormal();
+ widget.showFullScreen();
+ QCOMPARE(widget.geometry(), fullScreenGeometry);
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+
+ widget.showMaximized();
+ widget.showFullScreen();
+ QCOMPARE(widget.geometry(), fullScreenGeometry);
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+
+ widget.showMinimized();
+ widget.showFullScreen();
+ QCOMPARE(widget.geometry(), fullScreenGeometry);
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+
+ //Exit
+ widget.showFullScreen();
+ widget.showNormal();
+ QCOMPARE(widget.geometry(), normalGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+
+ widget.showFullScreen();
+ widget.showMaximized();
+ QCOMPARE(widget.geometry(), maximumScreenGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+
+ widget.showFullScreen();
+ widget.showMinimized();
+ QCOMPARE(widget.geometry(), fullScreenGeometry);
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+}
+
+void tst_QWidget::maximizedWindowModeTransitions()
+{
+ QWidget widget;
+ QVBoxLayout *layout = new QVBoxLayout;
+ QPushButton *button = new QPushButton("test Button");
+ layout->addWidget(button);
+ widget.setLayout(layout);
+ widget.show();
+
+ const QRect normalGeometry = widget.normalGeometry();
+ const QRect fullScreenGeometry = qApp->desktop()->screenGeometry(&widget);
+ const QRect maximumScreenGeometry = qApp->desktop()->availableGeometry(&widget);
+ CEikStatusPane *statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
+ CEikButtonGroupContainer *buttonGroup = CEikonEnv::Static()->AppUiFactory()->Cba();
+
+ //Enter
+ widget.showNormal();
+ widget.showMaximized();
+ QCOMPARE(widget.geometry(), maximumScreenGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+
+ widget.showFullScreen();
+ widget.showMaximized();
+ QCOMPARE(widget.geometry(), maximumScreenGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+
+ widget.showMinimized();
+ widget.showMaximized();
+ QCOMPARE(widget.geometry(), maximumScreenGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+
+ //Exit
+ widget.showMaximized();
+ widget.showNormal();
+ QCOMPARE(widget.geometry(), normalGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+
+ widget.showMaximized();
+ widget.showFullScreen();
+ QCOMPARE(widget.geometry(), fullScreenGeometry);
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+
+ widget.showMaximized();
+ widget.showMinimized();
+ // Since showMinimized hides window decoration availableGeometry gives different value
+ // than with decoration visible. Altual size does not really matter since widget is invisible.
+ QCOMPARE(widget.geometry(), qApp->desktop()->availableGeometry(&widget));
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+}
+
+void tst_QWidget::minimizedWindowModeTransitions()
+{
+ QWidget widget;
+ QVBoxLayout *layout = new QVBoxLayout;
+ QPushButton *button = new QPushButton("test Button");
+ layout->addWidget(button);
+ widget.setLayout(layout);
+ widget.show();
+
+ const QRect normalGeometry = widget.normalGeometry();
+ const QRect fullScreenGeometry = qApp->desktop()->screenGeometry(&widget);
+ const QRect maximumScreenGeometry = qApp->desktop()->availableGeometry(&widget);
+ CEikStatusPane *statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
+ CEikButtonGroupContainer *buttonGroup = CEikonEnv::Static()->AppUiFactory()->Cba();
+
+ //Enter
+ widget.showNormal();
+ widget.showMinimized();
+ QCOMPARE(widget.geometry(), normalGeometry);
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+
+ widget.showFullScreen();
+ widget.showMinimized();
+ QCOMPARE(widget.geometry(), fullScreenGeometry);
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+
+ widget.showMaximized();
+ widget.showMinimized();
+ // Since showMinimized hides window decoration availableGeometry gives different value
+ // than with decoration visible. Altual size does not really matter since widget is invisible.
+ QCOMPARE(widget.geometry(), qApp->desktop()->availableGeometry(&widget));
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+
+ //Exit
+ widget.showMinimized();
+ widget.showNormal();
+ QCOMPARE(widget.geometry(), normalGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+
+ widget.showMinimized();
+ widget.showFullScreen();
+ QCOMPARE(widget.geometry(), fullScreenGeometry);
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+
+ widget.showMinimized();
+ widget.showMaximized();
+ QCOMPARE(widget.geometry(), maximumScreenGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+}
+
+void tst_QWidget::normalWindowModeTransitions()
+{
+ QWidget widget;
+ QVBoxLayout *layout = new QVBoxLayout;
+ QPushButton *button = new QPushButton("test Button");
+ layout->addWidget(button);
+ widget.setLayout(layout);
+ widget.show();
+
+ const QRect normalGeometry = widget.normalGeometry();
+ const QRect fullScreenGeometry = qApp->desktop()->screenGeometry(&widget);
+ const QRect maximumScreenGeometry = qApp->desktop()->availableGeometry(&widget);
+ CEikStatusPane *statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
+ CEikButtonGroupContainer *buttonGroup = CEikonEnv::Static()->AppUiFactory()->Cba();
+
+ //Enter
+ widget.showMaximized();
+ widget.showNormal();
+ QCOMPARE(widget.geometry(), normalGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+
+ widget.showFullScreen();
+ widget.showNormal();
+ QCOMPARE(widget.geometry(), normalGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+
+ widget.showMinimized();
+ widget.showNormal();
+ QCOMPARE(widget.geometry(), normalGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+
+ //Exit
+ widget.showNormal();
+ widget.showMaximized();
+ QCOMPARE(widget.geometry(), maximumScreenGeometry);
+ QVERIFY(buttonGroup->IsVisible());
+ QVERIFY(statusPane->IsVisible());
+
+ widget.showNormal();
+ widget.showFullScreen();
+ QCOMPARE(widget.geometry(), fullScreenGeometry);
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+
+ widget.showNormal();
+ widget.showMinimized();
+ QCOMPARE(widget.geometry(), normalGeometry);
+ QVERIFY(!buttonGroup->IsVisible());
+ QVERIFY(!statusPane->IsVisible());
+}
#endif
class InputContextTester : public QInputContext
@@ -9783,5 +10009,17 @@ void tst_QWidget::scrollWithoutBackingStore()
QCOMPARE(child.pos(),QPoint(25,25));
}
+void tst_QWidget::taskQTBUG_7532_tabOrderWithFocusProxy()
+{
+ QWidget w;
+ w.setFocusPolicy(Qt::TabFocus);
+ QWidget *fp = new QWidget(&w);
+ fp->setFocusPolicy(Qt::TabFocus);
+ w.setFocusProxy(fp);
+ QWidget::setTabOrder(&w, fp);
+
+ // No Q_ASSERT, then it's allright.
+}
+
QTEST_MAIN(tst_QWidget)
#include "tst_qwidget.moc"
diff --git a/tests/auto/uiloader/baseline/css_qtbug7737_borderimageradius.ui b/tests/auto/uiloader/baseline/css_qtbug7737_borderimageradius.ui
new file mode 100644
index 0000000..089cb76
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_qtbug7737_borderimageradius.ui
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>207</width>
+ <height>69</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">QPushButton { border-image: url(&quot;images/pushbutton.png&quot;) 5 5 5 5; border-radius:8px; }</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QPushButton" name="pushButton">
+ <property name="text">
+ <string>Border image and radius</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp b/tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp
index d98a2a1..4cb07db 100644
--- a/tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp
@@ -171,7 +171,7 @@ void tst_QGraphicsView::paintSingleItem()
}
#ifdef Q_OS_SYMBIAN
-# define DEEP_STACKING_COUNT 200
+# define DEEP_STACKING_COUNT 85
#else
# define DEEP_STACKING_COUNT 1000
#endif
diff --git a/tools/installer/README b/tools/installer/README
deleted file mode 100644
index 63abf6d..0000000
--- a/tools/installer/README
+++ /dev/null
@@ -1,12 +0,0 @@
-iwmake is the tool used to generate the Qt installer binaries.
-
-To be able to use it yourself create a config.default in the
-config/ directory. You can refer to config.default.sample to see
-which values need to be set within this file.
-
-Afterwards call "iwmake.bat mingw-opensource.conf" to create an
-installer package yourself.
-
-Note that the binary creation takes a lot of time and is very
-CPU-intensive as it recompiles the Qt source package among other
-steps.
diff --git a/tools/installer/batch/build.bat b/tools/installer/batch/build.bat
deleted file mode 100755
index c10b7f3..0000000
--- a/tools/installer/batch/build.bat
+++ /dev/null
@@ -1,157 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:begin
-for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_COMPILER=%%~m& set IWMAKE_TMP=%%~n
-
-if "%IWMAKE_TMP%"=="" set IWMAKE_TMP=build_%IWMAKE_COMPILER%
-set IWMAKE_BUILD=%IWMAKE_ROOT%\%IWMAKE_TMP%
-if not exist %IWMAKE_BUILD% mkdir %IWMAKE_BUILD%
-
-if not "%PATH%"=="" set IWMAKE_OLD_PATH=%PATH%
-if not "%QMAKESPEC%"=="" set IWMAKE_OLD_QMAKESPEC=%QMAKESPEC%
-if not "%QTDIR%"=="" set IWMAKE_OLD_QTDIR=%QTDIR%
-if not "%INCLUDE%"=="" set IWMAKE_OLD_INCLUDE=%INCLUDE%
-if not "%LIB%"=="" set IWMAKE_OLD_LIB=%LIB%
-
-set PATH=%IWMAKE_BUILD%\bin;%PATH%
-set QTDIR=%IWMAKE_BUILD%
-
-if "%IWMAKE_COMPILER%"=="vs2003" goto VS2003Env
-if "%IWMAKE_COMPILER%"=="vs2002" goto VS2002Env
-if "%IWMAKE_COMPILER%"=="vs2005" goto VS2005Env
-if "%IWMAKE_COMPILER%"=="vc60" goto VC60Env
-if "%IWMAKE_COMPILER%"=="mingw" goto MinGWEnv
-goto :eof
-
-:VS2003Env
-set QMAKESPEC=win32-msvc.net
-if not exist "%VS71COMNTOOLS%vsvars32.bat" echo VS2003 not found >> %IWMAKE_LOGFILE% & exit /b 1
-call "%VS71COMNTOOLS%vsvars32.bat" >> %IWMAKE_LOGFILE%
-set IWMAKE_MAKE=nmake
-goto :eof
-
-:VS2002Env
-set QMAKESPEC=win32-msvc.net
-if not exist "%VSCOMNTOOLS%vsvars32.bat" echo VS2002 not found >> %IWMAKE_LOGFILE% & exit /b 1
-call "%VSCOMNTOOLS%vsvars32.bat" >> %IWMAKE_LOGFILE%
-set IWMAKE_MAKE=nmake
-goto :eof
-
-:VS2005Env
-set QMAKESPEC=win32-msvc2005
-if not exist "%VS80COMNTOOLS%vsvars32.bat" echo VS2005 not found >> %IWMAKE_LOGFILE% & exit /b 1
-call "%VS80COMNTOOLS%vsvars32.bat" >> %IWMAKE_LOGFILE%
-set IWMAKE_MAKE=nmake
-goto :eof
-
-:VC60Env
-set QMAKESPEC=win32-msvc
-if not exist "%ProgramFiles%\Microsoft Visual Studio\VC98\Bin\vcvars32.bat" echo VC60 not found >> %IWMAKE_LOGFILE% & exit /b 1
-call "%ProgramFiles%\Microsoft Visual Studio\VC98\Bin\vcvars32.bat" >> %IWMAKE_LOGFILE%
-set IWMAKE_MAKE=nmake
-goto :eof
-
-:MinGWEnv
-set QMAKESPEC=win32-g++
-if not exist %IWMAKE_MINGWPATH%\bin\gcc.exe echo MinGW not found in %IWMAKE_MINGWPATH% >> %IWMAKE_LOGFILE% & exit /b 1
-set PATH=%IWMAKE_MINGWPATH%\bin;%PATH%
-set IWMAKE_MAKE=mingw32-make
-goto :eof
-
-:finish
- if not "%IWMAKE_OLD_PATH%"=="" set PATH=%IWMAKE_OLD_PATH%& set IWMAKE_OLD_PATH=
- if not "%IWMAKE_OLD_QMAKESPEC%"=="" set QMAKESPEC=%IWMAKE_OLD_QMAKESPEC%& set IWMAKE_OLD_QMAKESPEC=
- if not "%IWMAKE_OLD_QTDIR%"=="" set QTDIR=%IWMAKE_OLD_QTDIR%& set IWMAKE_OLD_QTDIR=
- if not "%IWMAKE_OLD_INCLUDE%"=="" set INCLUDE=%IWMAKE_OLD_INCLUDE%& set IWMAKE_OLD_INCLUDE=
- if not "%IWMAKE_OLD_LIB%"=="" set LIB=%IWMAKE_OLD_LIB%& set IWMAKE_OLD_LIB=
-goto :eof
-
-:configure
- pushd %IWMAKE_BUILD%
- configure %~1 >> %IWMAKE_LOGFILE% 2>&1
- popd
-goto :eof
-
-:bin
- pushd %IWMAKE_BUILD%
- %IWMAKE_MAKE% %~1 >>%IWMAKE_LOGFILE% 2>&1
- popd
-goto :eof
-
-:binInDir
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- pushd %IWMAKE_BUILD%\%IWMAKE_TMP%
- %IWMAKE_MAKE% %IWMAKE_TMP2% >> %IWMAKE_LOGFILE% 2>&1
- popd
-goto :eof
-
-:DBPlugins
- call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync sql
- set IWMAKE_SQL_OLD_LIB=%LIB%
- pushd %IWMAKE_BUILD%\src\plugins\sqldrivers\mysql
- set LIB=%IWMAKE_ROOT%\sql\mysql\lib\debug;%IWMAKE_SQL_OLD_LIB%
- qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\mysql\include" "LIBS+=libmysql.lib ws2_32.lib advapi32.lib user32.lib" >> %IWMAKE_LOGFILE% 2>&1
- %IWMAKE_MAKE% debug >> %IWMAKE_LOGFILE% 2>&1
- set LIB=%IWMAKE_ROOT%\sql\mysql\lib\opt;%IWMAKE_SQL_OLD_LIB%
- qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\mysql\include" "LIBS+=libmysql.lib ws2_32.lib advapi32.lib" >> %IWMAKE_LOGFILE% 2>&1
- %IWMAKE_MAKE% release >> %IWMAKE_LOGFILE% 2>&1
- popd
-
- set LIB=%IWMAKE_ROOT%\sql\%IWMAKE_COMPILER%;%IWMAKE_SQL_OLD_LIB%
- pushd %IWMAKE_BUILD%\src\plugins\sqldrivers\psql
- qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\include\psql" "LIBS+=libpqd.lib ws2_32.lib advapi32.lib shfolder.lib shell32.lib" >> %IWMAKE_LOGFILE% 2>&1
- %IWMAKE_MAKE% debug >> %IWMAKE_LOGFILE% 2>&1
- qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\include\psql" "LIBS+=libpq.lib ws2_32.lib advapi32.lib shfolder.lib shell32.lib" >> %IWMAKE_LOGFILE% 2>&1
- %IWMAKE_MAKE% release >> %IWMAKE_LOGFILE% 2>&1
- popd
- set LIB=%IWMAKE_SQL_OLD_LIB%
- set IWMAKE_SQL_OLD_LIB=
-goto :eof
-
-:root
- set IWMAKE_BUILD=%~1
- if not exist %IWMAKE_BUILD% mkdir %IWMAKE_BUILD%
-goto :eof
-
-:END
diff --git a/tools/installer/batch/copy.bat b/tools/installer/batch/copy.bat
deleted file mode 100755
index 8fabebf..0000000
--- a/tools/installer/batch/copy.bat
+++ /dev/null
@@ -1,121 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:dest
- set IWMAKE_OUTDIR=%IWMAKE_ROOT%\%~1
- if not exist %IWMAKE_OUTDIR% mkdir %IWMAKE_OUTDIR%
-goto :eof
-
-:src
- set IWMAKE_SRCDIR=%IWMAKE_ROOT%\%~1
- if not exist %IWMAKE_SRCDIR% mkdir %IWMAKE_SRCDIR%
-goto :eof
-
-:destAbs
- set IWMAKE_OUTDIR=%1
- if not exist %IWMAKE_OUTDIR% mkdir %IWMAKE_OUTDIR%
-goto :eof
-
-:srcAbs
- set IWMAKE_SRCDIR=%1
- if not exist %IWMAKE_SRCDIR% mkdir %IWMAKE_SRCDIR%
-goto :eof
-
-:extsync
- if exist %IWMAKE_ROOT%\%~1 rd /S /Q %IWMAKE_ROOT%\%~1 >> %IWMAKE_LOGFILE%
- xcopy /H /Y /Q /I /R /E %IWMAKE_EXTERNAL%\%~1 %IWMAKE_ROOT%\%~1 >> %IWMAKE_LOGFILE%
-goto :eof
-
-:all
- xcopy /H /Y /Q /I /R /S %IWMAKE_SRCDIR%\%~1 %IWMAKE_OUTDIR%\ >> %IWMAKE_LOGFILE%
-goto :eof
-
-:filesEx
- for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3=%%~o
- echo %IWMAKE_TMP3% > %IWMAKE_ROOT%\iwmake_exclude
- xcopy /H /Y /Q /I /R /S /EXCLUDE:%IWMAKE_ROOT%\iwmake_exclude %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP2% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:file
- set IWMAKE_TMP=%~1
- set IWMAKE_TMP2=%~nx1
- echo set IWMAKE_TMP3=%%IWMAKE_TMP:%IWMAKE_TMP2%=%%>"%IWMAKE_ROOT%\iwmake_tmp.bat"
- call %IWMAKE_ROOT%\iwmake_tmp.bat
- if not exist "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%" mkdir "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%"
- xcopy /H /Y /Q /I /R %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP3% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:fileAndRename
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP4=%%~nxn
- echo set IWMAKE_TMP3=%%IWMAKE_TMP2:%IWMAKE_TMP4%=%%>"%IWMAKE_ROOT%\iwmake_tmp.bat"
- call %IWMAKE_ROOT%\iwmake_tmp.bat
- if not exist "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%" mkdir "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%"
- echo > %IWMAKE_OUTDIR%\%IWMAKE_TMP2%
- xcopy /H /Y /Q /R %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP2% >> %IWMAKE_LOGFILE%
- set IWMAKE_TMP4=
-goto :eof
-
-:files
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- if not exist "%IWMAKE_OUTDIR%\%IWMAKE_TMP2%" mkdir "%IWMAKE_OUTDIR%\%IWMAKE_TMP2%"
- xcopy /H /Y /Q /I /R /S %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP2% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:runtime
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- if "%IWMAKE_TMP2%" == "" set IWMAKE_TMP2=bin
- xcopy /H /Y /Q /I /R %SystemRoot%\system32\msvcr%IWMAKE_TMP%.dll %IWMAKE_OUTDIR%\%IWMAKE_TMP2%\ >> %IWMAKE_LOGFILE%
- xcopy /H /Y /Q /I /R %SystemRoot%\system32\msvcp%IWMAKE_TMP%.dll %IWMAKE_OUTDIR%\%IWMAKE_TMP2%\ >> %IWMAKE_LOGFILE%
-goto :eof
-
-:syncqt
- pushd %IWMAKE_OUTDIR%
- if exist "include" rd /S /Q include
- if not "%QTDIR%"=="" set IWMAKE_OLD_QTDIR=%QTDIR%
- set QTDIR=%IWMAKE_OUTDIR%
- "%IWMAKE_PERLPATH%\perl" %QTDIR%\bin\syncqt -copy >> %IWMAKE_LOGFILE% 2>&1
- if not "%IWMAKE_OLD_QTDIR%"=="" set QTDIR=%IWMAKE_OLD_QTDIR%
- popd
-goto :eof
-
-:END
diff --git a/tools/installer/batch/delete.bat b/tools/installer/batch/delete.bat
deleted file mode 100755
index a923c13..0000000
--- a/tools/installer/batch/delete.bat
+++ /dev/null
@@ -1,73 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:destDir
- if exist "%IWMAKE_OUTDIR%\%~1" rd /S /Q %IWMAKE_OUTDIR%\%~1
-goto :eof
-
-:dir
- if exist "%IWMAKE_ROOT%\%~1" rd /S /Q %IWMAKE_ROOT%\%~1
-goto :eof
-
-:dirAbs
- if exist "%~1" rd /S /Q %~1
-goto :eof
-
-:file
- del /Q /F %IWMAKE_OUTDIR%\%~1 >> %IWMAKE_LOGFILE% 2>&1
- exit /b 0
-goto :eof
-
-:files
- del /S /Q /F %IWMAKE_OUTDIR%\%~1 >> %IWMAKE_LOGFILE% 2>&1
- exit /b 0
-goto :eof
-
-:line
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- if exist "%IWMAKE_ROOT%\tmp_line.txt" del /Q /F "%IWMAKE_ROOT%\tmp_line.txt" >> %IWMAKE_LOGFILE%
- type "%IWMAKE_ROOT%\%IWMAKE_TMP%" | find /V "%IWMAKE_TMP2%" >> "%IWMAKE_ROOT%\tmp_line.txt"
- xcopy /Y /Q /R %IWMAKE_ROOT%\tmp_line.txt %IWMAKE_ROOT%\%IWMAKE_TMP% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:END
diff --git a/tools/installer/batch/env.bat b/tools/installer/batch/env.bat
deleted file mode 100755
index c1faceb..0000000
--- a/tools/installer/batch/env.bat
+++ /dev/null
@@ -1,141 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:setglobals
-set IWMAKE_PARSESECTION=1
-set IWMAKE_MINGWPATH=c:\MinGW\bin
-set IWMAKE_STARTDIR=%CD%
-set IWMAKE_NSISCONF=%IWMAKE_SCRIPTDIR%\nsis\config.nsh
-set IWMAKE_ROOT=c:\package
-set IWMAKE_OUTDIR=%IWMAKE_ROOT%
-set IWMAKE_SRCDIR=%IWMAKE_ROOT%
-set IWMAKE_EXTRACTDEST=%IWMAKE_ROOT%
-set IWMAKE_NSISPATH=%PROGRAMFILES%\NSIS
-call %IWMAKE_SCRIPTDIR%\batch\log.bat fileAbs "%IWMAKE_STARTDIR%\log.txt"
-goto :eof
-
-:signPath
- set IWMAKE_SIGNPATH=%~1
-goto :eof
-
-:wgetPath
- set IWMAKE_WGET=%~1
-goto :eof
-
-:wgetDir
- set IWMAKE_WGET=%IWMAKE_ROOT%\%~1
-goto :eof
-
-:NSISPath
- set IWMAKE_NSISPATH=%~1
-goto :eof
-
-:PerlPath
- set IWMAKE_PERLPATH=%~1
-goto :eof
-
-:MinGWPath
- set IWMAKE_MINGWPATH=%~1
-goto :eof
-
-:unzipApp
- set IWMAKE_UNZIPAPP=%~1
-goto :eof
-
-:releaseLocation
- set IWMAKE_WGETUSER=
- set IWMAKE_WGETPASS=
- for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& if not "%%~n"=="" set IWMAKE_TMP2=%%~n& if not "%%~o"=="" set IWMAKE_TMP3=%%~o
- if not "%IWMAKE_TMP2%"=="" set IWMAKE_WGETUSER=--http-user=%IWMAKE_TMP2%
- if not "%IWMAKE_TMP3%"=="" set IWMAKE_WGETPASS=--http-passwd=%IWMAKE_TMP3%
- set IWMAKE_RELEASELOCATION=%IWMAKE_TMP%
-goto :eof
-
-:removeglobals
-if not "%IWMAKE_OLD_PATH%"=="" call %IWMAKE_SCRIPTDIR%\batch\build.bat finish
-set IWMAKE_RELEASELOCATION=
-set IWMAKE_NSISPATH=
-set IWMAKE_SECTION=
-set IWMAKE_WGET=
-set IWMAKE_WGETUSER=
-set IWMAKE_WGETPASS=
-set IWMAKE_UNZIPAPP=
-set IWMAKE_MINGWPATH=
-set IWMAKE_MAKE=
-set IWMAKE_PERLPATH=
-set IWMAKE_STARTDIR=
-set IWMAKE_SCRIPTDIR=
-set IWMAKE_NSISCONF=
-set IWMAKE_RESULT=
-set IWMAKE_TMP=
-set IWMAKE_TMP2=
-set IWMAKE_TMP3=
-set IWMAKE_STATUS=
-set IWMAKE_LOGFILE=
-set IWMAKE_BUILD=
-set IWMAKE_ROOT=
-set IWMAKE_OUTDIR=
-set IWMAKE_EXTERNAL=
-set IWMAKE_OLD_PATH=
-set IWMAKE_OLD_QMAKESPEC=
-set IWMAKE_OLD_QTDIR=
-set IWMAKE_OLD_INCLUDE=
-set IWMAKE_OLD_LIB=
-set IWMAKE_COMPILER=
-set IWMAKE_SRCDIR=
-set IWMAKE_EXTRACTSRC=
-set IWMAKE_EXTRACTDEST=
-set IWMAKE_PARSESECTION=
-set IWMAKE_OUTPUT_FILE=
-set IWMAKE_SIGNPATH=
-goto :eof
-
-:root
-set IWMAKE_ROOT=%~1
-goto :eof
-
-:extroot
-set IWMAKE_EXTERNAL=%~1
-goto :eof
-
-:END
diff --git a/tools/installer/batch/extract.bat b/tools/installer/batch/extract.bat
deleted file mode 100755
index 7f14a9b..0000000
--- a/tools/installer/batch/extract.bat
+++ /dev/null
@@ -1,83 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:dest
- set IWMAKE_EXTRACTDEST=%IWMAKE_ROOT%\%~1
-goto :eof
-
-:extUnpack
- set IWMAKE_EXTRACTSRC=%~n1
- pushd %IWMAKE_ROOT%
- if exist "%IWMAKE_EXTRACTSRC%.zip" del /Q /F "%IWMAKE_EXTRACTSRC%.zip"
- %IWMAKE_WGET%\wget %IWMAKE_WGETUSER% %IWMAKE_WGETPASS% %IWMAKE_RELEASELOCATION%/%IWMAKE_EXTRACTSRC%.zip >> %IWMAKE_LOGFILE% 2>&1
- popd
- call :unpack "%~1"
-goto :eof
-
-:unpack
- set IWMAKE_EXTRACTSRC=%~n1
- pushd %IWMAKE_ROOT%
- if exist "%IWMAKE_EXTRACTDEST%" rd /S /Q %IWMAKE_EXTRACTDEST% >> %IWMAKE_LOGFILE% 2>&1
- if exist "%IWMAKE_EXTRACTSRC%" rd /S /Q %IWMAKE_EXTRACTSRC% >> %IWMAKE_LOGFILE% 2>&1
- %IWMAKE_UNZIPAPP% %IWMAKE_EXTRACTSRC%.zip >> %IWMAKE_LOGFILE%
- popd
- move %IWMAKE_ROOT%\%IWMAKE_EXTRACTSRC% %IWMAKE_EXTRACTDEST% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:extPatch
- pushd %IWMAKE_ROOT%
- if exist "%~1" del /Q /F "%~1"
- %IWMAKE_WGET%\wget %IWMAKE_WGETUSER% %IWMAKE_WGETPASS% %IWMAKE_RELEASELOCATION%/%~1 >> %IWMAKE_LOGFILE% 2>&1
- popd
- call :patch "%~1"
-goto :eof
-
-:patch
- pushd %IWMAKE_ROOT%
- %IWMAKE_UNZIPAPP% %~1 >> %IWMAKE_LOGFILE%
- popd
- xcopy /R /I /S /Q /Y %IWMAKE_ROOT%\%IWMAKE_EXTRACTSRC%\*.* %IWMAKE_EXTRACTDEST%\ >> %IWMAKE_LOGFILE%
- rd /S /Q %IWMAKE_ROOT%\%IWMAKE_EXTRACTSRC% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:END
diff --git a/tools/installer/batch/installer.bat b/tools/installer/batch/installer.bat
deleted file mode 100755
index 75e8680..0000000
--- a/tools/installer/batch/installer.bat
+++ /dev/null
@@ -1,247 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:begin
- call :reset
- echo !define PRODUCT_NAME "%~1" >> %IWMAKE_NSISCONF%
- echo !define INSTALL_ROOT "%IWMAKE_ROOT%" >> %IWMAKE_NSISCONF%
-goto :eof
-
-:output
- set IWMAKE_OUTPUT_FILE=%~1
- echo !define OUTPUT_FILE "%~1" >> %IWMAKE_NSISCONF%
-goto :eof
-
-:module
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %~1
- echo !define MODULE_%IWMAKE_RESULT% >> %IWMAKE_NSISCONF%
-goto :eof
-
-:enable
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %~1
- echo !define USE_%IWMAKE_RESULT:"=% >> %IWMAKE_NSISCONF%
-goto :eof
-
-:disable
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %~1
- echo !undef USE_%IWMAKE_RESULT:"=% >> %IWMAKE_NSISCONF%
-goto :eof
-
-:startmenu
- echo !define DEFAULT_STARTMENU_STRING "%~1" >> %IWMAKE_NSISCONF%
-goto :eof
-
-:reset
- if exist "%IWMAKE_NSISCONF%" del /Q /F "%IWMAKE_NSISCONF%"
-goto :eof
-
-:instdir
- for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3="%%~o"
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- echo !define INSTDIR_%IWMAKE_TMP2% %IWMAKE_RESULT:"=% >> "%IWMAKE_NSISCONF%"
- echo !define INSTDIR_%IWMAKE_TMP2%_TEXT %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:version
- echo !define PRODUCT_VERSION "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:readme
- echo !define README_FILE "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:licenseFile
- echo !define LICENSE_FILE "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:runfunction
- echo !define RUN_FUNCTION "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:readmefunction
- echo !define README_FUNCTION "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:welcomenote
- echo !define WELCOME_NOTE "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:updateplugins
- call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync INetLoad
- xcopy /Q /Y /R "%IWMAKE_ROOT%\INetLoad\INetLoad.dll" "%IWMAKE_NSISPATH%\Plugins\" >> %IWMAKE_LOGFILE%
-:: xcopy /Q /Y /R "%IWMAKE_SCRIPTDIR%\nsis\qtnsisext\qtnsisext.dll" "%IWMAKE_NSISPATH%\Plugins\" >> %IWMAKE_LOGFILE%
-goto :eof
-
-:defineDir
- for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3=%%~o
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- set IWMAKE_TMP=%IWMAKE_RESULT%
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP2%
- set IWMAKE_TMP2=%IWMAKE_RESULT%
- echo !define MODULE_%IWMAKE_TMP%_%IWMAKE_TMP2% "%IWMAKE_ROOT%\%IWMAKE_TMP3%" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:define
- for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3="%%~o"
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- set IWMAKE_TMP=%IWMAKE_RESULT%
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP2%
- set IWMAKE_TMP2=%IWMAKE_RESULT%
- if %IWMAKE_TMP3%=="" set IWMAKE_TMP3=
- echo !define MODULE_%IWMAKE_TMP%_%IWMAKE_TMP2% %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:src
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- set IWMAKE_TMP=%IWMAKE_RESULT%
- set IWMAKE_TMP3="%IWMAKE_ROOT%\%IWMAKE_TMP2%"
- echo !define MODULE_%IWMAKE_TMP%_ROOT %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:buildDir
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- set IWMAKE_TMP=%IWMAKE_RESULT%
- set IWMAKE_TMP3="%IWMAKE_ROOT%\%IWMAKE_TMP2%"
- echo !define MODULE_%IWMAKE_TMP%_BUILDDIR %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%"
- for /F "eol=- tokens=1,2,3" %%m in ('%SystemRoot%\system32\find "QT_PACKAGEDATE_STR" %IWMAKE_ROOT%\%IWMAKE_TMP2%\src\corelib\global\qglobal.h') do echo !define MODULE_LICENSECHECK_PACKAGEDATE %%o >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:compile
- call :required
- pushd %IWMAKE_SCRIPTDIR%\nsis
- "%IWMAKE_NSISPATH%\makensis.exe" installer.nsi >> %IWMAKE_LOGFILE%
- popd
-goto :eof
-
-:required
- call :setrequired PRODUCT_NAME
- call :setrequired INSTALL_ROOT
- call :setrequired PRODUCT_VERSION
- call :setrequired OUTPUT_FILE
- call :setrequired INSTDIR_0
- call :setrequired DEFAULT_STARTMENU_STRING
-goto :eof
-
-:setrequired
- echo !ifndef %1 >> "%IWMAKE_NSISCONF%"
- echo !error "%1 must be in the .conf file..." >> "%IWMAKE_NSISCONF%"
- echo !endif >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:makeFileList
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- set IWMAKE_TMP=%IWMAKE_RESULT%
- set IWMAKE_TMP3="%IWMAKE_ROOT%\%IWMAKE_TMP2%"
-
-
- echo !macro MODULE_%IWMAKE_TMP%_INSTALLFILES >> "%IWMAKE_NSISCONF%"
-
- pushd %IWMAKE_TMP3%
-
- echo set IWMAKE_TMP2=%%IWMAKE_TMP2:%CD%\=%% > "%IWMAKE_ROOT%\iwmake_tmp.bat"
-
- dir /AD /B /S | %SystemRoot%\system32\sort /R > "%IWMAKE_ROOT%\iwmake_tmp.txt"
- for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addInstallDirectory "%%m"
-
-
- dir /A-D /B /S > "%IWMAKE_ROOT%\iwmake_tmp.txt"
- for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addInstallFile "%%m"
-
- popd
- echo !macroend >> "%IWMAKE_NSISCONF%"
-
-
- echo !macro MODULE_%IWMAKE_TMP%_REMOVE removepath >> "%IWMAKE_NSISCONF%"
- echo strcmp ${removepath} "" MODULE_%IWMAKE_TMP%_REMOVE_SAFETYLABEL >> "%IWMAKE_NSISCONF%"
- pushd %IWMAKE_TMP3%
-
- echo set IWMAKE_TMP2=%%IWMAKE_TMP2:%CD%\=%% > "%IWMAKE_ROOT%\iwmake_tmp.bat"
-
- dir /A-D /B /S > "%IWMAKE_ROOT%\iwmake_tmp.txt"
- for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addRemoveFiles "%%m"
-
- dir /AD /B /S | %SystemRoot%\system32\sort /R > "%IWMAKE_ROOT%\iwmake_tmp.txt"
- for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addRemoveDirectory "%%m"
-
- popd
- echo MODULE_%IWMAKE_TMP%_REMOVE_SAFETYLABEL: >> "%IWMAKE_NSISCONF%"
- echo !macroend >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:addInstallFile
- set IWMAKE_TMP2=%~1
- call "%IWMAKE_ROOT%\iwmake_tmp.bat"
- echo File "/oname=%IWMAKE_TMP2%" "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:addInstallDirectory
- set IWMAKE_TMP2=%~1
- call "%IWMAKE_ROOT%\iwmake_tmp.bat"
- echo CreateDirectory "$OUTDIR\%IWMAKE_TMP2%" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:addRemoveDirectory
- set IWMAKE_TMP2=%~1
- call "%IWMAKE_ROOT%\iwmake_tmp.bat"
- echo RMDir ${removepath}\%IWMAKE_TMP2% >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:addRemoveFiles
- set IWMAKE_TMP2=%~1
- call "%IWMAKE_ROOT%\iwmake_tmp.bat"
- echo Delete ${removepath}\%IWMAKE_TMP2% >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:sign
- echo Signing Installer ...
- %IWMAKE_SIGNPATH%\signtool.exe sign /v /t http://timestamp.verisign.com/scripts/timestamp.dll /f "%IWMAKE_SIGNPATH%\keys.pfx" "%IWMAKE_OUTPUT_FILE%" >> %IWMAKE_LOGFILE%
-goto :eof
-
-:openpackage
- echo !define OPENSOURCE_BUILD >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:END
diff --git a/tools/installer/batch/log.bat b/tools/installer/batch/log.bat
deleted file mode 100755
index 782dcd7..0000000
--- a/tools/installer/batch/log.bat
+++ /dev/null
@@ -1,58 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:file
-set IWMAKE_LOGFILE=%IWMAKE_ROOT%\%~1
-call :reset
-goto :eof
-
-:fileAbs
-set IWMAKE_LOGFILE=%1
-call :reset
-goto :eof
-
-:reset
-date /T > %IWMAKE_LOGFILE%
-goto :eof
-
-:END
diff --git a/tools/installer/batch/toupper.bat b/tools/installer/batch/toupper.bat
deleted file mode 100755
index 2543207..0000000
--- a/tools/installer/batch/toupper.bat
+++ /dev/null
@@ -1,69 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-set IWMAKE_RESULT=%1
-if [%IWMAKE_RESULT%]==[] goto :eof
-set IWMAKE_RESULT=%IWMAKE_RESULT:a=A%
-set IWMAKE_RESULT=%IWMAKE_RESULT:b=B%
-set IWMAKE_RESULT=%IWMAKE_RESULT:c=C%
-set IWMAKE_RESULT=%IWMAKE_RESULT:d=D%
-set IWMAKE_RESULT=%IWMAKE_RESULT:e=E%
-set IWMAKE_RESULT=%IWMAKE_RESULT:f=F%
-set IWMAKE_RESULT=%IWMAKE_RESULT:g=G%
-set IWMAKE_RESULT=%IWMAKE_RESULT:h=H%
-set IWMAKE_RESULT=%IWMAKE_RESULT:i=I%
-set IWMAKE_RESULT=%IWMAKE_RESULT:j=J%
-set IWMAKE_RESULT=%IWMAKE_RESULT:k=K%
-set IWMAKE_RESULT=%IWMAKE_RESULT:l=L%
-set IWMAKE_RESULT=%IWMAKE_RESULT:m=M%
-set IWMAKE_RESULT=%IWMAKE_RESULT:n=N%
-set IWMAKE_RESULT=%IWMAKE_RESULT:o=O%
-set IWMAKE_RESULT=%IWMAKE_RESULT:p=P%
-set IWMAKE_RESULT=%IWMAKE_RESULT:q=Q%
-set IWMAKE_RESULT=%IWMAKE_RESULT:r=R%
-set IWMAKE_RESULT=%IWMAKE_RESULT:s=S%
-set IWMAKE_RESULT=%IWMAKE_RESULT:t=T%
-set IWMAKE_RESULT=%IWMAKE_RESULT:u=U%
-set IWMAKE_RESULT=%IWMAKE_RESULT:v=V%
-set IWMAKE_RESULT=%IWMAKE_RESULT:w=W%
-set IWMAKE_RESULT=%IWMAKE_RESULT:x=X%
-set IWMAKE_RESULT=%IWMAKE_RESULT:y=Y%
-set IWMAKE_RESULT=%IWMAKE_RESULT:z=Z%
-
diff --git a/tools/installer/config/config.default.sample b/tools/installer/config/config.default.sample
deleted file mode 100644
index a05b8d7..0000000
--- a/tools/installer/config/config.default.sample
+++ /dev/null
@@ -1,64 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
-##
-## This file is part of the tools applications of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:LGPL$
-## No Commercial Usage
-## This file contains pre-release code and may not be distributed.
-## You may use this file in accordance with the terms and conditions
-## contained in the Technology Preview License Agreement accompanying
-## this package.
-##
-## GNU Lesser General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU Lesser
-## General Public License version 2.1 as published by the Free Software
-## Foundation and appearing in the file LICENSE.LGPL included in the
-## packaging of this file. Please review the following information to
-## ensure the GNU Lesser General Public License version 2.1 requirements
-## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-##
-## In addition, as a special exception, Nokia gives you certain additional
-## rights. These rights are described in the Nokia Qt LGPL Exception
-## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-##
-## If you have questions regarding the use of this file, please contact
-## Nokia at qt-info@nokia.com.
-##
-##
-##
-##
-##
-##
-##
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-# root directory
-# Describes the directory where temporary folder, build directory and
-# package will be located at.
-env root "c:\qt_packages"
-
-# where to find all external files
-# To resolve the external dependencies specify a server, where to get
-# required tools like wget, sign, etc.
-env extroot "\\someshare\tools\"
-
-# Location of the installed MinGW to build binaries
-env mingwPath "c:\mingw"
-
-# Location to NSIS package creator
-env NSISPath "%ProgramFiles%\NSIS"
-
-# Location to the install path of PERL
-env perlPath "c:\Perl\bin"
-
-# source package directory
-# Describe the directory where compressed source package is located at.
-# The installer script uses this one for building and creating a package.
-env releaseLocation "http://your.source.server/somepath"
diff --git a/tools/installer/config/mingw-opensource.conf b/tools/installer/config/mingw-opensource.conf
deleted file mode 100644
index 6cba06e..0000000
--- a/tools/installer/config/mingw-opensource.conf
+++ /dev/null
@@ -1,136 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
-##
-## This file is part of the tools applications of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:LGPL$
-## No Commercial Usage
-## This file contains pre-release code and may not be distributed.
-## You may use this file in accordance with the terms and conditions
-## contained in the Technology Preview License Agreement accompanying
-## this package.
-##
-## GNU Lesser General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU Lesser
-## General Public License version 2.1 as published by the Free Software
-## Foundation and appearing in the file LICENSE.LGPL included in the
-## packaging of this file. Please review the following information to
-## ensure the GNU Lesser General Public License version 2.1 requirements
-## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-##
-## In addition, as a special exception, Nokia gives you certain additional
-## rights. These rights are described in the Nokia Qt LGPL Exception
-## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-##
-## If you have questions regarding the use of this file, please contact
-## Nokia at qt-info@nokia.com.
-##
-##
-##
-##
-##
-##
-##
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-#extracts the package to buildDir
-
-#extract dest "build_mingw_opensource"
-#Section EXTRACT
-#extract extUnpack "qt-win-opensource-src-%VERSION%.zip"
-#SectionEnd
-
-#build the binaries
-#build begin mingw "build_mingw_opensource"
-
-#Section CONFIGURE
-#build configure "-confirm-license -release -plugin-sql-sqlite -qt-libpng -qt-libjpeg"
-#SectionEnd
-
-#Section BUILD
-#build bin
-#SectionEnd
-
-#build finish
-
-# organize release files
-#Section ORGANIZE
-#delete dir "release_mingw_opensource"
-
-#copy dest "release_mingw_opensource"
-#copy src "build_mingw_opensource"
-
-# extract everything once more
-#extract dest "release_mingw_opensource"
-#extract unpack "qt-win-opensource-src-4.4.3.zip"
-
-# qconfig.h
-#copy file "src\corelib\global\qconfig.h"
-#copy file "include\QtCore\qconfig.h"
-#copy file "include\Qt\qconfig.h"
-
-# qconfig.pri
-#copy file "mkspecs\qconfig.pri"
-
-# .qmake.cache
-#copy file ".qmake.cache"
-
-# default mkspec
-#copy files "mkspecs\default\*" "mkspecs\default\"
-
-# copy all binary files
-#copy all "*.a"
-#copy all "*.exe"
-#copy all "*.dll"
-
-# .prl files
-#copy files "lib\*.prl" "lib\"
-
-# remove unused stuff
-#delete files "lib\*.dll"
-
-# copy InetLoad license info
-#copy files "..\INetLoad\Readme.txt" "src\3rdparty\InetLoad\"
-
-#SectionEnd
-
-Section NSIS
-# general installer options
-installer begin "Qt OpenSource"
-installer version "4.4.3"
-installer output "c:\iwmake\qt-win-opensource-4.4.3-mingw.exe"
-installer startmenu "Qt by Nokia v4.4.3 (OpenSource)"
-installer enable component_page
-installer enable directory_page
-installer enable startmenu_page
-installer instdir mingw 0 "Qt Installation Directory"
-installer licenseFile "%IWMAKE_ROOT%\release_mingw_opensource\LICENSE.GPL"
-#installer licenseFile "%IWMAKE_ROOT%\release_mingw_opensource\LICENSE.PREVIEW.OPENSOURCE"
-
-installer runfunction "Run Examples and Demos"
-installer readmefunction "Show Documentation"
-
-installer module registeruiext
-installer module opensource
-
-# mingw options
-installer module mingw
-installer src mingw "release_mingw_opensource"
-installer makeFileList mingw "release_mingw_opensource"
-installer buildDir mingw "build_mingw_opensource"
-installer enable nodirlengthcheck
-
-# public generatable package
-installer openpackage
-
-SectionEnd
-
-# compile the package
-Section NSIS_COMPILE
-installer compile
-SectionEnd
diff --git a/tools/installer/iwmake.bat b/tools/installer/iwmake.bat
deleted file mode 100755
index 0fc1b08..0000000
--- a/tools/installer/iwmake.bat
+++ /dev/null
@@ -1,124 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-rem @echo off
-call :init
-if "%IWMAKE_STATUS%"=="failed" goto FAILED
-if not exist "%IWMAKE_SCRIPTDIR%\config\%1.conf" goto FAILED
-if not "%~2"=="" set IWMAKE_SECTION=%~2
-for /F "eol=# tokens=1,2*" %%i in (%IWMAKE_SCRIPTDIR%\config\config.default) do set IWMAKE_TMP=%%k& call :func_delegate %%i %%j
-if "%IWMAKE_STATUS%"=="failed" goto FAILED
-if exist "%IWMAKE_SCRIPTDIR%\config\config.%COMPUTERNAME%" for /F "eol=# tokens=1,2*" %%i in (%IWMAKE_SCRIPTDIR%\config\config.%COMPUTERNAME%) do set IWMAKE_TMP=%%k& call :func_delegate %%i %%j
-if "%IWMAKE_STATUS%"=="failed" goto FAILED
-call :checkrequirements
-if "%IWMAKE_STATUS%"=="failed" goto FAILED
-for /F "eol=# tokens=1,2*" %%i in (%IWMAKE_SCRIPTDIR%\config\%1.conf) do set IWMAKE_TMP=%%k& call :func_delegate %%i %%j
-if "%IWMAKE_STATUS%"=="failed" goto FAILED
-goto DONE
-
-:func_delegate
-if "%IWMAKE_STATUS%"=="failed" goto :eof
-set IWMAKE_TMP="%IWMAKE_TMP:"=%"
-
-if /i "%1"=="sectionend" echo Leaving Section& set IWMAKE_PARSESECTION=1& goto :eof
-if /i not "%1"=="section" goto callScript
-echo Entering Section %~2
-for %%m in (%IWMAKE_SECTION%) do call :checkSection %%m %~2
-goto :eof
-
-:callScript
-if "%IWMAKE_PARSESECTION%"=="0" goto :eof
-
-call "%IWMAKE_SCRIPTDIR%\batch\%1.bat" %2 %IWMAKE_TMP%
-if not "%errorlevel%"=="0" echo %1 %2 failed! >> %IWMAKE_LOGFILE%& set IWMAKE_STATUS=failed
-goto :eof
-
-:checkSection
- if /i "%1"=="%2" echo Skipping Section& set IWMAKE_PARSESECTION=0
-goto :eof
-
-:checkrequirements
- if not exist %IWMAKE_ROOT% mkdir %IWMAKE_ROOT%
- if not "%IWMAKE_SIGNPATH%"=="" goto CheckSIGNOK
- call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync sign
- call "%IWMAKE_SCRIPTDIR%\batch\env.bat" signPath "%IWMAKE_ROOT%\sign"
-:CheckSIGNOK
- if not "%IWMAKE_WGET%"=="" goto CheckWGETOK
- call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync wget
- call "%IWMAKE_SCRIPTDIR%\batch\env.bat" wgetDir wget
-:CheckWGETOK
- if exist "%IWMAKE_PERLPATH%\perl.exe" goto CheckPerlOK
- set IWMAKE_STATUS=failed
- echo Perl not found in %IWMAKE_PERLPATH%! (check your config file)
-:CheckPerlOK
- if not "%IWMAKE_UNZIPAPP%"=="" goto CheckUNZIPOK
- call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync unzip
- call "%IWMAKE_SCRIPTDIR%\batch\env.bat" unzipApp "%IWMAKE_ROOT%\unzip\unzip.exe"
-:CheckUNZIPOK
- if exist "%IWMAKE_NSISPATH%\makensis.exe" goto CheckNSISOK
- set IWMAKE_STATUS=failed
- echo NSIS not found! (check your config file)
-:CheckNSISOK
- call "%IWMAKE_SCRIPTDIR%\batch\installer.bat" updateplugins
-goto :eof
-
-:init
- set IWMAKE_SCRIPTDIR=%~dp0
- set IWMAKE_SCRIPTDIR=%IWMAKE_SCRIPTDIR:~0,-1%
- call "%IWMAKE_SCRIPTDIR%\batch\env.bat" setglobals
-goto :eof
-
-:cleanup
- pushd "%IWMAKE_STARTDIR%"
- call "%IWMAKE_SCRIPTDIR%\batch\env.bat" removeglobals
- popd
-goto :eof
-
-:FAILED
- call :cleanup
- echo Failed!
-goto END
-
-:DONE
- call :cleanup
- echo Done!
-goto END
-
-:END
diff --git a/tools/installer/nsis/confirmpage.ini b/tools/installer/nsis/confirmpage.ini
deleted file mode 100644
index b42132c..0000000
--- a/tools/installer/nsis/confirmpage.ini
+++ /dev/null
@@ -1,59 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Ini file generated by the HM NIS Edit IO designer.
-[Settings]
-NumFields=2
-
-[Field 1]
-Type=Label
-Text=The following components will be uninstalled:
-Left=1
-Right=298
-Top=1
-Bottom=12
-
-[Field 2]
-Type=Label
-Left=16
-Right=298
-Top=16
-Bottom=136
-
diff --git a/tools/installer/nsis/gwdownload.ini b/tools/installer/nsis/gwdownload.ini
deleted file mode 100644
index c139aaf..0000000
--- a/tools/installer/nsis/gwdownload.ini
+++ /dev/null
@@ -1,118 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Ini file generated by the HM NIS Edit IO designer.
-[Settings]
-NumFields=9
-
-[Field 1]
-Type=Groupbox
-Text=Find MinGW
-Left=0
-Right=299
-Top=49
-Bottom=91
-
-[Field 2]
-Type=Label
-Text=Please specify a directory where to find MinGW (for instance: C:\\MinGW). If you do not have MinGW installed, you can let the installer download and install it for you.
-Left=2
-Right=298
-Top=1
-Bottom=27
-
-[Field 3]
-Type=DirRequest
-Left=8
-Right=290
-Top=68
-Bottom=81
-
-[Field 4]
-Type=Groupbox
-Text=Download and install MinGW
-Left=0
-Right=299
-Top=94
-Bottom=137
-
-[Field 5]
-Type=Label
-Text=Previously installed MinGW:
-Left=8
-Right=286
-Top=60
-Bottom=68
-
-[Field 6]
-Type=DirRequest
-Left=8
-Right=290
-Top=116
-Bottom=129
-Flags=DISABLED
-
-[Field 7]
-Type=Label
-Text=Installation directory:
-Left=8
-Right=124
-Top=107
-Bottom=115
-Flags=DISABLED
-
-[Field 8]
-Type=Checkbox
-Text=Download and install minimal MinGW installation.
-Left=8
-Right=172
-Top=28
-Bottom=40
-Flags=NOTIFY
-
-[Field 9]
-Type=Link
-Text=(http://www.mingw.org)
-Left=174
-Right=260
-Top=30
-Bottom=38
-State=http://www.mingw.org
-
diff --git a/tools/installer/nsis/gwmirror.ini b/tools/installer/nsis/gwmirror.ini
deleted file mode 100644
index e246080..0000000
--- a/tools/installer/nsis/gwmirror.ini
+++ /dev/null
@@ -1,67 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Ini file generated by the HM NIS Edit IO designer.
-[Settings]
-NumFields=3
-
-[Field 1]
-Type=Label
-Text=Select a mirror where to download MinGW:
-Left=0
-Right=211
-Top=0
-Bottom=8
-
-[Field 2]
-Type=Checkbox
-Text=Download MinGW source code. (You don't need this to compile Qt)
-Left=4
-Right=296
-Top=124
-Bottom=134
-
-[Field 3]
-Type=Listbox
-Left=0
-Right=299
-Top=9
-Bottom=118
-
diff --git a/tools/installer/nsis/images/install.ico b/tools/installer/nsis/images/install.ico
deleted file mode 100644
index 080d82d..0000000
--- a/tools/installer/nsis/images/install.ico
+++ /dev/null
Binary files differ
diff --git a/tools/installer/nsis/images/qt-header.bmp b/tools/installer/nsis/images/qt-header.bmp
deleted file mode 100644
index 1333cb4..0000000
--- a/tools/installer/nsis/images/qt-header.bmp
+++ /dev/null
Binary files differ
diff --git a/tools/installer/nsis/images/qt-wizard.bmp b/tools/installer/nsis/images/qt-wizard.bmp
deleted file mode 100644
index 4aefd2d..0000000
--- a/tools/installer/nsis/images/qt-wizard.bmp
+++ /dev/null
Binary files differ
diff --git a/tools/installer/nsis/includes/global.nsh b/tools/installer/nsis/includes/global.nsh
deleted file mode 100644
index d91a039..0000000
--- a/tools/installer/nsis/includes/global.nsh
+++ /dev/null
@@ -1,143 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!include "StrFunc.nsh"
-!include "includes\list.nsh"
-
-${StrCase}
-${StrTrimNewLines}
-${StrStr}
-${StrRep}
-${UnStrRep}
-
-var STARTMENU_STRING
-var PRODUCT_UNIQUE_KEY
-var RUNNING_AS_ADMIN
-
-!ifndef MODULE_MINGW
- !ifdef MODULE_MSVC_VC60
- !define INSTALL_COMPILER "vc60"
- !else
- !ifdef MODULE_MSVC_VS2002
- !define INSTALL_COMPILER "vs2002"
- !else
- !ifdef MODULE_MSVC_VS2005
- !define INSTALL_COMPILER "vs2005"
- !else
- !define INSTALL_COMPILER "vs2003"
- !endif
- !endif
- !endif
-!else
- !define INSTALL_COMPILER "mingw"
-!endif
-
-; ADDIN\INTEGRATION
-var VS_VERSION
-var VS_VERSION_SHORT
-var ADDIN_INSTDIR
-var VSIP_INSTDIR
-var HELP_INSTDIR
-var ECLIPSE_INSTDIR
-var QTJAMBIECLIPSE_INSTDIR
-
-; LICENSECHECK
-var LICENSE_KEY
-var LICENSEE
-var LICENSE_PRODUCT
-var LICENSE_FILE
-
-; MSVC
-!ifdef MODULE_MSVC
- !define MSVC_ValidateDirectory
- var MSVC_INSTDIR
-!endif
-
-; MINGW
-!ifdef MODULE_MINGW
- !define MINGW_ValidateDirectory
- var MINGW_INSTDIR
-!endif
-
-; QSA
-var QSA_INSTDIR
-
-; QTDIR PAGE
-var QTDIR_SELECTED
-var COMPILER_SELECTED
-
-; used by addin7x and vsip
-!ifndef MODULE_VSIP_ROOT
- !define MODULE_VSIP_ROOT "${INSTALL_ROOT}\vsip"
-!endif
-
-; add to confirm path
-var UninstallerConfirmProduct
-
-Function un.ConfirmOnDelete
- exch $0
- push $1
-
- push "$0"
- push "$UninstallerConfirmProduct"
- call un.ItemInList
- pop $1
- IntCmp $1 1 ConfirmOnDeleteDone
-
- strcmp "$UninstallerConfirmProduct" "" 0 +3
- strcpy $UninstallerConfirmProduct "$0"
- goto +2
- strcpy $UninstallerConfirmProduct "$UninstallerConfirmProduct$\r$\n$0"
-
- ConfirmOnDeleteDone:
- pop $1
- pop $0
-FunctionEnd
-
-!macro ConfirmOnRemove REG_KEY PRODUCT_NAME
- push $0
- ClearErrors
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "${REG_KEY}"
- intcmp $0 1 0 +3
- push "${PRODUCT_NAME}"
- call un.ConfirmOnDelete
- ClearErrors
- pop $0
-!macroend
diff --git a/tools/installer/nsis/includes/instdir.nsh b/tools/installer/nsis/includes/instdir.nsh
deleted file mode 100644
index a0957dd..0000000
--- a/tools/installer/nsis/includes/instdir.nsh
+++ /dev/null
@@ -1,254 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifndef INSTDIR_1
- !macro INSTDIR_INITIALIZE
- !define MUI_DIRECTORYPAGE_VARIABLE $${INSTDIR_0}_INSTDIR
- !ifdef ${INSTDIR_0}_ValidateDirectory
- !define MUI_PAGE_CUSTOMFUNCTION_LEAVE "${INSTDIR_0}_ValidateDirectoryFunc"
- !endif
- !insertmacro MUI_PAGE_DIRECTORY
- !macroend
- !macro INSTDIR_FUNCTIONS
- !macroend
- !macro INSTDIR_STARTUP
- !macroend
-!else
-!macro INSTDIR_INITIALIZE
- !define INSTDIR_INI_FILE "instdir.ini"
- !define INSTDIR_0_DIRFIELD "Field 10"
- !define INSTDIR_0_TEXTFIELD "Field 13"
- !define INSTDIR_1_DIRFIELD "Field 7"
- !define INSTDIR_1_TEXTFIELD "Field 11"
- !define INSTDIR_2_DIRFIELD "Field 5"
- !define INSTDIR_2_TEXTFIELD "Field 8"
- !define INSTDIR_3_DIRFIELD "Field 3"
- !define INSTDIR_3_TEXTFIELD "Field 6"
- !define INSTDIR_4_DIRFIELD "Field 2"
- !define INSTDIR_4_TEXTFIELD "Field 4"
- !define INSTDIR_5_DIRFIELD "Field 9"
- !define INSTDIR_5_TEXTFIELD "Field 12"
- !define INSTDIR_DIRHEIGHT 18
-
- Page custom InitInstDirs UpdateInstDirs
-
- LangString InstDirLicenseTitle ${LANG_ENGLISH} "Installation Directories"
- LangString InstDirLicenseTitleDescription ${LANG_ENGLISH} "Select the directories where you want the software installed."
-!macroend
-
-!macro INSTDIR_FUNCTIONS
- Function InitInstDirs
- push $0
- push $1
- push $2
- push $3
-
- !insertmacro MUI_HEADER_TEXT "$(InstDirLicenseTitle)" "$(InstDirLicenseTitleDescription)"
- strcpy $0 "129"
-
-!ifdef INSTDIR_0
- SectionGetFlags ${${INSTDIR_0}_SEC01} $1
-!ifdef ${INSTDIR_0}_SEC02
- SectionGetFlags ${${INSTDIR_0}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Text" "${INSTDIR_0_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "State" $${INSTDIR_0}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-!ifdef INSTDIR_1
- SectionGetFlags ${${INSTDIR_1}_SEC01} $1
-!ifdef ${INSTDIR_1}_SEC02
- SectionGetFlags ${${INSTDIR_1}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Text" "${INSTDIR_1_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "State" $${INSTDIR_1}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-!ifdef INSTDIR_2
- SectionGetFlags ${${INSTDIR_2}_SEC01} $1
-!ifdef ${INSTDIR_2}_SEC02
- SectionGetFlags ${${INSTDIR_2}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Text" "${INSTDIR_2_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "State" $${INSTDIR_2}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-!ifdef INSTDIR_3
- SectionGetFlags ${${INSTDIR_3}_SEC01} $1
-!ifdef ${INSTDIR_3}_SEC02
- SectionGetFlags ${${INSTDIR_3}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Text" "${INSTDIR_3_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "State" $${INSTDIR_3}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-!ifdef INSTDIR_4
- SectionGetFlags ${${INSTDIR_4}_SEC01} $1
-!ifdef ${INSTDIR_4}_SEC02
- SectionGetFlags ${${INSTDIR_4}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Text" "${INSTDIR_4_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "State" $${INSTDIR_4}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-!ifdef INSTDIR_5
- SectionGetFlags ${${INSTDIR_5}_SEC01} $1
-!ifdef ${INSTDIR_5}_SEC02
- SectionGetFlags ${${INSTDIR_5}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Text" "${INSTDIR_5_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "State" $${INSTDIR_5}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "Field 1" "Bottom" "$0"
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${INSTDIR_INI_FILE}"
-
- pop $3
- pop $2
- pop $1
- pop $0
- FunctionEnd
-
- Function UpdateInstDirs
-!ifdef INSTDIR_0
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_0}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "State"
- !ifdef ${INSTDIR_0}_ValidateDirectory
- call ${INSTDIR_0}_ValidateDirectoryFunc
- !endif
-!endif
-!ifdef INSTDIR_1
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_1}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "State"
- !ifdef ${INSTDIR_1}_ValidateDirectory
- call ${INSTDIR_1}_ValidateDirectoryFunc
- !endif
-!endif
-!ifdef INSTDIR_2
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_2}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "State"
- !ifdef ${INSTDIR_2}_ValidateDirectory
- call ${INSTDIR_2}_ValidateDirectoryFunc
- !endif
-!endif
-!ifdef INSTDIR_3
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_3}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "State"
- !ifdef ${INSTDIR_3}_ValidateDirectory
- call ${INSTDIR_3}_ValidateDirectoryFunc
- !endif
-!endif
-!ifdef INSTDIR_4
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_4}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "State"
- !ifdef ${INSTDIR_4}_ValidateDirectory
- call ${INSTDIR_4}_ValidateDirectoryFunc
- !endif
-!endif
-!ifdef INSTDIR_5
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_5}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "State"
- !ifdef ${INSTDIR_5}_ValidateDirectory
- call ${INSTDIR_5}_ValidateDirectoryFunc
- !endif
-!endif
- FunctionEnd
-!macroend
-
-!macro INSTDIR_STARTUP
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${INSTDIR_INI_FILE}"
-!macroend
-
-!endif ;ifndef INSTDIR_1
diff --git a/tools/installer/nsis/includes/list.nsh b/tools/installer/nsis/includes/list.nsh
deleted file mode 100644
index 7a2fd0a..0000000
--- a/tools/installer/nsis/includes/list.nsh
+++ /dev/null
@@ -1,136 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifndef LIST_INCLUDE
-!define LIST_INCLUDE
-
-; usage:
-; push item
-; push list
-; call ItemInList
-; returns 1 or 0
-!macro ItemInList UN
-Function ${UN}ItemInList
- exch $0 ;list
- exch
- exch $1 ;item
- push $2 ;counter
- push $3 ;substr
- push $4 ;char
-
- strcpy $3 ""
- strcpy $2 "0"
-
- loop:
- strcpy $4 $0 1 $2
- strcmp "$4" "" atend
- intop $2 $2 + 1
-
- strcmp "$4" "|" 0 +4
- strcmp "$3" "$1" found
- strcpy $3 "" ;reset substr
- goto +2
- strcpy $3 "$3$4" ;append char to substr
- goto loop
-
- found:
- strcpy $0 "1"
- goto done
-
- atend:
- strcmp "$3" "$1" found
- strcpy $0 "0"
-
- done:
- pop $4
- pop $3
- pop $2
- pop $1
- exch $0
-FunctionEnd
-!macroend
-
-!insertmacro ItemInList ""
-!insertmacro ItemInList "un."
-
-Function GetItemInList
- exch $0 ;list
- exch
- exch $1 ;index
- push $2 ;counter
- push $3 ;substr
- push $4 ;char
- push $5 ;current index
-
- strcpy $3 ""
- strcpy $2 "0"
- strcpy $5 "1"
-
- loop:
- strcpy $4 $0 1 $2
- strcmp "$4" "" atend
- intop $2 $2 + 1
-
- strcmp "$4" "|" 0 +5
- strcmp "$5" "$1" found
- strcpy $3 "" ;reset substr
- intop $5 $5 + 1
- goto +2
- strcpy $3 "$3$4" ;append char to substr
- goto loop
-
- found:
- strcpy $0 "$3"
- goto done
-
- atend:
- strcmp "$5" "$1" found
- strcpy $0 ""
-
- done:
- pop $5
- pop $4
- pop $3
- pop $2
- pop $1
- exch $0
-FunctionEnd
-
-!endif ;LIST_INCLUDE
diff --git a/tools/installer/nsis/includes/qtcommon.nsh b/tools/installer/nsis/includes/qtcommon.nsh
deleted file mode 100644
index a4ec01b..0000000
--- a/tools/installer/nsis/includes/qtcommon.nsh
+++ /dev/null
@@ -1,549 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifndef QTCOMMON_INCLUDE
-!define QTCOMMON_INCLUDE
-
-!macro MakeQtDirectory UN
-Function ${UN}MakeQtDirectory
- exch $0
-
- push $0
- push " " #replace
- push "-" #with
- call ${UN}ReplaceString
- pop $0
-
- push $0
- push "(" #replace
- push "" #with
- call ${UN}ReplaceString
- pop $0
-
- push $0
- push ")" #replace
- push "" #with
- call ${UN}ReplaceString
- pop $0
-
- exch $0
-FunctionEnd
-!macroend
-!insertmacro MakeQtDirectory ""
-!insertmacro MakeQtDirectory "un."
-
-Function AddStartmenuApplication
- exch $0
- IfFileExists "$0\assistant.exe" 0 +2
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Assistant.lnk" "$0\assistant.exe"
- IfFileExists "$0\designer.exe" 0 +2
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Designer.lnk" "$0\designer.exe"
- IfFileExists "$0\linguist.exe" 0 +2
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Linguist.lnk" "$0\linguist.exe"
- IfFileExists "$0\qtdemo.exe" 0 +2
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Examples and Demos.lnk" "$0\qtdemo.exe"
- IfFileExists "$0\..\README" 0 ReadMeShortCutFinished
- IfFileExists "$WINDIR\notepad.exe" +3
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Qt Readme.lnk" "$SYSDIR\notepad.exe" "$0\..\README"
- goto ReadMeShortCutFinished
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Qt Readme.lnk" "$WINDIR\notepad.exe" "$0\..\README"
- ReadMeShortCutFinished:
- pop $0
-FunctionEnd
-
-Function un.RemoveStartmenuApplication
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Assistant.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Designer.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Linguist.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Examples and Demos.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Qt Readme.lnk"
-FunctionEnd
-
-#patch the licence information
-Function PatchLicenseInformation
- exch $0
- push $1
- push $2
-
- DetailPrint "Patching license information..."
-
- IfFileExists "$0\src\corelib\global\qconfig.h" 0 +3
- strcpy $2 "$0\src\corelib\global\qconfig.h"
- goto PatchLicensee
-
- IfFileExists "$0\include\Qt\qconfig.h" 0 PatchConfigPriFile
- strcpy $2 "$0\include\Qt\qconfig.h"
-
- PatchLicensee:
- push $2
- push '#define QT_PRODUCT_LICENSEE "'
- push '#define QT_PRODUCT_LICENSEE "$LICENSEE"$\r$\n'
- call PatchLine
-
- push $2
- push '#define QT_PRODUCT_LICENSE "'
- push '#define QT_PRODUCT_LICENSE "$LICENSE_PRODUCT"$\r$\n'
- call PatchLine
-
- push $2
- ${StrCase} $1 "$LICENSE_PRODUCT" "U"
- push '# define QT_EDITION QT_EDITION_'
- push '# define QT_EDITION QT_EDITION_$1$\r$\n'
- call PatchLine
-
- PatchConfigPriFile:
- IfFileExists "$0\mkspecs\qconfig.pri" 0 PatchLicenseProductDone
- push "$0\mkspecs\qconfig.pri"
- push "QT_EDITION = "
- push "QT_EDITION = $LICENSE_PRODUCT$\r$\n"
- call PatchLine
-
- PatchLicenseProductDone:
- pop $2
- pop $1
- pop $0
-FunctionEnd
-
-Function PatchCommonBinaryFiles
- exch $2
- push $0
- push $1
-
- IfFileExists "$2\bin\qmake.exe" 0 +5
- DetailPrint "Patching paths in qmake..."
- push $2
- push "$2\bin\qmake.exe"
- call PatchBinaryPaths
-
- DetailPrint "Patching paths in core..."
- FindFirst $0 $1 "$2\bin\QtCore*.dll"
- StrCmp $1 "" ErrorPatching
- push $2
- push "$2\bin\$1"
- call PatchBinaryPaths
-
- FindNext $0 $1
- StrCmp $1 "" ErrorPatching
- push $2
- push "$2\bin\$1"
- call PatchBinaryPaths
-
- ErrorPatching:
-
- pop $1
- pop $0
- pop $2
-FunctionEnd
-
-Function PatchBinaryPaths
- exch $0
- exch
- exch $2
- push $1
-
-!ifndef OPENSOURCE_BUILD
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_prfxpath=" "qt_prfxpath=$2"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_docspath=" "qt_docspath=$2\doc"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_hdrspath=" "qt_hdrspath=$2\include"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_libspath=" "qt_libspath=$2\lib"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_binspath=" "qt_binspath=$2\bin"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_plugpath=" "qt_plugpath=$2\plugins"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_datapath=" "qt_datapath=$2"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_trnspath=" "qt_trnspath=$2\translations"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_xmplpath=" "qt_xmplpath=$2\examples"
-!ifdef MODULE_LICENSECHECK
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_lcnsuser=" "qt_lcnsuser=$LICENSEE"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_lcnsprod=" "qt_lcnsprod=$LICENSE_PRODUCT"
-!endif
- qtnsisext::PatchBinary $0 "qt_demopath=" "qt_demopath=$2\demos"
-!endif
-
- pop $1
- pop $2
- pop $0
-FunctionEnd
-
-#patching the prl files
-Function PatchPrlFiles
- exch $2
- exch
- exch $3 ;buildDir
- push $0
- push $1
-
- FindFirst $0 $1 "$2\lib\*.prl"
- loop:
- StrCmp $1 "" done
- DetailPrint "Patching $1..."
-
- push "$2\lib\$1"
- push $3
- push $2
- call PatchPath
-
- FindNext $0 $1
- Goto loop
- done:
- pop $1
- pop $0
- pop $3
- pop $2
-FunctionEnd
-
-#
-# patch line in text files
-# push "qtcore4.prl" #Filename
-# push "#define ..." #START WITH
-# push "c:\qt" #REPLACE WITH
-# call PatchLine
-#
-Function PatchLine
- exch $2 ;replacement line
- exch 2
- exch $1 ;Filename
- exch
- exch $0 ;start with
- push $3 ; tmp filename
- push $4 ; handle (tmp)
- push $5 ; handle (org)
- push $6 ; string
-
- ClearErrors
- GetTempFileName $3
- IfErrors done
- FileOpen $4 $3 w
- IfErrors done
- FileOpen $5 $1 r
- IfErrors done
-
-nextline:
- FileRead $5 $6
- IfErrors renameFile
- push $6
- push $0
- push $2
- call ReplaceLine
- pop $6
- FileWrite $4 $6
- goto nextline
-
-renameFile:
- FileClose $4
- FileClose $5
- SetDetailsPrint none
- Delete $1
- Rename $3 $1
- SetDetailsPrint both
-
- done:
- pop $6
- pop $5
- pop $4
- pop $3
- pop $0
- pop $1
- pop $2
-FunctionEnd
-
-#
-# replaces a string that starts with something, with another string
-# push string
-# push "#define ..." #START WITH
-# push "c:\qt" #REPLACE WITH
-# call ReplaceLine
-# pop $0 #new string
-#
-Function ReplaceLine
- exch $2 ;new line
- exch 2
- exch $1 ;string
- exch
- exch $0 ;start with
-
- push $3 ; tmp string
- push $4 ; counter
- push $5 ; strlen
-
- StrCpy $4 "-1"
- StrLen $5 $1
-
- loop:
- IntOp $4 $4 + 1 ;increase counter
- StrCpy $3 $1 $4 ;get substring
- IntCmp $4 $5 copystring ; check for end
- StrCmp $3 $0 done ;start with found
- goto loop
-
- copystring:
- StrCpy $2 $1
- goto done
-
- done:
- pop $5
- pop $4
- pop $3
- pop $0
- pop $1
- exch $2
-FunctionEnd
-
-#
-# patch paths in text files
-# push "qtcore4.prl" #Filename
-# push "c:\compile" #OLD_QTDIR
-# push "c:\qt" #QTDIR
-# call PatchPath
-#
-Function PatchPath
- exch $2 ;NEW
- exch 2
- exch $1 ;Filename
- exch
- exch $0 ;OLD
- push $3 ;readline
- push $4 ;file 1
- push $5 ;file 2
- push $6 ;tmpfilename
-
- push $7 ;forward slash NEW
- push $8 ;forward slash OLD
-
- push $2
- push "\"
- push "/"
- call ReplaceString
- pop $7
-
- push $0
- push "\"
- push "/"
- call ReplaceString
- pop $8
-
- ClearErrors
- GetTempFileName $6
- IfErrors done
- FileOpen $5 $6 w
- IfErrors done
- FileOpen $4 $1 r
- IfErrors done
-
-nextline:
- FileRead $4 $3
- IfErrors renameFile
- push $3
- push $0
- push $2
- call ReplaceString ;replace backward slash path
- push $8
- push $7
- call ReplaceString ;replace forward slash path
- pop $3
- FileWrite $5 $3
- goto nextline
-
-renameFile:
- FileClose $5
- FileClose $4
- SetDetailsPrint none
- Delete $1
- Rename $6 $1
- SetDetailsPrint both
-
-done:
- pop $8
- pop $7
- pop $6
- pop $5
- pop $4
- pop $3
- pop $0
- pop $1
- pop $2
-FunctionEnd
-
-#
-# replaces a string with another string
-# push string
-# push "c:\qt" #replace
-# push "c:\compile" #with
-# call ReplaceString
-# pop $0 #new string
-#
-!macro ReplaceString UN
-Function ${UN}ReplaceString
- exch $2 ;NEW
- exch 2
- exch $1 ;string
- exch
- exch $0 ;OLD
-
- push $3 ; tmp string
- push $4 ; counter
- push $5 ; result
-
- push $6 ; old strlen
-
- StrCpy $4 "-1"
- StrCpy $5 ""
-
- StrLen $6 $0
-
- loop:
- IntOp $4 $4 + 1 ;increase counter
- StrCpy $3 $1 $6 $4 ;get substring
- StrCmp $3 "" done ; check for end
- StrCmp $3 $0 replace ;replace if old
- StrCpy $3 $1 "1" $4
- StrCpy $5 $5$3 ;append character to result
- goto loop
-
- replace:
- StrCpy $5 $5$2 ;insert new qtdir
- IntOp $4 $4 + $6 ;increase offset
- IntOp $4 $4 - 1 ;decrease offset one more
- goto loop
-
- done:
- StrCpy $2 $5
- pop $6
- pop $5
- pop $4
- pop $3
- pop $0
- pop $1
- exch $2
-FunctionEnd
-!macroend
-!insertmacro ReplaceString ""
-!insertmacro ReplaceString "un."
-
-Function CommonCheckDirectory
- exch $4
- exch
- exch $5
- push $0
- push $1
- push $2
- push $3
-
- ; check if qt is already installed
- IfFileExists "$4\bin\qmake.exe" 0 +2
- IfFileExists "$4\uninst.exe" qtExistsError
-
- ; check if directory is empty
- FindFirst $0 $1 "$4\*"
- CommonCheckDirectory_FileSearchLoop:
- StrCmp $1 "" CommonCheckDirectory_DirDoesNotExist
- StrCmp $1 "." CommonCheckDirectory_ContinueSearchLoop
- StrCmp $1 ".." CommonCheckDirectory_ContinueSearchLoop
- goto CommonCheckDirectory_FoundFile
- CommonCheckDirectory_ContinueSearchLoop:
- FindNext $0 $1
- goto CommonCheckDirectory_FileSearchLoop
-
-CommonCheckDirectory_FoundFile:
- FindClose $0
- MessageBox MB_YESNO|MB_ICONEXCLAMATION "This directory already has contents. Are you sure you want to use this directory?" IDYES CommonCheckDirectory_DirDoesNotExist
- Goto errorInDirectory
-CommonCheckDirectory_DirDoesNotExist:
- FindClose $0
-
- GetInstDirError $0
- IntCmp 0 $0 0 instDirError
-
- StrLen $0 $4
-
-!ifdef USE_NODIRLENGTHCHECK
- StrCpy $1 "400"
-!else
- StrLen $1 $5
-!endif
-
- IntCmp $1 $0 0 directoryToLong
-
- ;check for spaces
- StrCpy $2 "-1"
- StrCpy $3 ""
-
- loop:
- IntOp $2 $2 + 1 ;increase counter
- StrCpy $3 $4 "1" $2 ;get char
- StrCmp $3 "" directoryOk ; check for end
- StrCmp $3 " " spaceInDirectory ;check for space
- goto loop
-
-qtExistsError:
- MessageBox MB_OK|MB_ICONEXCLAMATION "Qt is already installed in this directory. Please uninstall the previous version and try again."
- Goto errorInDirectory
-
-instDirError:
- MessageBox MB_OK|MB_ICONEXCLAMATION "This is not a valid installation directory."
- Goto errorInDirectory
-
-spaceInDirectory:
- MessageBox MB_OK|MB_ICONEXCLAMATION "The installation path can't contain spaces."
- Goto errorInDirectory
-
-directoryToLong:
- MessageBox MB_OK|MB_ICONEXCLAMATION "The installation directory is to long."
- Goto errorInDirectory
-
-errorInDirectory:
- pop $3
- pop $2
- pop $1
- pop $0
- pop $5
- pop $4
- Abort
- goto done
-
-directoryOk:
- pop $3
- pop $2
- pop $1
- pop $0
- pop $5
- pop $4
-done:
-FunctionEnd
-
-!endif ;QTCOMMON_INCLUDE
diff --git a/tools/installer/nsis/includes/qtenv.nsh b/tools/installer/nsis/includes/qtenv.nsh
deleted file mode 100644
index 8a06888..0000000
--- a/tools/installer/nsis/includes/qtenv.nsh
+++ /dev/null
@@ -1,303 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifndef QTENV_INCLUDE
-!define QTENV_INCLUDE
-#
-# creates a qtvars.bat file in $QTDIR\bin
-# push "vs2003" #compiler
-# push "c:\qt" #QTDIR
-# call MakeQtVarsFile
-#
-Function MakeQtVarsFile
- exch $1 ; QTDIR
- exch
- exch $3 ; vs version
- push $0 ; file handle
- push $2
- push $4
-
- push $3
- call GetMkSpec
- pop $2
-
- ClearErrors
- FileOpen $0 "$1\bin\qtvars.bat" w
- IfErrors done
- FileWrite $0 "@echo off$\r$\n"
- FileWrite $0 "rem$\r$\n"
- FileWrite $0 "rem This file is generated$\r$\n"
- FileWrite $0 "rem$\r$\n"
- FileWrite $0 "$\r$\n"
- FileWrite $0 "echo Setting up a Qt environment...$\r$\n"
- FileWrite $0 "echo -- QTDIR set to $1$\r$\n"
- FileWrite $0 "echo -- Added $1\bin to PATH$\r$\n"
- FileWrite $0 "echo -- QMAKESPEC set to $2$\r$\n"
- FileWrite $0 "$\r$\n"
- FileWrite $0 "set QTDIR=$1$\r$\n"
- FileWrite $0 "set PATH=$1\bin;%PATH%$\r$\n"
- FileWrite $0 "set QMAKESPEC=$2$\r$\n"
-
- call IsExpressVersion
- pop $4
- strcmp $4 "" noExpressVersion
- FileWrite $0 "$\r$\n"
- FileWrite $0 'regedit /e S$$D$$K$$ "HKEY_LOCAL_MACHINE\Software\Microsoft\MicrosoftSDK"$\r$\n'
- Filewrite $0 'if not exist S$$D$$K$$ goto ENDSDK\r$\n'
- FileWrite $0 'find "Install Dir" < S$$D$$K$$ > D$$I$$R$$$\r$\n'
- FileWrite $0 'del S$$D$$K$$$\r$\n'
- FileWrite $0 'for /f "tokens=2 delims==" %%i in (D$$I$$R$$) do call %%i\setenv$\r$\n'
- FileWrite $0 'del D$$I$$R$$$\r$\n'
- Filewrite $0 ':ENDSDK\r$\n'
- noExpressVersion:
-
- push $3
- call GetVSVarsFile
- pop $2
- strcmp $2 "" novsvars
- FileWrite $0 "$\r$\n"
- FileWrite $0 'if not "%1"=="vsvars" goto END$\r$\n'
- FileWrite $0 'call "$2"$\r$\n'
- FileWrite $0 ":END$\r$\n"
-
- FileWrite $0 "$\r$\n"
- FileWrite $0 'if not "%1"=="vsstart" goto ENDSTARTVS$\r$\n'
- FileWrite $0 'call "$2"$\r$\n'
-
- strcmp $3 "vc60" vc60startup
- FileWrite $0 "devenv /useenv$\r$\n"
- Goto donevsstartup
- vc60startup:
- FileWrite $0 "msdev /useenv$\r$\n"
- donevsstartup:
-
- FileWrite $0 ":ENDSTARTVS$\r$\n"
-
- novsvars:
- FileWrite $0 "$\r$\n"
- FileClose $0
- done:
- pop $4
- pop $2
- pop $0
- pop $3
- pop $1
-FunctionEnd
-
-Function GetMkSpec
- exch $0
- StrCmp $0 "mingw" MINGW
- StrCmp $0 "vs2005" VS2005
- StrCmp $0 "vs2003" VS2003
- StrCmp $0 "vs2002" VS2002
- StrCmp $0 "vc60" VS60
- StrCmp $0 "icc" ICC
-
- MINGW:
- pop $0
- push "win32-g++"
- goto done
-
- VS2005:
- pop $0
- push "win32-msvc2005"
- goto done
-
- VS2003:
- pop $0
- push "win32-msvc.net"
- goto done
-
- VS2002:
- pop $0
- push "win32-msvc.net"
- goto done
-
- VS60:
- pop $0
- push "win32-msvc"
- goto done
-
- ICC:
- pop $0
- push "win32-icc"
- goto done
-
- done:
-FunctionEnd
-
-!define AD_COMPILER_NAME_VS2005 "Visual Studio .NET 2005"
-!define AD_COMPILER_NAME_VS2005_EXPRESS "Visual C++ 2005 Express Edition"
-!define AD_COMPILER_NAME_VS2003 "Visual Studio .NET 2003"
-!define AD_COMPILER_NAME_VS2002 "Visual Studio .NET 2002"
-!define AD_COMPILER_NAME_VC60 "Visual Studio 6.0"
-!define AD_COMPILER_NAME_ICC "Intel C++ Compiler"
-!define AD_COMPILER_NAME_MINGW "MinGW (Must be in PATH!)"
-
-Function GetShortCompilerName
- exch $0
-
- strcmp "$0" "${AD_COMPILER_NAME_VS2005}" 0 +3
- strcpy $0 "vs2005"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_VS2005_EXPRESS}" 0 +3
- strcpy $0 "vs2005"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_VS2003}" 0 +3
- strcpy $0 "vs2003"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_VS2002}" 0 +3
- strcpy $0 "vs2002"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_VC60}" 0 +3
- strcpy $0 "vc60"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_ICC}" 0 +3
- strcpy $0 "icc"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_MINGW}" 0 +3
- strcpy $0 "mingw"
- goto done
-
- strcpy $0 "" ;this is bad!
-
- done:
- exch $0
-FunctionEnd
-
-Function IsExpressVersion
- push $0
- ReadRegStr $0 HKLM "Software\Microsoft\VCExpress\8.0" "InstallDir"
- ClearErrors
- exch $0
-FunctionEnd
-
-Function AutoDetectCompilers
- push $0
- push $1
-
- strcpy $1 ""
-
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\8.0" "InstallDir"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_VS2005}|"
-
- ReadRegStr $0 HKLM "Software\Microsoft\VCExpress\8.0" "InstallDir"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_VS2005_EXPRESS}|"
-
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.1" "InstallDir"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_VS2003}|"
-
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.0" "InstallDir"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_VS2002}|"
-
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\6.0\Setup" "VsCommonDir"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_VC60}|"
-
- ReadRegStr $0 HKLM "Software\Intel\Compilers\C++\80" "Major Version"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_ICC}|"
-
- strcpy $1 "$1${AD_COMPILER_NAME_MINGW}"
-
- exch
- pop $0
- exch $1
-FunctionEnd
-
-Function GetVSVarsFile
- exch $1
- push $0
-
- StrCmp $1 "vs2005" VS2005
- StrCmp $1 "vs2003" VS2003
- StrCmp $1 "vs2002" VS2002
- StrCmp $1 "vc60" VS60
-
- push "" ;empty string if not found
- goto done
-
- VS2005:
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\8.0\Setup\VS" "ProductDir"
- StrCmp $0 "" +1 foundVSDir ; found msvc.net 2005
-
- ReadRegStr $0 HKLM "Software\Microsoft\VCExpress\8.0\Setup\VS" "ProductDir"
- StrCmp $0 "" +1 foundVSDir ; found msvc.net 2005 epress
-
- VS2003:
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.1\Setup\VS" "ProductDir"
- StrCmp $0 "" +1 foundVSDir ; found msvc.net 2003
-
- VS2002:
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.0\Setup\VS" "ProductDir"
- StrCmp $0 "" +1 foundVSDir ; found msvc.net 2002
-
- VS60:
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++" "ProductDir"
- StrCmp $0 "" +1 foundVCDir ; found msvc 6.0
-
- push "" ;empty string if not found
- goto done
-
- foundVSDir:
- push "$0\Common7\Tools\vsvars32.bat"
- goto done
-
- foundVCDir:
- push "$0\bin\vcvars32.bat"
-
- done:
- exch
- pop $0
- exch
- pop $1
-FunctionEnd
-
-!endif ;QTENV_INCLUDE
diff --git a/tools/installer/nsis/includes/system.nsh b/tools/installer/nsis/includes/system.nsh
deleted file mode 100644
index 3bc5be2..0000000
--- a/tools/installer/nsis/includes/system.nsh
+++ /dev/null
@@ -1,269 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifndef SYSTEM_INCLUDE
-!define SYSTEM_INCLUDE
-
-!define QTVSIP2003_GUID "{789202F4-94F5-4f0a-AA00-73295FEBFD68}"
-!define QTVSIP2005_GUID "{789202F4-94F5-4f0a-AA00-73295FEBFD69}"
-
-!define QMSNET2002_GUID "{C174ACCD-D856-4B60-9887-0FF9E841E0EC}"
-!define QMSNET2003_GUID "{C174ACCE-D857-4B61-9888-0FF9E841E0ED}"
-!define QMSNET2005_GUID "{14E98DB4-A232-49a4-8EC1-8CE4F6985C73}"
-
-!macro GetVSInstallationDir UN
-; Usage:
-;
-; push "7.0"
-; call GetVSInstallationDir
-; pop $0
-;
-; If the requested VS version can be found, its
-; installation directory is returned.
-Function ${UN}GetVSInstallationDir
- Exch $0
- Push $1
- ReadRegStr $1 HKLM "Software\Microsoft\VisualStudio\$0" "InstallDir"
- StrCpy $0 $1
- StrCmp $0 "" 0 +2
- SetErrors
- Pop $1
- Exch $0
-FunctionEnd
-!macroend
-
-!insertmacro GetVSInstallationDir ""
-!insertmacro GetVSInstallationDir "un."
-
-
-!macro IsDotNETInstalled UN
-; Usage:
-;
-; push "8.0"
-; call IsDotNETInstalled
-; pop $0
-;
-; $0 contains the path where the .NET framework is installed.
-; If not installation can be found $0 is empty.
-Function ${UN}IsDotNETInstalled
- Exch $0
- Push $1
- Push $2
- Push $3
- Push $4
- Push $5
-
- StrCpy $5 $0
-
- ReadRegStr $4 HKEY_LOCAL_MACHINE "Software\Microsoft\.NETFramework" "InstallRoot"
- Push $4
- Exch $EXEDIR
- Exch $EXEDIR
- Pop $4
-
- IfFileExists $4 0 noDotNET
- StrCpy $0 0
-
- EnumStart:
- EnumRegKey $2 HKEY_LOCAL_MACHINE "Software\Microsoft\.NETFramework\Policy" $0
- IntOp $0 $0 + 1
- StrCmp $2 "" noDotNET
- StrCpy $1 0
-
- EnumPolicy:
- EnumRegValue $3 HKEY_LOCAL_MACHINE "Software\Microsoft\.NETFramework\Policy\$2" $1
- IntOp $1 $1 + 1
- StrCmp $3 "" EnumStart
-
- StrCmp $5 "8.0" 0 +2
- StrCmp $2 "v2.0" 0 EnumPolicy
-
- IfFileExists "$4\$2.$3" foundDotNET EnumPolicy
-
- noDotNET:
- StrCpy $0 0
- Goto done
-
- foundDotNET:
- StrCpy $0 "$4\$2.$3"
-
- done:
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Exch $0
-FunctionEnd
-!macroend
-
-!insertmacro IsDotNETInstalled ""
-!insertmacro IsDotNETInstalled "un."
-
-!macro IsQMsNetInstalled UN
-; Usage:
-;
-; push "8.0"
-; call IsQMsNetInstalled
-; pop $0
-Function ${UN}IsQMsNetInstalled
- Exch $0
- Push $1
- Push $2
- Push $3
-
- StrCmp $0 "7.0" 0 +2
- StrCpy $2 "${QMSNET2002_GUID}"
- StrCmp $0 "7.1" 0 +2
- StrCpy $2 "${QMSNET2003_GUID}"
- StrCmp $0 "8.0" 0 +2
- StrCpy $2 "${QMSNET2005_GUID}"
-
- StrCpy $3 0
-
- ReadRegStr $1 HKLM "SOFTWARE\Microsoft\VisualStudio\$0\NewProjectTemplates\TemplateDirs\$2\/2" "TemplatesDir"
- StrCmp $1 "" +3
- StrCpy $3 1
- goto done
-
- ReadRegStr $1 HKCU "SOFTWARE\Microsoft\VisualStudio\$0\NewProjectTemplates\TemplateDirs\$2\/2" "TemplatesDir"
- StrCmp $1 "" +2
- StrCpy $3 1
-
-done:
- StrCpy $0 $3
-
- Pop $3
- Pop $2
- Pop $1
- Exch $0
-FunctionEnd
-!macroend
-
-!insertmacro IsQMsNetInstalled ""
-!insertmacro IsQMsNetInstalled "un."
-
-!macro IsQMsDevInstalled UN
-; Usage:
-;
-; call IsQMsDevInstalled
-; pop $0
-Function ${UN}IsQMsDevInstalled
- Push $0
- Push $1
- Push $2
-
- StrCpy $0 0
-
- ReadRegStr $1 HKLM "SOFTWARE\Microsoft\DevStudio\6.0\AddIns\q4msdev.Q4MsDev.1" "Filename"
- StrCmp $1 "" +3
- StrCpy $0 1
- goto done
-
- ReadRegStr $1 HKCU "SOFTWARE\Microsoft\DevStudio\6.0\AddIns\q4msdev.Q4MsDev.1" "Filename"
- StrCmp $1 "" +2
- StrCpy $0 1
-
-done:
- Pop $2
- Pop $1
- Exch $0
-FunctionEnd
-!macroend
-
-!insertmacro IsQMsDevInstalled ""
-!insertmacro IsQMsDevInstalled "un."
-
-!macro IsIntegrationInstalled UN
-; Usage:
-;
-; push "8.0"
-; call IsIntegrationInstalled
-; pop $0
-Function ${UN}IsIntegrationInstalled
- Exch $0
- Push $1
- Push $2
-
- StrCmp $0 "7.1" 0 +2
- StrCpy $2 "${QTVSIP2003_GUID}"
- StrCmp $0 "8.0" 0 +2
- StrCpy $2 "${QTVSIP2005_GUID}"
-
- ReadRegStr $1 HKLM "SOFTWARE\Microsoft\VisualStudio\$0\Packages\$2" "ProductName"
-
- StrCpy $0 0
- StrCmp $1 "" done
- StrCpy $0 1
-
-done:
- Pop $2
- Pop $1
- Exch $0
-FunctionEnd
-!macroend
-
-!insertmacro IsIntegrationInstalled ""
-!insertmacro IsIntegrationInstalled "un."
-
-!macro AdministratorRights UN
-Function ${UN}HasAdminRights
- push $0
- ClearErrors
- UserInfo::GetAccountType
- IfErrors Yes ;It's probably Win95
- pop $0
- StrCmp $0 "Admin" Yes
- StrCmp $0 "Power" Yes
-
- StrCpy $0 "false"
- goto Done
-
- Yes:
- StrCpy $0 "true"
-
- Done:
- exch $0
-FunctionEnd
-!macroend
-!insertmacro AdministratorRights ""
-!insertmacro AdministratorRights "un."
-
-!endif ;SYSTEM_INCLUDE
diff --git a/tools/installer/nsis/installer.nsi b/tools/installer/nsis/installer.nsi
deleted file mode 100644
index af7e9a8..0000000
--- a/tools/installer/nsis/installer.nsi
+++ /dev/null
@@ -1,524 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Script generated by the HM NIS Edit Script Wizard.
-
-!include "config.nsh"
-!include "includes\global.nsh"
-
-!define PRODUCT_PUBLISHER "Nokia Corporation and/or its subsidiary(-ies)"
-!define PRODUCT_WEB_SITE "http://qt.nokia.com"
-
-!define INSTALL_ICON "images\install.ico"
-!define WELCOME_PAGE_ICON "images\qt-wizard.bmp"
-!define PAGE_HEADER_ICON "images\qt-header.bmp"
-
-!include "MUI.nsh"
-
-; modules
-!include "modules\mingw.nsh"
-!include "modules\opensource.nsh"
-!include "includes\instdir.nsh"
-!include "modules\environment.nsh"
-!include "modules\registeruiext.nsh"
-!ifndef OPENSOURCE_BUILD
-!include "modules\msvc.nsh"
-!include "modules\addin7x.nsh"
-!include "modules\qsa.nsh"
-!include "modules\addin60.nsh"
-!include "modules\debugext.nsh"
-!include "modules\license.nsh"
-!include "modules\vsip.nsh"
-!include "modules\help.nsh"
-!include "modules\evaluation.nsh"
-!include "modules\eclipse.nsh"
-!include "modules\qtjambieclipse.nsh"
-!endif
-
-; MUI Settings
-!define MUI_ABORTWARNING
-!define MUI_ICON "${INSTALL_ICON}"
-!define MUI_UNICON "${INSTALL_ICON}"
-
-!define MUI_HEADERIMAGE
-!define MUI_HEADERIMAGE_BITMAP "${PAGE_HEADER_ICON}"
-!define MUI_HEADERIMAGE_UNBITMAP "${PAGE_HEADER_ICON}"
-
-!define MUI_WELCOMEFINISHPAGE_BITMAP "${WELCOME_PAGE_ICON}"
-!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${WELCOME_PAGE_ICON}"
-
-!ifdef WELCOME_NOTE
- !define MUI_WELCOMEPAGE_TEXT "${WELCOME_NOTE}"
-!endif
-!insertmacro MUI_PAGE_WELCOME
-!insertmacro OPENSOURCE_INITIALIZE
-!ifndef OPENSOURCE_BUILD
-!insertmacro EVALUATION_INITIALIZE
-!insertmacro LICENSECHECK_INITIALIZE
-!insertmacro MSVC_INITIALIZE
-!insertmacro ADDIN7X_INITIALIZE
-!insertmacro ADDIN60_INITIALIZE
-!insertmacro DEBUGEXT_INITIALIZE
-!insertmacro HELP_INITIALIZE
-!insertmacro VSIP_INITIALIZE
-!endif
-
-!ifdef USE_COMPONENT_PAGE
- !insertmacro MUI_PAGE_COMPONENTS
-!endif
-
-!ifdef USE_DIRECTORY_PAGE
- !insertmacro INSTDIR_INITIALIZE
-!endif
-
-!ifdef USE_STARTMENU_PAGE
- !define MUI_STARTMENUPAGE_NODISABLE
- !define MUI_STARTMENUPAGE_DEFAULTFOLDER "${DEFAULT_STARTMENU_STRING}"
- !insertmacro MUI_PAGE_STARTMENU 1 $STARTMENU_STRING
-!endif
-
-!insertmacro MINGW_INITIALIZE
-!insertmacro ENVIRONMENT_INITIALIZE
-!insertmacro REGISTERUIEXT_INITIALIZE
-!ifndef OPENSOURCE_BUILD
-!insertmacro QSA_INITIALIZE
-!insertmacro ECLIPSE_INITIALIZE
-!insertmacro QTJAMBIECLIPSE_INITIALIZE
-!endif
-
-!define MUI_FINISHPAGE_NOAUTOCLOSE
-
-!insertmacro MUI_PAGE_INSTFILES
-!ifdef README_FILE
- !define MUI_FINISHPAGE_SHOWREADME ${README_FILE}
-!else
- !ifdef README_FUNCTION
- !define MUI_FINISHPAGE_SHOWREADME
- !define MUI_FINISHPAGE_SHOWREADME_TEXT "${README_FUNCTION}"
- !define MUI_FINISHPAGE_SHOWREADME_FUNCTION "CommonReadmeFunction"
- !endif
-!endif
-!ifdef RUN_FUNCTION
- !define MUI_FINISHPAGE_RUN
- !define MUI_FINISHPAGE_RUN_TEXT "${RUN_FUNCTION}"
- !define MUI_FINISHPAGE_RUN_FUNCTION "CommonRunFunction"
-!endif
-!insertmacro MUI_PAGE_FINISH
-
-!insertmacro MUI_UNPAGE_WELCOME
-!define UNINSTALLER_CONFIRM_PAGE "confirmpage.ini"
-UninstPage custom un.UninstallerConfirmPage
-!insertmacro MUI_UNPAGE_INSTFILES
-
-!insertmacro MUI_UNPAGE_FINISH
-
-!insertmacro MUI_LANGUAGE "English"
-
-Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
-OutFile ${OUTPUT_FILE}
-
-Section -PreCommonSection
-!ifdef INSTDIR_0 ;the default one, must exist
- strcpy $INSTDIR $${INSTDIR_0}_INSTDIR
- ${StrRep} $PRODUCT_UNIQUE_KEY "${PRODUCT_NAME} ${PRODUCT_VERSION} - $INSTDIR" "\" "_"
- strcpy $PRODUCT_UNIQUE_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\$PRODUCT_UNIQUE_KEY"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_0}_INSTDIR" "$${INSTDIR_0}_INSTDIR"
-!endif
-!ifdef INSTDIR_1
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_1}_INSTDIR" "$${INSTDIR_1}_INSTDIR"
-!endif
-!ifdef INSTDIR_2
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_2}_INSTDIR" "$${INSTDIR_2}_INSTDIR"
-!endif
-!ifdef INSTDIR_3
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_3}_INSTDIR" "$${INSTDIR_3}_INSTDIR"
-!endif
-!ifdef INSTDIR_4
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_4}_INSTDIR" "$${INSTDIR_4}_INSTDIR"
-!endif
-!ifdef INSTDIR_5
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_5}_INSTDIR" "$${INSTDIR_5}_INSTDIR"
-!endif
-
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "StartMenu" "$STARTMENU_STRING"
- CreateDirectory "$SMPROGRAMS\$STARTMENU_STRING"
-SectionEnd
-
-!insertmacro OPENSOURCE_SECTIONS
-!insertmacro MINGW_SECTIONS
-!insertmacro ENVIRONMENT_SECTIONS
-!insertmacro REGISTERUIEXT_SECTIONS
-!ifndef OPENSOURCE_BUILD
-!insertmacro MSVC_SECTIONS
-!insertmacro ADDIN7X_SECTIONS
-!insertmacro ADDIN60_SECTIONS
-!insertmacro VSIP_SECTIONS
-!insertmacro HELP_SECTIONS
-!insertmacro DEBUGEXT_SECTIONS
-!insertmacro LICENSECHECK_SECTIONS
-!insertmacro QSA_SECTIONS
-!insertmacro EVALUATION_SECTIONS
-!insertmacro ECLIPSE_SECTIONS
-!insertmacro QTJAMBIECLIPSE_SECTIONS
-!endif
-
-!insertmacro INSTDIR_FUNCTIONS
-
-Section -CommonSection
- WriteUninstaller "$INSTDIR\uninst.exe"
-
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "DisplayName" "$(^Name)"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "UninstallString" "$INSTDIR\uninst.exe"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "DisplayVersion" "${PRODUCT_VERSION}"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "Publisher" "${PRODUCT_PUBLISHER}"
-
- WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\qt.nokia.com.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Uninstall ${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk" "$INSTDIR\uninst.exe"
- SetOutPath "$INSTDIR"
-SectionEnd
-
-Function CheckLocalLicenseProduct
-!ifdef MODULE_LICENSECHECK
- !insertmacro QSA_CHECKLICENSEPRODUCT
-!endif
-FunctionEnd
-
-Function .onInit
- StrCpy $STARTMENU_STRING "${DEFAULT_STARTMENU_STRING}"
-
-!ifdef USE_UNINSTALL_PREVIOUS
- push "${PRODUCT_NAME}"
- call GetExistsPreviousInstallationOfProduct
- exch $0
- StrCmp $0 true 0 +3
- MessageBox MB_OK|MB_ICONSTOP "A previous installation of ${PRODUCT_NAME} was detected.$\nPlease uninstall it before running this installer."
- Abort
- pop $0
-!endif
-
- call SetAdminVar
- StrCmp "$RUNNING_AS_ADMIN" "false" 0 common_running_as_admin
-!ifdef USE_ADMIN_CHECK
- MessageBox MB_OK|MB_ICONSTOP "You need to have administrator rights to install this software!"
- Abort
-!endif
- SetShellVarContext current
- goto common_admin_check_done
- common_running_as_admin:
- SetShellVarContext all
- common_admin_check_done:
-
- !insertmacro INSTDIR_STARTUP
-
- !insertmacro OPENSOURCE_STARTUP
- !insertmacro ENVIRONMENT_STARTUP
- !insertmacro REGISTERUIEXT_STARTUP
- !insertmacro MINGW_STARTUP
-!ifndef OPENSOURCE_BUILD
- !insertmacro LICENSECHECK_STARTUP
- !insertmacro MSVC_STARTUP
- !insertmacro EVALUATION_STARTUP
- !insertmacro ADDIN7X_STARTUP
- !insertmacro ADDIN60_STARTUP
- !insertmacro DEBUGEXT_STARTUP
- !insertmacro VSIP_STARTUP
- !insertmacro HELP_STARTUP
- !insertmacro QSA_STARTUP
- !insertmacro ECLIPSE_STARTUP
- !insertmacro QTJAMBIECLIPSE_STARTUP
-!endif
-FunctionEnd
-
-Function .onInstSuccess
- !insertmacro ENVIRONMENT_FINISH
- !insertmacro REGISTERUIEXT_FINISH
- !insertmacro OPENSOURCE_FINISH
- !insertmacro MINGW_FINISH
-!ifndef OPENSOURCE_BUILD
- !insertmacro LICENSECHECK_FINISH
- !insertmacro MSVC_FINISH
- !insertmacro EVALUATION_FINISH
- !insertmacro ADDIN7X_FINISH
- !insertmacro ADDIN60_FINISH
- !insertmacro DEBUGEXT_FINISH
- !insertmacro VSIP_FINISH
- !insertmacro HELP_FINISH
- !insertmacro QSA_FINISH
- !insertmacro ECLIPSE_FINISH
- !insertmacro QTJAMBIECLIPSE_FINISH
-!endif
-FunctionEnd
-
-Function un.onUninstSuccess
- !insertmacro ENVIRONMENT_UNFINISH
- !insertmacro REGISTERUIEXT_UNFINISH
- !insertmacro OPENSOURCE_UNFINISH
- !insertmacro MINGW_UNFINISH
-!ifndef OPENSOURCE_BUILD
- !insertmacro LICENSECHECK_UNFINISH
- !insertmacro MSVC_UNFINISH
- !insertmacro EVALUATION_UNFINISH
- !insertmacro ADDIN7X_UNFINISH
- !insertmacro ADDIN60_UNFINISH
- !insertmacro DEBUGEXT_UNFINISH
- !insertmacro VSIP_UNFINISH
- !insertmacro HELP_UNFINISH
- !insertmacro QSA_UNFINISH
- !insertmacro ECLIPSE_UNFINISH
- !insertmacro QTJAMBIECLIPSE_UNFINISH
-!endif
-FunctionEnd
-
-Function un.onInit
- call un.SetAdminVar
- StrCmp "$RUNNING_AS_ADMIN" "false" 0 common_running_as_admin
-!ifdef USE_ADMIN_CHECK
- MessageBox MB_OK|MB_ICONSTOP "You do not have the required access rights to uninstall this package."
- Abort
-!endif
- SetShellVarContext current
- goto common_admin_check_done
- common_running_as_admin:
- SetShellVarContext all
- common_admin_check_done:
-
- ${UnStrRep} $PRODUCT_UNIQUE_KEY "${PRODUCT_NAME} ${PRODUCT_VERSION} - $INSTDIR" "\" "_"
- strcpy $PRODUCT_UNIQUE_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\$PRODUCT_UNIQUE_KEY"
-
- push $0
- ClearErrors
- ReadRegStr $0 SHCTX "$PRODUCT_UNIQUE_KEY" "DisplayName"
- IfErrors 0 +3
- MessageBox MB_OK|MB_ICONSTOP "The uninstaller was unable to find the product to uninstall."
- Abort
- pop $0
-
- ReadRegStr $STARTMENU_STRING SHCTX "$PRODUCT_UNIQUE_KEY" "StartMenu"
- StrCmp "$STARTMENU_STRING" "" 0 +2
- StrCpy $STARTMENU_STRING "${DEFAULT_STARTMENU_STRING}"
-
-!ifdef INSTDIR_0 ;the default one, must exist
- ReadRegStr $${INSTDIR_0}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_0}_INSTDIR"
-!endif
-!ifdef INSTDIR_1
- ReadRegStr $${INSTDIR_1}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_1}_INSTDIR"
-!endif
-!ifdef INSTDIR_2
- ReadRegStr $${INSTDIR_2}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_2}_INSTDIR"
-!endif
-!ifdef INSTDIR_3
- ReadRegStr $${INSTDIR_3}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_3}_INSTDIR"
-!endif
-!ifdef INSTDIR_4
- ReadRegStr $${INSTDIR_4}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_4}_INSTDIR"
-!endif
-!ifdef INSTDIR_5
- ReadRegStr $${INSTDIR_5}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_5}_INSTDIR"
-!endif
-
- !insertmacro ENVIRONMENT_UNSTARTUP
- !insertmacro REGISTERUIEXT_UNSTARTUP
- !insertmacro OPENSOURCE_UNSTARTUP
- !insertmacro MINGW_UNSTARTUP
-!ifndef OPENSOURCE_BUILD
- !insertmacro LICENSECHECK_UNSTARTUP
- !insertmacro MSVC_UNSTARTUP
- !insertmacro EVALUATION_UNSTARTUP
- !insertmacro ADDIN7X_UNSTARTUP
- !insertmacro ADDIN60_UNSTARTUP
- !insertmacro DEBUGEXT_UNSTARTUP
- !insertmacro VSIP_UNSTARTUP
- !insertmacro HELP_UNSTARTUP
- !insertmacro QSA_UNSTARTUP
- !insertmacro ECLIPSE_UNSTARTUP
- !insertmacro QTJAMBIECLIPSE_UNSTARTUP
-!endif
-
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${UNINSTALLER_CONFIRM_PAGE}"
-FunctionEnd
-
-!insertmacro OPENSOURCE_UNINSTALL
-!insertmacro ENVIRONMENT_UNINSTALL
-!insertmacro REGISTERUIEXT_UNINSTALL
-!insertmacro MINGW_UNINSTALL
-!ifndef OPENSOURCE_BUILD
-!insertmacro HELP_UNINSTALL
-!insertmacro DEBUGEXT_UNINSTALL
-!insertmacro MSVC_UNINSTALL
-!insertmacro EVALUATION_UNINSTALL
-!insertmacro QSA_UNINSTALL
-!insertmacro ECLIPSE_UNINSTALL
-!insertmacro QTJAMBIECLIPSE_UNINSTALL
-!endif
-
-Section Uninstall
- !ifndef OPENSOURCE_BUILD
- !insertmacro LICENSECHECK_UNINSTALL
- !insertmacro ADDIN7X_UNINSTALL
- !insertmacro ADDIN60_UNINSTALL
- !insertmacro VSIP_UNINSTALL
- !endif
-
- ; COMMON
- Delete "$INSTDIR\${PRODUCT_NAME}.url"
- Delete "$INSTDIR\uninst.exe"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Uninstall ${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\qt.nokia.com.lnk"
-
- RMDir "$SMPROGRAMS\$STARTMENU_STRING"
- RMDir "$INSTDIR"
-
- DeleteRegKey SHCTX "$PRODUCT_UNIQUE_KEY"
-SectionEnd
-
-Function CommonRunFunction
- !ifndef OPENSOURCE_BUILD
- !insertmacro MSVC_RUN_FUNCTION
- !insertmacro QSA_RUN_FUNCTION
- !endif
- !insertmacro MINGW_RUN_FUNCTION
- DoneRunFunction:
-FunctionEnd
-
-Function CommonReadmeFunction
- !ifndef OPENSOURCE_BUILD
- !insertmacro MSVC_README_FUNCTION
- !endif
- !insertmacro MINGW_README_FUNCTION
- DoneReadmeFunction:
-FunctionEnd
-
-Function un.UninstallerConfirmPage
- !insertmacro MUI_HEADER_TEXT "Confirm" "Confirm Uninstallation Directories"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${UNINSTALLER_CONFIRM_PAGE}" "Field 2" "Text" "$UninstallerConfirmProduct"
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${UNINSTALLER_CONFIRM_PAGE}"
-FunctionEnd
-
-;pops product name from stack and as result pushes TRUE or FALSE on stack
-Function GetExistsPreviousInstallationOfProduct
- exch $0
- push $1
- push $2
- push $3
-
- StrCpy $1 0
- loop:
- EnumRegKey $2 HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall $1
- StrCmp $2 "" no_reg_key_found
- ${StrStr} $3 $2 $0
- StrCmp $3 $2 reg_key_found
- IntOp $1 $1 + 1
- goto loop
-
- reg_key_found:
- push true
- goto done
-
- no_reg_key_found:
- push false
-
- done:
- exch
- pop $3
- exch
- pop $2
- exch
- pop $1
- exch
- pop $0
-FunctionEnd
-
-;pops product name from stack
-Function WarnIfInstalledProductDetected
- exch $0
- push $0
- call GetExistsPreviousInstallationOfProduct
- exch $1
- StrCmp $1 true +1 +3
- MessageBox MB_YESNO|MB_ICONQUESTION "An existing installation of $0 was detected.$\nIt is recommended to deinstall $0 before continuing.$\nDo you want to continue this installation nevertheless?" IDYES +2 IDNO +1
- Abort
- pop $1
- pop $0
-FunctionEnd
-
-;sets $RUNNING_AS_ADMIN to "true" if Admin or Power user
-!macro SetAdminVar UN
-Function ${UN}SetAdminVar
- push $0
- ClearErrors
- UserInfo::GetAccountType
- IfErrors Admin ;It's probably Win95
- pop $0
- StrCmp $0 "Admin" Admin
- StrCmp $0 "Power" Admin
-
- StrCpy $RUNNING_AS_ADMIN "false"
- goto Done
-
- Admin:
- StrCpy $RUNNING_AS_ADMIN "true"
-
- Done:
- pop $0
-FunctionEnd
-!macroend
-!insertmacro SetAdminVar ""
-!insertmacro SetAdminVar "un."
-
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
- !insertmacro OPENSOURCE_DESCRIPTION
- !insertmacro ENVIRONMENT_DESCRIPTION
- !insertmacro REGISTERUIEXT_DESCRIPTION
- !insertmacro MINGW_DESCRIPTION
- !ifndef OPENSOURCE_BUILD
- !insertmacro MSVC_DESCRIPTION
- !insertmacro EVALUATION_DESCRIPTION
- !insertmacro ADDIN7X_DESCRIPTION
- !insertmacro ADDIN60_DESCRIPTION
- !insertmacro DEBUGEXT_DESCRIPTION
- !insertmacro HELP_DESCRIPTION
- !insertmacro VSIP_DESCRIPTION
- !insertmacro QSA_DESCRIPTION
- !insertmacro ECLIPSE_DESCRIPTION
- !insertmacro QTJAMBIECLIPSE_DESCRIPTION
- !endif
-!insertmacro MUI_FUNCTION_DESCRIPTION_END
diff --git a/tools/installer/nsis/modules/environment.nsh b/tools/installer/nsis/modules/environment.nsh
deleted file mode 100644
index fa610a7..0000000
--- a/tools/installer/nsis/modules/environment.nsh
+++ /dev/null
@@ -1,216 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifdef MODULE_ENVIRONMENT
-!macro ENVIRONMENT_INITIALIZE
- !include "includes\writeEnvStr.nsh"
- !include "includes\writePathStr.nsh"
-
- !ifndef MODULE_ENVIRONMENT_QTDIR
- !ifdef MODULE_MINGW
- !define MODULE_ENVIRONMENT_QTDIR $MINGW_INSTDIR
- !endif
-
- !ifdef MODULE_MSVC
- !define MODULE_ENVIRONMENT_QTDIR $MSVC_INSTDIR
- !endif
- !endif
-
- !define MODULE_ENVIRONMENT_PAGE "envpage.ini"
- var MODULE_ENVIRONMENT_SET
- var MODULE_ENVIRONMENT_OLD
- LangString ModuleEnvironmentTitle ${LANG_ENGLISH} "Configure Environment"
- LangString ModuleEnvironmentDescription ${LANG_ENGLISH} "Configure Qt environment variables"
-
- Page custom ModuleEnvironmentPageEnter ModuleEnvironmentPageExit
-!macroend
-!macro ENVIRONMENT_SECTIONS
- Section -ModuleEnvironmentRegister
- push "${MODULE_ENVIRONMENT_QTDIR}"
- call RegisterQtEnvVariables
- SectionEnd
-
- Function ModuleEnvironmentPageEnter
- push $0
- Call IsNT
- pop $0
- strcmp "$0" "1" +2
- abort
- pop $0
-
- !insertmacro MUI_HEADER_TEXT "$(ModuleEnvironmentTitle)" "$(ModuleEnvironmentDescription)"
-
- strcmp $MODULE_ENVIRONMENT_SET "1" 0 envCheckNo
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_ENVIRONMENT_PAGE}" "Field 2" "State" "1"
- goto showEnvPage
- envCheckNo:
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_ENVIRONMENT_PAGE}" "Field 2" "State" "0"
-
- showEnvPage:
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_ENVIRONMENT_PAGE}"
- FunctionEnd
-
- Function ModuleEnvironmentPageExit
- !insertmacro MUI_INSTALLOPTIONS_READ $MODULE_ENVIRONMENT_SET "${MODULE_ENVIRONMENT_PAGE}" "Field 2" "State"
- FunctionEnd
-
- Function RegisterQtEnvVariables
- exch $2 ; the installation path = QTDIR
- push $0 ; I think WriteEnvStr mixes up $0 and $1
- push $1
-
- WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "QtEnvSet" $MODULE_ENVIRONMENT_SET
-
- strcmp $MODULE_ENVIRONMENT_SET "1" 0 noenv
-
- StrCmp $MODULE_ENVIRONMENT_OLD "0" +4
- DetailPrint "Removing $MODULE_ENVIRONMENT_OLD\bin from PATH"
- push "$MODULE_ENVIRONMENT_OLD\bin"
- Call RemoveFromPath ; remove old qtdir
-
- DetailPrint "Setting QTDIR to $2"
- push "QTDIR"
- push $2
- Call WriteEnvStr ; set the QTDIR
-
- DetailPrint "Adding $2\bin to PATH"
- push "$2\bin"
- Call AddToPath ; set the PATH
-
-
- push "QMAKESPEC"
- push ${INSTALL_COMPILER}
- Call GetMkSpec
- pop $0
- DetailPrint "Setting QMAKESPEC to $0"
- push $0
- Call WriteEnvStr ; set the QMAKESPEC
-
- noenv:
- pop $1
- pop $0
- pop $2
- FunctionEnd
-
- Function un.RegisterQtEnvVariables
- exch $0 ; QTDIR
- push $1
-
- ClearErrors
- ReadRegDWORD $MODULE_ENVIRONMENT_SET SHCTX "$PRODUCT_UNIQUE_KEY" "QtEnvSet"
- intcmp $MODULE_ENVIRONMENT_SET 0 noenv
-
- DetailPrint "Removing $0\bin from the PATH"
- push "$0\bin"
- Call un.RemoveFromPath ; removes qt from the path
-
- ;Check if QTDIR is equal to installdir
- ExpandEnvStrings $1 "%QTDIR%"
-
- StrCmp "$0" "$1" removeenv
- StrCmp "$0\" "$1" removeenv
- StrCmp "$0" "$1\" removeenv
- Goto noenv
-
- removeenv:
- DetailPrint "Removing QTDIR"
- push "QTDIR"
- Call un.DeleteEnvStr ; removes QTDIR
-
- DetailPrint "Removing QMAKESPEC"
- push "QMAKESPEC"
- Call un.DeleteEnvStr ; removes QMAKESPEC
-
- noenv:
- pop $1
- pop $0
- FunctionEnd
-!macroend
-!macro ENVIRONMENT_DESCRIPTION
-!macroend
-!macro ENVIRONMENT_STARTUP
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_ENVIRONMENT_PAGE}"
- push $0
- ExpandEnvStrings $0 "%QTDIR%"
-
- StrCmp $0 "%QTDIR%" +4
- strcpy $MODULE_ENVIRONMENT_SET "0" ;QTDIR exists
- strcpy $MODULE_ENVIRONMENT_OLD $0
- Goto +3
- strcpy $MODULE_ENVIRONMENT_SET "1" ;no QTDIR
- strcpy $MODULE_ENVIRONMENT_OLD "0"
-
- Call IsNT
- pop $0
- strcmp "$0" "1" +2
- strcpy $MODULE_ENVIRONMENT_SET "0"
- pop $0
-!macroend
-!macro ENVIRONMENT_FINISH
-!macroend
-!macro ENVIRONMENT_UNSTARTUP
-!macroend
-!macro ENVIRONMENT_UNINSTALL
- Section -un.ModuleEnvironmentRegister
- push "${MODULE_ENVIRONMENT_QTDIR}"
- call un.RegisterQtEnvVariables
- SectionEnd
-!macroend
-!macro ENVIRONMENT_UNFINISH
-!macroend
-!else ;MODULE_ENVIRONMENT
-!macro ENVIRONMENT_INITIALIZE
-!macroend
-!macro ENVIRONMENT_SECTIONS
-!macroend
-!macro ENVIRONMENT_DESCRIPTION
-!macroend
-!macro ENVIRONMENT_STARTUP
-!macroend
-!macro ENVIRONMENT_FINISH
-!macroend
-!macro ENVIRONMENT_UNSTARTUP
-!macroend
-!macro ENVIRONMENT_UNINSTALL
-!macroend
-!macro ENVIRONMENT_UNFINISH
-!macroend
-!endif ;MODULE_ENVIRONMENT
-
diff --git a/tools/installer/nsis/modules/mingw.nsh b/tools/installer/nsis/modules/mingw.nsh
deleted file mode 100644
index 8694790..0000000
--- a/tools/installer/nsis/modules/mingw.nsh
+++ /dev/null
@@ -1,670 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifdef MODULE_MINGW
-!macro MINGW_INITIALIZE
-!include "includes\qtcommon.nsh"
-!ifndef MODULE_MINGW_NAME
- !define MODULE_MINGW_NAME "Qt"
-!endif
-!ifndef MODULE_MINGW_VERSION
- !define MODULE_MINGW_VERSION "${PRODUCT_VERSION}"
-!endif
-!ifndef MODULE_MINGW_BUILDDIR
- !error "MODULE_MINGW_BUILDDIR not defined!"
-!endif
-!ifndef MODULE_MINGW_ROOT
- !error "MODULE_MINGW_ROOT not defined!"
-!endif
-!ifndef MODULE_MINGW_URL
- !define MODULE_MINGW_URL "ftp://ftp.qt.nokia.com/misc"
-!endif
-!ifndef MODULE_MINGW_COMPILERVERSION
- !define MODULE_MINGW_COMPILERVERSION "3.4.2"
-!endif
-!ifndef MODULE_MINGW_LICENSE
- !define MODULE_MINGW_LICENSE "C:\MinGW\COPYING"
-!endif
-
-!define MODULE_MINGW_DOWNLOADPAGE "gwdownload.ini"
-!define MODULE_MINGW_MIRRORPAGE "gwmirror.ini"
-!define MODULE_MINGW_RUNTIME_LIB "mingw*.dll"
-!define MODULE_MINGW_DOWNLOADFILE "MinGW-${MODULE_MINGW_COMPILERVERSION}"
-
-var MODULE_MINGW_DOWNLOAD
-var MODULE_MINGW_SOURCEDOWNLOAD
-var MODULE_MINGW_MIRRORS
-var MODULE_MINGW_INSTOK
-var MODULE_MINGW_COMPILERINSTDIR
-
-LangString ModuleMinGWTitle ${LANG_ENGLISH} "MinGW Installation"
-LangString ModuleMinGWDescription ${LANG_ENGLISH} "You need MinGW to be able to compile Qt applications."
-LangString ModuleMinGWMirrorTitle ${LANG_ENGLISH} "MinGW Download Mirror"
-LangString ModuleMinGWMirrorDescription ${LANG_ENGLISH} "Select a download mirror."
-
-Page custom ModuleMinGWDownloadPageEnter ModuleMinGWDownloadPageExit
-!define MUI_PAGE_CUSTOMFUNCTION_PRE ModuleMinGWLicensePageEnter
-!define MUI_PAGE_HEADER_TEXT "MinGW License Agreement"
-!define MUI_PAGE_HEADER_SUBTEXT "Please review the license terms before installing MinGW."
-!define MUI_LICENSEPAGE_TEXT_TOP "MinGW License Information"
-!insertmacro MUI_PAGE_LICENSE "${MODULE_MINGW_LICENSE}"
-Page custom ModuleMinGWMirrorPageEnter ModuleMinGWMirrorPageExit
-
-!include "includes\qtenv.nsh"
-!macroend
-
-!macro MINGW_SECTIONS
-Section "${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}" MINGW_SEC01
- strcmp "$MINGW_INSTDIR" "" 0 +5
- StrCpy $MINGW_INSTDIR "$INSTDIR\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}"
- push $MINGW_INSTDIR
- call MakeQtDirectory
- pop $MINGW_INSTDIR
-
- WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled" 1
-
- SetOutPath "$MINGW_INSTDIR"
- SetOverwrite ifnewer
- !insertmacro MODULE_MINGW_INSTALLFILES
-
- push "$MINGW_INSTDIR\bin"
- call AddStartmenuApplication
-
- push ${MODULE_MINGW_BUILDDIR}
- push "$MINGW_INSTDIR"
- call PatchPrlFiles
-
- IfFileExists "$MINGW_INSTDIR\.qmake.cache" 0 +5
- push "$MINGW_INSTDIR\.qmake.cache"
- push ${MODULE_MINGW_BUILDDIR}
- push $MINGW_INSTDIR
- call PatchPath
-
- IfFileExists "$MINGW_INSTDIR\mkspecs\default\qmake.conf" 0 +5
- push "$MINGW_INSTDIR\mkspecs\default\qmake.conf"
- push ${MODULE_MINGW_BUILDDIR}
- push $MINGW_INSTDIR
- call PatchPath
-
- push $MINGW_INSTDIR
- call PatchCommonBinaryFiles
-
- push $MINGW_INSTDIR
- call PatchLicenseInformation
-
- WriteRegStr SHCTX "SOFTWARE\Trolltech\Common\${MODULE_MINGW_VERSION}\$LICENSE_PRODUCT" "Key" "$LICENSE_KEY"
-
- push $MINGW_INSTDIR
- call ModuleMinGWMakeEnvFile
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} Command Prompt.lnk" "%COMSPEC%" '/k "$MINGW_INSTDIR\bin\qtvars.bat"'
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} (Build Debug Libraries).lnk" "%COMSPEC%" '/k "$MINGW_INSTDIR\bin\qtvars.bat compile_debug"'
-
- push $0
- strcmp $MODULE_MINGW_DOWNLOAD "no" DoneMinGWInstall
- DetailPrint "Installing MinGW into $MODULE_MINGW_COMPILERINSTDIR"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWInstDir" "$MODULE_MINGW_COMPILERINSTDIR"
- nsExec::ExecToLog '"$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe" /S /D=$MODULE_MINGW_COMPILERINSTDIR'
- pop $0
- strcmp $MODULE_MINGW_SOURCEDOWNLOAD "no" DoneMinGWInstall
- DetailPrint "Installing MinGW sources into $MODULE_MINGW_COMPILERINSTDIR\src"
- WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWSources" 1
- nsExec::ExecToLog '"$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}-src.exe" /S /D=$MODULE_MINGW_COMPILERINSTDIR\src'
- pop $0
- DoneMinGWInstall:
- pop $0
-
- DetailPrint "Copying MinGW runtime..."
- SetDetailsPrint none
- CopyFiles /SILENT "$MODULE_MINGW_COMPILERINSTDIR\bin\${MODULE_MINGW_RUNTIME_LIB}" "$MINGW_INSTDIR\bin"
- SetDetailsPrint both
-SectionEnd
-
-Function EnableButtons
- Push $0
- GetDlgItem $0 $HWNDPARENT 3
- EnableWindow $0 1
- GetDlgItem $0 $HWNDPARENT 1
- EnableWindow $0 1
- GetDlgItem $0 $HWNDPARENT 2
- EnableWindow $0 1
- Pop $0
-FunctionEnd
-
-Function DisableButtons
- Push $0
- GetDlgItem $0 $HWNDPARENT 3
- EnableWindow $0 0
- GetDlgItem $0 $HWNDPARENT 1
- EnableWindow $0 0
- GetDlgItem $0 $HWNDPARENT 2
- EnableWindow $0 0
- Pop $0
-FunctionEnd
-
-Function ModuleMinGWDownloadPageEnter
- strcmp $MODULE_MINGW_INSTOK "yes" 0 +2
- Abort
-
- !insertmacro MUI_HEADER_TEXT "$(ModuleMinGWTitle)" "$(ModuleMinGWTitleDescription)"
- Call UpdateCtrlStates
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_MINGW_DOWNLOADPAGE}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State" "0"
-FunctionEnd
-
-Function ModuleMinGWMirrorPageEnter
- strcmp $MODULE_MINGW_DOWNLOAD "yes" +2
- Abort
-
- !insertmacro MUI_HEADER_TEXT "$(ModuleMinGWMirrorTitle)" "$(ModuleMinGWMirrorDescription)"
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_MINGW_MIRRORPAGE}"
-FunctionEnd
-
-Function ModuleMinGWLicensePageEnter
- strcmp $MODULE_MINGW_DOWNLOAD "yes" +2
- Abort
-FunctionEnd
-
-Function UpdateCtrlStates
- push $0
- push $1
- push $2
-
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State"
- intop $0 $0 !
- FindWindow $2 "#32770" "" $HWNDPARENT
- GetDlgItem $1 $2 1205
- EnableWindow $1 $0
- GetDlgItem $1 $2 1202
- EnableWindow $1 $0
- GetDlgItem $1 $2 1203
- EnableWindow $1 $0
-
- intop $0 $0 !
- GetDlgItem $1 $2 1206
- EnableWindow $1 $0
- GetDlgItem $1 $2 1207
- EnableWindow $1 $0
- GetDlgItem $1 $2 1208
- EnableWindow $1 $0
-
- GetDlgItem $1 $HWNDPARENT 1
- IntCmp $0 0 +3
- SendMessage $1 ${WM_SETTEXT} 0 "STR:Next >"
- Goto +2
- SendMessage $1 ${WM_SETTEXT} 0 "STR:Install"
-
- pop $2
- pop $1
- pop $0
-FunctionEnd
-
-Function ModuleMinGWDownloadPageExit
- push $0
- push $1
-
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Settings" "State"
- strcmp "$0" "8" 0 NoNotify
- Call UpdateCtrlStates
- abort
- NoNotify:
-
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State"
- strcmp "$0" "0" noDownload doDownload
-
-doDownload:
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 6" "State"
- strcmp $0 "" 0 +3
- MessageBox MB_ICONEXCLAMATION|MB_OK "You need to specify an installation directory!"
- goto tryAgain
-
- strcpy $MODULE_MINGW_COMPILERINSTDIR $0
- strcpy $MODULE_MINGW_DOWNLOAD "yes"
- CreateDirectory "$MINGW_INSTDIR\downloads"
-
- Call DisableButtons
- InetLoad::load /BANNER "Mirror Download" "Downloading mirrors from server..." "${MODULE_MINGW_URL}/${MODULE_MINGW_DOWNLOADFILE}.mirrors" "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" /END
- Pop $1 ;Get the return value
- Call EnableButtons
-
- StrCmp $1 "OK" +3
- MessageBox MB_ICONEXCLAMATION|MB_RETRYCANCEL "Was not able to download mirror list ($1)." IDRETRY tryAgain 0
- Quit
-
- call ModuleMinGWReadMirrors
- !insertmacro MUI_INSTALLOPTIONS_WRITE ${MODULE_MINGW_MIRRORPAGE} "Field 3" "ListItems" "$MODULE_MINGW_MIRRORS"
- goto done
-
-noDownload:
- strcpy $MODULE_MINGW_DOWNLOAD "no"
- strcpy $MODULE_MINGW_SOURCEDOWNLOAD "no"
- call ModuleMinGWChecking
- strcmp $MODULE_MINGW_INSTOK "yes" done
- MessageBox MB_ICONEXCLAMATION|MB_YESNO "There is a problem with your MinGW installation:$\r$\n$MODULE_MINGW_INSTOK$\r$\nDo you still want to continue? (Your installation may not work)" IDNO tryAgain
- goto done
-
-tryAgain:
- pop $1
- pop $0
- Abort
-
-done:
- pop $1
- pop $0
-FunctionEnd
-
-Function ModuleMinGWMirrorPageExit
- push $0
- push $2
- push $1
-
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_MIRRORPAGE}" "Field 3" "State"
- strcmp "$0" "" 0 +3
- MessageBox MB_ICONEXCLAMATION|MB_OK "You must select a mirror to download from!"
- goto tryAgain
-
- push $0
- call ModuleMinGWGetMirror
- pop $0
-
- Call DisableButtons
- InetLoad::load /BANNER "MinGW Download" "Downloading MinGW from server..." "$0/${MODULE_MINGW_DOWNLOADFILE}.exe" "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe" /END
- Pop $2 ;get the return value
- Call EnableButtons
-
- StrCmp $2 "OK" +3
- MessageBox MB_ICONEXCLAMATION|MB_OK "Was not able to download MinGW ($2). Please try another mirror."
- Goto tryAgain
-
- !insertmacro MUI_INSTALLOPTIONS_READ $1 "${MODULE_MINGW_MIRRORPAGE}" "Field 2" "State"
- strcmp "$1" "0" done
-
- Call DisableButtons
- InetLoad::load /BANNER "MinGW Sources Download" "Downloading MinGW Sources from server..." "$0/${MODULE_MINGW_DOWNLOADFILE}-src.exe" "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}-src.exe" /END
- Pop $2
- Call EnableButtons
-
- strcpy $MODULE_MINGW_SOURCEDOWNLOAD "yes"
-
- StrCmp $2 "OK" +3
- MessageBox MB_ICONEXCLAMATION|MB_RETRYCANCEL "Was not able to download MinGW sources ($2). Please try another mirror?" IDRETRY tryAgain 0
- Quit
-
- goto done
-
-tryAgain:
- pop $1
- pop $2
- pop $0
- Abort
-
-done:
- pop $1
- pop $2
- pop $0
-FunctionEnd
-
-Function ModuleMinGWReadMirrors
- push $0 ;file handle
- push $1 ;line
-
- ClearErrors
- FileOpen $0 "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" r
- IfErrors done
-
- strcpy $MODULE_MINGW_MIRRORS ""
-
-nextline:
- FileRead $0 $1
- IfErrors done
- push $1
- call ModuleMinGWRemoveNewLine
- pop $1
- strcpy $MODULE_MINGW_MIRRORS "$MODULE_MINGW_MIRRORS|$1"
- FileRead $0 $1 ;Jump over next line
- IfErrors done
- goto nextline
-
-done:
- FileClose $0
- strlen $1 $MODULE_MINGW_MIRRORS
- intcmp $1 0 failed failed cleanup
-
-failed:
- MessageBox MB_ICONSTOP|MB_OK "Unable to parse mirror list, exiting!"
- Quit
-
-cleanup:
- pop $1
- pop $0
-FunctionEnd
-
-#this just removes the last two chars
-Function ModuleMinGWRemoveNewLine
-exch $0
-push $1
-push $2
-
-strlen $1 $0
-intop $1 $1 - 1
-strcpy $2 $0 1 $1 ;get last char
-
-strcmp "$2" "$\n" 0 +2
-intop $1 $1 - 1
-
-strcpy $2 $0 1 $1 ;get last char
-strcmp "$2" "$\r" 0 +2
-intop $1 $1 - 1
-
-intop $1 $1 + 1
-strcpy $0 $0 $1
-
-pop $2
-pop $1
-exch $0
-FunctionEnd
-
-#push serverid
-#call GetMirror
-#pop server
-Function ModuleMinGWGetMirror
- exch $1 ;id
- push $0 ;file handle
- push $2 ;line
- push $3 ;tmp
-
- strcpy $3 ""
-
- ClearErrors
- FileOpen $0 "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" r
- IfErrors done
-
-nextline:
- FileRead $0 $2
- IfErrors done
- push $2
- call ModuleMinGWRemoveNewLine
- pop $2
- strcmp $1 $2 0 nextline
- FileRead $0 $3
- IfErrors done
- push $3
- call ModuleMinGWRemoveNewLine
- pop $3
-
-done:
- strcpy $1 $3
- FileClose $0
- strlen $2 $1
- intcmp $2 0 failed failed cleanup
-
-failed:
- MessageBox MB_ICONSTOP|MB_OK "Unable to parse mirror list, exiting!"
- Quit
-
-cleanup:
- pop $3
- pop $2
- pop $0
- exch $1
-FunctionEnd
-
-Function ModuleMinGWChecking
- push $0
-
- ### update with plugin
- strcpy $MODULE_MINGW_INSTOK "yes"
- strcpy $MODULE_MINGW_COMPILERINSTDIR "C:\MinGW" ;fallback dir
-
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 3" "State"
- strcmp "$0" "" +2
- strcpy $MODULE_MINGW_COMPILERINSTDIR $0
-
- IfFileExists "$MODULE_MINGW_COMPILERINSTDIR\bin\g++.exe" +3 0
- strcpy $MODULE_MINGW_INSTOK "g++ not found in $MODULE_MINGW_COMPILERINSTDIR\bin\"
- goto DoneChecking
-
-!ifndef OPENSOURCE_BUILD
- ; check w32api.h
- push $MODULE_MINGW_COMPILERINSTDIR
- qtnsisext::HasValidWin32Library
- pop $0
- strcmp "$0" "1" +3 0
- strcpy $MODULE_MINGW_INSTOK "The installer could not find a valid $MODULE_MINGW_COMPILERINSTDIR\include\w32api.h$\r$\n(The supported version is 3.2)"
- goto DoneChecking
-
- ; check version
- push $MODULE_MINGW_COMPILERINSTDIR
- qtnsisext::GetMinGWVersion
- pop $0
- strcmp "$0" "${MODULE_MINGW_COMPILERVERSION}" +3 0
- strcpy $MODULE_MINGW_INSTOK "g++ version found does not match ${MODULE_MINGW_COMPILERVERSION} (Found version $0)."
- goto DoneChecking
-!endif
-
-DoneChecking:
- pop $0
-FunctionEnd
-
-#
-# creates a qtvars.bat file in $QTDIR\bin
-# push "c:\qt" #QTDIR
-# call MakeQtVarsFile
-#
-Function ModuleMinGWMakeEnvFile
- push $0 ; file handle
-
- ClearErrors
- FileOpen $0 "$MINGW_INSTDIR\bin\qtvars.bat" w
- IfErrors WriteMakeFile
- FileWrite $0 "@echo off$\r$\n"
- FileWrite $0 "rem$\r$\n"
- FileWrite $0 "rem This file is generated$\r$\n"
- FileWrite $0 "rem$\r$\n"
- FileWrite $0 "$\r$\n"
- FileWrite $0 "echo Setting up a MinGW/Qt only environment...$\r$\n"
- FileWrite $0 "echo -- QTDIR set to $MINGW_INSTDIR$\r$\n"
- FileWrite $0 "echo -- PATH set to $MINGW_INSTDIR\bin$\r$\n"
- FileWrite $0 "echo -- Adding $MODULE_MINGW_COMPILERINSTDIR\bin to PATH$\r$\n"
- FileWrite $0 "echo -- Adding %SystemRoot%\System32 to PATH$\r$\n"
- FileWrite $0 "echo -- QMAKESPEC set to win32-g++$\r$\n"
- FileWrite $0 "$\r$\n"
- FileWrite $0 "set QTDIR=$MINGW_INSTDIR$\r$\n"
- FileWrite $0 "set PATH=$MINGW_INSTDIR\bin$\r$\n"
- FileWrite $0 "set PATH=%PATH%;$MODULE_MINGW_COMPILERINSTDIR\bin$\r$\n"
- FileWrite $0 "set PATH=%PATH%;%SystemRoot%\System32$\r$\n"
- FileWrite $0 "set QMAKESPEC=win32-g++$\r$\n"
- FileWrite $0 "$\r$\n"
-
- FileWrite $0 'if not "%1"=="compile_debug" goto END$\r$\n'
- FileWrite $0 "cd %QTDIR%$\r$\n"
- FileWrite $0 "echo This will configure and compile qt in debug.$\r$\n"
- FileWrite $0 "echo The release libraries will not be recompiled.$\r$\n"
- FileWrite $0 "pause$\r$\n"
- FileWrite $0 "configure -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg$\r$\n"
- FileWrite $0 "cd %QTDIR%\src$\r$\n"
- FileWrite $0 "qmake$\r$\n"
- FileWrite $0 "mingw32-make debug$\r$\n"
- FileWrite $0 ":END$\r$\n"
- FileClose $0
-
-WriteMakeFile:
- ClearErrors
- FileOpen $0 "$MINGW_INSTDIR\bin\make.bat" w
- IfErrors done
- FileWrite $0 "@echo off$\r$\n"
- FileWrite $0 "mingw32-make %*$\r$\n"
- FileClose $0
-
-done:
-; pop $1
- pop $0
-FunctionEnd
-
-Function MINGW_ValidateDirectoryFunc
- push "${MODULE_MINGW_BUILDDIR}"
- push $MINGW_INSTDIR
- call CommonCheckDirectory
-FunctionEnd
-!macroend
-
-!macro MINGW_DESCRIPTION
- !insertmacro MUI_DESCRIPTION_TEXT ${MINGW_SEC01} "This installs ${MODULE_MINGW_NAME} version ${MODULE_MINGW_VERSION} on your system."
-!macroend
-
-!macro MINGW_STARTUP
- !ifndef MODULE_MINGW_NODEFAULT
- SectionSetFlags ${MINGW_SEC01} 17
- !endif
- strcpy $MINGW_INSTDIR "C:\Qt\${MODULE_MINGW_VERSION}"
- push $MINGW_INSTDIR
- call MakeQtDirectory
- pop $MINGW_INSTDIR
-
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_MINGW_DOWNLOADPAGE}"
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_MINGW_MIRRORPAGE}"
-
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 3" "State" "C:\MinGW"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 6" "State" "C:\MinGW"
-
- strcpy $MODULE_MINGW_DOWNLOAD "no"
- strcpy $MODULE_MINGW_SOURCEDOWNLOAD "no"
-!macroend
-
-!macro MINGW_FINISH
-!macroend
-
-!macro MINGW_RUN_FUNCTION
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled"
- intcmp $0 1 0 DoneRunFunctionMINGW
-
- IfFileExists "$MINGW_INSTDIR\bin\qtdemo.exe" 0 +2
- Exec '$MINGW_INSTDIR\bin\qtdemo.exe'
- goto DoneRunFunction ;don't run more applications
-
- DoneRunFunctionMINGW:
-!macroend
-
-!macro MINGW_README_FUNCTION
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled"
- intcmp $0 1 0 DoneReadmeFunctionMINGW
-
- IfFileExists "$MINGW_INSTDIR\bin\assistant.exe" 0 +2
- Exec '$MINGW_INSTDIR\bin\assistant.exe'
- goto DoneReadmeFunction ;don't run more applications
-
- DoneReadmeFunctionMINGW:
-!macroend
-
-!macro MINGW_UNSTARTUP
- strcmp "$MINGW_INSTDIR" "" 0 +5
- StrCpy $MINGW_INSTDIR "$INSTDIR\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}"
- push $MINGW_INSTDIR
- call un.MakeQtDirectory
- pop $MINGW_INSTDIR
-
- !insertmacro ConfirmOnRemove "MINGWInstalled" "- ${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} in $MINGW_INSTDIR"
-!macroend
-
-!macro MINGW_UNINSTALL
-Section un.ModuleMinGW
- push $0
- push $1
-
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled"
- intcmp $0 1 0 DoneUnInstallMINGW
-
- Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors"
-
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWSources"
- strcmp $0 "" MinGWSourcesUninstallDone ;not installed
- Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}-src.exe"
- nsExec::ExecToLog '"$0\src\uninst.exe"'
- pop $1
- MinGWSourcesUninstallDone:
-
- ReadRegStr $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWInstDir"
- strcmp $0 "" MinGWUninstallDone ;not installed
- Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe"
- nsExec::ExecToLog '"$0\uninst.exe"'
- pop $1
- MinGWUninstallDone:
-
- DetailPrint "Removing start menu shortcuts"
- call un.RemoveStartmenuApplication
- Delete "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} Command Prompt.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} (Build Debug Libraries).lnk"
-
- Delete "$MINGW_INSTDIR\bin\${MODULE_MINGW_RUNTIME_LIB}"
- Delete "$MINGW_INSTDIR\bin\make.bat"
- Delete "$MINGW_INSTDIR\bin\qtvars.bat"
-
- !insertmacro MODULE_MINGW_REMOVE "$MINGW_INSTDIR"
- RMDir $MINGW_INSTDIR ;removes it if empty
-
- DoneUnInstallMINGW:
- pop $1
- pop $0
-SectionEnd
-!macroend
-!macro MINGW_UNFINISH
-!macroend
-!else ;MODULE_MINGW
-!macro MINGW_INITIALIZE
-!macroend
-!macro MINGW_SECTIONS
-!macroend
-!macro MINGW_DESCRIPTION
-!macroend
-!macro MINGW_STARTUP
-!macroend
-!macro MINGW_FINISH
-!macroend
-!macro MINGW_RUN_FUNCTION
-!macroend
-!macro MINGW_README_FUNCTION
-!macroend
-!macro MINGW_UNSTARTUP
-!macroend
-!macro MINGW_UNINSTALL
-!macroend
-!macro MINGW_UNFINISH
-!macroend
-!endif ;MODULE_MINGW
-
diff --git a/tools/installer/nsis/modules/opensource.nsh b/tools/installer/nsis/modules/opensource.nsh
deleted file mode 100644
index fbd6ef7..0000000
--- a/tools/installer/nsis/modules/opensource.nsh
+++ /dev/null
@@ -1,94 +0,0 @@
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifdef MODULE_OPENSOURCE
-!macro OPENSOURCE_INITIALIZE
- !define MODULE_OPENSOURCE_PAGE "opensource.ini"
- page custom ModuleOpenSourceShowPage
-!macroend
-!macro OPENSOURCE_SECTIONS
- Section -ModuleOpenSourceSection
- !ifdef MODULE_OPENSOURCE_ROOT
- SetOutPath "$INSTDIR"
- File "${MODULE_OPENSOURCE_ROOT}\OPENSOURCE-NOTICE.TXT"
- !endif
- SectionEnd
-
- Function ModuleOpenSourceShowPage
- !insertmacro MUI_HEADER_TEXT "Open Source Edition" " "
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_OPENSOURCE_PAGE}"
- strcpy "$LICENSEE" "Open Source"
- strcpy "$LICENSE_PRODUCT" "OpenSource"
- FunctionEnd
-!macroend
-!macro OPENSOURCE_DESCRIPTION
-!macroend
-!macro OPENSOURCE_STARTUP
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_OPENSOURCE_PAGE}"
-!macroend
-!macro OPENSOURCE_FINISH
-!macroend
-!macro OPENSOURCE_UNSTARTUP
-!macroend
-!macro OPENSOURCE_UNINSTALL
- Section -un.ModuleOpenSourceSection
- Delete "$SMPROGRAMS\$STARTMENU_STRING\OpenSource Notice.lnk"
- SectionEnd
-!macroend
-!macro OPENSOURCE_UNFINISH
-!macroend
-!else ;MODULE_OPENSOURCE
-!macro OPENSOURCE_INITIALIZE
-!macroend
-!macro OPENSOURCE_SECTIONS
-!macroend
-!macro OPENSOURCE_DESCRIPTION
-!macroend
-!macro OPENSOURCE_STARTUP
-!macroend
-!macro OPENSOURCE_FINISH
-!macroend
-!macro OPENSOURCE_UNSTARTUP
-!macroend
-!macro OPENSOURCE_UNINSTALL
-!macroend
-!macro OPENSOURCE_UNFINISH
-!macroend
-!endif ;MODULE_OPENSOURCE
-
diff --git a/tools/installer/nsis/modules/registeruiext.nsh b/tools/installer/nsis/modules/registeruiext.nsh
deleted file mode 100644
index f895bde..0000000
--- a/tools/installer/nsis/modules/registeruiext.nsh
+++ /dev/null
@@ -1,207 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; UI Extension Module
-
-!ifdef MODULE_REGISTERUIEXT
-
-;------------------------------------------------------------------------------------------------
-!macro REGISTERUIEXT_INITIALIZE
- !include "includes\system.nsh"
-
- !ifndef MODULE_REGISTERUIEXT_QTDIR
- !ifdef MODULE_MINGW
- !define MODULE_REGISTERUIEXT_QTDIR $MINGW_INSTDIR
- !endif
-
- !ifdef MODULE_MSVC
- !define MODULE_REGISTERUIEXT_QTDIR $MSVC_INSTDIR
- !endif
- !endif
-
- !define MODULE_REGISTERUIEXT_INTERNAL_DESC "Trolltech.DesignerForm"
- !define MODULE_REGISTERUIEXT_DESC_DESIGNER "Open with Qt Designer"
- !define MODULE_REGISTERUIEXT_DESC_DEVENV "Open with Visual Studio .NET"
- !define MODULE_REGISTERUIEXT_FILE_DESC "Qt Designer File"
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_SECTIONS
-
-Function GetSelectedVSIP
- Push $0
- Push $1
-
- StrCpy $0 ""
-!ifdef MODULE_VSIP
-!ifdef VSIP_SEC01
- SectionGetFlags ${VSIP_SEC01} $1
- IntOp $1 $1 & 1
- IntCmp $1 0 +2
- StrCpy $0 "7.1"
-!endif
-!ifdef VSIP_SEC02
- SectionGetFlags ${VSIP_SEC02} $1
- IntOp $1 $1 & 1
- IntCmp $1 0 +2
- StrCpy $0 "8.0"
-!endif
-!endif
-
- Pop $1
- Exch $0
-FunctionEnd
-
-SectionGroup "File Associations"
-Section "UI Files (*.ui)" REGISTERUIEXT_SEC01
- call ModuleRegisterUI
-SectionEnd
-SectionGroupEnd
-
-Function ModuleRegisterUI
- push $0
- push $1
-
- WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "UIExtRegistered" 1
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}" "" "${MODULE_REGISTERUIEXT_FILE_DESC}"
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell" "" "open"
-
- Call GetSelectedVSIP
- Pop $1
-
- StrCmp "$1" "" 0 RegisterVSIP
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\open" "" "${MODULE_REGISTERUIEXT_DESC_DESIGNER}"
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\open\command" "" "${MODULE_REGISTERUIEXT_QTDIR}\bin\designer.exe $\"%1$\""
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\DefaultIcon" "" "${MODULE_REGISTERUIEXT_QTDIR}\bin\designer.exe,0"
- goto RegisterFinished
-
- RegisterVSIP:
- Push $1
- Call GetVSInstallationDir
- Pop $0
-
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\open" "" "${MODULE_REGISTERUIEXT_DESC_DEVENV}"
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\${MODULE_REGISTERUIEXT_DESC_DEVENV}\command" "" "$0\devenv.exe $\"%1$\""
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\DefaultIcon" "" "$VSIP_INSTDIR\ui.ico"
- RegisterFinished:
- WriteRegStr HKCR ".ui" "" "${MODULE_REGISTERUIEXT_INTERNAL_DESC}"
-
- pop $1
- pop $0
-FunctionEnd
-
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_DESCRIPTION
- !insertmacro MUI_DESCRIPTION_TEXT ${REGISTERUIEXT_SEC01} "This will associate the file extention .ui with the Qt GUI editor."
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_STARTUP
- StrCmp $RUNNING_AS_ADMIN "true" +2
- SectionSetFlags ${REGISTERUIEXT_SEC01} 16
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_FINISH
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_UNSTARTUP
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_UNINSTALL
-Function un.ModuleRegisterUI
- push $1
- ReadRegStr $1 HKCR ".ui" ""
- strcmp $1 "${MODULE_REGISTERUIEXT_INTERNAL_DESC}" 0 continue
- ; do not delete this key since a subkey openwithlist
- ; or open withprogid may exist
- WriteRegStr HKCR ".ui" "" ""
- continue:
- ; just delete it since nobody else is supposed to use it
- DeleteRegKey HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}"
-
- pop $1
-FunctionEnd
-
-Section -un.ModuleRegisterUIExtSection
- push $0
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "UIExtRegistered"
- intcmp $0 1 0 DoneUnRegister
- call un.ModuleRegisterUI
- DoneUnRegister:
- pop $0
-SectionEnd
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_UNFINISH
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!else
-!macro REGISTERUIEXT_INITIALIZE
-!macroend
-!macro REGISTERUIEXT_SECTIONS
-!macroend
-!macro REGISTERUIEXT_DESCRIPTION
-!macroend
-!macro REGISTERUIEXT_STARTUP
-!macroend
-!macro REGISTERUIEXT_FINISH
-!macroend
-!macro REGISTERUIEXT_UNSTARTUP
-!macroend
-!macro REGISTERUIEXT_UNINSTALL
-!macroend
-!macro REGISTERUIEXT_UNFINISH
-!macroend
-!endif
diff --git a/tools/installer/nsis/opensource.ini b/tools/installer/nsis/opensource.ini
deleted file mode 100644
index 4ce40bf..0000000
--- a/tools/installer/nsis/opensource.ini
+++ /dev/null
@@ -1,78 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Ini file generated by the HM NIS Edit IO designer.
-[Settings]
-NumFields=4
-
-[Field 1]
-Type=Label
-Text=You are now installing the Open Source Edition of Qt. It is licensed under GNU LGPL version 2.1 and the GPL version 3.
-Left=0
-Right=300
-Top=0
-Bottom=78
-
-[Field 2]
-Type=Link
-Text=http://qt.nokia.com/downloads
-State=http://qt.nokia.com/downloads
-Left=0
-Right=278
-Top=80
-Bottom=88
-
-[Field 3]
-Type=Link
-Text=http://qt.nokia.com/about
-State=http://qt.nokia.com/about
-Left=0
-Right=267
-Top=112
-Bottom=120
-
-[Field 4]
-Type=Label
-Text=To read more about Nokia's licensing, please go to:
-Left=0
-Right=278
-Top=97
-Bottom=105
-