summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Smith <msmith@trolltech.com>2009-05-19 09:52:23 (GMT)
committerMartin Smith <msmith@trolltech.com>2009-05-19 09:52:23 (GMT)
commiteaee2e3b70a5e245b82fa8991d7ff580e6e48132 (patch)
treea86fa7fd804f80c30fe996f711aa02f2c00500b9
parentffecdf0bf9f25f7ab9aa4f69e37507dd595fecea (diff)
parentba5fb9f05c891feac8ab69006189de1aaafebc18 (diff)
downloadQt-eaee2e3b70a5e245b82fa8991d7ff580e6e48132.zip
Qt-eaee2e3b70a5e245b82fa8991d7ff580e6e48132.tar.gz
Qt-eaee2e3b70a5e245b82fa8991d7ff580e6e48132.tar.bz2
Merge branch '4.5' of git@scm.dev.nokia.troll.no:qt/qt into 4.5
-rwxr-xr-x.hgignore4
-rwxr-xr-xconfigure1
-rw-r--r--demos/demos.pro2
-rw-r--r--dist/changes-4.5.225
-rw-r--r--doc/src/accessible.qdoc2
-rw-r--r--doc/src/deployment.qdoc2
-rw-r--r--doc/src/examples/codeeditor.qdoc2
-rw-r--r--doc/src/examples/containerextension.qdoc2
-rw-r--r--doc/src/examples/fortuneserver.qdoc2
-rw-r--r--doc/src/examples/ftp.qdoc4
-rw-r--r--doc/src/examples/icons.qdoc2
-rw-r--r--doc/src/examples/musicplayerexample.qdoc2
-rw-r--r--doc/src/examples/qobjectxmlmodel.qdoc2
-rw-r--r--doc/src/examples/tabdialog.qdoc2
-rw-r--r--doc/src/examples/tooltips.qdoc2
-rw-r--r--doc/src/examples/transformations.qdoc2
-rw-r--r--doc/src/examples/trollprint.qdoc2
-rw-r--r--doc/src/layout.qdoc6
-rw-r--r--doc/src/licenses.qdoc2
-rw-r--r--doc/src/mac-differences.qdoc2
-rw-r--r--doc/src/model-view-programming.qdoc2
-rw-r--r--doc/src/phonon-api.qdoc2
-rw-r--r--doc/src/porting4-overview.qdoc6
-rw-r--r--doc/src/q3valuelist.qdoc2
-rw-r--r--doc/src/qalgorithms.qdoc2
-rw-r--r--doc/src/qtdesigner.qdoc2
-rw-r--r--doc/src/qtscriptdebugger-manual.qdoc2
-rw-r--r--doc/src/snippets/code/doc_src_layout.qdoc6
-rw-r--r--doc/src/stylesheet.qdoc16
-rw-r--r--doc/src/tech-preview/known-issues.html2
-rw-r--r--doc/src/timers.qdoc4
-rw-r--r--doc/src/xquery-introduction.qdoc2
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2008/default_post.prf2
-rw-r--r--qmake/generators/xmloutput.cpp2
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog90
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontFallbackListQt.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp4
-rw-r--r--src/corelib/concurrent/qfuturewatcher.cpp2
-rw-r--r--src/corelib/io/qresource.cpp2
-rw-r--r--src/corelib/io/qsettings.cpp2
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp4
-rw-r--r--src/corelib/kernel/qobject.cpp30
-rw-r--r--src/corelib/kernel/qobject_p.h1
-rw-r--r--src/corelib/kernel/qsharedmemory.cpp4
-rw-r--r--src/corelib/kernel/qtimer.cpp2
-rw-r--r--src/corelib/tools/qbytearraymatcher.h2
-rw-r--r--src/corelib/tools/qrect.cpp2
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h21
-rw-r--r--src/corelib/tools/qsize.cpp2
-rw-r--r--src/corelib/tools/qstringlist.cpp2
-rw-r--r--src/gui/dialogs/qsidebar.cpp4
-rw-r--r--src/gui/dialogs/qwizard.cpp4
-rw-r--r--src/gui/dialogs/qwizard_win.cpp5
-rw-r--r--src/gui/dialogs/qwizard_win_p.h2
-rw-r--r--src/gui/embedded/qscreen_qws.cpp2
-rw-r--r--src/gui/embedded/qsoundqss_qws.cpp40
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp21
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.cpp14
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp13
-rw-r--r--src/gui/image/qicon.cpp2
-rw-r--r--src/gui/image/qimage.cpp2
-rw-r--r--src/gui/image/qpixmap.cpp2
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp2
-rw-r--r--src/gui/itemviews/qlistwidget.cpp2
-rw-r--r--src/gui/kernel/qapplication.cpp6
-rw-r--r--src/gui/kernel/qclipboard.cpp2
-rw-r--r--src/gui/kernel/qwidget.cpp23
-rw-r--r--src/gui/kernel/qwidget_mac.mm14
-rw-r--r--src/gui/painting/qcolor.cpp4
-rw-r--r--src/gui/painting/qpainterpath.cpp2
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp11
-rw-r--r--src/gui/painting/qtransform.cpp8
-rw-r--r--src/gui/text/qcssparser.cpp19
-rw-r--r--src/gui/text/qfontdatabase_x11.cpp2
-rw-r--r--src/gui/text/qfontengine_win.cpp6
-rw-r--r--src/gui/text/qtextformat.cpp2
-rw-r--r--src/gui/util/qundostack.cpp2
-rw-r--r--src/gui/widgets/qcalendarwidget.cpp2
-rw-r--r--src/gui/widgets/qlcdnumber.cpp2
-rw-r--r--src/gui/widgets/qlineedit.cpp2
-rw-r--r--src/gui/widgets/qmainwindow.cpp8
-rw-r--r--src/gui/widgets/qmdiarea.cpp2
-rw-r--r--src/gui/widgets/qmenu_p.h2
-rw-r--r--src/gui/widgets/qmenubar.cpp2
-rw-r--r--src/gui/widgets/qscrollarea.cpp2
-rw-r--r--src/gui/widgets/qsplitter.cpp2
-rw-r--r--src/gui/widgets/qtabwidget.cpp2
-rw-r--r--src/gui/widgets/qtoolbox.cpp2
-rw-r--r--src/network/access/qhttp.cpp2
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp20
-rw-r--r--src/network/access/qnetworkdiskcache.cpp6
-rw-r--r--src/network/kernel/qnetworkinterface.cpp2
-rw-r--r--src/network/socket/qabstractsocket.cpp2
-rw-r--r--src/opengl/qgl.cpp2
-rw-r--r--src/qt3support/network/q3http.cpp2
-rw-r--r--src/qt3support/network/q3urloperator.cpp2
-rw-r--r--src/qt3support/widgets/q3action.cpp2
-rw-r--r--src/qt3support/widgets/q3groupbox.cpp4
-rw-r--r--src/qt3support/widgets/q3popupmenu.cpp2
-rw-r--r--src/qt3support/widgets/q3progressbar.cpp2
-rw-r--r--src/qt3support/widgets/q3scrollview.cpp2
-rw-r--r--src/sql/kernel/qsqlquery.cpp2
-rw-r--r--src/svg/qsvghandler.cpp15
-rw-r--r--src/xml/sax/qxml.cpp2
-rw-r--r--src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp2
-rw-r--r--tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp53
-rw-r--r--tests/auto/qcolor/tst_qcolor.cpp21
-rw-r--r--tests/auto/qcssparser/tst_cssparser.cpp13
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp110
-rw-r--r--tests/auto/qimage/tst_qimage.cpp6
-rw-r--r--tests/auto/qitemmodel/tst_qitemmodel.cpp2
-rw-r--r--tests/auto/qitemview/tst_qitemview.cpp2
-rw-r--r--tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp3
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp52
-rw-r--r--tests/auto/qobjectrace/tst_qobjectrace.cpp89
-rw-r--r--tests/auto/qprinter/tst_qprinter.cpp5
-rw-r--r--tests/auto/qsharedpointer/tst_qsharedpointer.cpp137
-rw-r--r--tests/auto/qsidebar/tst_qsidebar.cpp9
-rw-r--r--tests/auto/uic/baseline/languagesdialog.ui.h12
-rw-r--r--tools/assistant/tools/assistant/bookmarkmanager.cpp77
-rw-r--r--tools/assistant/tools/assistant/contentwindow.cpp9
-rw-r--r--tools/assistant/tools/assistant/indexwindow.cpp9
-rw-r--r--tools/assistant/tools/assistant/mainwindow.cpp30
-rw-r--r--tools/designer/src/components/formeditor/formwindow_widgetstack.cpp6
-rw-r--r--tools/designer/src/components/formeditor/formwindow_widgetstack.h3
-rw-r--r--tools/designer/src/lib/shared/qdesigner_propertycommand.cpp4
-rw-r--r--tools/macdeployqt/shared/shared.cpp4
-rw-r--r--tools/porting/src/portingrules.cpp2
-rw-r--r--translations/assistant_de.qmbin20332 -> 18688 bytes
-rw-r--r--translations/assistant_de.ts110
-rw-r--r--translations/designer_de.qmbin152455 -> 151189 bytes
-rw-r--r--translations/designer_de.ts12
-rw-r--r--translations/linguist_de.qmbin47074 -> 45915 bytes
-rw-r--r--translations/linguist_de.ts365
-rw-r--r--translations/qt_de.qmbin181913 -> 181348 bytes
-rw-r--r--translations/qt_de.ts110
-rw-r--r--translations/qt_help_de.qmbin9381 -> 9583 bytes
-rw-r--r--translations/qt_help_de.ts2
146 files changed, 1319 insertions, 629 deletions
diff --git a/.hgignore b/.hgignore
index 784d507..eb6ff05 100755
--- a/.hgignore
+++ b/.hgignore
@@ -5,6 +5,8 @@ syntax: glob
*~
*.a
+*.la
+*.pc
*.core
*.moc
*.o
@@ -45,7 +47,9 @@ bin/rcc*
bin/uic*
bin/qcollectiongenerator
bin/qhelpgenerator
+bin/macdeployqt
tools/qdoc3/qdoc3*
+tools/macdeployqt/macchangeqt/macchangeqt
#configure.cache
mkspecs/default
mkspecs/qconfig.pri
diff --git a/configure b/configure
index bd77174..20bf457 100755
--- a/configure
+++ b/configure
@@ -2717,6 +2717,7 @@ if [ "$PLATFORM_MAC" = "yes" ]; then
# Build commmand line arguments we can pass to the compiler during configure tests
# by prefixing each arch with "-arch".
CFG_MAC_ARCHS_GCC_FORMAT="${CFG_MAC_ARCHS/x86/i386}"
+ CFG_MAC_ARCHS_GCC_FORMAT="${CFG_MAC_ARCHS/i386_64/x86_64}"
for ARCH in $CFG_MAC_ARCHS_GCC_FORMAT; do
MAC_ARCHS_COMMANDLINE="$MAC_ARCHS_COMMANDLINE -arch $ARCH"
done
diff --git a/demos/demos.pro b/demos/demos.pro
index 9248ab8..6084550 100644
--- a/demos/demos.pro
+++ b/demos/demos.pro
@@ -30,7 +30,7 @@ contains(QT_BUILD_PARTS, tools):{
wince*: SUBDIRS += demos_sqlbrowser
}
}
-contains(QT_CONFIG, phonon)!static:SUBDIRS += demos_mediaplayer
+contains(QT_CONFIG, phonon):!static:SUBDIRS += demos_mediaplayer
contains(QT_CONFIG, webkit):contains(QT_CONFIG, svg):SUBDIRS += demos_browser
# install
diff --git a/dist/changes-4.5.2 b/dist/changes-4.5.2
index a772bf7..a132028 100644
--- a/dist/changes-4.5.2
+++ b/dist/changes-4.5.2
@@ -33,6 +33,16 @@ Third party components
* Library *
****************************************************************************
+- QtWebKit
+ * Backported fixes for critical bugs, memory leaks, and crashes from
+ WebKit trunk (with revision numbers) related to:
+ Canvas (r40546, r41221 r41355, r42996, r43645)
+ Memory (r41527, r43764, r43828, r43830)
+ JavaScript (r39882, r40086, r40131, r40133)
+ Rendering (r41285, r41296, r41659, r42887)
+ Network (r41664, r42516)
+ Plugins (r41346)
+ Clipboard (r41360)
****************************************************************************
* Database Drivers *
@@ -78,7 +88,17 @@ Qt for Windows CE
- Designer
-
+ * [248769] Fixed a bug affecting the display of keyboard shortcuts in
+ the detailed view of the action editor.
+ * [251092] Fixed a bug preventing entering local file names for QUrl-type
+ properties on Windows.
+ * [251691] Fixed dynamic re-translation of table headers.
+ * [252251] Improved readability of the property editor when using the
+ KDE Obsidian Coast theme.
+ * [253236] Fixed a regression bug triggered by forms with a size policy
+ of 'Fixed' on the main cointainer.
+ * [253278] Made it possible to set QString-type properties using
+ QDesignerFormWindowCursor::setProperty().
- Linguist
- Linguist GUI
@@ -95,7 +115,8 @@ Qt for Windows CE
- uic
-
+ * [252333] Fixed a regression crash triggered by using icons with
+ different pixmaps for QIcon states.
- uic3
diff --git a/doc/src/accessible.qdoc b/doc/src/accessible.qdoc
index 090da86..ad9f4f1 100644
--- a/doc/src/accessible.qdoc
+++ b/doc/src/accessible.qdoc
@@ -527,7 +527,7 @@
on plugins, consult the plugins \l{How to Create Qt
Plugins}{overview document}.
- You can omit the the first macro unless you want the plugin
+ You can omit the first macro unless you want the plugin
to be statically linked with the application.
\section2 Implementing Interface Factories
diff --git a/doc/src/deployment.qdoc b/doc/src/deployment.qdoc
index bcfa93d..446c91b 100644
--- a/doc/src/deployment.qdoc
+++ b/doc/src/deployment.qdoc
@@ -1247,7 +1247,7 @@
\snippet doc/src/snippets/code/doc_src_deployment.qdoc 48
Then we update the source code in \c tools/plugandpaint/main.cpp
- to look for the the new plugins. After constructing the
+ to look for the new plugins. After constructing the
QApplication, we add the following code:
\snippet doc/src/snippets/code/doc_src_deployment.qdoc 49
diff --git a/doc/src/examples/codeeditor.qdoc b/doc/src/examples/codeeditor.qdoc
index 669ab45..d218d0d 100644
--- a/doc/src/examples/codeeditor.qdoc
+++ b/doc/src/examples/codeeditor.qdoc
@@ -67,7 +67,7 @@
QTextEdit because it is optimized for handling plain text. See
the QPlainTextEdit class description for details.
- QPlainTextEdit lets us add selections in addition to the the
+ QPlainTextEdit lets us add selections in addition to the
selection the user can make with the mouse or keyboard. We use
this functionality to highlight the current line. More on this
later.
diff --git a/doc/src/examples/containerextension.qdoc b/doc/src/examples/containerextension.qdoc
index a4fbcea..6d29cf6 100644
--- a/doc/src/examples/containerextension.qdoc
+++ b/doc/src/examples/containerextension.qdoc
@@ -305,7 +305,7 @@
MultiPageWidget class \l
{designer/containerextension/multipagewidget.cpp}{implementation}).
Finally, we implicitly force an update of the page's property
- sheet by calling the the
+ sheet by calling the
QDesignerPropertySheetExtension::setChanged() function.
\snippet examples/designer/containerextension/multipagewidgetplugin.cpp 4
diff --git a/doc/src/examples/fortuneserver.qdoc b/doc/src/examples/fortuneserver.qdoc
index e6a7f85..848a3a3 100644
--- a/doc/src/examples/fortuneserver.qdoc
+++ b/doc/src/examples/fortuneserver.qdoc
@@ -45,7 +45,7 @@
The Fortune Server example shows how to create a server for a simple
network service. It is intended to be run alongside the
- \l{network/fortuneclient}{Fortune Client} example or the the
+ \l{network/fortuneclient}{Fortune Client} example or the
\l{network/blockingfortuneclient}{Blocking Fortune Client} example.
\image fortuneserver-example.png Screenshot of the Fortune Server example
diff --git a/doc/src/examples/ftp.qdoc b/doc/src/examples/ftp.qdoc
index 9cc9cd1..7a74a37 100644
--- a/doc/src/examples/ftp.qdoc
+++ b/doc/src/examples/ftp.qdoc
@@ -172,7 +172,7 @@
no entries were found (in which case our \c addToList() function
would not have been called).
- Let's continue with the the \c addToList() slot:
+ Let's continue with the \c addToList() slot:
\snippet examples/network/ftp/ftpwindow.cpp 10
@@ -190,7 +190,7 @@
\snippet examples/network/ftp/ftpwindow.cpp 12
- \c cdToParent() is invoked when the the user requests to go to the
+ \c cdToParent() is invoked when the user requests to go to the
parent directory of the one displayed in the file list. After
changing the directory, we QFtp::List its contents.
diff --git a/doc/src/examples/icons.qdoc b/doc/src/examples/icons.qdoc
index 750ef2e..a81ddb9 100644
--- a/doc/src/examples/icons.qdoc
+++ b/doc/src/examples/icons.qdoc
@@ -479,7 +479,7 @@
QTableWidget::openPersistentEditor() function to create
comboboxes for the mode and state columns of the items.
- Due to the the connection between the table widget's \l
+ Due to the connection between the table widget's \l
{QTableWidget::itemChanged()}{itemChanged()} signal and the \c
changeIcon() slot, the new image is automatically converted into a
pixmap and made part of the set of pixmaps available to the icon
diff --git a/doc/src/examples/musicplayerexample.qdoc b/doc/src/examples/musicplayerexample.qdoc
index d23c1f1..9f04bf6 100644
--- a/doc/src/examples/musicplayerexample.qdoc
+++ b/doc/src/examples/musicplayerexample.qdoc
@@ -154,7 +154,7 @@
\snippet examples/phonon/musicplayer/mainwindow.cpp 5
- We move on to the the slots of \c MainWindow, starting with \c
+ We move on to the slots of \c MainWindow, starting with \c
addFiles():
\snippet examples/phonon/musicplayer/mainwindow.cpp 6
diff --git a/doc/src/examples/qobjectxmlmodel.qdoc b/doc/src/examples/qobjectxmlmodel.qdoc
index ce1dab6..37c66bc 100644
--- a/doc/src/examples/qobjectxmlmodel.qdoc
+++ b/doc/src/examples/qobjectxmlmodel.qdoc
@@ -71,7 +71,7 @@
The query engine can only traverse two dimensional trees, because an
XML document is always a two dimensional tree. If we want to add the
QMetaObject tree to the node model, we have to somehow flatten it
- into the the same plane as the QObject tree. This requires that the
+ into the same plane as the QObject tree. This requires that the
node model class must build an auxiliary data structure and make it
part of the two dimensional QObject node model. How to do this is
explained in \l{Including The QMetaObject Tree}.
diff --git a/doc/src/examples/tabdialog.qdoc b/doc/src/examples/tabdialog.qdoc
index c9500af..5394b82 100644
--- a/doc/src/examples/tabdialog.qdoc
+++ b/doc/src/examples/tabdialog.qdoc
@@ -91,7 +91,7 @@
\snippet examples/dialogs/tabdialog/tabdialog.cpp 1
\snippet examples/dialogs/tabdialog/tabdialog.cpp 3
- We arrange the the tab widget above the buttons in the dialog:
+ We arrange the tab widget above the buttons in the dialog:
\snippet examples/dialogs/tabdialog/tabdialog.cpp 4
diff --git a/doc/src/examples/tooltips.qdoc b/doc/src/examples/tooltips.qdoc
index 5daa2b2..78b350b 100644
--- a/doc/src/examples/tooltips.qdoc
+++ b/doc/src/examples/tooltips.qdoc
@@ -353,7 +353,7 @@
Whenever the user creates a new shape item, we want the new item
to appear at a random position, and we use the \c
randomItemPosition() function to calculate such a position. We
- make sure that the item appears within the the visible area of the
+ make sure that the item appears within the visible area of the
\c SortingBox widget, using the widget's current width and heigth
when calculating the random coordinates.
diff --git a/doc/src/examples/transformations.qdoc b/doc/src/examples/transformations.qdoc
index eabb803..58c8b80 100644
--- a/doc/src/examples/transformations.qdoc
+++ b/doc/src/examples/transformations.qdoc
@@ -208,7 +208,7 @@
After transforming the coordinate system, we draw the \c
RenderArea's shape, and then we restore the painter state using
- the the QPainter::restore() function (i.e. popping the saved state off
+ the QPainter::restore() function (i.e. popping the saved state off
the stack).
\snippet examples/painting/transformations/renderarea.cpp 7
diff --git a/doc/src/examples/trollprint.qdoc b/doc/src/examples/trollprint.qdoc
index 38251ee..489012e 100644
--- a/doc/src/examples/trollprint.qdoc
+++ b/doc/src/examples/trollprint.qdoc
@@ -142,7 +142,7 @@
We can easily determine which file must be changed because the
translator's "context" is in fact the class name for the class where
the texts that must be changed appears. In this case the file is \c
- printpanel.cpp, where the there are four lines to change. Add the
+ printpanel.cpp, where there are four lines to change. Add the
second argument "two-sided" in the appropriate \c tr() calls to the
first pair of radio buttons:
diff --git a/doc/src/layout.qdoc b/doc/src/layout.qdoc
index 196999b..d97fcfc 100644
--- a/doc/src/layout.qdoc
+++ b/doc/src/layout.qdoc
@@ -343,9 +343,9 @@
\snippet doc/src/snippets/code/doc_src_layout.qdoc 4
The layout takes over responsibility of the items added. Since QLayoutItem
- does not inherit QObject, we must delete the items manually. The function
- QLayout::deleteAllItems() uses \c{takeAt()} defined above to delete all the
- items in the layout.
+ does not inherit QObject, we must delete the items manually. In the
+ destructor, we remove each item from the list using \c{takeAt()}, and
+ then delete it.
\snippet doc/src/snippets/code/doc_src_layout.qdoc 5
diff --git a/doc/src/licenses.qdoc b/doc/src/licenses.qdoc
index 1c3f6d2..a11c071 100644
--- a/doc/src/licenses.qdoc
+++ b/doc/src/licenses.qdoc
@@ -45,7 +45,7 @@
\ingroup licensing
\brief Information about other licenses used for Qt components and third-party code.
- Qt contains some code that is not provided under the the
+ Qt contains some code that is not provided under the
\l{GNU General Public License (GPL)},
\l{GNU Lesser General Public License (LGPL)} or the
\l{Qt Commercial Editions}{Qt Commercial License Agreement}, but rather under
diff --git a/doc/src/mac-differences.qdoc b/doc/src/mac-differences.qdoc
index 573e62d..5849850 100644
--- a/doc/src/mac-differences.qdoc
+++ b/doc/src/mac-differences.qdoc
@@ -128,7 +128,7 @@
If you want to build a new dynamic library combining the Qt 4
dynamic libraries, you need to introduce the \c{ld -r} flag. Then
- relocation information is stored in the the output file, so that
+ relocation information is stored in the output file, so that
this file could be the subject of another \c ld run. This is done
by setting the \c -r flag in the \c .pro file, and the \c LFLAGS
settings.
diff --git a/doc/src/model-view-programming.qdoc b/doc/src/model-view-programming.qdoc
index bf0c1c8..8874cfa 100644
--- a/doc/src/model-view-programming.qdoc
+++ b/doc/src/model-view-programming.qdoc
@@ -249,7 +249,7 @@
provide an API that allows you to sort your model data
programmatically. In addition, you can enable interactive sorting
(i.e. allowing the users to sort the data by clicking the view's
- headers), by connecting the QHeaderView::sectionClicked() signal
+ headers), by connecting the QHeaderView::sortIndicatorChanged() signal
to the QTableView::sortByColumn() slot or the
QTreeView::sortByColumn() slot, respectively.
diff --git a/doc/src/phonon-api.qdoc b/doc/src/phonon-api.qdoc
index 501b5a5..dd37fe2 100644
--- a/doc/src/phonon-api.qdoc
+++ b/doc/src/phonon-api.qdoc
@@ -2973,7 +2973,7 @@
\value ToggledHint
If this hint is set it means that
- the the control has only two states: zero and non-zero
+ the control has only two states: zero and non-zero
(see isToggleControl()).
\value LogarithmicHint
diff --git a/doc/src/porting4-overview.qdoc b/doc/src/porting4-overview.qdoc
index b0146a6..462f849 100644
--- a/doc/src/porting4-overview.qdoc
+++ b/doc/src/porting4-overview.qdoc
@@ -364,4 +364,10 @@
In Qt 4.2 and later, \l{Qt Style Sheets} can be used to
implement many common modifications to existing styles, and
this may be sufficient for Qt 3 applications.
+
+ \section2 Events
+ In Qt 3, QCloseEvents were not accepted by default. In Qt 4,
+ the event handler QWidget::closeEvent() receives QCloseEvents,
+ and accepts them by default closing the application. To avoid
+ this, please reimplement QWidget::closeEvent().
*/
diff --git a/doc/src/q3valuelist.qdoc b/doc/src/q3valuelist.qdoc
index be315c2..e3681af 100644
--- a/doc/src/q3valuelist.qdoc
+++ b/doc/src/q3valuelist.qdoc
@@ -108,7 +108,7 @@
pointing to the removed member become invalid. Inserting into the
list does not invalidate any iterator. For convenience, the
function last() returns a reference to the last item in the list,
- and first() returns a reference to the the first item. If the
+ and first() returns a reference to the first item. If the
list is empty(), both last() and first() have undefined behavior
(your application will crash or do unpredictable things). Use
last() and first() with caution, for example:
diff --git a/doc/src/qalgorithms.qdoc b/doc/src/qalgorithms.qdoc
index b33c250..90289f9 100644
--- a/doc/src/qalgorithms.qdoc
+++ b/doc/src/qalgorithms.qdoc
@@ -59,7 +59,7 @@
If STL is available on all your target platforms, you can use the
STL algorithms instead of their Qt counterparts. One reason why
- you might want to use the the STL algorithms is that STL provides
+ you might want to use the STL algorithms is that STL provides
dozens and dozens of algorithms, whereas Qt only provides the most
important ones, making no attempt to duplicate functionality that
is already provided by the C++ standard.
diff --git a/doc/src/qtdesigner.qdoc b/doc/src/qtdesigner.qdoc
index 7e3b619..9699c5b 100644
--- a/doc/src/qtdesigner.qdoc
+++ b/doc/src/qtdesigner.qdoc
@@ -632,7 +632,7 @@
/*!
\fn void QDesignerContainerExtension::setCurrentIndex(int index)
- Sets the the currently selected page in the container to be the
+ Sets the currently selected page in the container to be the
page at the given \a index in the extension's list of pages.
\sa currentIndex()
diff --git a/doc/src/qtscriptdebugger-manual.qdoc b/doc/src/qtscriptdebugger-manual.qdoc
index 3dfe879..75d87f8 100644
--- a/doc/src/qtscriptdebugger-manual.qdoc
+++ b/doc/src/qtscriptdebugger-manual.qdoc
@@ -367,7 +367,7 @@
\section3 continue
Continues execution normally, i.e, gives the execution control over
- the script back the the QScriptEngine.
+ the script back to the QScriptEngine.
\section3 eval <program>
diff --git a/doc/src/snippets/code/doc_src_layout.qdoc b/doc/src/snippets/code/doc_src_layout.qdoc
index fedcf0c..60f36b0 100644
--- a/doc/src/snippets/code/doc_src_layout.qdoc
+++ b/doc/src/snippets/code/doc_src_layout.qdoc
@@ -67,7 +67,9 @@ void CardLayout::addItem(QLayoutItem *item)
//! [5]
CardLayout::~CardLayout()
{
- deleteAllItems();
+ QLayoutItem *item;
+ while ((item = takeAt(0)))
+ delete item;
}
//! [5]
@@ -121,4 +123,4 @@ QSize CardLayout::minimumSize() const
}
return s + n*QSize(spacing(), spacing());
}
-//! [7] \ No newline at end of file
+//! [7]
diff --git a/doc/src/stylesheet.qdoc b/doc/src/stylesheet.qdoc
index c0d13da..4060f33 100644
--- a/doc/src/stylesheet.qdoc
+++ b/doc/src/stylesheet.qdoc
@@ -332,7 +332,7 @@
respect to the reference element.
Once positioned, they are treated the same as widgets and can be styled
- using the the \l{box model}.
+ using the \l{box model}.
See the \l{List of Sub-Controls} below for a list of supported
sub-controls, and \l{Customizing the QPushButton's Menu Indicator
@@ -398,7 +398,7 @@
(usually) refers to a single object, not to all instances of a
class.
- Similarly, selectors with pseudo-states are more specific that
+ Similarly, selectors with pseudo-states are more specific than
ones that do not specify pseudo-states. Thus, the following style
sheet specifies that a \l{QPushButton} should have white text
when the mouse is hovering over it, otherwise red text:
@@ -653,7 +653,7 @@
\target sub controls
\section1 Sub-controls
- A widget is considered as a heirarchy (tree) of subcontrols drawn on top
+ A widget is considered as a hierarchy (tree) of subcontrols drawn on top
of each other. For example, the QComboBox draws the drop-down sub-control
followed by the down-arrow sub-control. A QComboBox is thus rendered as
follows:
@@ -671,7 +671,7 @@
\l{Qt Style Sheets Reference#subcontrol-origin-prop}{subcontrol-origin}
properties.
- Once positioned, sub-controls can be styled using the the \l{box model}.
+ Once positioned, sub-controls can be styled using the \l{box model}.
\note With complex widgets such as QComboBox and QScrollBar, if one
property or sub-control is customized, \bold{all} the other properties or
@@ -1154,7 +1154,7 @@
\l{#pane-sub}{::pane} subcontrol. The left and right
corners are styled using the \l{#left-corner-sub}{::left-corner}
and \l{#right-corner-sub}{::right-corner} respectively.
- The position of the the tab bar is controlled using the
+ The position of the tab bar is controlled using the
\l{#tab-bar-sub}{::tab-bar} subcontrol.
By default, the subcontrols have positions of a QTabWidget in
@@ -1254,7 +1254,7 @@
the \l{#menu-button-sub}{::menu-button} subcontrol is used to draw the
menu button. \l{#menu-arrow-sub}{::menu-arrow} subcontrol is used to
draw the menu arrow inside the menu-button. By default, it is
- positioned in the center of the Contents rectangle of the the
+ positioned in the center of the Contents rectangle of the
menu-button subcontrol.
When the QToolButton displays arrows, the \l{#up-arrow-sub}{::up-arrow},
@@ -1872,10 +1872,6 @@
\snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 54
- \note If you specify more than one parameter in \c font-family,
- e.g., \c{font-family: Verdana, Arial}, Qt will only use the first
- font. If it cannot be found, Qt uses the system fallbacks instead.
-
\row
\o \c font-size
\o \l{#Font Size}{Font Size}
diff --git a/doc/src/tech-preview/known-issues.html b/doc/src/tech-preview/known-issues.html
index 05df69e..885104e 100644
--- a/doc/src/tech-preview/known-issues.html
+++ b/doc/src/tech-preview/known-issues.html
@@ -16,7 +16,7 @@
<td align="right" valign="middle"></td></tr></table>
<h1>Known Issues: Qt 4.0.0 Technology Preview 1</h1>
<p>
- This is the list of known and reported issues for the the Qt 4.0.0
+ This is the list of known and reported issues for the Qt 4.0.0
Technology Preview 1. This list is updated daily.
</p>
<br><br>
diff --git a/doc/src/timers.qdoc b/doc/src/timers.qdoc
index 4f54343..1b48d7d 100644
--- a/doc/src/timers.qdoc
+++ b/doc/src/timers.qdoc
@@ -62,7 +62,7 @@
In multithreaded applications, you can use the timer mechanism in
any thread that has an event loop. To start an event loop from a
- non-GUI thread, use QThread::exec(). Qt uses the the object's
+ non-GUI thread, use QThread::exec(). Qt uses the object's
\l{QObject::thread()}{thread affinity} to determine which thread
will deliver the QTimerEvent. Because of this, you must start and
stop all timers in the object's thread; it is not possible to
@@ -105,7 +105,7 @@
In multithreaded applications, you can use QTimer in any thread
that has an event loop. To start an event loop from a non-GUI
- thread, use QThread::exec(). Qt uses the the timer's
+ thread, use QThread::exec(). Qt uses the timer's
\l{QObject::thread()}{thread affinity} to determine which thread
will emit the \l{QTimer::}{timeout()} signal. Because of this, you
must start and stop the timer in its thread; it is not possible to
diff --git a/doc/src/xquery-introduction.qdoc b/doc/src/xquery-introduction.qdoc
index 37a45ac..fe541e2 100644
--- a/doc/src/xquery-introduction.qdoc
+++ b/doc/src/xquery-introduction.qdoc
@@ -347,7 +347,7 @@ has a more detailed section on the shorthand form, which it calls the
\l{http://www.w3.org/TR/xquery/#abbrev} {abbreviated syntax}. More
examples of path expressions written in the shorthand form are found
there. There is also a section listing examples of path expressions
-written in the the \l{http://www.w3.org/TR/xquery/#unabbrev} {longhand
+written in the \l{http://www.w3.org/TR/xquery/#unabbrev} {longhand
form}.
\target Name Tests
diff --git a/mkspecs/wince50standard-mipsii-msvc2008/default_post.prf b/mkspecs/wince50standard-mipsii-msvc2008/default_post.prf
index a232ba3..d423784 100644
--- a/mkspecs/wince50standard-mipsii-msvc2008/default_post.prf
+++ b/mkspecs/wince50standard-mipsii-msvc2008/default_post.prf
@@ -1 +1 @@
-include(../wince50standard-mipsii-msvc2005/qmake.conf)
+include(../wince50standard-mipsii-msvc2005/default_post.prf)
diff --git a/qmake/generators/xmloutput.cpp b/qmake/generators/xmloutput.cpp
index 68d22e1..d77dd4b 100644
--- a/qmake/generators/xmloutput.cpp
+++ b/qmake/generators/xmloutput.cpp
@@ -277,7 +277,7 @@ void XmlOutput::closeTag()
void XmlOutput::closeTo(const QString &tag)
{
bool cont = true;
- if (!tagStack.contains(tag) && tag != QString()) {
+ if (!tagStack.contains(tag) && !tag.isNull()) {
//warn_msg(WarnLogic, "<%s>: Cannot close to tag <%s>, not on stack", tagStack.last().latin1(), tag.latin1());
qDebug("<%s>: Cannot close to tag <%s>, not on stack", tagStack.last().toLatin1().constData(), tag.toLatin1().constData());
return;
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 26ce489..f5402ce 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
- a6ebe3865025e2bb4d767a79435af4daf5a9b4db
+ 1f83e4058bffd5a3fe7e44cf45add01953a772d4
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index 00bd427..23f3ca6 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,93 @@
+2009-05-18 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ Done together with Balazs Kelemen <kelemen.balazs@stud.u-szeged.hu>.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24551
+
+ [Qt] Reuse FontPlatformData for the same FontDescription.
+ This effectively prevents growing heap usage for loading every web page.
+
+ * platform/graphics/qt/FontCacheQt.cpp:
+ (WebCore::qHash): Necessary for FontPlatformDataCache.
+ (WebCore::FontCache::getCachedFontPlatformData): Reuse the instance if
+ it exists, otherwise create a new one and insert it in the cache.
+
+2009-05-18 Balazs Kelemen <kelemen.balazs@stud.u-szeged.hu>
+
+ Reviewed by Ariya Hidayat.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24551
+
+ [Qt] Fix the leak in FontFallbackList::fontDataAt() function.
+ When creating a new instance of SimpleFontData, put it in the font list
+ so that it can deleted later on.
+
+ * platform/graphics/qt/FontFallbackListQt.cpp:
+ (WebCore::FontFallbackList::invalidate):
+ (WebCore::FontFallbackList::releaseFontData):
+ (WebCore::FontFallbackList::fontDataAt):
+
+2009-05-15 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Holger Freyther.
+
+ [Qt] In the image decoder, remove the raw image data represented as QImage
+ once the image is converted to QPixmap and inserted in the pixmap cache.
+ This effectively reduces the heap usage when running on graphics system
+ other than raster (i.e the case where QImage != QPixmap).
+
+ * platform/graphics/qt/ImageDecoderQt.cpp:
+ (WebCore::ImageDecoderQt::imageAtIndex): Nullified the image on purpose.
+ * platform/graphics/qt/ImageDecoderQt.h: Made m_imageList mutable.
+
+2009-05-15 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Holger Freyther.
+
+ [Qt] Refactor alpha channel detection the image decoder.
+ Sets the boolean flag as soon as the image is being read.
+
+ * platform/graphics/qt/ImageDecoderQt.cpp:
+ (WebCore::ImageDecoderQt::ImageDecoderQt): Initialized m_hasAlphaChannel.
+ (WebCore::ImageDecoderQt::setData): Set the flag when appropriate.
+ (WebCore::ImageDecoderQt::supportsAlpha): Simplified.
+ (WebCore::ImageDecoderQt::reset): Resetted the flag.
+ * platform/graphics/qt/ImageDecoderQt.h: Added m_hasAlphaChannel.
+
+2009-05-13 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Sam Weinig.
+
+ [Qt] Fix "lighther" composition mode.
+ QPainter::CompositionMode_Plus is the right match.
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::toQtCompositionMode):
+
+2009-04-29 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Simon Fraser.
+
+ [Qt] Initialize GraphicsContext's and ImageBuffer's QPainter to match
+ the default values of canvas attributes.
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBufferData::ImageBufferData):
+
+2009-04-27 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ https://bugs.webkit.org/show_bug.cgi?id=18475
+
+ [Qt] Widget painting should follow the layout direction (LTR, RTL)
+ of the element style, not the application layout direction.
+
+ * platform/qt/RenderThemeQt.cpp:
+ (WebCore::RenderThemeQt::applyTheme):
+
2009-03-13 Adam Bergkvist <adam.bergkvist@ericsson.com>
Reviewed by Alexey Proskuryakov.
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp
index 8a31861..5d1f147 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp
@@ -26,6 +26,9 @@
#include "FontDescription.h"
#include "FontPlatformData.h"
#include "Font.h"
+#include "StringHash.h"
+
+#include <QHash>
namespace WebCore {
@@ -33,9 +36,31 @@ void FontCache::getTraitsInFamily(const AtomicString& familyName, Vector<unsigne
{
}
+typedef QHash<FontDescription, FontPlatformData*> FontPlatformDataCache;
+
+// using Q_GLOBAL_STATIC leads to crash. TODO investigate the way to fix this.
+static FontPlatformDataCache* gFontPlatformDataCache;
+
+uint qHash(const FontDescription& key)
+{
+ uint value = CaseFoldingHash::hash(key.family().family());
+ value ^= key.computedPixelSize();
+ value ^= static_cast<int>(key.weight());
+ return value;
+}
+
FontPlatformData* FontCache::getCachedFontPlatformData(const FontDescription& description, const AtomicString& family, bool checkingAlternateName)
{
- return new FontPlatformData(description);
+ if (!gFontPlatformDataCache)
+ gFontPlatformDataCache = new FontPlatformDataCache;
+
+ FontPlatformData* fontData = gFontPlatformDataCache->value(description, 0);
+ if (!fontData) {
+ fontData = new FontPlatformData(description);
+ gFontPlatformDataCache->insert(description, fontData);
+ }
+
+ return fontData;
}
SimpleFontData* FontCache::getCachedFontData(const FontPlatformData*)
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontFallbackListQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontFallbackListQt.cpp
index 22ae205..50627b7 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontFallbackListQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontFallbackListQt.cpp
@@ -42,8 +42,6 @@ FontFallbackList::FontFallbackList()
void FontFallbackList::invalidate(WTF::PassRefPtr<WebCore::FontSelector> fontSelector)
{
- releaseFontData();
- m_fontList.clear();
m_familyIndex = 0;
m_pitch = UnknownPitch;
m_loadingCustomFonts = false;
@@ -53,6 +51,9 @@ void FontFallbackList::invalidate(WTF::PassRefPtr<WebCore::FontSelector> fontSel
void FontFallbackList::releaseFontData()
{
+ if (m_fontList.size())
+ delete m_fontList[0].first;
+ m_fontList.clear();
}
void FontFallbackList::determinePitch(const WebCore::Font* font) const
@@ -90,7 +91,12 @@ const FontData* FontFallbackList::fontDataAt(const WebCore::Font* _font, unsigne
family = family->next();
}
- return new SimpleFontData(FontPlatformData(description), _font->wordSpacing(), _font->letterSpacing());
+ if (m_fontList.size())
+ return m_fontList[0].first;
+
+ const FontData* result = new SimpleFontData(FontPlatformData(description), _font->wordSpacing(), _font->letterSpacing());
+ m_fontList.append(pair<const FontData*, bool>(result, result->isCustomFont()));
+ return result;
}
const FontData* FontFallbackList::fontDataForCharacters(const WebCore::Font* font, const UChar*, int) const
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
index 6c90ea3..490b54b 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
@@ -98,7 +98,7 @@ static inline QPainter::CompositionMode toQtCompositionMode(CompositeOperator op
case CompositeHighlight:
return QPainter::CompositionMode_SourceOver;
case CompositePlusLighter:
- return QPainter::CompositionMode_SourceOver;
+ return QPainter::CompositionMode_Plus;
}
return QPainter::CompositionMode_SourceOver;
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
index 29a02d4..333269e 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
@@ -47,7 +47,24 @@ ImageBufferData::ImageBufferData(const IntSize& size)
: m_pixmap(size)
{
m_pixmap.fill(QColor(Qt::transparent));
- m_painter.set(new QPainter(&m_pixmap));
+
+ QPainter* painter = new QPainter(&m_pixmap);
+ m_painter.set(painter);
+
+ // Since ImageBuffer is used mainly for Canvas, explicitly initialize
+ // its painter's pen and brush with the corresponding canvas defaults
+ // NOTE: keep in sync with CanvasRenderingContext2D::State
+ QPen pen = painter->pen();
+ pen.setColor(Qt::black);
+ pen.setWidth(1);
+ pen.setCapStyle(Qt::FlatCap);
+ pen.setJoinStyle(Qt::MiterJoin);
+ pen.setMiterLimit(10);
+ painter->setPen(pen);
+ QBrush brush = painter->brush();
+ brush.setColor(Qt::black);
+ painter->setBrush(brush);
+ painter->setCompositionMode(QPainter::CompositionMode_SourceOver);
}
ImageBuffer::ImageBuffer(const IntSize& size, bool grayScale, bool& success)
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.cpp
index 394c7a7..cd32428 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.cpp
@@ -197,7 +197,8 @@ ImageDecoderQt* ImageDecoderQt::create(const SharedBuffer& data)
}
ImageDecoderQt::ImageDecoderQt(const QString &imageFormat)
- : m_imageFormat(imageFormat)
+ : m_hasAlphaChannel(false)
+ , m_imageFormat(imageFormat)
{
}
@@ -212,6 +213,7 @@ bool ImageDecoderQt::hasFirstImageHeader() const
void ImageDecoderQt::reset()
{
+ m_hasAlphaChannel = false;
m_failed = false;
m_imageList.clear();
m_pixmapCache.clear();
@@ -230,6 +232,9 @@ void ImageDecoderQt::setData(const IncomingData &data, bool allDataReceived)
const ReadContext::ReadResult readResult = readContext.read(allDataReceived);
+ if (hasFirstImageHeader())
+ m_hasAlphaChannel = m_imageList[0].m_image.hasAlphaChannel();
+
if (debugImageDecoderQt)
qDebug() << " read returns " << readResult;
@@ -280,7 +285,7 @@ int ImageDecoderQt::repetitionCount() const
bool ImageDecoderQt::supportsAlpha() const
{
- return hasFirstImageHeader() && m_imageList[0].m_image.hasAlphaChannel();
+ return m_hasAlphaChannel;
}
int ImageDecoderQt::duration(size_t index) const
@@ -314,6 +319,10 @@ QPixmap* ImageDecoderQt::imageAtIndex(size_t index) const
if (!m_pixmapCache.contains(index)) {
m_pixmapCache.insert(index,
QPixmap::fromImage(m_imageList[index].m_image));
+
+ // store null image since the converted pixmap is already in pixmap cache
+ Q_ASSERT(m_imageList[index].m_imageState == ImageComplete);
+ m_imageList[index].m_image = QImage();
}
return &m_pixmapCache[index];
}
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.h b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.h
index a2eb6aa..b8c3edd 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.h
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.h
@@ -81,8 +81,9 @@ private:
int m_duration;
};
+ bool m_hasAlphaChannel;
typedef QList<ImageData> ImageList;
- ImageList m_imageList;
+ mutable ImageList m_imageList;
mutable QHash<int, QPixmap> m_pixmapCache;
int m_loopCount;
QString m_imageFormat;
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
index a9da76b..02d17ed 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
@@ -737,6 +737,10 @@ ControlPart RenderThemeQt::applyTheme(QStyleOption& option, RenderObject* o) con
if (isHovered(o))
option.state |= QStyle::State_MouseOver;
+ option.direction = Qt::LeftToRight;
+ if (o->style() && o->style()->direction() == WebCore::RTL)
+ option.direction = Qt::RightToLeft;
+
ControlPart result = o->style()->appearance();
switch (result) {
diff --git a/src/corelib/concurrent/qfuturewatcher.cpp b/src/corelib/concurrent/qfuturewatcher.cpp
index ea35e9e..39d7698 100644
--- a/src/corelib/concurrent/qfuturewatcher.cpp
+++ b/src/corelib/concurrent/qfuturewatcher.cpp
@@ -465,7 +465,7 @@ void QFutureWatcherBasePrivate::sendCallOutEvent(QFutureCallOutEvent *event)
break;
emit q->progressValueChanged(event->index1);
- if (event->text != QString()) // ###
+ if (!event->text.isNull()) // ###
q->progressTextChanged(event->text);
break;
case QFutureCallOutEvent::ProgressRange:
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index a1f921e..1f77caa 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -406,7 +406,7 @@ QString QResource::absoluteFilePath() const
}
/*!
- Returns true if the resource really exists in the resource heirarchy,
+ Returns true if the resource really exists in the resource hierarchy,
false otherwise.
*/
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index 484e79a..14fc2d4 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -2295,7 +2295,7 @@ void QConfFileSettingsPrivate::ensureSectionParsed(QConfFile *confFile,
As mentioned in the \l{Fallback Mechanism} section, QSettings
stores settings for an application in up to four locations,
depending on whether the settings are user-specific or
- system-wide and whether the the settings are application-specific
+ system-wide and whether the settings are application-specific
or organization-wide. For simplicity, we're assuming the
organization is called MySoft and the application is called Star
Runner.
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index a23b2dd..f6ce4b3 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -1696,7 +1696,7 @@ QString QCoreApplication::applicationDirPath()
}
QCoreApplicationPrivate *d = self->d_func();
- if (d->cachedApplicationDirPath == QString())
+ if (d->cachedApplicationDirPath.isNull())
d->cachedApplicationDirPath = QFileInfo(applicationFilePath()).path();
return d->cachedApplicationDirPath;
}
@@ -1724,7 +1724,7 @@ QString QCoreApplication::applicationFilePath()
}
QCoreApplicationPrivate *d = self->d_func();
- if (d->cachedApplicationFilePath != QString())
+ if (!d->cachedApplicationFilePath.isNull())
return d->cachedApplicationFilePath;
#if defined( Q_WS_WIN )
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 05015c0..f1a1eb5 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -345,18 +345,6 @@ void QObjectPrivate::derefSender(QObject *sender, int signal)
// Q_ASSERT_X(false, "QObjectPrivate::derefSender", "sender not found");
}
-void QObjectPrivate::removeSender(QObject *sender, int signal)
-{
- for (int i = 0; i < senders.count(); ++i) {
- Sender &s = senders[i];
- if (s.sender == sender && s.signal == signal) {
- senders.removeAt(i);
- return;
- }
- }
- // Q_ASSERT_X(false, "QObjectPrivate::removeSender", "sender not found");
-}
-
QObjectPrivate::Sender *QObjectPrivate::setCurrentSender(QObject *receiver,
Sender *sender)
{
@@ -790,7 +778,7 @@ QObject::~QObject()
bool needToUnlock = QOrderedMutexLocker::relock(locker.mutex(), m);
c = &connectionList[i];
if (c->receiver)
- c->receiver->d_func()->removeSender(this, signal);
+ c->receiver->d_func()->derefSender(this, signal);
if (needToUnlock)
m->unlock();
@@ -811,18 +799,22 @@ QObject::~QObject()
}
// disconnect all senders
- for (int i = 0; i < d->senders.count(); ++i) {
+ for (int i = 0; i < d->senders.count(); ) {
QObjectPrivate::Sender *s = &d->senders[i];
- if (!s->sender)
- continue;
QMutex *m = &s->sender->d_func()->threadData->mutex;
bool needToUnlock = QOrderedMutexLocker::relock(locker.mutex(), m);
- s = &d->senders[i];
- if (s->sender)
- s->sender->d_func()->removeReceiver(s->signal, this);
+ if (m < locker.mutex()) {
+ if (i >= d->senders.count() || s != &d->senders[i]) {
+ if (needToUnlock)
+ m->unlock();
+ continue;
+ }
+ }
+ s->sender->d_func()->removeReceiver(s->signal, this);
if (needToUnlock)
m->unlock();
+ ++i;
}
d->senders.clear();
diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h
index b324334..0eed938 100644
--- a/src/corelib/kernel/qobject_p.h
+++ b/src/corelib/kernel/qobject_p.h
@@ -163,7 +163,6 @@ public:
QList<Sender> senders;
void refSender(QObject *sender, int signal);
void derefSender(QObject *sender, int signal);
- void removeSender(QObject *sender, int signal);
static Sender *setCurrentSender(QObject *receiver,
Sender *sender);
diff --git a/src/corelib/kernel/qsharedmemory.cpp b/src/corelib/kernel/qsharedmemory.cpp
index 9853079..87e154f 100644
--- a/src/corelib/kernel/qsharedmemory.cpp
+++ b/src/corelib/kernel/qsharedmemory.cpp
@@ -129,6 +129,10 @@ QSharedMemoryPrivate::makePlatformSafeKey(const QString &key,
detached from the segment, and no references to the segment
remain. Do not mix using QtSharedMemory and QSharedMemory. Port
everything to QSharedMemory.
+
+ \warning QSharedMemory changes the key in a Qt-specific way.
+ It is therefore currently not possible to use the shared memory of
+ non-Qt applications with QSharedMemory.
*/
/*!
diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp
index 01e81ab..4b3feb0 100644
--- a/src/corelib/kernel/qtimer.cpp
+++ b/src/corelib/kernel/qtimer.cpp
@@ -77,7 +77,7 @@ QT_BEGIN_NAMESPACE
In multithreaded applications, you can use QTimer in any thread
that has an event loop. To start an event loop from a non-GUI
- thread, use QThread::exec(). Qt uses the the timer's
+ thread, use QThread::exec(). Qt uses the timer's
\l{QObject::thread()}{thread affinity} to determine which thread
will emit the \l{QTimer::}{timeout()} signal. Because of this, you
must start and stop the timer in its thread; it is not possible to
diff --git a/src/corelib/tools/qbytearraymatcher.h b/src/corelib/tools/qbytearraymatcher.h
index 633e92c..970cbcc 100644
--- a/src/corelib/tools/qbytearraymatcher.h
+++ b/src/corelib/tools/qbytearraymatcher.h
@@ -70,7 +70,7 @@ public:
inline QByteArray pattern() const
{
if (q_pattern.isNull())
- return QByteArray((const char*)p.p, p.l);
+ return QByteArray(reinterpret_cast<const char*>(p.p), p.l);
return q_pattern;
}
diff --git a/src/corelib/tools/qrect.cpp b/src/corelib/tools/qrect.cpp
index 3930a0d..5602170 100644
--- a/src/corelib/tools/qrect.cpp
+++ b/src/corelib/tools/qrect.cpp
@@ -901,7 +901,7 @@ void QRect::moveCenter(const QPoint &p)
/*!
\fn bool QRect::contains(const QPoint &point, bool proper) const
- Returns true if the the given \a point is inside or on the edge of
+ Returns true if the given \a point is inside or on the edge of
the rectangle, otherwise returns false. If \a proper is true, this
function only returns true if the given \a point is \e inside the
rectangle (i.e., not on the edge).
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index f1b35ee..ad2d9f2 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -238,6 +238,7 @@ namespace QtSharedPointer {
template <class X> friend class ExternalRefCount;
template <class X> friend class QWeakPointer;
template <class X, class Y> friend QSharedPointer<X> qSharedPointerCastHelper(const QSharedPointer<Y> &src, X *);
+ template <class X, class Y> friend QSharedPointer<X> qSharedPointerDynamicCastHelper(const QSharedPointer<Y> &src, X *);
template <class X, class Y> friend QSharedPointer<X> qSharedPointerConstCastHelper(const QSharedPointer<Y> &src, X *);
template <class X, class Y> friend QSharedPointer<X> QtSharedPointer::qStrongRefFromWeakHelper(const QWeakPointer<Y> &src, X *);
#endif
@@ -509,6 +510,14 @@ namespace QtSharedPointer {
return result;
}
template <class X, class T>
+ Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerDynamicCastHelper(const QSharedPointer<T> &src, X *)
+ {
+ QSharedPointer<X> result;
+ register T *ptr = src.data();
+ result.internalSet(src.d, dynamic_cast<X *>(ptr));
+ return result;
+ }
+ template <class X, class T>
Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerConstCastHelper(const QSharedPointer<T> &src, X *)
{
QSharedPointer<X> result;
@@ -544,9 +553,7 @@ template <class X, class T>
Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerDynamicCast(const QSharedPointer<T> &src)
{
X *x = 0;
- if (QtSharedPointer::qVerifyDynamicCast(src.data(), x))
- return QtSharedPointer::qSharedPointerCastHelper(src, x);
- return QSharedPointer<X>();
+ return QtSharedPointer::qSharedPointerDynamicCastHelper(src, x);
}
template <class X, class T>
Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerDynamicCast(const QWeakPointer<T> &src)
@@ -558,17 +565,13 @@ template <class X, class T>
Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerConstCast(const QSharedPointer<T> &src)
{
X *x = 0;
- if (QtSharedPointer::qVerifyConstCast(src.data(), x))
- return QtSharedPointer::qSharedPointerConstCastHelper(src, x);
- return QSharedPointer<X>();
+ return QtSharedPointer::qSharedPointerConstCastHelper(src, x);
}
template <class X, class T>
Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerConstCast(const QWeakPointer<T> &src)
{
X *x = 0;
- if (QtSharedPointer::qVerifyConstCast(src.data(), x))
- return QtSharedPointer::qSharedPointerCastHelper(src, x);
- return QSharedPointer<X>();
+ return QtSharedPointer::qSharedPointerConstCastHelper(src, x);
}
template <class X, class T>
diff --git a/src/corelib/tools/qsize.cpp b/src/corelib/tools/qsize.cpp
index 76a5484..bbf6c2a 100644
--- a/src/corelib/tools/qsize.cpp
+++ b/src/corelib/tools/qsize.cpp
@@ -781,7 +781,7 @@ void QSizeF::scale(const QSizeF &s, Qt::AspectRatioMode mode)
\fn QDataStream &operator<<(QDataStream &stream, const QSizeF &size)
\relates QSizeF
- Writes the the given \a size to the given \a stream and returns a
+ Writes the given \a size to the given \a stream and returns a
reference to the stream.
\sa {Format of the QDataStream Operators}
diff --git a/src/corelib/tools/qstringlist.cpp b/src/corelib/tools/qstringlist.cpp
index 386321f1..e22f122 100644
--- a/src/corelib/tools/qstringlist.cpp
+++ b/src/corelib/tools/qstringlist.cpp
@@ -397,7 +397,7 @@ void QtPrivate::QStringList_replaceInStrings(QStringList *that, const QRegExp &r
\fn QString QStringList::join(const QString &separator) const
Joins all the string list's strings into a single string with each
- element separated by the the given \a separator (which can be an
+ element separated by the given \a separator (which can be an
empty string).
\sa QString::split()
diff --git a/src/gui/dialogs/qsidebar.cpp b/src/gui/dialogs/qsidebar.cpp
index 26108d7..000a06b 100644
--- a/src/gui/dialogs/qsidebar.cpp
+++ b/src/gui/dialogs/qsidebar.cpp
@@ -249,9 +249,9 @@ void QUrlModel::addUrls(const QList<QUrl> &list, int row, bool move)
continue;
for (int j = 0; move && j < rowCount(); ++j) {
#if defined(Q_OS_WIN)
- if (index(j, 0).data(UrlRole).toUrl().toLocalFile().toLower() == url.toLocalFile().toLower()) {
+ if (QDir::cleanPath(index(j, 0).data(UrlRole).toUrl().toLocalFile()).toLower() == QDir::cleanPath(url.toLocalFile()).toLower()) {
#else
- if (index(j, 0).data(UrlRole) == url) {
+ if (QDir::cleanPath(index(j, 0).data(UrlRole).toUrl().toLocalFile()) == QDir::cleanPath(url.toLocalFile())) {
#endif
removeRow(j);
if (j <= row)
diff --git a/src/gui/dialogs/qwizard.cpp b/src/gui/dialogs/qwizard.cpp
index 32395c4..298f23f 100644
--- a/src/gui/dialogs/qwizard.cpp
+++ b/src/gui/dialogs/qwizard.cpp
@@ -1465,7 +1465,7 @@ void QWizardPrivate::handleAeroStyleChange()
return; // prevent recursion
inHandleAeroStyleChange = true;
- vistaHelper->backButton()->disconnect();
+ vistaHelper->disconnectBackButton();
q->removeEventFilter(vistaHelper);
if (isVistaThemeEnabled()) {
@@ -1491,7 +1491,7 @@ void QWizardPrivate::handleAeroStyleChange()
q->setMouseTracking(true); // ### original value possibly different
q->unsetCursor(); // ### ditto
antiFlickerWidget->move(0, 0);
- vistaHelper->backButton()->hide();
+ vistaHelper->hideBackButton();
vistaHelper->setTitleBarIconAndCaptionVisible(true);
}
diff --git a/src/gui/dialogs/qwizard_win.cpp b/src/gui/dialogs/qwizard_win.cpp
index 64696de..8aad4af 100644
--- a/src/gui/dialogs/qwizard_win.cpp
+++ b/src/gui/dialogs/qwizard_win.cpp
@@ -239,9 +239,11 @@ void QVistaBackButton::paintEvent(QPaintEvent *)
QVistaHelper::QVistaHelper(QWizard *wizard)
: pressed(false)
, wizard(wizard)
+ , backButton_(0)
{
is_vista = resolveSymbols();
- backButton_ = new QVistaBackButton(wizard);
+ if (is_vista)
+ backButton_ = new QVistaBackButton(wizard);
}
QVistaHelper::~QVistaHelper()
@@ -310,6 +312,7 @@ void QVistaHelper::drawTitleBar(QPainter *painter)
QRect(0, 0, wizard->width(), titleBarSize() + topOffset()),
painter->paintEngine()->getDC());
+ Q_ASSERT(backButton_);
const int btnTop = backButton_->mapToParent(QPoint()).y();
const int btnHeight = backButton_->size().height();
const int verticalCenter = (btnTop + btnHeight / 2);
diff --git a/src/gui/dialogs/qwizard_win_p.h b/src/gui/dialogs/qwizard_win_p.h
index cbb3b17..148be26 100644
--- a/src/gui/dialogs/qwizard_win_p.h
+++ b/src/gui/dialogs/qwizard_win_p.h
@@ -94,6 +94,8 @@ public:
void resizeEvent(QResizeEvent *event);
void paintEvent(QPaintEvent *event);
QVistaBackButton *backButton() const { return backButton_; }
+ void disconnectBackButton() { if (backButton_) backButton_->disconnect(); }
+ void hideBackButton() { if (backButton_) backButton_->hide(); }
void setWindowPosHack();
QColor basicWindowFrameColor();
enum VistaState { VistaAero, VistaBasic, Classic, Dirty };
diff --git a/src/gui/embedded/qscreen_qws.cpp b/src/gui/embedded/qscreen_qws.cpp
index 6741f2c..39a74d5 100644
--- a/src/gui/embedded/qscreen_qws.cpp
+++ b/src/gui/embedded/qscreen_qws.cpp
@@ -1394,7 +1394,7 @@ QImage::Format QScreenPrivate::preferredImageFormat() const
altered. Note that the default implementations of these functions
do nothing.
- Reimplement the the mapFromDevice() and mapToDevice() functions to
+ Reimplement the mapFromDevice() and mapToDevice() functions to
map objects from the framebuffer coordinate system to the
coordinate space used by the application, and vice versa. Be aware
that the default implementations simply return the given objects
diff --git a/src/gui/embedded/qsoundqss_qws.cpp b/src/gui/embedded/qsoundqss_qws.cpp
index c72ea91..283bbd3 100644
--- a/src/gui/embedded/qsoundqss_qws.cpp
+++ b/src/gui/embedded/qsoundqss_qws.cpp
@@ -52,6 +52,7 @@
#include <qalgorithms.h>
#include <qtimer.h>
#include <qpointer.h>
+#include <qendian.h>
#include <unistd.h>
#include <stdlib.h>
@@ -335,7 +336,13 @@ public:
virtual int readySamples(int) = 0;
int getSample(int off, int bps) {
- return (bps == 1) ? (data[out+off] - 128) * 128 : ((short*)data)[(out/2)+off];
+
+ //
+ // 16-bit audio data is converted to native endian so that it can be scaled
+ // Yes, this is ugly on a BigEndian machine
+ // Perhaps it shouldn't be scaled at all
+ //
+ return (bps == 1) ? (data[out+off] - 128) * 128 : qToLittleEndian(((short*)data)[(out/2)+off]);
}
int add(int* mixl, int* mixr, int count)
@@ -547,7 +554,7 @@ public:
wavedata_remaining = 0;
mFinishedRead = true;
} else if ( qstrncmp(chunk.id,"data",4) == 0 ) {
- wavedata_remaining = chunk.size;
+ wavedata_remaining = qToLittleEndian( chunk.size );
//out = max = sound_buffer_size;
@@ -572,10 +579,23 @@ public:
//qDebug("couldn't ready chunkdata");
mFinishedRead = true;
}
+
#define WAVE_FORMAT_PCM 1
- else if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) {
- //qDebug("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag);
- mFinishedRead = true;
+ else
+ {
+ /*
+ ** Endian Fix the chuck data
+ */
+ chunkdata.formatTag = qToLittleEndian( chunkdata.formatTag );
+ chunkdata.channels = qToLittleEndian( chunkdata.channels );
+ chunkdata.samplesPerSec = qToLittleEndian( chunkdata.samplesPerSec );
+ chunkdata.avgBytesPerSec = qToLittleEndian( chunkdata.avgBytesPerSec );
+ chunkdata.blockAlign = qToLittleEndian( chunkdata.blockAlign );
+ chunkdata.wBitsPerSample = qToLittleEndian( chunkdata.wBitsPerSample );
+ if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) {
+ qWarning("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag);
+ mFinishedRead = true;
+ }
}
} else {
// ignored chunk
@@ -1166,9 +1186,15 @@ bool QWSSoundServerPrivate::openDevice()
if (ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &v))
qWarning("Could not set fragments to %08x",v);
#ifdef QT_QWS_SOUND_16BIT
- v=AFMT_S16_LE; if (ioctl(fd, SNDCTL_DSP_SETFMT, &v))
+ //
+ // Use native endian
+ // Since we have manipulated the data volume the data
+ // is now in native format, even though its stored
+ // as little endian in the WAV file
+ //
+ v=AFMT_S16_NE; if (ioctl(fd, SNDCTL_DSP_SETFMT, &v))
qWarning("Could not set format %d",v);
- if (AFMT_S16_LE != v)
+ if (AFMT_S16_NE != v)
qDebug("Want format %d got %d", AFMT_S16_LE, v);
#else
v=AFMT_U8; if (ioctl(fd, SNDCTL_DSP_SETFMT, &v))
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 30c15bc..4908296 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -2572,6 +2572,10 @@ QTransform QGraphicsItem::sceneTransform() const
*/
QTransform QGraphicsItem::deviceTransform(const QTransform &viewportTransform) const
{
+ // Ensure we return the standard transform if we're not untransformable.
+ if (!d_ptr->itemIsUntransformable())
+ return sceneTransform() * viewportTransform;
+
// Find the topmost item that ignores view transformations.
const QGraphicsItem *untransformedAncestor = this;
QList<const QGraphicsItem *> parents;
diff --git a/src/gui/graphicsview/qgraphicslayoutitem.cpp b/src/gui/graphicsview/qgraphicslayoutitem.cpp
index eaa97ff..b46e05e 100644
--- a/src/gui/graphicsview/qgraphicslayoutitem.cpp
+++ b/src/gui/graphicsview/qgraphicslayoutitem.cpp
@@ -255,7 +255,7 @@ QGraphicsItem *QGraphicsLayoutItemPrivate::parentItem() const
passing a QGraphicsLayoutItem pointer to QGraphicsLayoutItem's
protected constructor, or by calling setParentLayoutItem(). The
parentLayoutItem() function returns a pointer to the item's layoutItem
- parent. If the item's parent is 0 or if the the parent does not inherit
+ parent. If the item's parent is 0 or if the parent does not inherit
from QGraphicsItem, the parentLayoutItem() function then returns 0.
isLayout() returns true if the QGraphicsLayoutItem subclass is itself a
layout, or false otherwise.
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 13f70e5..b89e352 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -2289,12 +2289,7 @@ void QGraphicsScene::render(QPainter *painter, const QRectF &target, const QRect
// Calculate a simple level-of-detail metric.
// ### almost identical code in QGraphicsView::paintEvent()
// and QGraphicsView::render() - consider refactoring
- QTransform itemToDeviceTransform;
- if (item->d_ptr->itemIsUntransformable()) {
- itemToDeviceTransform = item->deviceTransform(painterTransform);
- } else {
- itemToDeviceTransform = item->sceneTransform() * painterTransform;
- }
+ QTransform itemToDeviceTransform = item->deviceTransform(painterTransform);
option.levelOfDetail = qSqrt(itemToDeviceTransform.map(v1).length() * itemToDeviceTransform.map(v2).length());
option.matrix = itemToDeviceTransform.toAffine(); //### discards perspective
@@ -5078,11 +5073,7 @@ void QGraphicsScene::drawItems(QPainter *painter,
// optimization, but it's hit very rarely.
for (int i = clippers.size() - 1; i >= 0; --i) {
QGraphicsItem *clipper = clippers[i];
- if (clipper->d_ptr->itemIsUntransformable()) {
- painter->setWorldTransform(clipper->deviceTransform(viewTransform), false);
- } else {
- painter->setWorldTransform(clipper->sceneTransform() * viewTransform, false);
- }
+ painter->setWorldTransform(clipper->deviceTransform(viewTransform), false);
childClippers.append(clipper);
painter->save();
@@ -5093,12 +5084,8 @@ void QGraphicsScene::drawItems(QPainter *painter,
}
// Set up the painter transform
- if (item->d_ptr->itemIsUntransformable()) {
- painter->setWorldTransform(item->deviceTransform(viewTransform), false);
- } else {
- painter->setWorldTransform(item->sceneTransform() * viewTransform, false);
- }
-
+ painter->setWorldTransform(item->deviceTransform(viewTransform), false);
+
// Save painter
bool saveState = (d->painterStateProtection || (item->flags() & QGraphicsItem::ItemClipsToShape));
if (saveState)
diff --git a/src/gui/graphicsview/qgraphicssceneevent.cpp b/src/gui/graphicsview/qgraphicssceneevent.cpp
index b819c2c..0ffd2b1 100644
--- a/src/gui/graphicsview/qgraphicssceneevent.cpp
+++ b/src/gui/graphicsview/qgraphicssceneevent.cpp
@@ -844,7 +844,7 @@ QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent()
/*!
Returns the position of the mouse cursor in item coordinates at the moment
- the the context menu was requested.
+ the context menu was requested.
\sa scenePos(), screenPos()
*/
@@ -992,7 +992,7 @@ QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent()
/*!
Returns the position of the mouse cursor in item coordinates at the moment
- the the hover event was sent.
+ the hover event was sent.
\sa scenePos(), screenPos()
*/
@@ -1017,7 +1017,7 @@ void QGraphicsSceneHoverEvent::setPos(const QPointF &pos)
/*!
Returns the position of the mouse cursor in scene coordinates at the
- moment the the hover event was sent.
+ moment the hover event was sent.
\sa pos(), screenPos()
*/
@@ -1042,7 +1042,7 @@ void QGraphicsSceneHoverEvent::setScenePos(const QPointF &pos)
/*!
Returns the position of the mouse cursor in screen coordinates at the
- moment the the hover event was sent.
+ moment the hover event was sent.
\sa pos(), scenePos()
*/
@@ -1138,7 +1138,7 @@ void QGraphicsSceneHoverEvent::setLastScreenPos(const QPoint &pos)
/*!
\since 4.4
- Returns the keyboard modifiers at the moment the the hover event was sent.
+ Returns the keyboard modifiers at the moment the hover event was sent.
*/
Qt::KeyboardModifiers QGraphicsSceneHoverEvent::modifiers() const
{
@@ -1184,7 +1184,7 @@ QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent()
/*!
Returns the position of the mouse cursor in scene coordinates at the
- moment the the help event was sent.
+ moment the help event was sent.
\sa screenPos()
*/
@@ -1209,7 +1209,7 @@ void QGraphicsSceneHelpEvent::setScenePos(const QPointF &pos)
/*!
Returns the position of the mouse cursor in screen coordinates at the
- moment the the help event was sent.
+ moment the help event was sent.
\sa scenePos()
*/
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 8b133f3..a795fb4 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -1153,11 +1153,7 @@ void QGraphicsViewPrivate::generateStyleOptions(const QList<QGraphicsItem *> &it
// Calculate a simple level-of-detail metric.
// ### almost identical code in QGraphicsScene::render()
// and QGraphicsView::render() - consider refactoring
- if (item->d_ptr->itemIsUntransformable()) {
- itemToViewportTransform = item->deviceTransform(worldTransform);
- } else {
- itemToViewportTransform = item->sceneTransform() * worldTransform;
- }
+ itemToViewportTransform = item->deviceTransform(worldTransform);
if (itemToViewportTransform.type() <= QTransform::TxTranslate) {
// Translation and rotation only? The LOD is 1.
@@ -2160,12 +2156,7 @@ void QGraphicsView::render(QPainter *painter, const QRectF &target, const QRect
// Calculate a simple level-of-detail metric.
// ### almost identical code in QGraphicsScene::render()
// and QGraphicsView::paintEvent() - consider refactoring
- QTransform itemToViewportTransform;
- if (item->d_ptr->itemIsUntransformable()) {
- itemToViewportTransform = item->deviceTransform(painterMatrix);
- } else {
- itemToViewportTransform = item->sceneTransform() * painterMatrix;
- }
+ QTransform itemToViewportTransform = item->deviceTransform(painterMatrix);
option->levelOfDetail = qSqrt(itemToViewportTransform.map(v1).length() * itemToViewportTransform.map(v2).length());
option->matrix = itemToViewportTransform.toAffine();
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
index 53430ab..a880a13 100644
--- a/src/gui/image/qicon.cpp
+++ b/src/gui/image/qicon.cpp
@@ -922,7 +922,7 @@ QList<QSize> QIcon::availableSizes(Mode mode, State state) const
\relates QIcon
\since 4.2
- Writes the given \a icon to the the given \a stream as a PNG
+ Writes the given \a icon to the given \a stream as a PNG
image. If the icon contains more than one image, all images will
be written to the stream. Note that writing the stream to a file
will not produce a valid image file.
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index c7a20db..70d4e2c 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -4996,7 +4996,7 @@ QPoint QImage::offset() const
/*!
\fn void QImage::setOffset(const QPoint& offset)
- Sets the the number of pixels by which the image is intended to be
+ Sets the number of pixels by which the image is intended to be
offset by when positioning relative to other images, to \a offset.
\sa offset(), {QImage#Image Information}{Image Information}
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index efb8260..0f6b649 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -1232,7 +1232,7 @@ bool QPixmap::convertFromImage(const QImage &image, ColorMode mode)
/*!
\relates QPixmap
- Writes the given \a pixmap to the the given \a stream as a PNG
+ Writes the given \a pixmap to the given \a stream as a PNG
image. Note that writing the stream to a file will not produce a
valid image file.
diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp
index 83e05b4..7a3d674 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -1338,7 +1338,7 @@ QSize QAbstractItemView::iconSize() const
/*!
\property QAbstractItemView::textElideMode
- \brief the the position of the "..." in elided text.
+ \brief the position of the "..." in elided text.
The default value for all item views is Qt::ElideRight.
*/
diff --git a/src/gui/itemviews/qlistwidget.cpp b/src/gui/itemviews/qlistwidget.cpp
index 7a366d1..bf3b43c 100644
--- a/src/gui/itemviews/qlistwidget.cpp
+++ b/src/gui/itemviews/qlistwidget.cpp
@@ -1158,7 +1158,7 @@ void QListWidgetPrivate::_q_dataChanged(const QModelIndex &topLeft,
/*!
\fn void QListWidget::addItem(QListWidgetItem *item)
- Inserts the \a item at the the end of the list widget.
+ Inserts the \a item at the end of the list widget.
\warning A QListWidgetItem can only be added to a
QListWidget once. Adding the same QListWidgetItem multiple
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp
index f3bd57b..4cf0ad7 100644
--- a/src/gui/kernel/qapplication.cpp
+++ b/src/gui/kernel/qapplication.cpp
@@ -2032,12 +2032,10 @@ QWidget *QApplication::focusWidget()
void QApplicationPrivate::setFocusWidget(QWidget *focus, Qt::FocusReason reason)
{
- if (focus && focus->window()
#ifndef QT_NO_GRAPHICSVIEW
- && focus->window()->graphicsProxyWidget()
-#endif
- )
+ if (focus && focus->window()->graphicsProxyWidget())
return;
+#endif
hidden_focus_widget = 0;
diff --git a/src/gui/kernel/qclipboard.cpp b/src/gui/kernel/qclipboard.cpp
index 917b5d5..bab3449 100644
--- a/src/gui/kernel/qclipboard.cpp
+++ b/src/gui/kernel/qclipboard.cpp
@@ -466,7 +466,7 @@ void QClipboard::setPixmap(const QPixmap &pixmap, Mode mode)
The \a mode argument is used to control which part of the system
clipboard is used. If \a mode is QClipboard::Clipboard, this
- function clears the the global clipboard contents. If \a mode is
+ function clears the global clipboard contents. If \a mode is
QClipboard::Selection, this function clears the global mouse
selection contents. If \a mode is QClipboard::FindBuffer, this
function clears the search string buffer.
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index d911b48..bbf6758 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -2343,13 +2343,26 @@ void QWidgetPrivate::setStyle_helper(QStyle *newStyle, bool propagate, bool
)
{
Q_Q(QWidget);
- createExtra();
-
QStyle *oldStyle = q->style();
#ifndef QT_NO_STYLE_STYLESHEET
- QStyle *origStyle = extra->style;
+ QStyle *origStyle = 0;
+#endif
+
+#ifdef Q_WS_MAC
+ // the metalhack boolean allows Qt/Mac to do a proper re-polish depending
+ // on how the Qt::WA_MacBrushedMetal attribute is set. It is only ever
+ // set when changing that attribute and passes the widget's CURRENT style.
+ // therefore no need to do a reassignment.
+ if (!metalHack)
#endif
- extra->style = newStyle;
+ {
+ createExtra();
+
+#ifndef QT_NO_STYLE_STYLESHEET
+ origStyle = extra->style;
+#endif
+ extra->style = newStyle;
+ }
// repolish
if (q->windowType() != Qt::Desktop) {
@@ -6269,7 +6282,7 @@ QByteArray QWidget::saveGeometry() const
returns false.
If the restored geometry is off-screen, it will be modified to be
- inside the the available screen geometry.
+ inside the available screen geometry.
To restore geometry saved using QSettings, you can use code like
this:
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index b315eaf..f863428 100644
--- a/src/gui/kernel/qwidget_mac.mm
+++ b/src/gui/kernel/qwidget_mac.mm
@@ -786,16 +786,6 @@ OSStatus QWidgetPrivate::qt_window_event(EventHandlerCallRef er, EventRef event,
// By also setting the current modal window back into the event, we
// help Carbon determining which window is supposed to be raised.
handled_event = qApp->activePopupWidget() ? true : false;
- QWidget *top = 0;
- if (!QApplicationPrivate::tryModalHelper(widget, &top) && top && top != widget){
- if(!qt_mac_is_macsheet(top) || top->parentWidget() != widget) {
- handled_event = true;
- WindowPtr topWindowRef = qt_mac_window_for(top);
- SetEventParameter(event, kEventParamModalWindow, typeWindowRef, sizeof(topWindowRef), &topWindowRef);
- HIModalClickResult clickResult = kHIModalClickIsModal;
- SetEventParameter(event, kEventParamModalClickResult, typeModalClickResult, sizeof(clickResult), &clickResult);
- }
- }
#endif
} else if(ekind == kEventWindowClose) {
widget->d_func()->close_helper(QWidgetPrivate::CloseWithSpontaneousEvent);
@@ -4045,8 +4035,8 @@ void QWidgetPrivate::applyMaxAndMinSizeOnWindow()
NSSize max = NSMakeSize(SF(extra->maxw), SF(extra->maxh));
NSSize min = NSMakeSize(SF(extra->minw), SF(extra->minh));
#undef SF
- [qt_mac_window_for(q) setMinSize:min];
- [qt_mac_window_for(q) setMaxSize:max];
+ [qt_mac_window_for(q) setContentMinSize:min];
+ [qt_mac_window_for(q) setContentMaxSize:max];
#endif
}
diff --git a/src/gui/painting/qcolor.cpp b/src/gui/painting/qcolor.cpp
index 5d7d4ab..1723a19 100644
--- a/src/gui/painting/qcolor.cpp
+++ b/src/gui/painting/qcolor.cpp
@@ -1369,7 +1369,7 @@ QColor QColor::toRgb() const
*/
QColor QColor::toHsv() const
{
- if (!isValid())
+ if (!isValid() || cspec == Hsv)
return *this;
if (cspec != Rgb)
@@ -1421,7 +1421,7 @@ QColor QColor::toHsv() const
*/
QColor QColor::toCmyk() const
{
- if (!isValid())
+ if (!isValid() || cspec == Cmyk)
return *this;
if (cspec != Rgb)
return toRgb().toCmyk();
diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp
index e1f5eea..9ce16d3 100644
--- a/src/gui/painting/qpainterpath.cpp
+++ b/src/gui/painting/qpainterpath.cpp
@@ -1006,7 +1006,7 @@ void QPainterPath::addPolygon(const QPolygonF &polygon)
/*!
\fn void QPainterPath::addEllipse(const QRectF &boundingRectangle)
- Creates an ellipse within the the specified \a boundingRectangle
+ Creates an ellipse within the specified \a boundingRectangle
and adds it to the painter path as a closed subpath.
The ellipse is composed of a clockwise curve, starting and
diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp
index 1ea40ba..3fd1ffb 100644
--- a/src/gui/painting/qtextureglyphcache.cpp
+++ b/src/gui/painting/qtextureglyphcache.cpp
@@ -88,11 +88,12 @@ void QTextureGlyphCache::populate(const QTextItemInt &ti,
ti.ascent.toReal(),
ti.descent.toReal());
#endif
- int glyph_width = metrics.width.ceil().toInt() + margin * 2;
- int glyph_height = metrics.height.ceil().toInt() + margin * 2;
+ int glyph_width = metrics.width.ceil().toInt();
+ int glyph_height = metrics.height.ceil().toInt();
if (glyph_height == 0 || glyph_width == 0)
continue;
-
+ glyph_width += margin * 2 + 2;
+ glyph_height += margin * 2 + 2;
// align to 8-bit boundary
if (m_type == QFontEngineGlyphCache::Raster_Mono)
glyph_width = (glyph_width+7)&~7;
@@ -188,11 +189,7 @@ void QImageTextureGlyphCache::createTextureData(int width, int height)
int QImageTextureGlyphCache::glyphMargin() const
{
-#ifdef Q_WS_MAC
return 2;
-#else
- return m_type == QFontEngineGlyphCache::Raster_RGBMask ? 2 : 0;
-#endif
}
void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g)
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index 2383272..cec2d16 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -1355,7 +1355,8 @@ static inline QHomogeneousCoordinate mapHomogeneous(const QTransform &transform,
return c;
}
-static inline bool lineTo_clipped(QPainterPath &path, const QTransform &transform, const QPointF &a, const QPointF &b, bool needsMoveTo)
+static inline bool lineTo_clipped(QPainterPath &path, const QTransform &transform, const QPointF &a, const QPointF &b,
+ bool needsMoveTo, bool needsLineTo = true)
{
QHomogeneousCoordinate ha = mapHomogeneous(transform, a);
QHomogeneousCoordinate hb = mapHomogeneous(transform, b);
@@ -1388,7 +1389,8 @@ static inline bool lineTo_clipped(QPainterPath &path, const QTransform &transfor
if (needsMoveTo)
path.moveTo(ha.toPoint());
- path.lineTo(hb.toPoint());
+ if (needsLineTo)
+ path.lineTo(hb.toPoint());
return true;
}
@@ -1455,7 +1457,7 @@ static QPainterPath mapProjective(const QTransform &transform, const QPainterPat
}
if (path.elementCount() > 0 && lastMoveTo != last)
- lineTo_clipped(result, transform, last, lastMoveTo, needsMoveTo);
+ lineTo_clipped(result, transform, last, lastMoveTo, needsMoveTo, false);
return result;
}
diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp
index 8214e54..38621c1 100644
--- a/src/gui/text/qcssparser.cpp
+++ b/src/gui/text/qcssparser.cpp
@@ -1161,13 +1161,20 @@ static bool setFontWeightFromValue(const Value &value, QFont *font)
return true;
}
-static bool setFontFamilyFromValues(const QVector<Value> &values, QFont *font)
+/** \internal
+ * parse the font family from the values (starting from index \a start)
+ * and set it the \a font
+ * \returns true if a family was extracted.
+ */
+static bool setFontFamilyFromValues(const QVector<Value> &values, QFont *font, int start = 0)
{
QString family;
- for (int i = 0; i < values.count(); ++i) {
+ for (int i = start; i < values.count(); ++i) {
const Value &v = values.at(i);
- if (v.type == Value::TermOperatorComma)
- break;
+ if (v.type == Value::TermOperatorComma) {
+ family += QLatin1Char(',');
+ continue;
+ }
const QString str = v.variant.toString();
if (str.isEmpty())
break;
@@ -1221,9 +1228,7 @@ static void parseShorthandFontProperty(const QVector<Value> &values, QFont *font
}
if (i < values.count()) {
- QString fam = values.at(i).variant.toString();
- if (!fam.isEmpty())
- font->setFamily(fam);
+ setFontFamilyFromValues(values, font, i);
}
}
diff --git a/src/gui/text/qfontdatabase_x11.cpp b/src/gui/text/qfontdatabase_x11.cpp
index 15e626e..70e1599 100644
--- a/src/gui/text/qfontdatabase_x11.cpp
+++ b/src/gui/text/qfontdatabase_x11.cpp
@@ -494,7 +494,7 @@ static inline bool isFixedPitch(char **tokens)
Fills in a font definition (QFontDef) from an XLFD (X Logical Font
Description).
- Returns true if the the given xlfd is valid.
+ Returns true if the given xlfd is valid.
*/
bool qt_fillFontDef(const QByteArray &xlfd, QFontDef *fd, int dpi, QtFontDesc *desc)
{
diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp
index 1996d44..bf3a176 100644
--- a/src/gui/text/qfontengine_win.cpp
+++ b/src/gui/text/qfontengine_win.cpp
@@ -1406,8 +1406,8 @@ QNativeImage *QFontEngineWin::drawGDIGlyph(HFONT font, glyph_t glyph, int margin
#endif
#endif
- QNativeImage *ni = new QNativeImage(iw + 2 * margin,
- ih + 2 * margin,
+ QNativeImage *ni = new QNativeImage(iw + 2 * margin + 2,
+ ih + 2 * margin + 2,
QNativeImage::systemFormat(), true);
ni->image.fill(0xffffffff);
@@ -1449,7 +1449,7 @@ QImage QFontEngineWin::alphaMapForGlyph(glyph_t glyph, const QTransform &xform)
font = CreateFontIndirectW(&lf);
}
- QNativeImage *mask = drawGDIGlyph(font, glyph, 0, xform);
+ QNativeImage *mask = drawGDIGlyph(font, glyph, 2, xform);
if (mask == 0)
return QImage();
diff --git a/src/gui/text/qtextformat.cpp b/src/gui/text/qtextformat.cpp
index 21bfc4d..38ac4ca 100644
--- a/src/gui/text/qtextformat.cpp
+++ b/src/gui/text/qtextformat.cpp
@@ -1449,7 +1449,7 @@ void QTextCharFormat::setUnderlineStyle(UnderlineStyle style)
/*!
\since 4.5
\fn bool QTextCharFormat::fontKerning() const
- Returns true if the the font kerning is enabled.
+ Returns true if the font kerning is enabled.
\sa setFontKerning()
\sa font()
diff --git a/src/gui/util/qundostack.cpp b/src/gui/util/qundostack.cpp
index 11f65e3..a6b9c23 100644
--- a/src/gui/util/qundostack.cpp
+++ b/src/gui/util/qundostack.cpp
@@ -715,7 +715,7 @@ int QUndoStack::index() const
}
/*!
- Repeatedly calls undo() or redo() until the the current command index reaches
+ Repeatedly calls undo() or redo() until the current command index reaches
\a idx. This function can be used to roll the state of the document forwards
of backwards. indexChanged() is emitted only once.
diff --git a/src/gui/widgets/qcalendarwidget.cpp b/src/gui/widgets/qcalendarwidget.cpp
index 92c12a5..4436c04 100644
--- a/src/gui/widgets/qcalendarwidget.cpp
+++ b/src/gui/widgets/qcalendarwidget.cpp
@@ -2791,7 +2791,7 @@ QTextCharFormat QCalendarWidget::dateTextFormat(const QDate &date) const
void QCalendarWidget::setDateTextFormat(const QDate &date, const QTextCharFormat &format)
{
Q_D(QCalendarWidget);
- if ( date.isNull() && !format.isValid() )
+ if (date.isNull())
d->m_model->m_dateFormats.clear();
else
d->m_model->m_dateFormats[date] = format;
diff --git a/src/gui/widgets/qlcdnumber.cpp b/src/gui/widgets/qlcdnumber.cpp
index 0136f1a..af80963 100644
--- a/src/gui/widgets/qlcdnumber.cpp
+++ b/src/gui/widgets/qlcdnumber.cpp
@@ -1271,7 +1271,7 @@ bool QLCDNumber::event(QEvent *e)
/*!
\fn int QLCDNumber::margin() const
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
Use QWidget::getContentsMargins() instead.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp
index b03df9e..b76d019 100644
--- a/src/gui/widgets/qlineedit.cpp
+++ b/src/gui/widgets/qlineedit.cpp
@@ -3673,7 +3673,7 @@ void QLineEditPrivate::redo() {
/*!
\fn int QLineEdit::margin() const
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
Use QWidget::getContentsMargins() instead.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/gui/widgets/qmainwindow.cpp b/src/gui/widgets/qmainwindow.cpp
index 502c1e9..558ba42 100644
--- a/src/gui/widgets/qmainwindow.cpp
+++ b/src/gui/widgets/qmainwindow.cpp
@@ -1408,10 +1408,10 @@ bool QMainWindow::event(QEvent *event)
This property is false by default and only has any effect on Mac OS X 10.4 or higher.
- If set to true, then the top toolbar area is replaced with a Carbon
- HIToolbar and all toolbars in the top toolbar area are moved to that. Any
- toolbars added afterwards will also be added to the Carbon HIToolbar. This
- means a couple of things.
+ If set to true, then the top toolbar area is replaced with a Carbon HIToolbar
+ or a Cocoa NSToolbar (depending on whether Qt was built with Carbon or Cocoa).
+ All toolbars in the top toolbar area and any toolbars added afterwards are
+ moved to that. This means a couple of things.
\list
\i QToolBars in this toolbar area are not movable and you cannot drag other
diff --git a/src/gui/widgets/qmdiarea.cpp b/src/gui/widgets/qmdiarea.cpp
index 598d3b5..6acd977 100644
--- a/src/gui/widgets/qmdiarea.cpp
+++ b/src/gui/widgets/qmdiarea.cpp
@@ -81,7 +81,7 @@
subwindows. This information could be used in a popup menu
containing a list of windows, for example.
- The subwindows are sorted by the the current
+ The subwindows are sorted by the current
\l{QMdiArea::}{WindowOrder}. This is used for the subWindowList()
and for activateNextSubWindow() and acivatePreviousSubWindow().
Also, it is used when cascading or tiling the windows with
diff --git a/src/gui/widgets/qmenu_p.h b/src/gui/widgets/qmenu_p.h
index e3c4890..74367c4 100644
--- a/src/gui/widgets/qmenu_p.h
+++ b/src/gui/widgets/qmenu_p.h
@@ -208,7 +208,7 @@ public:
QString searchBuffer;
QBasicTimer searchBufferTimer;
- //passing of mouse events up the parent heirarchy
+ //passing of mouse events up the parent hierarchy
QPointer<QMenu> activeMenu;
bool mouseEventTaken(QMouseEvent *);
diff --git a/src/gui/widgets/qmenubar.cpp b/src/gui/widgets/qmenubar.cpp
index ccf37db..c63da64 100644
--- a/src/gui/widgets/qmenubar.cpp
+++ b/src/gui/widgets/qmenubar.cpp
@@ -2379,7 +2379,7 @@ int QMenuBar::findIdForAction(QAction *act) const
/*!
\fn int QMenuBar::margin() const
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
Use QWidget::getContentsMargins() instead.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/gui/widgets/qscrollarea.cpp b/src/gui/widgets/qscrollarea.cpp
index 6aca7d3..8b01453 100644
--- a/src/gui/widgets/qscrollarea.cpp
+++ b/src/gui/widgets/qscrollarea.cpp
@@ -127,7 +127,7 @@ QT_BEGIN_NAMESPACE
setting the layout's \l{QLayout::sizeConstraint}{size constraint}
property to one which provides constraints on the minimum and/or
maximum size of the layout (e.g., QLayout::SetMinAndMaxSize) will
- cause the size of the the scroll area to be updated whenever the
+ cause the size of the scroll area to be updated whenever the
contents of the layout changes.
For a complete example using the QScrollArea class, see the \l
diff --git a/src/gui/widgets/qsplitter.cpp b/src/gui/widgets/qsplitter.cpp
index bf8af35..45e838f 100644
--- a/src/gui/widgets/qsplitter.cpp
+++ b/src/gui/widgets/qsplitter.cpp
@@ -1517,7 +1517,7 @@ void QSplitter::setOpaqueResize(bool on)
/*!
\fn int QSplitter::margin() const
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
Use QWidget::getContentsMargins() instead.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/gui/widgets/qtabwidget.cpp b/src/gui/widgets/qtabwidget.cpp
index c16e000..43b2f54 100644
--- a/src/gui/widgets/qtabwidget.cpp
+++ b/src/gui/widgets/qtabwidget.cpp
@@ -504,7 +504,7 @@ QIcon QTabWidget::tabIcon(int index) const
}
/*!
- Returns true if the the page at position \a index is enabled; otherwise returns false.
+ Returns true if the page at position \a index is enabled; otherwise returns false.
\sa setTabEnabled(), QWidget::isEnabled()
*/
diff --git a/src/gui/widgets/qtoolbox.cpp b/src/gui/widgets/qtoolbox.cpp
index 81935a5..271130a 100644
--- a/src/gui/widgets/qtoolbox.cpp
+++ b/src/gui/widgets/qtoolbox.cpp
@@ -802,7 +802,7 @@ void QToolBox::itemRemoved(int index)
/*!
\fn int QToolBox::margin() const
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
Use QWidget::getContentsMargins() instead.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/network/access/qhttp.cpp b/src/network/access/qhttp.cpp
index 96ccc91..7d14ab6 100644
--- a/src/network/access/qhttp.cpp
+++ b/src/network/access/qhttp.cpp
@@ -950,7 +950,7 @@ void QHttpHeader::setContentLength(int len)
}
/*!
- Returns true if the header has an entry for the the special HTTP
+ Returns true if the header has an entry for the special HTTP
header field \c content-type; otherwise returns false.
\sa contentType() setContentType()
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index f558f2b..ae518df 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -643,10 +643,21 @@ void QHttpNetworkConnectionPrivate::handleStatus(QAbstractSocket *socket, QHttpN
switch (statusCode) {
case 401:
case 407:
- handleAuthenticateChallenge(socket, reply, (statusCode == 407), resend);
- if (resend) {
- eraseData(reply);
- sendRequest(socket);
+ if (handleAuthenticateChallenge(socket, reply, (statusCode == 407), resend)) {
+ if (resend) {
+ eraseData(reply);
+ sendRequest(socket);
+ }
+ } else {
+ int i = indexOf(socket);
+ emit channels[i].reply->headerChanged();
+ emit channels[i].reply->readyRead();
+ QNetworkReply::NetworkError errorCode = (statusCode == 407)
+ ? QNetworkReply::ProxyAuthenticationRequiredError
+ : QNetworkReply::AuthenticationRequiredError;
+ reply->d_func()->errorString = errorDetail(errorCode, socket);
+ emit q->error(errorCode, reply->d_func()->errorString);
+ emit channels[i].reply->finished();
}
break;
default:
@@ -749,7 +760,6 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
// authentication is cancelled, send the current contents to the user.
emit channels[i].reply->headerChanged();
emit channels[i].reply->readyRead();
- emit channels[i].reply->finished();
QNetworkReply::NetworkError errorCode =
isProxy
? QNetworkReply::ProxyAuthenticationRequiredError
diff --git a/src/network/access/qnetworkdiskcache.cpp b/src/network/access/qnetworkdiskcache.cpp
index 892929e..44a8298 100644
--- a/src/network/access/qnetworkdiskcache.cpp
+++ b/src/network/access/qnetworkdiskcache.cpp
@@ -494,21 +494,21 @@ qint64 QNetworkDiskCache::expire()
QDir::Filters filters = QDir::AllDirs | QDir:: Files | QDir::NoDotAndDotDot;
QDirIterator it(cacheDirectory(), filters, QDirIterator::Subdirectories);
- QMap<QDateTime, QString> cacheItems;
+ QMultiMap<QDateTime, QString> cacheItems;
qint64 totalSize = 0;
while (it.hasNext()) {
QString path = it.next();
QFileInfo info = it.fileInfo();
QString fileName = info.fileName();
if (fileName.endsWith(CACHE_POSTFIX) && fileName.startsWith(CACHE_PREFIX)) {
- cacheItems[info.created()] = path;
+ cacheItems.insert(info.created(), path);
totalSize += info.size();
}
}
int removedFiles = 0;
qint64 goal = (maximumCacheSize() * 9) / 10;
- QMap<QDateTime, QString>::const_iterator i = cacheItems.constBegin();
+ QMultiMap<QDateTime, QString>::const_iterator i = cacheItems.constBegin();
while (i != cacheItems.constEnd()) {
if (totalSize < goal)
break;
diff --git a/src/network/kernel/qnetworkinterface.cpp b/src/network/kernel/qnetworkinterface.cpp
index 670745b..960999e 100644
--- a/src/network/kernel/qnetworkinterface.cpp
+++ b/src/network/kernel/qnetworkinterface.cpp
@@ -397,7 +397,7 @@ QNetworkInterface::~QNetworkInterface()
}
/*!
- Creates a copy of the the QNetworkInterface object contained in \a
+ Creates a copy of the QNetworkInterface object contained in \a
other.
*/
QNetworkInterface::QNetworkInterface(const QNetworkInterface &other)
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index f9750f2..336a7e7 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1127,7 +1127,7 @@ bool QAbstractSocketPrivate::readFromSocket()
/*! \internal
- Sets up the the internal state after the connection has succeeded.
+ Sets up the internal state after the connection has succeeded.
*/
void QAbstractSocketPrivate::fetchConnectionParameters()
{
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 04bc611..8f963f8 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -2588,7 +2588,7 @@ const QGLContext* QGLContext::currentContext()
\i paintGL() - Renders the OpenGL scene. Gets called whenever the widget
needs to be updated.
\i resizeGL() - Sets up the OpenGL viewport, projection, etc. Gets
- called whenever the the widget has been resized (and also when it
+ called whenever the widget has been resized (and also when it
is shown for the first time because all newly created widgets get a
resize event automatically).
\i initializeGL() - Sets up the OpenGL rendering context, defines display
diff --git a/src/qt3support/network/q3http.cpp b/src/qt3support/network/q3http.cpp
index f1590a6..591b381 100644
--- a/src/qt3support/network/q3http.cpp
+++ b/src/qt3support/network/q3http.cpp
@@ -626,7 +626,7 @@ void Q3HttpHeader::setContentLength( int len )
}
/*!
- Returns true if the header has an entry for the the special HTTP
+ Returns true if the header has an entry for the special HTTP
header field \c content-type; otherwise returns false.
\sa contentType() setContentType()
diff --git a/src/qt3support/network/q3urloperator.cpp b/src/qt3support/network/q3urloperator.cpp
index 3f334a8..b415e12 100644
--- a/src/qt3support/network/q3urloperator.cpp
+++ b/src/qt3support/network/q3urloperator.cpp
@@ -543,7 +543,7 @@ const Q3NetworkOperation *Q3UrlOperator::rename( const QString &oldname, const Q
in mind that the get() and put() operations emit this signal
through the Q3UrlOperator. The number of transferred bytes and the
total bytes that you receive as arguments in this signal do not
- relate to the the whole copy operation; they relate first to the
+ relate to the whole copy operation; they relate first to the
get() and then to the put() operation. Always check what type of
operation the signal comes from; this is given in the signal's
last argument.
diff --git a/src/qt3support/widgets/q3action.cpp b/src/qt3support/widgets/q3action.cpp
index 4e1a1bf..311212a 100644
--- a/src/qt3support/widgets/q3action.cpp
+++ b/src/qt3support/widgets/q3action.cpp
@@ -497,7 +497,7 @@ Q3Action::Q3Action(const QIcon& icon, const QString& menuText, QKeySequence acce
}
/*!
- This constructor results in an icon-less action with the the menu
+ This constructor results in an icon-less action with the menu
text \a menuText and keyboard accelerator \a accel. It is a child
of \a parent and called \a name.
diff --git a/src/qt3support/widgets/q3groupbox.cpp b/src/qt3support/widgets/q3groupbox.cpp
index 1fa7e7c..e0b609a 100644
--- a/src/qt3support/widgets/q3groupbox.cpp
+++ b/src/qt3support/widgets/q3groupbox.cpp
@@ -382,7 +382,7 @@ int Q3GroupBox::insideSpacing() const
}
/*!
- Sets the the width of the inside margin to \a m pixels.
+ Sets the width of the inside margin to \a m pixels.
\sa insideMargin()
*/
@@ -954,7 +954,7 @@ int Q3GroupBox::frameWidth() const
\fn int Q3GroupBox::margin() const
\since 4.2
- Returns the width of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
This function uses QWidget::getContentsMargins() to get the margin.
diff --git a/src/qt3support/widgets/q3popupmenu.cpp b/src/qt3support/widgets/q3popupmenu.cpp
index 7f890b5..0b3a524 100644
--- a/src/qt3support/widgets/q3popupmenu.cpp
+++ b/src/qt3support/widgets/q3popupmenu.cpp
@@ -134,7 +134,7 @@ QT_BEGIN_NAMESPACE
\fn int Q3PopupMenu::margin() const
\since 4.2
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
This function uses QWidget::getContentsMargins() to get the margin.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/qt3support/widgets/q3progressbar.cpp b/src/qt3support/widgets/q3progressbar.cpp
index caae460..81f0dbf 100644
--- a/src/qt3support/widgets/q3progressbar.cpp
+++ b/src/qt3support/widgets/q3progressbar.cpp
@@ -455,7 +455,7 @@ void Q3ProgressBar::paintEvent(QPaintEvent *)
\fn int Q3ProgressBar::margin() const
\since 4.2
- Returns the with of the the margin around the contents of the widget.
+ Returns the width of the margin around the contents of the widget.
This function uses QWidget::getContentsMargins() to get the margin.
\sa setMargin(), QWidget::getContentsMargins()
diff --git a/src/qt3support/widgets/q3scrollview.cpp b/src/qt3support/widgets/q3scrollview.cpp
index 91a9203..5a91027 100644
--- a/src/qt3support/widgets/q3scrollview.cpp
+++ b/src/qt3support/widgets/q3scrollview.cpp
@@ -2038,7 +2038,7 @@ void Q3ScrollView::center(int x, int y)
\list
\i Margin 0.0 allows (x, y) to be on the edge of the visible area.
\i Margin 0.5 ensures that (x, y) is in middle 50% of the visible area.
- \i Margin 1.0 ensures that (x, y) is in the center of the the visible area.
+ \i Margin 1.0 ensures that (x, y) is in the center of the visible area.
\endlist
*/
void Q3ScrollView::center(int x, int y, float xmargin, float ymargin)
diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp
index e6729a5..2a07e28 100644
--- a/src/sql/kernel/qsqlquery.cpp
+++ b/src/sql/kernel/qsqlquery.cpp
@@ -1195,7 +1195,7 @@ void QSqlQuery::finish()
The query will be repositioned on an \e invalid record in the new
result set and must be navigated to a valid record before data
values can be retrieved. If a new result set isn't available the
- function returns false and the the query is set to inactive. In any
+ function returns false and the query is set to inactive. In any
case the old result set will be discarded.
When one of the statements is a non-select statement a count of
diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
index 433a3ad..6a897e8 100644
--- a/src/svg/qsvghandler.cpp
+++ b/src/svg/qsvghandler.cpp
@@ -1673,10 +1673,19 @@ static void parseCSStoXMLAttrs(const QVector<QCss::Declaration> &declarations,
const QCss::Declaration &decl = declarations.at(i);
if (decl.d->property.isEmpty())
continue;
- if (decl.d->values.count() != 1)
- continue;
QCss::Value val = decl.d->values.first();
- QString valueStr = val.toString();
+ QString valueStr;
+ if (decl.d->values.count() != 1) {
+ for (int i=0; i<decl.d->values.count(); ++i) {
+ const QString &value = decl.d->values[i].toString();
+ if (value.isEmpty())
+ valueStr += QLatin1Char(',');
+ else
+ valueStr += value;
+ }
+ } else {
+ valueStr = val.toString();
+ }
if (val.type == QCss::Value::Uri) {
valueStr.prepend(QLatin1String("url("));
valueStr.append(QLatin1Char(')'));
diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp
index c78d4ba..ade0339 100644
--- a/src/xml/sax/qxml.cpp
+++ b/src/xml/sax/qxml.cpp
@@ -2107,7 +2107,7 @@ events are reported.
You can set the lexical handler with
QXmlReader::setLexicalHandler().
- This interface's design is based on the the SAX2 extension
+ This interface's design is based on the SAX2 extension
LexicalHandler.
The interface provides the startDTD(), endDTD(), startEntity(),
diff --git a/src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp b/src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp
index ef77c76..104c5cc 100644
--- a/src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp
+++ b/src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp
@@ -105,7 +105,7 @@ Item XSLTSimpleContentConstructor::evaluateSingleton(const DynamicContext::Ptr &
QString result;
bool previousIsText = false;
- bool discard;
+ bool discard = false;
if(next)
{
diff --git a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
index 67a822f..617832b 100644
--- a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
+++ b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
@@ -47,6 +47,8 @@
#include <qspinbox.h>
#include <qmenu.h>
#include <qdebug.h>
+#include <qdatetime.h>
+#include <qtextformat.h>
//TESTED_CLASS=
@@ -68,6 +70,11 @@ public slots:
private slots:
void getSetCheck();
void buttonClickCheck();
+
+ void setTextFormat();
+ void resetTextFormat();
+
+ void setWeekdayFormat();
};
// Testing get/set functions
@@ -215,6 +222,52 @@ void tst_QCalendarWidget::buttonClickCheck()
}
+void tst_QCalendarWidget::setTextFormat()
+{
+ QCalendarWidget calendar;
+ QTextCharFormat format;
+ format.setFontItalic(true);
+ format.setForeground(Qt::green);
+
+ const QDate date(1984, 10, 20);
+ calendar.setDateTextFormat(date, format);
+ QCOMPARE(calendar.dateTextFormat(date), format);
+}
+
+void tst_QCalendarWidget::resetTextFormat()
+{
+ QCalendarWidget calendar;
+ QTextCharFormat format;
+ format.setFontItalic(true);
+ format.setForeground(Qt::green);
+
+ const QDate date(1984, 10, 20);
+ calendar.setDateTextFormat(date, format);
+
+ calendar.setDateTextFormat(QDate(), QTextCharFormat());
+ QCOMPARE(calendar.dateTextFormat(date), QTextCharFormat());
+}
+
+void tst_QCalendarWidget::setWeekdayFormat()
+{
+ QCalendarWidget calendar;
+
+ QTextCharFormat format;
+ format.setFontItalic(true);
+ format.setForeground(Qt::green);
+
+ calendar.setWeekdayTextFormat(Qt::Wednesday, format);
+
+ // check the format of the a given month
+ for (int i = 1; i <= 31; ++i) {
+ const QDate date(1984, 10, i);
+ const Qt::DayOfWeek dayOfWeek = static_cast<Qt::DayOfWeek>(date.dayOfWeek());
+ if (dayOfWeek == Qt::Wednesday)
+ QCOMPARE(calendar.weekdayTextFormat(dayOfWeek), format);
+ else
+ QVERIFY(calendar.weekdayTextFormat(dayOfWeek) != format);
+ }
+}
tst_QCalendarWidget::tst_QCalendarWidget()
{
diff --git a/tests/auto/qcolor/tst_qcolor.cpp b/tests/auto/qcolor/tst_qcolor.cpp
index 7608a15..684d5b5 100644
--- a/tests/auto/qcolor/tst_qcolor.cpp
+++ b/tests/auto/qcolor/tst_qcolor.cpp
@@ -111,12 +111,15 @@ private slots:
void toRgb_data();
void toRgb();
+ void toRgbNonDestructive();
void toHsv_data();
void toHsv();
+ void toHsvNonDestructive();
void toCmyk_data();
void toCmyk();
+ void toCmykNonDestructive();
void convertTo();
@@ -1124,6 +1127,12 @@ void tst_QColor::toHsv_data()
<< QColor::fromCmykF(0., 1., 1., 0.);
}
+void tst_QColor::toRgbNonDestructive()
+{
+ QColor aColor = QColor::fromRgbF(0.11, 0.22, 0.33, 0.44);
+ QCOMPARE(aColor, aColor.toRgb());
+}
+
void tst_QColor::toHsv()
{
// invalid should remain invalid
@@ -1136,6 +1145,12 @@ void tst_QColor::toHsv()
QCOMPARE(cmykColor.toHsv(), expectedColor);
}
+void tst_QColor::toHsvNonDestructive()
+{
+ QColor aColor = QColor::fromHsvF(0.11, 0.22, 0.33, 0.44);
+ QCOMPARE(aColor, aColor.toHsv());
+}
+
void tst_QColor::toCmyk_data()
{
QTest::addColumn<QColor>("expectedColor");
@@ -1165,6 +1180,12 @@ void tst_QColor::toCmyk()
QCOMPARE(hsvColor.toCmyk(), expectedColor);
}
+void tst_QColor::toCmykNonDestructive()
+{
+ QColor aColor = QColor::fromCmykF(0.11, 0.22, 0.33, 0.44);
+ QCOMPARE(aColor, aColor.toCmyk());
+}
+
void tst_QColor::convertTo()
{
QColor color(Qt::black);
diff --git a/tests/auto/qcssparser/tst_cssparser.cpp b/tests/auto/qcssparser/tst_cssparser.cpp
index ab6bad6..7c4fac1 100644
--- a/tests/auto/qcssparser/tst_cssparser.cpp
+++ b/tests/auto/qcssparser/tst_cssparser.cpp
@@ -123,7 +123,7 @@ static void debug(const QVector<QCss::Symbol> &symbols, int index = -1)
qDebug() << "failure at index" << index;
}
-static void debug(const QCss::Parser &p) { debug(p.symbols); }
+//static void debug(const QCss::Parser &p) { debug(p.symbols); }
void tst_CssParser::scanner()
{
@@ -1473,7 +1473,12 @@ void tst_CssParser::extractFontFamily_data()
QTest::newRow("quoted-family-name") << "font-family: 'Times New Roman'" << QString("Times New Roman");
QTest::newRow("unquoted-family-name") << "font-family: Times New Roman" << QString("Times New Roman");
QTest::newRow("unquoted-family-name2") << "font-family: Times New Roman" << QString("Times New Roman");
- QTest::newRow("multiple") << "font-family: Times New Roman , foobar, 'baz'" << QString("Times New Roman");
+ QTest::newRow("multiple") << "font-family: Times New Roman , foobar, 'baz'" << QString("Times New Roman");
+ QTest::newRow("multiple2") << "font-family: invalid, Times New Roman " << QString("Times New Roman");
+ QTest::newRow("invalid") << "font-family: invalid" << QFont().family();
+ QTest::newRow("shorthand") << "font: 12pt Times New Roman" << QString("Times New Roman");
+ QTest::newRow("shorthand multiple quote") << "font: 12pt invalid, \"Times New Roman\" " << QString("Times New Roman");
+ QTest::newRow("shorthand multiple") << "font: 12pt invalid, Times New Roman " << QString("Times New Roman");
}
void tst_CssParser::extractFontFamily()
@@ -1497,8 +1502,8 @@ void tst_CssParser::extractFontFamily()
int adjustment = 0;
QFont fnt;
extractor.extractFont(&fnt, &adjustment);
-
- QTEST(fnt.family(), "expectedFamily");
+ QFontInfo info(fnt);
+ QTEST(info.family(), "expectedFamily");
}
void tst_CssParser::extractBorder_data()
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 6d150cb..58a17ea 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -215,6 +215,8 @@ private slots:
void tabChangesFocus_data();
void cacheMode();
void updateCachedItemAfterMove();
+ void deviceTransform_data();
+ void deviceTransform();
// task specific tests below me
void task141694_textItemEnsureVisible();
@@ -6200,5 +6202,113 @@ void tst_QGraphicsItem::updateCachedItemAfterMove()
QCOMPARE(tester->repaints, 1);
}
+class Track : public QGraphicsRectItem
+{
+public:
+ Track(const QRectF &rect)
+ : QGraphicsRectItem(rect)
+ {
+ setAcceptHoverEvents(true);
+ }
+
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0)
+ {
+ QGraphicsRectItem::paint(painter, option, widget);
+ painter->drawText(boundingRect(), Qt::AlignCenter, QString("%1x%2\n%3x%4").arg(p.x()).arg(p.y()).arg(sp.x()).arg(sp.y()));
+ }
+
+protected:
+ void hoverMoveEvent(QGraphicsSceneHoverEvent *event)
+ {
+ p = event->pos();
+ sp = event->widget()->mapFromGlobal(event->screenPos());
+ update();
+ }
+private:
+ QPointF p;
+ QPoint sp;
+};
+
+void tst_QGraphicsItem::deviceTransform_data()
+{
+ QTest::addColumn<bool>("untransformable1");
+ QTest::addColumn<bool>("untransformable2");
+ QTest::addColumn<bool>("untransformable3");
+ QTest::addColumn<qreal>("rotation1");
+ QTest::addColumn<qreal>("rotation2");
+ QTest::addColumn<qreal>("rotation3");
+ QTest::addColumn<QTransform>("deviceX");
+ QTest::addColumn<QPointF>("mapResult1");
+ QTest::addColumn<QPointF>("mapResult2");
+ QTest::addColumn<QPointF>("mapResult3");
+
+ QTest::newRow("nil") << false << false << false
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform()
+ << QPointF(150, 150) << QPointF(250, 250) << QPointF(350, 350);
+ QTest::newRow("deviceX rot 90") << false << false << false
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-150, 150) << QPointF(-250, 250) << QPointF(-350, 350);
+ QTest::newRow("deviceX rot 90 100") << true << false << false
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-50, 150) << QPointF(50, 250) << QPointF(150, 350);
+ QTest::newRow("deviceX rot 90 010") << false << true << false
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-150, 150) << QPointF(-150, 250) << QPointF(-50, 350);
+ QTest::newRow("deviceX rot 90 001") << false << false << true
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-150, 150) << QPointF(-250, 250) << QPointF(-250, 350);
+ QTest::newRow("deviceX rot 90 111") << true << true << true
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-50, 150) << QPointF(50, 250) << QPointF(150, 350);
+ QTest::newRow("deviceX rot 90 101") << true << false << true
+ << qreal(0.0) << qreal(0.0) << qreal(0.0)
+ << QTransform().rotate(90)
+ << QPointF(-50, 150) << QPointF(50, 250) << QPointF(150, 350);
+}
+
+void tst_QGraphicsItem::deviceTransform()
+{
+ QFETCH(bool, untransformable1);
+ QFETCH(bool, untransformable2);
+ QFETCH(bool, untransformable3);
+ QFETCH(qreal, rotation1);
+ QFETCH(qreal, rotation2);
+ QFETCH(qreal, rotation3);
+ QFETCH(QTransform, deviceX);
+ QFETCH(QPointF, mapResult1);
+ QFETCH(QPointF, mapResult2);
+ QFETCH(QPointF, mapResult3);
+
+ QGraphicsScene scene;
+ Track *rect1 = new Track(QRectF(0, 0, 100, 100));
+ Track *rect2 = new Track(QRectF(0, 0, 100, 100));
+ Track *rect3 = new Track(QRectF(0, 0, 100, 100));
+ rect2->setParentItem(rect1);
+ rect3->setParentItem(rect2);
+ rect1->setPos(100, 100);
+ rect2->setPos(100, 100);
+ rect3->setPos(100, 100);
+ rect1->rotate(rotation1);
+ rect2->rotate(rotation2);
+ rect3->rotate(rotation3);
+ rect1->setFlag(QGraphicsItem::ItemIgnoresTransformations, untransformable1);
+ rect2->setFlag(QGraphicsItem::ItemIgnoresTransformations, untransformable2);
+ rect3->setFlag(QGraphicsItem::ItemIgnoresTransformations, untransformable3);
+ rect1->setBrush(Qt::red);
+ rect2->setBrush(Qt::green);
+ rect3->setBrush(Qt::blue);
+ scene.addItem(rect1);
+
+ QCOMPARE(rect1->deviceTransform(deviceX).map(QPointF(50, 50)), mapResult1);
+ QCOMPARE(rect2->deviceTransform(deviceX).map(QPointF(50, 50)), mapResult2);
+ QCOMPARE(rect3->deviceTransform(deviceX).map(QPointF(50, 50)), mapResult3);
+}
+
QTEST_MAIN(tst_QGraphicsItem)
#include "tst_qgraphicsitem.moc"
diff --git a/tests/auto/qimage/tst_qimage.cpp b/tests/auto/qimage/tst_qimage.cpp
index ee4ece2..88bbb50 100644
--- a/tests/auto/qimage/tst_qimage.cpp
+++ b/tests/auto/qimage/tst_qimage.cpp
@@ -1454,9 +1454,9 @@ void tst_QImage::smoothScale3()
QRgb cb = b.pixel(x, y);
// tolerate a little bit of rounding errors
- QVERIFY(compare(qRed(ca), qRed(cb), 2));
- QVERIFY(compare(qGreen(ca), qGreen(cb), 2));
- QVERIFY(compare(qBlue(ca), qBlue(cb), 2));
+ QVERIFY(compare(qRed(ca), qRed(cb), 3));
+ QVERIFY(compare(qGreen(ca), qGreen(cb), 3));
+ QVERIFY(compare(qBlue(ca), qBlue(cb), 3));
}
}
}
diff --git a/tests/auto/qitemmodel/tst_qitemmodel.cpp b/tests/auto/qitemmodel/tst_qitemmodel.cpp
index ea1972e..d29a3e3 100644
--- a/tests/auto/qitemmodel/tst_qitemmodel.cpp
+++ b/tests/auto/qitemmodel/tst_qitemmodel.cpp
@@ -54,7 +54,7 @@
#include <QtTest/QtTest>
#include <QtCore>
#include <qdebug.h>
-#include <modelstotest.cpp>
+#include "modelstotest.cpp"
#include <QMetaType>
Q_DECLARE_METATYPE(QModelIndex)
diff --git a/tests/auto/qitemview/tst_qitemview.cpp b/tests/auto/qitemview/tst_qitemview.cpp
index 748bd50..3317c1d 100644
--- a/tests/auto/qitemview/tst_qitemview.cpp
+++ b/tests/auto/qitemview/tst_qitemview.cpp
@@ -42,7 +42,7 @@
#include <QtTest/QtTest>
#include <QtCore/QtCore>
-#include <viewstotest.cpp>
+#include "viewstotest.cpp"
#include <stdlib.h>
#if defined(Q_OS_WIN)
diff --git a/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
index fc15437..2383767 100644
--- a/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
+++ b/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
@@ -389,7 +389,8 @@ void tst_QNetworkDiskCache::expire()
qint64 max = cache.maximumCacheSize();
QCOMPARE(max, limit);
for (int i = 0; i < 10; ++i) {
- QTest::qWait(2000);
+ if (i % 3 == 0)
+ QTest::qWait(2000);
QNetworkCacheMetaData m;
m.setUrl(QUrl("http://www.foo.com/" + QString::number(i)));
QIODevice *d = cache.prepare(m);
diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
index 4be0863..bb199b9 100644
--- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
@@ -217,6 +217,8 @@ private Q_SLOTS:
void httpProxyCommands_data();
void httpProxyCommands();
void proxyChange();
+ void authorizationError_data();
+ void authorizationError();
};
QT_BEGIN_NAMESPACE
@@ -3012,5 +3014,55 @@ void tst_QNetworkReply::proxyChange()
QVERIFY(int(reply3->error()) > 0);
}
+void tst_QNetworkReply::authorizationError_data()
+{
+
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<int>("errorSignalCount");
+ QTest::addColumn<int>("finishedSignalCount");
+ QTest::addColumn<int>("error");
+ QTest::addColumn<int>("httpStatusCode");
+ QTest::addColumn<QString>("httpBody");
+
+ QTest::newRow("unknown-authorization-method") << "http://" + QtNetworkSettings::serverName() +
+ "/cgi-bin/http-unknown-authentication-method.cgi?401-authorization-required" << 1 << 1
+ << int(QNetworkReply::AuthenticationRequiredError) << 401 << "authorization required";
+ QTest::newRow("unknown-proxy-authorization-method") << "http://" + QtNetworkSettings::serverName() +
+ "/cgi-bin/http-unknown-authentication-method.cgi?407-proxy-authorization-required" << 1 << 1
+ << int(QNetworkReply::ProxyAuthenticationRequiredError) << 407
+ << "authorization required";
+}
+
+void tst_QNetworkReply::authorizationError()
+{
+ QFETCH(QString, url);
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.get(request);
+
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+ QSignalSpy finishedSpy(reply, SIGNAL(finished()));
+ // now run the request:
+ connect(reply, SIGNAL(finished()),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QFETCH(int, errorSignalCount);
+ QCOMPARE(errorSpy.count(), errorSignalCount);
+ QFETCH(int, finishedSignalCount);
+ QCOMPARE(finishedSpy.count(), finishedSignalCount);
+ QFETCH(int, error);
+ QCOMPARE(reply->error(), QNetworkReply::NetworkError(error));
+
+ QFETCH(int, httpStatusCode);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), httpStatusCode);
+
+ QFETCH(QString, httpBody);
+ QCOMPARE(QString(reply->readAll()), httpBody);
+}
+
QTEST_MAIN(tst_QNetworkReply)
#include "tst_qnetworkreply.moc"
diff --git a/tests/auto/qobjectrace/tst_qobjectrace.cpp b/tests/auto/qobjectrace/tst_qobjectrace.cpp
index 0c88f29..fcfd528 100644
--- a/tests/auto/qobjectrace/tst_qobjectrace.cpp
+++ b/tests/auto/qobjectrace/tst_qobjectrace.cpp
@@ -50,6 +50,7 @@ class tst_QObjectRace: public QObject
Q_OBJECT
private slots:
void moveToThreadRace();
+ void destroyRace();
};
class RaceObject : public QObject
@@ -147,5 +148,93 @@ void tst_QObjectRace::moveToThreadRace()
delete object;
}
+
+class MyObject : public QObject
+{ Q_OBJECT
+ public slots:
+ void slot1() { emit signal1(); }
+ void slot2() { emit signal2(); }
+ void slot3() { emit signal3(); }
+ void slot4() { emit signal4(); }
+ void slot5() { emit signal5(); }
+ void slot6() { emit signal6(); }
+ void slot7() { emit signal7(); }
+ signals:
+ void signal1();
+ void signal2();
+ void signal3();
+ void signal4();
+ void signal5();
+ void signal6();
+ void signal7();
+};
+
+
+
+class DestroyThread : public QThread
+{
+ Q_OBJECT
+ QObject **objects;
+ int number;
+
+public:
+ void setObjects(QObject **o, int n)
+ {
+ objects = o;
+ number = n;
+ for(int i = 0; i < number; i++)
+ objects[i]->moveToThread(this);
+ }
+
+ void run() {
+ for(int i = 0; i < number; i++)
+ delete objects[i];
+ }
+};
+
+void tst_QObjectRace::destroyRace()
+{
+ enum { ThreadCount = 10, ObjectCountPerThread = 733,
+ ObjectCount = ThreadCount * ObjectCountPerThread };
+
+ const char *_slots[] = { SLOT(slot1()) , SLOT(slot2()) , SLOT(slot3()),
+ SLOT(slot4()) , SLOT(slot5()) , SLOT(slot6()),
+ SLOT(slot7()) };
+
+ const char *_signals[] = { SIGNAL(signal1()), SIGNAL(signal2()), SIGNAL(signal3()),
+ SIGNAL(signal4()), SIGNAL(signal5()), SIGNAL(signal6()),
+ SIGNAL(signal7()) };
+
+ QObject *objects[ObjectCount];
+ for (int i = 0; i < ObjectCount; ++i)
+ objects[i] = new MyObject;
+
+
+ for (int i = 0; i < ObjectCount * 11; ++i) {
+ connect(objects[(i*13) % ObjectCount], _signals[(2*i)%7],
+ objects[((i+2)*17) % ObjectCount], _slots[(3*i+2)%7] );
+ connect(objects[((i+6)*23) % ObjectCount], _signals[(5*i+4)%7],
+ objects[((i+8)*41) % ObjectCount], _slots[(i+6)%7] );
+ }
+
+ DestroyThread *threads[ThreadCount];
+ for (int i = 0; i < ThreadCount; ++i) {
+ threads[i] = new DestroyThread;
+ threads[i]->setObjects(objects + i*ObjectCountPerThread, ObjectCountPerThread);
+ }
+
+ for (int i = 0; i < ThreadCount; ++i)
+ threads[i]->start();
+
+ QVERIFY(threads[0]->wait(TwoMinutes));
+ // the other threads should finish pretty quickly now
+ for (int i = 1; i < ThreadCount; ++i)
+ QVERIFY(threads[i]->wait(3000));
+
+ for (int i = 0; i < ThreadCount; ++i)
+ delete threads[i];
+}
+
+
QTEST_MAIN(tst_QObjectRace)
#include "tst_qobjectrace.moc"
diff --git a/tests/auto/qprinter/tst_qprinter.cpp b/tests/auto/qprinter/tst_qprinter.cpp
index cde4ae5..221e3b0 100644
--- a/tests/auto/qprinter/tst_qprinter.cpp
+++ b/tests/auto/qprinter/tst_qprinter.cpp
@@ -953,8 +953,9 @@ void tst_QPrinter::printDialogCompleter()
QTest::qWait(100);
- QTest::keyClick(0, Qt::Key_Tab);
- QTest::keyClick(0, 'P');
+ QTest::keyClick(&dialog, Qt::Key_Tab);
+ QTest::keyClick(&dialog, 'P');
+ // The test passes if it doesn't crash.
#endif
}
diff --git a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
index 64439fb..a52bb3e 100644
--- a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
+++ b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
@@ -57,8 +57,11 @@ private slots:
void downCast();
void upCast();
void differentPointers();
+ void virtualBaseDifferentPointers();
#ifndef QTEST_NO_RTTI
void dynamicCast();
+ void dynamicCastDifferentPointers();
+ void dynamicCastVirtualBase();
void dynamicCastFailure();
#endif
void customDeleter();
@@ -321,6 +324,10 @@ class DiffPtrDerivedData: public Stuffing, public Data
{
};
+class VirtualDerived: virtual public Data
+{
+};
+
void tst_QSharedPointer::downCast()
{
{
@@ -439,7 +446,7 @@ void tst_QSharedPointer::differentPointers()
DiffPtrDerivedData *aData = new DiffPtrDerivedData;
Data *aBase = aData;
Q_ASSERT(aData == aBase);
- Q_ASSERT(quintptr(&aData) != quintptr(&aBase));
+ Q_ASSERT(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
QSharedPointer<DiffPtrDerivedData> ptr = qSharedPointerCast<DiffPtrDerivedData>(baseptr);
@@ -453,7 +460,7 @@ void tst_QSharedPointer::differentPointers()
DiffPtrDerivedData *aData = new DiffPtrDerivedData;
Data *aBase = aData;
Q_ASSERT(aData == aBase);
- Q_ASSERT(quintptr(&aData) != quintptr(&aBase));
+ Q_ASSERT(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
QSharedPointer<DiffPtrDerivedData> ptr = QSharedPointer<DiffPtrDerivedData>(aData);
QSharedPointer<Data> baseptr = ptr;
@@ -464,23 +471,53 @@ void tst_QSharedPointer::differentPointers()
QVERIFY(baseptr == aData);
QVERIFY(baseptr == aBase);
}
+}
+
+void tst_QSharedPointer::virtualBaseDifferentPointers()
+{
+ {
+ VirtualDerived *aData = new VirtualDerived;
+ Data *aBase = aData;
+ Q_ASSERT(aData == aBase);
+ Q_ASSERT(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
+
+ QSharedPointer<VirtualDerived> ptr = QSharedPointer<VirtualDerived>(aData);
+ QSharedPointer<Data> baseptr = qSharedPointerCast<Data>(ptr);
+ QVERIFY(ptr == baseptr);
+ QVERIFY(ptr.data() == baseptr.data());
+ QVERIFY(ptr == aBase);
+ QVERIFY(ptr == aData);
+ QVERIFY(baseptr == aData);
+ QVERIFY(baseptr == aBase);
+ }
+
+ {
+ VirtualDerived *aData = new VirtualDerived;
+ Data *aBase = aData;
+ Q_ASSERT(aData == aBase);
+ Q_ASSERT(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
- // there is no possibility for different pointers in
- // internal reference counting right now
- //
- // to do that, it's necessary to first implement the ability to
- // call (virtual) functions, so that the two differing bases have
- // the same reference counter
+ QSharedPointer<VirtualDerived> ptr = QSharedPointer<VirtualDerived>(aData);
+ QSharedPointer<Data> baseptr = ptr;
+ QVERIFY(ptr == baseptr);
+ QVERIFY(ptr.data() == baseptr.data());
+ QVERIFY(ptr == aBase);
+ QVERIFY(ptr == aData);
+ QVERIFY(baseptr == aData);
+ QVERIFY(baseptr == aBase);
+ }
}
#ifndef QTEST_NO_RTTI
void tst_QSharedPointer::dynamicCast()
{
- QSharedPointer<Data> baseptr = QSharedPointer<Data>(new DerivedData);
+ DerivedData *aData = new DerivedData;
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
{
QSharedPointer<DerivedData> derivedptr = qSharedPointerDynamicCast<DerivedData>(baseptr);
QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
}
QCOMPARE(int(baseptr.d->weakref), 1);
@@ -490,6 +527,7 @@ void tst_QSharedPointer::dynamicCast()
QWeakPointer<Data> weakptr = baseptr;
QSharedPointer<DerivedData> derivedptr = qSharedPointerDynamicCast<DerivedData>(weakptr);
QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
}
QCOMPARE(int(baseptr.d->weakref), 1);
@@ -498,6 +536,87 @@ void tst_QSharedPointer::dynamicCast()
{
QSharedPointer<DerivedData> derivedptr = baseptr.dynamicCast<DerivedData>();
QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+}
+
+void tst_QSharedPointer::dynamicCastDifferentPointers()
+{
+ // DiffPtrDerivedData derives from both Data and Stuffing
+ DiffPtrDerivedData *aData = new DiffPtrDerivedData;
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
+
+ {
+ QSharedPointer<DiffPtrDerivedData> derivedptr = qSharedPointerDynamicCast<DiffPtrDerivedData>(baseptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+
+ {
+ QWeakPointer<Data> weakptr = baseptr;
+ QSharedPointer<DiffPtrDerivedData> derivedptr = qSharedPointerDynamicCast<DiffPtrDerivedData>(weakptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+
+ {
+ QSharedPointer<DiffPtrDerivedData> derivedptr = baseptr.dynamicCast<DiffPtrDerivedData>();
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+
+ {
+ Stuffing *nakedptr = dynamic_cast<Stuffing *>(baseptr.data());
+ QVERIFY(nakedptr);
+
+ QSharedPointer<Stuffing> otherbaseptr = qSharedPointerDynamicCast<Stuffing>(baseptr);
+ QVERIFY(!otherbaseptr.isNull());
+ QVERIFY(otherbaseptr == nakedptr);
+ QCOMPARE(otherbaseptr.data(), nakedptr);
+ QCOMPARE(static_cast<DiffPtrDerivedData*>(otherbaseptr.data()), aData);
+ }
+}
+
+void tst_QSharedPointer::dynamicCastVirtualBase()
+{
+ VirtualDerived *aData = new VirtualDerived;
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
+
+ {
+ QSharedPointer<VirtualDerived> derivedptr = qSharedPointerDynamicCast<VirtualDerived>(baseptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+
+ {
+ QWeakPointer<Data> weakptr = baseptr;
+ QSharedPointer<VirtualDerived> derivedptr = qSharedPointerDynamicCast<VirtualDerived>(weakptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(baseptr.d->weakref), 1);
+ QCOMPARE(int(baseptr.d->strongref), 1);
+
+ {
+ QSharedPointer<VirtualDerived> derivedptr = baseptr.dynamicCast<VirtualDerived>();
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
}
QCOMPARE(int(baseptr.d->weakref), 1);
diff --git a/tests/auto/qsidebar/tst_qsidebar.cpp b/tests/auto/qsidebar/tst_qsidebar.cpp
index 705e222..1384391 100644
--- a/tests/auto/qsidebar/tst_qsidebar.cpp
+++ b/tests/auto/qsidebar/tst_qsidebar.cpp
@@ -185,6 +185,13 @@ void tst_QSidebar::addUrls()
qsidebar.addUrls(doubleUrls, 1);
QCOMPARE(qsidebar.urls().size(), 1);
+ // Two paths that are effectively pointing to the same location
+ doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath());
+ doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath() + "/.");
+ qsidebar.setUrls(emptyUrls);
+ qsidebar.addUrls(doubleUrls, 1);
+ QCOMPARE(qsidebar.urls().size(), 1);
+
#if defined(Q_OS_WIN)
//Windows is case insensitive so no duplicate entries in that case
doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath());
@@ -200,8 +207,6 @@ void tst_QSidebar::addUrls()
qsidebar.addUrls(doubleUrls, 1);
QCOMPARE(qsidebar.urls().size(), 2);
#endif
-
-
}
void tst_QSidebar::goToUrl()
diff --git a/tests/auto/uic/baseline/languagesdialog.ui.h b/tests/auto/uic/baseline/languagesdialog.ui.h
index a0b9cae..fbe57ca 100644
--- a/tests/auto/uic/baseline/languagesdialog.ui.h
+++ b/tests/auto/uic/baseline/languagesdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading ui file 'languagesdialog.ui'
**
-** Created: Mon Jun 16 17:57:32 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Fri May 15 16:58:03 2009
+** by: Qt User Interface Compiler version 4.5.2
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/
@@ -57,7 +57,7 @@ public:
upButton->setObjectName(QString::fromUtf8("upButton"));
upButton->setEnabled(false);
QIcon icon;
- icon.addPixmap(QPixmap(QString::fromUtf8(":/images/up.png")), QIcon::Normal, QIcon::Off);
+ icon.addFile(QString::fromUtf8(":/images/up.png"), QSize(), QIcon::Normal, QIcon::Off);
upButton->setIcon(icon);
hboxLayout->addWidget(upButton);
@@ -66,7 +66,7 @@ public:
downButton->setObjectName(QString::fromUtf8("downButton"));
downButton->setEnabled(false);
QIcon icon1;
- icon1.addPixmap(QPixmap(QString::fromUtf8(":/images/down.png")), QIcon::Normal, QIcon::Off);
+ icon1.addFile(QString::fromUtf8(":/images/down.png"), QSize(), QIcon::Normal, QIcon::Off);
downButton->setIcon(icon1);
hboxLayout->addWidget(downButton);
@@ -75,7 +75,7 @@ public:
removeButton->setObjectName(QString::fromUtf8("removeButton"));
removeButton->setEnabled(false);
QIcon icon2;
- icon2.addPixmap(QPixmap(QString::fromUtf8(":/images/editdelete.png")), QIcon::Normal, QIcon::Off);
+ icon2.addFile(QString::fromUtf8(":/images/editdelete.png"), QSize(), QIcon::Normal, QIcon::Off);
removeButton->setIcon(icon2);
hboxLayout->addWidget(removeButton);
@@ -84,7 +84,7 @@ public:
openFileButton->setObjectName(QString::fromUtf8("openFileButton"));
openFileButton->setEnabled(true);
QIcon icon3;
- icon3.addPixmap(QPixmap(QString::fromUtf8(":/images/mac/fileopen.png")), QIcon::Normal, QIcon::Off);
+ icon3.addFile(QString::fromUtf8(":/images/mac/fileopen.png"), QSize(), QIcon::Normal, QIcon::Off);
openFileButton->setIcon(icon3);
hboxLayout->addWidget(openFileButton);
diff --git a/tools/assistant/tools/assistant/bookmarkmanager.cpp b/tools/assistant/tools/assistant/bookmarkmanager.cpp
index 6f5732f..66475a4 100644
--- a/tools/assistant/tools/assistant/bookmarkmanager.cpp
+++ b/tools/assistant/tools/assistant/bookmarkmanager.cpp
@@ -536,58 +536,57 @@ void BookmarkWidget::focusInEvent(QFocusEvent *e)
bool BookmarkWidget::eventFilter(QObject *object, QEvent *e)
{
- if (object == this && e->type() == QEvent::KeyPress) {
- QKeyEvent *ke = static_cast<QKeyEvent*>(e);
+ if ((object == this) || (object == treeView->viewport())) {
QModelIndex index = treeView->currentIndex();
- switch (ke->key()) {
+ if (e->type() == QEvent::KeyPress) {
+ QKeyEvent *ke = static_cast<QKeyEvent*>(e);
if (index.isValid() && searchField->text().isEmpty()) {
- case Qt::Key_F2: {
- const QModelIndex& source = filterBookmarkModel->mapToSource(index);
- QStandardItem *item =
- bookmarkManager->treeBookmarkModel()->itemFromIndex(source);
+ if (ke->key() == Qt::Key_F2) {
+ QStandardItem *item = bookmarkManager->treeBookmarkModel()
+ ->itemFromIndex(filterBookmarkModel->mapToSource(index));
if (item) {
item->setEditable(true);
treeView->edit(index);
item->setEditable(false);
}
- } break;
-
- case Qt::Key_Delete: {
+ } else if (ke->key() == Qt::Key_Delete) {
bookmarkManager->removeBookmarkItem(treeView,
filterBookmarkModel->mapToSource(index));
- } break;
+ }
}
- case Qt::Key_Up:
- case Qt::Key_Down:
- treeView->subclassKeyPressEvent(ke);
- break;
-
- case Qt::Key_Enter: {
- case Qt::Key_Return:
- index = treeView->selectionModel()->currentIndex();
- if (index.isValid()) {
- QString data = index.data(Qt::UserRole + 10).toString();
- if (!data.isEmpty() && data != QLatin1String("Folder"))
- emit requestShowLink(data);
- }
- } break;
+ switch (ke->key()) {
+ default: break;
+ case Qt::Key_Up: {
+ case Qt::Key_Down:
+ treeView->subclassKeyPressEvent(ke);
+ } break;
- case Qt::Key_Escape:
- emit escapePressed();
- break;
+ case Qt::Key_Enter: {
+ case Qt::Key_Return:
+ index = treeView->selectionModel()->currentIndex();
+ if (index.isValid()) {
+ QString data = index.data(Qt::UserRole + 10).toString();
+ if (!data.isEmpty() && data != QLatin1String("Folder"))
+ emit requestShowLink(data);
+ }
+ } break;
- default:
- break;
- }
- }
- else if (object == treeView->viewport() && e->type() == QEvent::MouseButtonRelease) {
- const QModelIndex& index = treeView->currentIndex();
- QMouseEvent *me = static_cast<QMouseEvent*>(e);
- if (index.isValid() && (me->button() == Qt::MidButton)) {
- QString data = index.data(Qt::UserRole + 10).toString();
- if (!data.isEmpty() && data != QLatin1String("Folder"))
- CentralWidget::instance()->setSourceInNewTab(data);
+ case Qt::Key_Escape: {
+ emit escapePressed();
+ } break;
+ }
+ } else if (e->type() == QEvent::MouseButtonRelease) {
+ if (index.isValid()) {
+ QMouseEvent *me = static_cast<QMouseEvent*>(e);
+ bool controlPressed = me->modifiers() & Qt::ControlModifier;
+ if(((me->button() == Qt::LeftButton) && controlPressed)
+ || (me->button() == Qt::MidButton)) {
+ QString data = index.data(Qt::UserRole + 10).toString();
+ if (!data.isEmpty() && data != QLatin1String("Folder"))
+ CentralWidget::instance()->setSourceInNewTab(data);
+ }
+ }
}
}
return QWidget::eventFilter(object, e);
diff --git a/tools/assistant/tools/assistant/contentwindow.cpp b/tools/assistant/tools/assistant/contentwindow.cpp
index 89060bd..9f39de5 100644
--- a/tools/assistant/tools/assistant/contentwindow.cpp
+++ b/tools/assistant/tools/assistant/contentwindow.cpp
@@ -124,10 +124,10 @@ bool ContentWindow::eventFilter(QObject *o, QEvent *e)
QModelIndex index = m_contentWidget->indexAt(me->pos());
QItemSelectionModel *sm = m_contentWidget->selectionModel();
+ Qt::MouseButtons button = me->button();
if (index.isValid() && (sm && sm->isSelected(index))) {
- if (me->button() == Qt::LeftButton) {
- itemClicked(index);
- } else if (me->button() == Qt::MidButton) {
+ if ((button == Qt::LeftButton && (me->modifiers() & Qt::ControlModifier))
+ || (button == Qt::MidButton)) {
QHelpContentModel *contentModel =
qobject_cast<QHelpContentModel*>(m_contentWidget->model());
if (contentModel) {
@@ -135,12 +135,15 @@ bool ContentWindow::eventFilter(QObject *o, QEvent *e)
if (itm && !isPdfFile(itm))
CentralWidget::instance()->setSourceInNewTab(itm->url());
}
+ } else if (button == Qt::LeftButton) {
+ itemClicked(index);
}
}
}
return QWidget::eventFilter(o, e);
}
+
void ContentWindow::showContextMenu(const QPoint &pos)
{
if (!m_contentWidget->indexAt(pos).isValid())
diff --git a/tools/assistant/tools/assistant/indexwindow.cpp b/tools/assistant/tools/assistant/indexwindow.cpp
index a2c0950..1117ae0 100644
--- a/tools/assistant/tools/assistant/indexwindow.cpp
+++ b/tools/assistant/tools/assistant/indexwindow.cpp
@@ -146,8 +146,13 @@ bool IndexWindow::eventFilter(QObject *obj, QEvent *e)
&& e->type() == QEvent::MouseButtonRelease) {
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(e);
QModelIndex idx = m_indexWidget->indexAt(mouseEvent->pos());
- if (idx.isValid() && mouseEvent->button()==Qt::MidButton)
- open(m_indexWidget, idx);
+ if (idx.isValid()) {
+ Qt::MouseButtons button = mouseEvent->button();
+ if (((button == Qt::LeftButton) && (mouseEvent->modifiers() & Qt::ControlModifier))
+ || (button == Qt::MidButton)) {
+ open(m_indexWidget, idx);
+ }
+ }
}
#ifdef Q_OS_MAC
else if (obj == m_indexWidget && e->type() == QEvent::KeyPress) {
diff --git a/tools/assistant/tools/assistant/mainwindow.cpp b/tools/assistant/tools/assistant/mainwindow.cpp
index b0c2c6b..582eef3 100644
--- a/tools/assistant/tools/assistant/mainwindow.cpp
+++ b/tools/assistant/tools/assistant/mainwindow.cpp
@@ -926,25 +926,27 @@ void MainWindow::expandTOC(int depth)
void MainWindow::indexingStarted()
{
- m_progressWidget = new QWidget();
- QLayout* hlayout = new QHBoxLayout(m_progressWidget);
+ if (!m_progressWidget) {
+ m_progressWidget = new QWidget();
+ QLayout* hlayout = new QHBoxLayout(m_progressWidget);
- QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
+ QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
- QLabel *label = new QLabel(tr("Updating search index"));
- label->setSizePolicy(sizePolicy);
- hlayout->addWidget(label);
+ QLabel *label = new QLabel(tr("Updating search index"));
+ label->setSizePolicy(sizePolicy);
+ hlayout->addWidget(label);
- QProgressBar *progressBar = new QProgressBar();
- progressBar->setRange(0, 0);
- progressBar->setTextVisible(false);
- progressBar->setSizePolicy(sizePolicy);
+ QProgressBar *progressBar = new QProgressBar();
+ progressBar->setRange(0, 0);
+ progressBar->setTextVisible(false);
+ progressBar->setSizePolicy(sizePolicy);
- hlayout->setSpacing(6);
- hlayout->setMargin(0);
- hlayout->addWidget(progressBar);
+ hlayout->setSpacing(6);
+ hlayout->setMargin(0);
+ hlayout->addWidget(progressBar);
- statusBar()->addPermanentWidget(m_progressWidget);
+ statusBar()->addPermanentWidget(m_progressWidget);
+ }
}
void MainWindow::indexingFinished()
diff --git a/tools/designer/src/components/formeditor/formwindow_widgetstack.cpp b/tools/designer/src/components/formeditor/formwindow_widgetstack.cpp
index 7270628..58127b0 100644
--- a/tools/designer/src/components/formeditor/formwindow_widgetstack.cpp
+++ b/tools/designer/src/components/formeditor/formwindow_widgetstack.cpp
@@ -57,16 +57,20 @@ using namespace qdesigner_internal;
FormWindowWidgetStack::FormWindowWidgetStack(QObject *parent) :
QObject(parent),
m_formContainer(new QWidget),
- m_formContainerLayout(new QVBoxLayout),
+ m_formContainerLayout(new QStackedLayout),
m_layout(new QStackedLayout)
{
m_layout->setMargin(0);
m_layout->setSpacing(0);
m_layout->setStackingMode(QStackedLayout::StackAll);
+ // We choose a QStackedLayout as immediate layout for
+ // the form windows as it ignores the sizePolicy of
+ // its child (for example, Fixed would cause undesired side effects).
m_formContainerLayout->setMargin(0);
m_formContainer->setObjectName(QLatin1String("formContainer"));
m_formContainer->setLayout(m_formContainerLayout);
+ m_formContainerLayout->setStackingMode(QStackedLayout::StackAll);
// System settings might have different background colors, autofill them
// (affects for example mainwindow status bars)
m_formContainer->setAutoFillBackground(true);
diff --git a/tools/designer/src/components/formeditor/formwindow_widgetstack.h b/tools/designer/src/components/formeditor/formwindow_widgetstack.h
index 92323c5..f21c4f0 100644
--- a/tools/designer/src/components/formeditor/formwindow_widgetstack.h
+++ b/tools/designer/src/components/formeditor/formwindow_widgetstack.h
@@ -51,7 +51,6 @@ QT_BEGIN_NAMESPACE
class QDesignerFormWindowToolInterface;
class QStackedLayout;
-class QVBoxLayout;
class QWidget;
namespace qdesigner_internal {
@@ -92,7 +91,7 @@ protected:
private:
QList<QDesignerFormWindowToolInterface*> m_tools;
QWidget *m_formContainer;
- QVBoxLayout *m_formContainerLayout;
+ QStackedLayout *m_formContainerLayout;
QStackedLayout *m_layout;
};
diff --git a/tools/designer/src/lib/shared/qdesigner_propertycommand.cpp b/tools/designer/src/lib/shared/qdesigner_propertycommand.cpp
index ff3b50b..94e8044 100644
--- a/tools/designer/src/lib/shared/qdesigner_propertycommand.cpp
+++ b/tools/designer/src/lib/shared/qdesigner_propertycommand.cpp
@@ -316,6 +316,10 @@ Qt::Alignment variantToAlignment(const QVariant & q)
// find changed subproperties of a variant
unsigned compareSubProperties(const QVariant & q1, const QVariant & q2, qdesigner_internal::SpecialProperty specialProperty)
{
+ // Do not clobber new value in the comparison function in
+ // case someone sets a QString on a PropertySheetStringValue.
+ if (q1.type() != q2.type())
+ return SubPropertyAll;
switch (q1.type()) {
case QVariant::Rect:
return compareSubProperties(q1.toRect(), q2.toRect());
diff --git a/tools/macdeployqt/shared/shared.cpp b/tools/macdeployqt/shared/shared.cpp
index db76ef2..1faa63a 100644
--- a/tools/macdeployqt/shared/shared.cpp
+++ b/tools/macdeployqt/shared/shared.cpp
@@ -343,7 +343,7 @@ DeploymentInfo deployQtFrameworks(QList<FrameworkInfo> frameworks, const QString
copiedFrameworks.append(framework.frameworkName);
// Get the qt path from one of the Qt frameworks;
- if (deploymenInfo.qtPath == QString() && framework.frameworkName.contains("Qt")
+ if (deploymenInfo.qtPath.isNull() && framework.frameworkName.contains("Qt")
&& framework.frameworkDirectory.contains("/lib"))
{
deploymenInfo.qtPath = framework.frameworkDirectory;
@@ -364,7 +364,7 @@ DeploymentInfo deployQtFrameworks(QList<FrameworkInfo> frameworks, const QString
// Copy farmework to app bundle.
const QString deployedBinaryPath = copyFramework(framework, bundlePath);
// Skip the rest if already was deployed.
- if (deployedBinaryPath == QString())
+ if (deployedBinaryPath.isNull())
continue;
runStrip(deployedBinaryPath);
diff --git a/tools/porting/src/portingrules.cpp b/tools/porting/src/portingrules.cpp
index 4931064..cd29403 100644
--- a/tools/porting/src/portingrules.cpp
+++ b/tools/porting/src/portingrules.cpp
@@ -189,7 +189,7 @@ void PortingRules::parseXml(QString fileName)
QString includeFile = xml[QLatin1String("Rules")][QLatin1String("Include")].text();
- if(includeFile != QString()) {
+ if(!includeFile.isNull()) {
QString resolvedIncludeFile = resolveFileName(fileName, includeFile);
if (!resolvedIncludeFile.isEmpty())
parseXml(resolvedIncludeFile);
diff --git a/translations/assistant_de.qm b/translations/assistant_de.qm
index 54146f6..5b31aea 100644
--- a/translations/assistant_de.qm
+++ b/translations/assistant_de.qm
Binary files differ
diff --git a/translations/assistant_de.ts b/translations/assistant_de.ts
index 0411ef1..9b0d628 100644
--- a/translations/assistant_de.ts
+++ b/translations/assistant_de.ts
@@ -163,7 +163,7 @@
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+195"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+208"/>
<source>Add new page</source>
<translation>Neue Seite hinzufügen</translation>
</message>
@@ -173,38 +173,38 @@
<translation>Aktuelle Seite schließen</translation>
</message>
<message>
- <location line="+265"/>
+ <location line="+282"/>
<source>Print Document</source>
<translation>Drucken</translation>
</message>
<message>
- <location line="+147"/>
+ <location line="+148"/>
<location line="+2"/>
<source>unknown</source>
<translation>unbekannt</translation>
</message>
<message>
- <location line="+96"/>
+ <location line="+91"/>
<source>Add New Page</source>
<translation>Neue Seite hinzufügen</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+3"/>
<source>Close This Page</source>
<translation>Aktuelle Seite schließen</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+3"/>
<source>Close Other Pages</source>
<translation>Andere Seiten schließen</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+5"/>
<source>Add Bookmark for this Page...</source>
<translation>Lesezeichen für diese Seite hinzufügen...</translation>
</message>
<message>
- <location line="+257"/>
+ <location line="+259"/>
<source>Search</source>
<translation>Suchen</translation>
</message>
@@ -242,17 +242,17 @@
<context>
<name>FindWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-863"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-899"/>
<source>Previous</source>
<translation>Vorherige</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+4"/>
<source>Next</source>
<translation>Nächste</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+4"/>
<source>Case Sensitive</source>
<translation>Gross/ Kleinschreibung beachten</translation>
</message>
@@ -298,7 +298,7 @@
<context>
<name>HelpViewer</name>
<message>
- <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+481"/>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+492"/>
<source>Help</source>
<translation>Hilfe</translation>
</message>
@@ -329,12 +329,12 @@
<translation>Link in neuem Tab öffnen </translation>
</message>
<message>
- <location line="-267"/>
+ <location line="-275"/>
<source>Open Link in New Tab</source>
<translation>Link in neuem Tab öffnen</translation>
</message>
<message>
- <location line="+201"/>
+ <location line="+209"/>
<source>Unable to launch external application.
</source>
<translation>Fehler beim Starten der externen Anwendung.
@@ -463,38 +463,37 @@
<name>MainWindow</name>
<message>
<location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+108"/>
- <location line="+350"/>
+ <location line="+354"/>
<source>Index</source>
<translation>Index</translation>
</message>
<message>
- <location line="-344"/>
- <location line="+342"/>
+ <location line="-348"/>
+ <location line="+346"/>
<source>Contents</source>
<translation>Inhalt</translation>
</message>
<message>
- <location line="-337"/>
- <location line="+341"/>
+ <location line="-341"/>
+ <location line="+345"/>
<source>Bookmarks</source>
<translation>Lesezeichen</translation>
</message>
<message>
- <location line="-329"/>
- <location line="+331"/>
+ <location line="+2"/>
<source>Search</source>
<translation>Suchen</translation>
</message>
<message>
- <location line="-319"/>
- <location line="+192"/>
- <location line="+470"/>
+ <location line="-335"/>
+ <location line="+208"/>
+ <location line="+476"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
<message>
- <location line="-501"/>
- <location line="+4"/>
+ <location line="-508"/>
+ <location line="+5"/>
<source>Unfiltered</source>
<translation>Ohne Filter</translation>
</message>
@@ -718,7 +717,7 @@
<translation>Navigationsleiste</translation>
</message>
<message>
- <location line="+74"/>
+ <location line="+76"/>
<source>Toolbars</source>
<translation>Werkzeugleisten</translation>
</message>
@@ -743,7 +742,7 @@
<translation>Adresse:</translation>
</message>
<message>
- <location line="+110"/>
+ <location line="+114"/>
<source>Could not find the associated content item.</source>
<translation>Der zugehörige Inhaltseintrag konnte nicht gefunden werden.</translation>
</message>
@@ -769,12 +768,12 @@
<translation>Über %1</translation>
</message>
<message>
- <location line="+115"/>
+ <location line="+113"/>
<source>Updating search index</source>
<translation>Suchindex wird aufgebaut</translation>
</message>
<message>
- <location line="-597"/>
+ <location line="-601"/>
<source>Looking for Qt Documentation...</source>
<translation>Suche nach Qt Dokumentationen...</translation>
</message>
@@ -862,46 +861,45 @@
<translation type="obsolete">Von Helpserver herunterladen...</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+237"/>
- <location line="+7"/>
- <location line="+6"/>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+256"/>
+ <location line="+43"/>
<source>Add Documentation</source>
<translation>Dokumentation hinzufügen</translation>
</message>
<message>
- <location line="-13"/>
+ <location line="-43"/>
<source>Qt Compressed Help Files (*.qch)</source>
<translation>Komprimierte Hilfe Dateien (*.qch)</translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+37"/>
<source>The specified file is not a valid Qt Help File!</source>
<translation>Die angegebene Datei ist keine Qt Hilfe Datei!</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="-8"/>
<source>The namespace %1 is already registered!</source>
<translation>Der Namespace %1 ist bereits registriert!</translation>
</message>
<message>
- <location line="+23"/>
+ <location line="+31"/>
<source>Remove Documentation</source>
- <translation type="unfinished"></translation>
+ <translation>Dokumentation entfernen</translation>
</message>
<message>
<location line="+1"/>
<source>Some documents currently opened in Assistant reference the documentation you are attempting to remove. Removing the documentation will close those documents.</source>
- <translation type="unfinished"></translation>
+ <translation>Einige der gegenwärtig geöffneten Dokumente stammen aus der Dokumentation, die Sie gerade zu löschen versuchen. Sie werden beim Löschen geschlossen.</translation>
</message>
<message>
<location line="+2"/>
<source>Cancel</source>
- <translation type="unfinished">Abbrechen</translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<location line="+1"/>
<source>OK</source>
- <translation type="unfinished">OK</translation>
+ <translation>OK</translation>
</message>
<message>
<location line="+86"/>
@@ -1000,22 +998,22 @@
<message>
<location/>
<source>Options</source>
- <translation type="unfinished"></translation>
+ <translation>Einstellungen</translation>
</message>
<message>
<location/>
<source>Current Page</source>
- <translation type="unfinished"></translation>
+ <translation>Aktuelle Seite</translation>
</message>
<message>
<location/>
<source>Restore to default</source>
- <translation type="unfinished"></translation>
+ <translation>Vorgabe wiederherstellen</translation>
</message>
<message>
<location/>
<source>Homepage</source>
- <translation type="unfinished"></translation>
+ <translation>Startseite</translation>
</message>
</context>
<context>
@@ -1025,7 +1023,7 @@
<translation type="obsolete">Neuer Ordner</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+110"/>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+112"/>
<source>The specified collection file does not exist!</source>
<translation>Die angegeben Katalogdatei (collection file) konnte nicht gefunden werden!</translation>
</message>
@@ -1073,10 +1071,10 @@
<message>
<location line="+7"/>
<source>Missing filter argument!</source>
- <translation type="unfinished"></translation>
+ <translation>Das Filter-Argument fehlt!</translation>
</message>
<message>
- <location line="+10"/>
+ <location line="+12"/>
<source>Unknown option: %1</source>
<translation>Unbekannte Option: %1</translation>
</message>
@@ -1087,7 +1085,7 @@
<translation>Qt Assistant</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/main.cpp" line="+190"/>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+203"/>
<source>Could not register documentation file
%1
@@ -1115,9 +1113,9 @@ Reason:
<translation>Dokumentation erfolgreich entfernt.</translation>
</message>
<message>
- <location line="+18"/>
+ <location line="+40"/>
<source>Cannot load sqlite database driver!</source>
- <translation type="unfinished"></translation>
+ <translation>Der Datenbanktreiber für SQLite kann nicht geladen werden!</translation>
</message>
<message>
<location line="+9"/>
@@ -1147,7 +1145,7 @@ Reason:
<context>
<name>SearchWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+193"/>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+195"/>
<source>&amp;Copy</source>
<translation>&amp;Kopieren</translation>
</message>
@@ -1157,20 +1155,18 @@ Reason:
<translation>&amp;Link Adresse kopieren</translation>
</message>
<message>
- <location line="+3"/>
- <location line="+36"/>
+ <location line="+4"/>
<source>Open Link in New Tab</source>
<translation>Link in neuem Tab öffnen</translation>
</message>
<message>
- <location line="-29"/>
+ <location line="+8"/>
<source>Select All</source>
<translation>Alles markieren</translation>
</message>
<message>
- <location line="+28"/>
<source>Open Link</source>
- <translation>Link öffnen</translation>
+ <translation type="obsolete">Link öffnen</translation>
</message>
</context>
<context>
diff --git a/translations/designer_de.qm b/translations/designer_de.qm
index d51c51d..f9b0a03 100644
--- a/translations/designer_de.qm
+++ b/translations/designer_de.qm
Binary files differ
diff --git a/translations/designer_de.ts b/translations/designer_de.ts
index 4cd9914..002fc8d 100644
--- a/translations/designer_de.ts
+++ b/translations/designer_de.ts
@@ -339,7 +339,7 @@ ate the goose who was loose.</source>
<message>
<location line="-220"/>
<source>Change signal-slot connection</source>
- <translation type="unfinished"></translation>
+ <translation>Signale-Slotverbindung ändern</translation>
</message>
<message>
<location line="+234"/>
@@ -1384,7 +1384,7 @@ ate the goose who was loose.</source>
<message>
<location filename="../tools/designer/src/lib/shared/plugindialog.ui"/>
<source>Plugin Information</source>
- <translation type="unfinished">Plugins</translation>
+ <translation>Plugins</translation>
</message>
<message>
<location/>
@@ -4026,7 +4026,7 @@ Möchten Sie sie überschreiben?</translation>
<message>
<location line="+1"/>
<source>Go to slot...</source>
- <translation type="unfinished">Slot anzeigen...</translation>
+ <translation>Slot anzeigen...</translation>
</message>
<message>
<location line="+1"/>
@@ -5963,14 +5963,14 @@ Please select another name.</source>
<translation>Detailansicht</translation>
</message>
<message>
- <location line="+596"/>
+ <location line="+597"/>
<source>Object: %1
Class: %2</source>
<translation>Objekt: %1
Klasse: %2</translation>
</message>
<message>
- <location line="-599"/>
+ <location line="-600"/>
<source>Sorting</source>
<translation>Sortiert</translation>
</message>
@@ -5980,7 +5980,7 @@ Klasse: %2</translation>
<translation>Farbige Hervorhebung</translation>
</message>
<message>
- <location line="+65"/>
+ <location line="+66"/>
<source>Configure Property Editor</source>
<translation>Anzeige der Eigenschaften konfigurieren</translation>
</message>
diff --git a/translations/linguist_de.qm b/translations/linguist_de.qm
index f411122..a39c3bf 100644
--- a/translations/linguist_de.qm
+++ b/translations/linguist_de.qm
Binary files differ
diff --git a/translations/linguist_de.ts b/translations/linguist_de.ts
index 712f75d..cb8e4d2 100644
--- a/translations/linguist_de.ts
+++ b/translations/linguist_de.ts
@@ -6,7 +6,7 @@
<message>
<location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+59"/>
<source>(New Entry)</source>
- <translation type="unfinished"></translation>
+ <translation>(Neuer Eintrag)</translation>
</message>
</context>
<context>
@@ -29,7 +29,7 @@
<message>
<location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+79"/>
<source>Batch Translation of &apos;%1&apos; - Qt Linguist</source>
- <translation type="unfinished"></translation>
+ <translation>Automatische Übersetzung von &apos;%1&apos; - Qt Linguist</translation>
</message>
<message>
<location line="+37"/>
@@ -57,62 +57,62 @@
<message>
<location filename="../tools/linguist/linguist/batchtranslation.ui"/>
<source>Qt Linguist - Batch Translation</source>
- <translation type="unfinished">Qt Linguist - Automatische Übersetzung</translation>
+ <translation>Qt Linguist - Automatische Übersetzung</translation>
</message>
<message>
<location/>
<source>Options</source>
- <translation type="unfinished">Optionen</translation>
+ <translation>Optionen</translation>
</message>
<message>
<location/>
<source>Set translated entries to finished</source>
- <translation type="unfinished">Markiere Übersetzung als erledigt</translation>
+ <translation>Markiere Übersetzung als erledigt</translation>
</message>
<message>
<location/>
<source>Retranslate entries with existing translation</source>
- <translation type="unfinished"></translation>
+ <translation>Einträge mit bereits existierender Übersetzung neu übersetzen</translation>
</message>
<message>
<location/>
<source>Note that the modified entries will be reset to unfinished if &apos;Set translated entries to finished&apos; above is unchecked.</source>
- <translation type="unfinished"></translation>
+ <translation>Beachten Sie, dass die geänderten Einträge in den Status &apos;unerledigt&apos; zurückgesetzt werden, wenn &apos;Markiere Übersetzung als erledigt&apos; deaktiviert ist.</translation>
</message>
<message>
<location/>
<source>Translate also finished entries</source>
- <translation type="unfinished"></translation>
+ <translation>Erledigte Einträge übersetzen</translation>
</message>
<message>
<location/>
<source>Phrase book preference</source>
- <translation type="unfinished">Wörterbücher</translation>
+ <translation>Wörterbücher</translation>
</message>
<message>
<location/>
<source>Move up</source>
- <translation type="unfinished">Nach oben</translation>
+ <translation>Nach oben</translation>
</message>
<message>
<location/>
<source>Move down</source>
- <translation type="unfinished">Nach unten</translation>
+ <translation>Nach unten</translation>
</message>
<message>
<location/>
<source>The batch translator will search through the selected phrase books in the order given above.</source>
- <translation type="unfinished"></translation>
+ <translation>Der automatische Übersetzer wird in der angegebenen Reihenfolge durch die ausgewählten Wörterbücher gehen.</translation>
</message>
<message>
<location/>
<source>&amp;Run</source>
- <translation type="unfinished">&amp;Ausführen</translation>
+ <translation>&amp;Ausführen</translation>
</message>
<message>
<location/>
<source>Cancel</source>
- <translation type="unfinished">Abbrechen</translation>
+ <translation>Abbrechen</translation>
</message>
</context>
<context>
@@ -120,38 +120,39 @@
<message>
<location filename="../tools/linguist/linguist/messagemodel.cpp" line="+214"/>
<source>&lt;qt&gt;Duplicate messages found in &apos;%1&apos;:</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;qt&gt;Mehrfach vorhandene Meldungen in &apos;%1&apos;:</translation>
</message>
<message>
<location line="+4"/>
<source>&lt;p&gt;[more duplicates omitted]</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;[weitere mehrfach vorhandene Nachrichten weggelassen]</translation>
</message>
<message>
<location line="+3"/>
<source>&lt;p&gt;* Context: %1&lt;br&gt;* Source: %2</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;* Kontext: %1&lt;br&gt;* Quelle: %2</translation>
</message>
<message>
<location line="+3"/>
<source>&lt;br&gt;* Comment: %3</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;br&gt;* Kommentar: %3</translation>
</message>
<message>
<location line="+70"/>
<source>Linguist does not know the plural rules for &apos;%1&apos;.
Will assume a single universal form.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Regeln zur Pluralbildung der Sprache &apos;%1&apos; sind in Linguist nicht definiert.
+Es wird mit einer einfachen Universalform gearbeitet.</translation>
</message>
<message>
<location line="+56"/>
<source>Cannot create &apos;%2&apos;: %1</source>
- <translation type="unfinished"></translation>
+ <translation>&apos;%2&apos; kann nicht erzeugt werden: %1</translation>
</message>
<message>
<location line="+56"/>
<source>Universal Form</source>
- <translation type="unfinished"></translation>
+ <translation>Universalform</translation>
</message>
</context>
<context>
@@ -239,7 +240,7 @@ Will assume a single universal form.</source>
<message>
<location line="+3"/>
<source>Translation does not contain the necessary %n place marker.</source>
- <translation type="unfinished"></translation>
+ <translation>Der erforderliche Platzhalter (%n) fehlt in der Übersetzung.</translation>
</message>
<message>
<location line="+3"/>
@@ -311,37 +312,37 @@ Will assume a single universal form.</source>
<message>
<location/>
<source>Find</source>
- <translation type="unfinished"></translation>
+ <translation>Suchen</translation>
</message>
<message>
<location/>
<source>&amp;Find what:</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Suchmuster:</translation>
</message>
<message>
<location/>
<source>&amp;Source texts</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Quelltexte</translation>
</message>
<message>
<location/>
<source>&amp;Translations</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Übersetzungen</translation>
</message>
<message>
<location/>
<source>&amp;Match case</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Groß-/Kleinschreibung beachten</translation>
</message>
<message>
<location/>
<source>&amp;Comments</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Kommentare</translation>
</message>
<message>
<location/>
<source>Ignore &amp;accelerators</source>
- <translation type="unfinished"></translation>
+ <translation>Tastenkürzel &amp;ignorieren</translation>
</message>
<message>
<location/>
@@ -612,102 +613,102 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>Previous unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Vorherige Unerledigte</translation>
</message>
<message>
<location/>
<source>Move to the previous unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum vorangehenden unerledigten Eintrag.</translation>
</message>
<message>
<location/>
<source>Next unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Nächste Unerledigte</translation>
</message>
<message>
<location/>
<source>Move to the next unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum nächsten unerledigten Eintrag.</translation>
</message>
<message>
<location/>
<source>Move to previous item.</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum vorigen Eintrag.</translation>
</message>
<message>
<location/>
<source>Move to the previous item.</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum vorigen Eintrag.</translation>
</message>
<message>
<location/>
<source>Next item.</source>
- <translation type="unfinished"></translation>
+ <translation>Nächster EIntrag.</translation>
</message>
<message>
<location/>
<source>Move to the next item.</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum nächsten Eintrag.</translation>
</message>
<message>
<location/>
<source>Mark item as done and move to the next unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Markiere Eintrag als erledigt und gehe zum nächsten unerledigten Eintrag.</translation>
</message>
<message>
<location/>
<source>Mark this item as done and move to the next unfinished item.</source>
- <translation type="unfinished"></translation>
+ <translation>Markiert diesen Eintrag als erledigt und geht zum nächsten unerledigten Eintrag.</translation>
</message>
<message>
<location/>
<source>Copy from source text</source>
- <translation type="unfinished"></translation>
+ <translation>Übernehme &amp;Ursprungstext</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of accelerators.</source>
- <translation type="unfinished"></translation>
+ <translation>Schalte Prüfung der Tastenkürzel um.</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of accelerators, i.e. whether the number of ampersands in the source and translation text is the same. If the check fails, a message is shown in the warnings window.</source>
- <translation type="unfinished"></translation>
+ <translation>Schalte Prüfung der Tastenkürzel um; das heisst, die Übereinstimmung der kaufmännischen Und-Zeichen in Quelle und Übersetzung. Bei Fehlschlag wird eine Warnung im Hinweis-Fenster angezeigt.</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of ending punctuation.</source>
- <translation type="unfinished"></translation>
+ <translation>Schalte Prüfung der Satzendezeichen am Ende des Textes um.</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of ending punctuation. If the check fails, a message is shown in the warnings window.</source>
- <translation type="unfinished"></translation>
+ <translation>Schaltet die Prüfung der Satzendezeichen am Ende des Textes um. Bei Fehlschlag wird eine Warnung im Hinweis-Fenster angezeigt.</translation>
</message>
<message>
<location/>
<source>Toggle checking that phrase suggestions are used. If the check fails, a message is shown in the warnings window.</source>
- <translation type="unfinished"></translation>
+ <translation>Schaltet die Prüfung der Verwendung der Wörterbuchvorschläge um. Bei Fehlschlag wird eine Warnung im Hinweis-Fenster angezeigt.</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of place markers.</source>
- <translation type="unfinished"></translation>
+ <translation>Schaltet die Prüfung der Platzhalter um.</translation>
</message>
<message>
<location/>
<source>Toggle the validity check of place markers, i.e. whether %1, %2, ... are used consistently in the source text and translation text. If the check fails, a message is shown in the warnings window.</source>
- <translation type="unfinished"></translation>
+ <translation>Schaltet die Prüfung der Platzhalter um; das heisst, ob %1, %2,... in Quelltext und Übersetzung übereinstimmend verwendet werden. Bei Fehlschlag wird eine Warnung im Hinweis-Fenster angezeigt.</translation>
</message>
<message>
<location/>
<source>Open Read-O&amp;nly...</source>
- <translation type="unfinished"></translation>
+ <translation>Schr&amp;eibgeschützt öffnen...</translation>
</message>
<message>
<location/>
<source>&amp;Save All</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Alles Speichern</translation>
</message>
<message>
<location/>
@@ -767,22 +768,22 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>Recently Opened &amp;Files</source>
- <translation type="unfinished"></translation>
+ <translation>Zu&amp;letzt bearbeitete Dateien</translation>
</message>
<message>
<location/>
<source>Save</source>
- <translation type="unfinished"></translation>
+ <translation>Speichern</translation>
</message>
<message>
<location/>
<source>Print a list of all the translation units in the current translation source file.</source>
- <translation type="unfinished"></translation>
+ <translation>Liste aller Übersetzungseinheiten in der aktuellen Übersetzungsdatei drucken.</translation>
</message>
<message>
<location/>
<source>Undo the last editing operation performed on the current translation.</source>
- <translation type="unfinished"></translation>
+ <translation>Mache die letzte Änderung an der Übersetzung rückgängig.</translation>
</message>
<message>
<location/>
@@ -902,12 +903,12 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>Close</source>
- <translation type="unfinished">Schließen</translation>
+ <translation>Schließen</translation>
</message>
<message>
<location/>
<source>&amp;Close All</source>
- <translation type="unfinished"></translation>
+ <translation>A&amp;lle schließen</translation>
</message>
<message>
<location/>
@@ -1170,49 +1171,49 @@ p, li { white-space: pre-wrap; }
<message>
<location line="+195"/>
<source>Source text</source>
- <translation type="unfinished">Ursprungstext</translation>
+ <translation>Ursprungstext</translation>
</message>
<message>
<location line="+1"/>
<location line="+25"/>
<source>Index</source>
- <translation type="unfinished">Index</translation>
+ <translation>Index</translation>
</message>
<message>
<location line="-2"/>
<location line="+61"/>
<source>Context</source>
- <translation type="unfinished">Kontext</translation>
+ <translation>Kontext</translation>
</message>
<message>
<location line="-60"/>
<source>Items</source>
- <translation type="unfinished">Einträge</translation>
+ <translation>Einträge</translation>
</message>
<message>
<location line="+77"/>
<source>This panel lists the source contexts.</source>
- <translation type="unfinished">Dieser Bereich zeigt die Kontexte an.</translation>
+ <translation>Dieser Bereich zeigt die Kontexte an.</translation>
</message>
<message>
<location line="+15"/>
<source>Strings</source>
- <translation type="unfinished">Zeichenketten</translation>
+ <translation>Zeichenketten</translation>
</message>
<message>
<location line="+39"/>
<source>Phrases and guesses</source>
- <translation type="unfinished">Wörterbuch und Vorschläge</translation>
+ <translation>Wörterbuch und Vorschläge</translation>
</message>
<message>
<location line="+10"/>
<source>Sources and Forms</source>
- <translation type="unfinished"></translation>
+ <translation>Quelldateien und Formulare</translation>
</message>
<message>
<location line="+15"/>
<source>Warnings</source>
- <translation type="unfinished">Warnungen</translation>
+ <translation>Hinweise</translation>
</message>
<message>
<location line="+59"/>
@@ -1223,120 +1224,124 @@ p, li { white-space: pre-wrap; }
<message>
<location line="+125"/>
<source>Loading...</source>
- <translation type="unfinished">Lade...</translation>
+ <translation>Lade...</translation>
</message>
<message>
<location line="+32"/>
<location line="+22"/>
<source>Loading File - Qt Linguist</source>
- <translation type="unfinished"></translation>
+ <translation>Laden - Qt Linguist</translation>
</message>
<message>
<location line="-21"/>
<source>The file &apos;%1&apos; does not seem to be related to the currently open file(s) &apos;%2&apos;.
Close the open file(s) first?</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datei &apos;%1&apos; scheint nicht zu den bereits geöffneten Dateien &apos;%2&apos; zu passen.
+
+Sollen die bereits geöffneten Dateien vorher geschlossen werden?</translation>
</message>
<message>
<location line="+22"/>
<source>The file &apos;%1&apos; does not seem to be related to the file &apos;%2&apos; which is being loaded as well.
Skip loading the first named file?</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datei &apos;%1&apos; scheint nicht zu der Datei &apos;%2&apos; zu passen, die ebenfalls geladen wird.
+
+Soll die erstgenannte Datei übersprungen werden?</translation>
</message>
<message numerus="yes">
<location line="+61"/>
<source>%n translation unit(s) loaded.</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform>Eine Übersetzungseinheit geladen.</numerusform>
+ <numerusform>%n Übersetzungseinheiten geladen.</numerusform>
</translation>
</message>
<message>
<location line="+93"/>
<source>Related files (%1);;</source>
- <translation type="unfinished"></translation>
+ <translation>Verwandte Dateien (%1);;</translation>
</message>
<message>
<location line="+4"/>
<source>Open Translation Files</source>
- <translation type="unfinished"></translation>
+ <translation>Übersetzungsdateien öffnen</translation>
</message>
<message>
<location line="+10"/>
<location line="+31"/>
<source>File saved.</source>
- <translation type="unfinished">Datei gespeichert.</translation>
+ <translation>Datei gespeichert.</translation>
</message>
<message>
<location line="+15"/>
<location line="+1164"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Release</source>
- <translation type="unfinished">Freigeben</translation>
+ <translation>Freigeben</translation>
</message>
<message>
<location line="-1163"/>
<source>Qt message files for released applications (*.qm)
All files (*)</source>
- <translation type="unfinished">Qt Nachrichtendateien (*.qm)
+ <translation>Qt Nachrichtendateien (*.qm)
Alle Dateien (*)</translation>
</message>
<message>
<location line="+3"/>
<location line="+12"/>
<source>File created.</source>
- <translation type="unfinished">Datei erzeugt.</translation>
+ <translation>Datei erzeugt.</translation>
</message>
<message>
<location line="+27"/>
<location line="+355"/>
<source>Printing...</source>
- <translation type="unfinished">Drucke...</translation>
+ <translation>Drucke...</translation>
</message>
<message>
<location line="-347"/>
<source>Context: %1</source>
- <translation type="unfinished">Kontext: %1</translation>
+ <translation>Kontext: %1</translation>
</message>
<message>
<location line="+32"/>
<source>finished</source>
- <translation type="unfinished">erledigt</translation>
+ <translation>erledigt</translation>
</message>
<message>
<location line="+3"/>
<source>unresolved</source>
- <translation type="unfinished">ungelöst</translation>
+ <translation>ungelöst</translation>
</message>
<message>
<location line="+3"/>
<source>obsolete</source>
- <translation type="unfinished">veraltet</translation>
+ <translation>veraltet</translation>
</message>
<message>
<location line="+15"/>
<location line="+307"/>
<source>Printing... (page %1)</source>
- <translation type="unfinished">Drucke... (Seite %1)</translation>
+ <translation>Drucke... (Seite %1)</translation>
</message>
<message>
<location line="-300"/>
<location line="+307"/>
<source>Printing completed</source>
- <translation type="unfinished">Drucken beendet</translation>
+ <translation>Drucken beendet</translation>
</message>
<message>
<location line="-305"/>
<location line="+307"/>
<source>Printing aborted</source>
- <translation type="unfinished">Drucken abgebrochen</translation>
+ <translation>Drucken abgebrochen</translation>
</message>
<message>
<location line="-232"/>
<source>Search wrapped.</source>
- <translation type="unfinished">Suche beginnt von oben.</translation>
+ <translation>Suche beginnt von oben.</translation>
</message>
<message>
<location line="+17"/>
@@ -1356,7 +1361,7 @@ Alle Dateien (*)</translation>
<location line="-1204"/>
<location line="+102"/>
<source>Cannot find the string &apos;%1&apos;.</source>
- <translation type="unfinished">Kann Zeichenkette &apos;%1&apos; nicht finden.</translation>
+ <translation>Kann Zeichenkette &apos;%1&apos; nicht finden.</translation>
</message>
<message numerus="yes">
<source>Translated %n entries to &apos;%1&apos;</source>
@@ -1368,59 +1373,59 @@ Alle Dateien (*)</translation>
<message>
<location line="-82"/>
<source>Search And Translate in &apos;%1&apos; - Qt Linguist</source>
- <translation type="unfinished"></translation>
+ <translation>Suchen und übersetzen &apos;%1&apos; - Qt Linguist</translation>
</message>
<message>
<location line="+34"/>
<location line="+23"/>
<location line="+24"/>
<source>Translate - Qt Linguist</source>
- <translation type="unfinished"></translation>
+ <translation>Übersetzung - Qt Linguist</translation>
</message>
<message numerus="yes">
<location line="-46"/>
<source>Translated %n entry(s)</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform>Ein Eintrag übersetzt</numerusform>
+ <numerusform>%n Einträge übersetzt</numerusform>
</translation>
</message>
<message>
<location line="+23"/>
<source>No more occurrences of &apos;%1&apos;. Start over?</source>
- <translation type="unfinished"></translation>
+ <translation>Keine weiteren Fundstellen von &apos;%1&apos;. Von vorn beginnen?</translation>
</message>
<message>
<location line="+30"/>
<source>Create New Phrase Book</source>
- <translation type="unfinished">Erzeugen eines neuen Wörterbuchs</translation>
+ <translation>Erzeugen eines neuen Wörterbuchs</translation>
</message>
<message>
<location line="+1"/>
<source>Qt phrase books (*.qph)
All files (*)</source>
- <translation type="unfinished">Qt Wörterbücher (*.qph)
+ <translation>Qt Wörterbücher (*.qph)
Alle Dateien (*)</translation>
</message>
<message>
<location line="+11"/>
<source>Phrase book created.</source>
- <translation type="unfinished">Wörterbuch erzeugt.</translation>
+ <translation>Wörterbuch erzeugt.</translation>
</message>
<message>
<location line="+17"/>
<source>Open Phrase Book</source>
- <translation type="unfinished">Öffne Wörterbuch</translation>
+ <translation>Öffne Wörterbuch</translation>
</message>
<message>
<location line="+1"/>
<source>Qt phrase books (*.qph);;All files (*)</source>
- <translation type="unfinished">Qt Wörterbücher (*.qph);;Alle Dateien (*)</translation>
+ <translation>Qt Wörterbücher (*.qph);;Alle Dateien (*)</translation>
</message>
<message numerus="yes">
<location line="+7"/>
<source>%n phrase(s) loaded.</source>
- <translation type="unfinished">
+ <translation>
<numerusform>Ein Wörterbucheintrag geladen.</numerusform>
<numerusform>%n Wörterbucheinträge geladen.</numerusform>
</translation>
@@ -1430,32 +1435,32 @@ Alle Dateien (*)</translation>
<location line="+3"/>
<location line="+7"/>
<source>Add to phrase book</source>
- <translation type="unfinished">Hinzufügen zum Wörterbuch</translation>
+ <translation>Hinzufügen zum Wörterbuch</translation>
</message>
<message>
<location line="-9"/>
<source>No appropriate phrasebook found.</source>
- <translation type="unfinished"></translation>
+ <translation>Es wurde kein geeignetes Wörterbuch gefunden.</translation>
</message>
<message>
<location line="+3"/>
<source>Adding entry to phrasebook %1</source>
- <translation type="unfinished"></translation>
+ <translation>Eintrag zu Wörterbuch %1 hinzufügen</translation>
</message>
<message>
<location line="+7"/>
<source>Select phrase book to add to</source>
- <translation type="unfinished">Zu welchem Wörterbuch soll der Eintrag hinzugefügt werden?</translation>
+ <translation>Zu welchem Wörterbuch soll der Eintrag hinzugefügt werden?</translation>
</message>
<message>
<location line="+29"/>
<source>Unable to launch Qt Assistant (%1)</source>
- <translation type="unfinished">Kann Qt Assistant nicht starten (%1)</translation>
+ <translation>Kann Qt Assistant nicht starten (%1)</translation>
</message>
<message>
<location line="+17"/>
<source>Version %1</source>
- <translation type="unfinished">Version %1</translation>
+ <translation>Version %1</translation>
</message>
<message>
<source> Open Source Edition</source>
@@ -1464,17 +1469,17 @@ Alle Dateien (*)</translation>
<message>
<location line="+6"/>
<source>&lt;center&gt;&lt;img src=&quot;:/images/splash.png&quot;/&gt;&lt;/img&gt;&lt;p&gt;%1&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Qt Linguist is a tool for adding translations to Qt applications.&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</source>
- <translation type="unfinished">&lt;center&gt;&lt;img src=&quot;:/images/splash.png&quot;/&gt;&lt;/img&gt;&lt;p&gt;%1&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Qt Linguist ist ein Werkzeug zum Übersetzen von Qt Anwendungen.&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</translation>
+ <translation>&lt;center&gt;&lt;img src=&quot;:/images/splash.png&quot;/&gt;&lt;/img&gt;&lt;p&gt;%1&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Qt Linguist ist ein Werkzeug zum Übersetzen von Qt Anwendungen.&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.&lt;/p&gt;</translation>
</message>
<message>
<location line="+41"/>
<source>Do you want to save the modified files?</source>
- <translation type="unfinished"></translation>
+ <translation>Möchten Sie die geänderten Dateien speichern?</translation>
</message>
<message>
<location line="+22"/>
<source>Do you want to save &apos;%1&apos;?</source>
- <translation type="unfinished">Wollen Sie &apos;%1&apos; speichern?</translation>
+ <translation>Möchten Sie &apos;%1&apos; speichern?</translation>
</message>
<message>
<location line="+43"/>
@@ -1490,99 +1495,99 @@ Alle Dateien (*)</translation>
<location line="+267"/>
<location line="+12"/>
<source>No untranslated translation units left.</source>
- <translation type="unfinished"></translation>
+ <translation>Es wurden alle Übersetzungseinheiten abgearbeitet.</translation>
</message>
<message>
<location line="+176"/>
<source>&amp;Window</source>
- <translation type="unfinished">&amp;Fenster</translation>
+ <translation>&amp;Fenster</translation>
</message>
<message>
<location line="+2"/>
<source>Minimize</source>
- <translation type="unfinished">Minimieren</translation>
+ <translation>Minimieren</translation>
</message>
<message>
<location line="+1"/>
<source>Ctrl+M</source>
- <translation type="unfinished">Ctrl+M</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Display the manual for %1.</source>
- <translation type="unfinished">Zeige Handbuch für %1 an.</translation>
+ <translation>Zeige Handbuch für %1 an.</translation>
</message>
<message>
<location line="+1"/>
<source>Display information about %1.</source>
- <translation type="unfinished">Zeige Informationen über %1 an.</translation>
+ <translation>Zeige Informationen über %1 an.</translation>
</message>
<message>
<location line="+70"/>
<source>&amp;Save &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>&apos;%1&apos; &amp;Speichern</translation>
</message>
<message>
<location line="+1"/>
<source>Save &apos;%1&apos; &amp;As...</source>
- <translation type="unfinished"></translation>
+ <translation>Speichere &apos;%1&apos; &amp;unter...</translation>
</message>
<message>
<location line="+1"/>
<source>Release &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>&apos;%1&apos; freigeben</translation>
</message>
<message>
<location line="+1"/>
<source>Release &apos;%1&apos; As...</source>
- <translation type="unfinished"></translation>
+ <translation>Gebe &apos;%1&apos;frei unter ...</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Close &apos;%1&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>&apos;%1&apos; &amp;Schließen</translation>
</message>
<message>
<location line="+6"/>
<location line="+13"/>
<source>&amp;Close</source>
- <translation type="unfinished">&amp;Schließen</translation>
+ <translation>&amp;Schließen</translation>
</message>
<message>
<location line="-10"/>
<source>Save All</source>
- <translation type="unfinished"></translation>
+ <translation>Alles speichern</translation>
</message>
<message>
<location line="+1"/>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>&amp;Release All</source>
- <translation type="unfinished"></translation>
+ <translation>Alles f&amp;reigeben</translation>
</message>
<message>
<location line="+1"/>
<source>Close All</source>
- <translation type="unfinished">Alle schließen</translation>
+ <translation>Alle schließen</translation>
</message>
<message>
<location line="+23"/>
<source>Translation File &amp;Settings for &apos;%1&apos;...</source>
- <translation type="unfinished"></translation>
+ <translation>Einstellungen der Übersetzungs&amp;datei für &apos;%1&apos;...</translation>
</message>
<message>
<location line="+1"/>
<source>&amp;Batch Translation of &apos;%1&apos;...</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Automatische Übersetzung von &apos;%1&apos;...</translation>
</message>
<message>
<location line="+1"/>
<source>Search And &amp;Translate in &apos;%1&apos;...</source>
- <translation type="unfinished"></translation>
+ <translation>Suchen und &amp;Übersetzen in &apos;%1&apos;...</translation>
</message>
<message>
<location line="+4"/>
<source>Search And &amp;Translate...</source>
- <translation type="unfinished"></translation>
+ <translation>Suchen und &amp;Übersetzen...</translation>
</message>
<message>
<location line="+51"/>
@@ -1617,37 +1622,37 @@ Alle Dateien (*)</translation>
<message>
<location line="+84"/>
<source>Cannot read from phrase book &apos;%1&apos;.</source>
- <translation type="unfinished">Kann Wörterbuch &apos;%1&apos; nicht lesen.</translation>
+ <translation>Kann Wörterbuch &apos;%1&apos; nicht lesen.</translation>
</message>
<message>
<location line="+15"/>
<source>Close this phrase book.</source>
- <translation type="unfinished">Schließe dieses Wörterbuch.</translation>
+ <translation>Schließe dieses Wörterbuch.</translation>
</message>
<message>
<location line="+4"/>
<source>Enables you to add, modify, or delete entries in this phrase book.</source>
- <translation type="unfinished"></translation>
+ <translation>Erlaubt das Hinzufügen, Ändern und Entfernen von Einträgen aus dem Wörterbuch.</translation>
</message>
<message>
<location line="+5"/>
<source>Print the entries in this phrase book.</source>
- <translation type="unfinished"></translation>
+ <translation>Drucke die Einträge des Wörterbuchs.</translation>
</message>
<message>
<location line="+16"/>
<source>Cannot create phrase book &apos;%1&apos;.</source>
- <translation type="unfinished">Kann Wörterbuch &apos;%1&apos; nicht erzeugen.</translation>
+ <translation>Kann Wörterbuch &apos;%1&apos; nicht erzeugen.</translation>
</message>
<message>
<location line="+10"/>
<source>Do you want to save phrase book &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation>Möchten Sie das Wörterbuch &apos;%1&apos; speichern?</translation>
</message>
<message>
<location line="+314"/>
<source>All</source>
- <translation type="unfinished"></translation>
+ <translation>Alle</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
@@ -1704,27 +1709,27 @@ Alle Dateien (*)</translation>
<message>
<location filename="../tools/linguist/linguist/messageeditor.cpp" line="+72"/>
<source>German</source>
- <translation type="unfinished">Deutsch</translation>
+ <translation>Deutsch</translation>
</message>
<message>
<location line="+1"/>
<source>Japanese</source>
- <translation type="unfinished">Japanisch</translation>
+ <translation>Japanisch</translation>
</message>
<message>
<location line="+1"/>
<source>French</source>
- <translation type="unfinished">Französisch</translation>
+ <translation>Französisch</translation>
</message>
<message>
<location line="+1"/>
<source>Polish</source>
- <translation type="unfinished">Polnisch</translation>
+ <translation>Polnisch</translation>
</message>
<message>
<location line="+1"/>
<source>Chinese</source>
- <translation type="unfinished">Chinesisch</translation>
+ <translation>Chinesisch</translation>
</message>
<message>
<location line="+50"/>
@@ -1732,59 +1737,59 @@ Alle Dateien (*)</translation>
<translation>Dieser Bereich erlaubt die Darstellung und Änderung der Übersetzung eines Textes.</translation>
</message>
<message>
- <location line="+25"/>
+ <location line="+18"/>
<source>Source text</source>
- <translation type="unfinished">Ursprungstext</translation>
+ <translation>Ursprungstext</translation>
</message>
<message>
<location line="+2"/>
<source>This area shows the source text.</source>
- <translation type="unfinished">Dieser Bereich zeigt den Ursprungstext.</translation>
+ <translation>Dieser Bereich zeigt den Ursprungstext.</translation>
</message>
<message>
<location line="+3"/>
<source>Source text (Plural)</source>
- <translation type="unfinished"></translation>
+ <translation>Ursprungstext (Plural)</translation>
</message>
<message>
<location line="+2"/>
<source>This area shows the plural form of the source text.</source>
- <translation type="unfinished"></translation>
+ <translation>Dieser Bereich zeigt die Pluralform des Ursprungstexts.</translation>
</message>
<message>
<location line="+3"/>
<source>Developer comments</source>
- <translation type="unfinished"></translation>
+ <translation>Hinweise des Entwicklers</translation>
</message>
<message>
<location line="+3"/>
<source>This area shows a comment that may guide you, and the context in which the text occurs.</source>
- <translation type="unfinished">Dieser Bereich zeigt eventuelle Kommentare und den Kontext, in dem der Text auftritt.</translation>
+ <translation>Dieser Bereich zeigt eventuelle Kommentare und den Kontext, in dem der Text auftritt.</translation>
</message>
<message>
<location line="+59"/>
<source>Here you can enter comments for your own use. They have no effect on the translated applications.</source>
- <translation type="unfinished"></translation>
+ <translation>Hier können Sie Hinweise für den eigenen Gebrauch eintragen. Diese haben keinen Einflusse auf die Übersetzung.</translation>
</message>
<message>
<location line="+205"/>
<source>%1 translation (%2)</source>
- <translation type="unfinished">Übersetzung %1 (%2)</translation>
+ <translation>Übersetzung %1 (%2)</translation>
</message>
<message>
<location line="+19"/>
<source>This is where you can enter or modify the translation of the above source text.</source>
- <translation type="unfinished"></translation>
+ <translation>Hier können Sie die Übersetzung des Ursprungstextes eingeben bzw. ändern.</translation>
</message>
<message>
<location line="+5"/>
<source>%1 translation</source>
- <translation type="unfinished">Übersetzung %1</translation>
+ <translation>Übersetzung %1</translation>
</message>
<message>
<location line="+1"/>
<source>%1 translator comments</source>
- <translation type="unfinished"></translation>
+ <translation>%1 Hinweise des Übersetzers</translation>
</message>
<message>
<location line="+138"/>
@@ -1839,22 +1844,22 @@ Zeile: %2</translation>
<message>
<location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
<source>Completion status for %1</source>
- <translation type="unfinished"></translation>
+ <translation>Bearbeitungsstand von %1</translation>
</message>
<message>
<location line="+15"/>
<source>&lt;file header&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;Dateikopf&gt;</translation>
</message>
<message>
<location line="+2"/>
<source>&lt;context comment&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;Kontexthinweis&gt;</translation>
</message>
<message>
<location line="+71"/>
<source>&lt;unnamed context&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;unbenannter Kontext&gt;</translation>
</message>
</context>
<context>
@@ -1867,7 +1872,7 @@ Zeile: %2</translation>
<context>
<name>MsgEdit</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-579"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-572"/>
<source></source>
<comment>This is the right panel of the main window.</comment>
<translation></translation>
@@ -1912,7 +1917,7 @@ Zeile: %2</translation>
<message>
<location/>
<source>This window allows you to add, modify, or delete entries in a phrase book.</source>
- <translation type="unfinished"></translation>
+ <translation>Dieses Fenster erlaubt das Hinzufügen, Ändern und Entfernen von Einträgen aus dem Wörterbuch.</translation>
</message>
<message>
<location/>
@@ -1952,22 +1957,22 @@ Zeile: %2</translation>
<message>
<location/>
<source>&amp;New Entry</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Neuer Eintrag</translation>
</message>
<message>
<location/>
<source>Click here to remove the entry from the phrase book.</source>
- <translation type="unfinished"></translation>
+ <translation>Entferne den Eintrag aus dem Wörterbuch.</translation>
</message>
<message>
<location/>
<source>&amp;Remove Entry</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Entferne Eintrag</translation>
</message>
<message>
<location/>
<source>Settin&amp;gs...</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Einstellungen...</translation>
</message>
<message>
<source>&amp;New Phrase</source>
@@ -2053,12 +2058,12 @@ Zeile: %2</translation>
<message>
<location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1279"/>
<source>Translation files (%1);;</source>
- <translation type="unfinished"></translation>
+ <translation>Übersetzungsdateien (%1);;</translation>
</message>
<message>
<location line="+5"/>
<source>All files (*)</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Dateien (*)</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/>
@@ -2074,57 +2079,57 @@ Zeile: %2</translation>
<message>
<location filename="../tools/linguist/shared/cpp.cpp" line="+1072"/>
<source>C++ source files</source>
- <translation type="unfinished"></translation>
+ <translation>C++-Quelltextdateien&apos;</translation>
</message>
<message>
<location filename="../tools/linguist/shared/java.cpp" line="+646"/>
<source>Java source files</source>
- <translation type="unfinished"></translation>
+ <translation>Java-Quelltextdateien</translation>
</message>
<message>
<location filename="../tools/linguist/shared/po.cpp" line="+651"/>
<source>GNU Gettext localization files</source>
- <translation type="unfinished"></translation>
+ <translation>GNU-Gettext Übersetzungsdateien</translation>
</message>
<message>
<location filename="../tools/linguist/shared/qscript.cpp" line="+2399"/>
<source>Qt Script source files</source>
- <translation type="unfinished"></translation>
+ <translation>Qt-Skript-Quelltextdateien</translation>
</message>
<message>
<location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
<source>Qt translation sources (format 1.1)</source>
- <translation type="unfinished"></translation>
+ <translation>Qt-Übersetzungsdateien (Formatversion 1.1)</translation>
</message>
<message>
<location line="+8"/>
<source>Qt translation sources (format 2.0)</source>
- <translation type="unfinished"></translation>
+ <translation>Qt-Übersetzungsdateien (Formatversion 2.0)</translation>
</message>
<message>
<location line="+9"/>
<source>Qt translation sources (latest format)</source>
- <translation type="unfinished"></translation>
+ <translation>Qt Übersetzungsdateien (aktuelles Format)</translation>
</message>
<message>
<location filename="../tools/linguist/shared/ui.cpp" line="+213"/>
<source>Qt Designer form files</source>
- <translation type="unfinished"></translation>
+ <translation>Qt Designer Formulardateien</translation>
</message>
<message>
<location line="+9"/>
<source>Qt Jambi form files</source>
- <translation type="unfinished"></translation>
+ <translation>Qt Jambi Formulardateien</translation>
</message>
<message>
<location filename="../tools/linguist/shared/xliff.cpp" line="+817"/>
<source>XLIFF localization files</source>
- <translation type="unfinished"></translation>
+ <translation>XLIFF Übersetzungsdateien</translation>
</message>
<message>
<location filename="../tools/linguist/shared/qph.cpp" line="+192"/>
<source>Qt Linguist &apos;Phrase Book&apos;</source>
- <translation type="unfinished"></translation>
+ <translation>Qt Linguist-Wörterbuch</translation>
</message>
</context>
<context>
@@ -2223,7 +2228,7 @@ Zeile: %2</translation>
<message>
<location/>
<source>Close</source>
- <translation type="unfinished">Schließen</translation>
+ <translation>Schließen</translation>
</message>
</context>
<context>
@@ -2727,27 +2732,27 @@ Alle Dateien (*)</translation>
<location line="+11"/>
<location line="+8"/>
<source>Settings for &apos;%1&apos; - Qt Linguist</source>
- <translation type="unfinished"></translation>
+ <translation>Einstellungen für &apos;%1&apos; - Qt Linguist</translation>
</message>
<message>
<location filename="../tools/linguist/linguist/translationsettings.ui"/>
<source>Source language</source>
- <translation type="unfinished"></translation>
+ <translation>Ursprungssprache</translation>
</message>
<message>
<location/>
<source>Language</source>
- <translation type="unfinished">Sprache</translation>
+ <translation>Sprache</translation>
</message>
<message>
<location/>
<source>Country/Region</source>
- <translation type="unfinished">Land/Region</translation>
+ <translation>Land/Region</translation>
</message>
<message>
<location/>
<source>Target language</source>
- <translation type="unfinished">Zielsprache</translation>
+ <translation>Zielsprache</translation>
</message>
</context>
<context>
diff --git a/translations/qt_de.qm b/translations/qt_de.qm
index 5d68bf7..9ea09a7 100644
--- a/translations/qt_de.qm
+++ b/translations/qt_de.qm
Binary files differ
diff --git a/translations/qt_de.ts b/translations/qt_de.ts
index 70cf6f3..33f9ea8 100644
--- a/translations/qt_de.ts
+++ b/translations/qt_de.ts
@@ -22,7 +22,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2251"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2252"/>
<source>Close Tab</source>
<translation>Schließen</translation>
</message>
@@ -186,7 +186,7 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+864"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+865"/>
<source>Copy or Move a File</source>
<translation>Datei kopieren oder verschieben</translation>
</message>
@@ -203,7 +203,7 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
</message>
<message>
<location line="-22"/>
- <location line="+1575"/>
+ <location line="+1579"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
@@ -886,7 +886,7 @@ nach
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2248"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2247"/>
<source>QT_LAYOUT_DIRECTION</source>
<comment>Translate this string to the string &apos;LTR&apos; in left-to-right languages or to &apos;RTL&apos; in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</comment>
<translation>LTR</translation>
@@ -1170,7 +1170,7 @@ nach
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1866"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1869"/>
<location line="+464"/>
<location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
<source>OK</source>
@@ -1392,7 +1392,7 @@ nach
<message>
<location line="-108"/>
<source>Cannot remove source file</source>
- <translation type="unfinished"></translation>
+ <translation>Die Quelldatei kann nicht entfernt werden</translation>
</message>
<message>
<location line="+120"/>
@@ -1418,8 +1418,8 @@ nach
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+515"/>
- <location line="+444"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+514"/>
+ <location line="+447"/>
<source>All Files (*)</source>
<translation>Alle Dateien (*)</translation>
</message>
@@ -1448,7 +1448,7 @@ nach
<translation>Datei</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-461"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-464"/>
<source>Open</source>
<translation>Öffnen</translation>
</message>
@@ -1458,26 +1458,26 @@ nach
<translation>Speichern unter</translation>
</message>
<message>
- <location line="+678"/>
+ <location line="+681"/>
<location line="+50"/>
- <location line="+1471"/>
+ <location line="+1467"/>
<location line="+75"/>
<source>&amp;Open</source>
<translation>&amp;Öffnen</translation>
</message>
<message>
- <location line="-1596"/>
+ <location line="-1592"/>
<location line="+50"/>
<source>&amp;Save</source>
<translation>S&amp;peichern</translation>
</message>
<message>
- <location line="+1822"/>
+ <location line="+1818"/>
<source>Recent Places</source>
<translation>Zuletzt besucht</translation>
</message>
<message>
- <location line="-2521"/>
+ <location line="-2520"/>
<source>&amp;Rename</source>
<translation>&amp;Umbenennen</translation>
</message>
@@ -1492,17 +1492,17 @@ nach
<translation>&amp;Versteckte Dateien anzeigen</translation>
</message>
<message>
- <location line="+1964"/>
+ <location line="+1963"/>
<source>New Folder</source>
<translation>Neues Verzeichnis</translation>
</message>
<message>
- <location line="-1999"/>
+ <location line="-1998"/>
<source>Find Directory</source>
<translation>Verzeichnis suchen</translation>
</message>
<message>
- <location line="+685"/>
+ <location line="+688"/>
<source>Directories</source>
<translation>Verzeichnisse</translation>
</message>
@@ -1512,13 +1512,13 @@ nach
<translation>Alle Dateien (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-644"/>
- <location line="+648"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-647"/>
+ <location line="+651"/>
<source>Directory:</source>
<translation>Verzeichnis:</translation>
</message>
<message>
- <location line="+828"/>
+ <location line="+825"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>Die Datei %1 existiert bereits.
@@ -1552,7 +1552,7 @@ Stellen Sie sicher, dass der Dateiname richtig ist.</translation>
</message>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="-54"/>
- <location line="+862"/>
+ <location line="+861"/>
<source>%1
Directory not found.
Please verify the correct directory name was given.</source>
@@ -1588,7 +1588,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Unbekannt</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2118"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2117"/>
<source>Show </source>
<translation>Anzeigen </translation>
</message>
@@ -1604,19 +1604,19 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>&amp;Neues Verzeichnis</translation>
</message>
<message>
- <location line="+656"/>
+ <location line="+659"/>
<location line="+38"/>
<source>&amp;Choose</source>
<translation>&amp;Auswählen</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qsidebar.cpp" line="+418"/>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+437"/>
<source>Remove</source>
<translation>Löschen</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-687"/>
- <location line="+652"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-690"/>
+ <location line="+655"/>
<source>File &amp;name:</source>
<translation>Datei&amp;name:</translation>
</message>
@@ -1698,7 +1698,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Änderungsdatum</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+234"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+242"/>
<source>My Computer</source>
<translation>Mein Computer</translation>
</message>
@@ -2161,7 +2161,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+876"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+901"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+1836"/>
<source>Connection refused</source>
<translation>Verbindung verweigert</translation>
@@ -2253,7 +2253,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<message>
<location line="+28"/>
<source>Unknown authentication method</source>
- <translation type="unfinished"></translation>
+ <translation>Unbekannte Authentifizierungsmethode</translation>
</message>
<message>
<location line="+97"/>
@@ -2365,7 +2365,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QIBaseDriver</name>
<message>
- <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1428"/>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1435"/>
<source>Error opening database</source>
<translation>Die Datenbankverbindung konnte nicht geöffnet werden</translation>
</message>
@@ -2643,7 +2643,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<name>QLocalServer</name>
<message>
<location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+231"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+233"/>
<source>%1: Name error</source>
<translation>%1: Fehlerhafter Name</translation>
</message>
@@ -2738,7 +2738,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QMYSQLDriver</name>
<message>
- <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1231"/>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1252"/>
<source>Unable to open database &apos;</source>
<translation>Die Datenbankverbindung konnte nicht geöffnet werden &apos;</translation>
</message>
@@ -2766,12 +2766,12 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QMYSQLResult</name>
<message>
- <location line="-922"/>
+ <location line="-935"/>
<source>Unable to fetch data</source>
<translation>Es konnten keine Daten abgeholt werden</translation>
</message>
<message>
- <location line="+176"/>
+ <location line="+183"/>
<source>Unable to execute query</source>
<translation>Die Abfrage konnte nicht ausgeführt werden</translation>
</message>
@@ -2781,13 +2781,13 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Das Ergebnis konnte nicht gespeichert werden</translation>
</message>
<message>
- <location line="+190"/>
+ <location line="+194"/>
<location line="+8"/>
<source>Unable to prepare statement</source>
<translation>Der Befehl konnte nicht initialisiert werden</translation>
</message>
<message>
- <location line="+34"/>
+ <location line="+36"/>
<source>Unable to reset statement</source>
<translation>Der Befehl konnte nicht zurückgesetzt werden</translation>
</message>
@@ -2813,7 +2813,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Die Ergebnisse des Befehls konnten nicht gespeichert werden</translation>
</message>
<message>
- <location line="-253"/>
+ <location line="-257"/>
<source>Unable to execute next query</source>
<translation>Die folgende Abfrage kann nicht ausgeführt werden</translation>
</message>
@@ -2971,7 +2971,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation type="obsolete">&lt;p&gt;Dieses Programm verwendet Qt-Version %1.&lt;/p&gt;</translation>
</message>
<message>
- <location line="-1097"/>
+ <location line="-1100"/>
<source>Show Details...</source>
<translation>Details einblenden...</translation>
</message>
@@ -2981,7 +2981,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<translation>Details ausblenden...</translation>
</message>
<message>
- <location line="+1570"/>
+ <location line="+1573"/>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -3310,7 +3310,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1785"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1781"/>
<source>Unable to connect</source>
<translation>Es kann keine Verbindung aufgebaut werden</translation>
</message>
@@ -3444,7 +3444,7 @@ Möchten sie die Datei trotzdem löschen?</translation>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1197"/>
<source>Name</source>
<translation>Name</translation>
</message>
@@ -4009,7 +4009,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Benutzerdefiniert</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-522"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-524"/>
<location line="+68"/>
<source>&amp;Options &gt;&gt;</source>
<translation>&amp;Einstellungen &gt;&gt;</translation>
@@ -4030,7 +4030,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Druck in Postscript-Datei</translation>
</message>
<message>
- <location line="+45"/>
+ <location line="+47"/>
<source>Local file</source>
<translation>Lokale Datei</translation>
</message>
@@ -4040,7 +4040,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Schreiben der Datei %1</translation>
</message>
<message>
- <location line="-367"/>
+ <location line="-369"/>
<source>&amp;Print</source>
<translation>&amp;Drucken</translation>
</message>
@@ -4373,7 +4373,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location line="+912"/>
<source>No program defined</source>
- <translation type="unfinished"></translation>
+ <translation>Es wurde kein Programm angegeben</translation>
</message>
<message>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
@@ -5985,7 +5985,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%1 (%2x%3 Pixel)</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+382"/>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+384"/>
<source>Bad HTTP request</source>
<translation>Ungültige HTTP-Anforderung</translation>
</message>
@@ -6077,15 +6077,15 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location line="+15"/>
<source>JavaScript Confirm - %1</source>
- <translation type="unfinished">JavaScript-Bestätigung - %1</translation>
+ <translation>JavaScript-Bestätigung - %1</translation>
</message>
<message>
<location line="+17"/>
<source>JavaScript Prompt - %1</source>
- <translation type="unfinished">JavaScript-Eingabeaufforderung - %1</translation>
+ <translation>JavaScript-Eingabeaufforderung - %1</translation>
</message>
<message>
- <location line="+333"/>
+ <location line="+340"/>
<source>Move the cursor to the next character</source>
<translation>Positionsmarke auf folgendes Zeichen setzen</translation>
</message>
@@ -6147,7 +6147,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location line="+3"/>
<source>Select all</source>
- <translation type="unfinished"></translation>
+ <translation>Alles auswählen</translation>
</message>
<message>
<location line="+3"/>
@@ -6222,12 +6222,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location line="+33"/>
<source>Insert a new paragraph</source>
- <translation type="unfinished"></translation>
+ <translation>Neuen Abschnitt einfügen</translation>
</message>
<message>
<location line="+3"/>
<source>Insert a new line</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Zeile einfügen</translation>
</message>
</context>
<context>
@@ -6241,7 +6241,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5326"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5340"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -6787,7 +6787,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%1 ist kein gültiger regulärer Ausdruck: %2</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+347"/>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+346"/>
<source>It will not be possible to retrieve %1.</source>
<translation>%1 kann nicht bestimmt werden.</translation>
</message>
@@ -7508,7 +7508,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+69"/>
<source>In a namespace constructor, the value for a namespace cannot be an empty string.</source>
- <translation type="unfinished"></translation>
+ <translation>Im Konstruktor eines Namensraums darf der Wert des Namensraumes keine leere Zeichenkette sein.</translation>
</message>
<message>
<location line="+11"/>
diff --git a/translations/qt_help_de.qm b/translations/qt_help_de.qm
index e28a97e..e3d8d87 100644
--- a/translations/qt_help_de.qm
+++ b/translations/qt_help_de.qm
Binary files differ
diff --git a/translations/qt_help_de.ts b/translations/qt_help_de.ts
index ed8a3c3..8f67ec3 100644
--- a/translations/qt_help_de.ts
+++ b/translations/qt_help_de.ts
@@ -39,7 +39,7 @@
<message>
<location line="+22"/>
<source>Cannot load sqlite database driver!</source>
- <translation type="unfinished"></translation>
+ <translation>Der Datenbanktreiber für SQLite kann nicht geladen werden!</translation>
</message>
<message>
<location line="+11"/>