summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2009-11-18 12:39:40 (GMT)
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2009-11-18 12:39:40 (GMT)
commitd46da3a141ad05c9f7cd7ea94e254980748329da (patch)
tree72beadfabcf66d725b10bbc5ce3d8c38137ed888
parent62e641691b9a3eadc8b9fb2e31150cdf5b66115d (diff)
parent6f6b2ab07c0dbd0ebdb25f1fbe537ea12bdffee4 (diff)
downloadQt-d46da3a141ad05c9f7cd7ea94e254980748329da.zip
Qt-d46da3a141ad05c9f7cd7ea94e254980748329da.tar.gz
Qt-d46da3a141ad05c9f7cd7ea94e254980748329da.tar.bz2
Merge remote branch 'mainline/4.6' into 4.6
-rw-r--r--demos/qmediaplayer/mediaplayer.cpp21
-rw-r--r--demos/qmediaplayer/mediaplayer.h2
-rw-r--r--demos/qtdemo/itemcircleanimation.cpp1
-rw-r--r--dist/changes-4.6.0224
-rw-r--r--doc/src/getting-started/known-issues.qdoc28
-rw-r--r--src/3rdparty/phonon/ds9/backend.cpp9
-rw-r--r--src/3rdparty/phonon/ds9/backend.h2
-rw-r--r--src/3rdparty/phonon/ds9/backendnode.cpp19
-rw-r--r--src/3rdparty/phonon/ds9/mediaobject.cpp2
-rw-r--r--src/3rdparty/phonon/mmf/abstractmediaplayer.cpp6
-rw-r--r--src/3rdparty/phonon/mmf/abstractmediaplayer.h2
-rw-r--r--src/3rdparty/phonon/mmf/abstractplayer.cpp7
-rw-r--r--src/3rdparty/phonon/mmf/abstractplayer.h4
-rw-r--r--src/3rdparty/phonon/mmf/audiooutput.cpp20
-rw-r--r--src/3rdparty/phonon/mmf/audiooutput.h8
-rw-r--r--src/3rdparty/phonon/mmf/backend.cpp4
-rw-r--r--src/3rdparty/phonon/mmf/mediaobject.cpp5
-rw-r--r--src/3rdparty/phonon/mmf/mediaobject.h8
-rw-r--r--src/3rdparty/phonon/mmf/mmf_videoplayer.cpp335
-rw-r--r--src/3rdparty/phonon/mmf/mmf_videoplayer.h28
-rw-r--r--src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_stub.cpp40
-rw-r--r--src/3rdparty/phonon/mmf/objectdump.cpp (renamed from src/3rdparty/phonon/mmf/mmfphonondebug/objectdump.cpp)4
-rw-r--r--src/3rdparty/phonon/mmf/objectdump.h (renamed from src/3rdparty/phonon/mmf/mmfphonondebug/objectdump.h)0
-rw-r--r--src/3rdparty/phonon/mmf/objectdump_global.h (renamed from src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_global.h)0
-rw-r--r--src/3rdparty/phonon/mmf/objectdump_symbian.cpp (renamed from src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_symbian.cpp)56
-rw-r--r--src/3rdparty/phonon/mmf/objectdump_symbian.h (renamed from src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_symbian.h)0
-rw-r--r--src/3rdparty/phonon/mmf/objecttree.cpp (renamed from src/3rdparty/phonon/mmf/mmfphonondebug/objecttree.cpp)4
-rw-r--r--src/3rdparty/phonon/mmf/objecttree.h (renamed from src/3rdparty/phonon/mmf/mmfphonondebug/objecttree.h)0
-rw-r--r--src/3rdparty/phonon/mmf/videooutput.cpp135
-rw-r--r--src/3rdparty/phonon/mmf/videooutput.h39
-rw-r--r--src/3rdparty/phonon/mmf/videooutputobserver.h44
-rw-r--r--src/3rdparty/phonon/mmf/videowidget.cpp25
-rw-r--r--src/3rdparty/phonon/mmf/videowidget.h7
-rw-r--r--src/3rdparty/phonon/mmf/volumeobserver.h44
-rw-r--r--src/corelib/kernel/qsharedmemory_unix.cpp2
-rw-r--r--src/gui/dialogs/qfiledialog_win.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp2
-rw-r--r--src/gui/image/qpixmap_x11.cpp5
-rw-r--r--src/gui/itemviews/qlistview.cpp4
-rw-r--r--src/gui/kernel/qapplication_s60.cpp20
-rw-r--r--src/gui/kernel/qkeysequence.cpp2
-rw-r--r--src/gui/kernel/qt_s60_p.h1
-rw-r--r--src/gui/painting/qblendfunctions.cpp3
-rw-r--r--src/gui/painting/qpdf.cpp6
-rw-r--r--src/gui/styles/qgtkstyle_p.cpp4
-rw-r--r--src/gui/styles/qs60style.cpp10
-rw-r--r--src/gui/styles/qstylesheetstyle.cpp8
-rw-r--r--src/gui/text/qtextdocument_p.cpp4
-rw-r--r--src/gui/widgets/qlineedit.cpp7
-rw-r--r--src/gui/widgets/qmenu.cpp3
-rw-r--r--src/gui/widgets/qplaintextedit.cpp3
-rw-r--r--src/gui/widgets/qtextedit.cpp7
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp48
-rw-r--r--src/multimedia/audio/qaudioinput.cpp1
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.cpp25
-rw-r--r--src/multimedia/audio/qaudiooutput_alsa_p.cpp21
-rw-r--r--src/opengl/qgl.cpp58
-rw-r--r--src/opengl/qgl_p.h3
-rw-r--r--src/opengl/qgl_x11.cpp27
-rw-r--r--src/opengl/qglpixelbuffer_egl.cpp65
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp2
-rw-r--r--src/plugins/phonon/mmf/mmf.pro101
-rw-r--r--src/plugins/phonon/mmf/mmfphonondebug/mmfphonondebug.pro31
-rw-r--r--src/plugins/phonon/mmf/plugin/plugin.pro91
-rw-r--r--src/tools/rcc/rcc.cpp40
-rw-r--r--tests/auto/collections/tst_collections.cpp2
-rw-r--r--tests/auto/qfile/qfile.pro2
-rw-r--r--tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp23
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp62
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp9
-rw-r--r--tests/auto/qlibrary/lib2/lib2.pro6
-rw-r--r--tests/auto/qmenu/tst_qmenu.cpp13
-rw-r--r--tests/auto/qtextdocument/tst_qtextdocument.cpp11
-rw-r--r--tests/auto/qtreeview/tst_qtreeview.cpp2
-rw-r--r--translations/assistant_de.ts74
-rw-r--r--translations/designer_de.ts28
-rw-r--r--translations/linguist_de.ts28
-rw-r--r--translations/qt_de.ts948
-rw-r--r--translations/qt_help_de.ts69
79 files changed, 1866 insertions, 1150 deletions
diff --git a/demos/qmediaplayer/mediaplayer.cpp b/demos/qmediaplayer/mediaplayer.cpp
index 624bab7..267a225 100644
--- a/demos/qmediaplayer/mediaplayer.cpp
+++ b/demos/qmediaplayer/mediaplayer.cpp
@@ -355,13 +355,13 @@ void MediaPlayer::stateChanged(Phonon::State newstate, Phonon::State oldstate)
switch (newstate) {
case Phonon::ErrorState:
- QMessageBox::warning(this, "Phonon Mediaplayer", m_MediaObject.errorString(), QMessageBox::Close);
if (m_MediaObject.errorType() == Phonon::FatalError) {
playButton->setEnabled(false);
rewindButton->setEnabled(false);
} else {
m_MediaObject.pause();
}
+ QMessageBox::warning(this, "Phonon Mediaplayer", m_MediaObject.errorString(), QMessageBox::Close);
break;
case Phonon::PausedState:
case Phonon::StoppedState:
@@ -471,6 +471,8 @@ void MediaPlayer::effectChanged()
void MediaPlayer::showSettingsDialog()
{
+ playPauseForDialog();
+
if (!settingsDialog)
initSettingsDialog();
@@ -516,6 +518,8 @@ void MediaPlayer::showSettingsDialog()
m_videoWidget->setScaleMode(oldScale);
ui->audioEffectsCombo->setCurrentIndex(currentEffect);
}
+
+ playPauseForDialog();
}
void MediaPlayer::initVideoWindow()
@@ -652,10 +656,25 @@ void MediaPlayer::setFile(const QString &fileName)
m_MediaObject.play();
}
+void MediaPlayer::playPauseForDialog()
+{
+ // If we're running on a small screen, we want to pause the video
+ // when popping up dialogs.
+ if (m_hasSmallScreen &&
+ (Phonon::PlayingState == m_MediaObject.state() ||
+ Phonon::PausedState == m_MediaObject.state()))
+ playPause();
+}
+
void MediaPlayer::openFile()
{
+ playPauseForDialog();
+
QStringList fileNames = QFileDialog::getOpenFileNames(this, QString(),
QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
+
+ playPauseForDialog();
+
m_MediaObject.clearQueue();
if (fileNames.size() > 0) {
QString fileName = fileNames[0];
diff --git a/demos/qmediaplayer/mediaplayer.h b/demos/qmediaplayer/mediaplayer.h
index 08db0e5..a1c3d92 100644
--- a/demos/qmediaplayer/mediaplayer.h
+++ b/demos/qmediaplayer/mediaplayer.h
@@ -111,6 +111,8 @@ private slots:
void hasVideoChanged(bool);
private:
+ void playPauseForDialog();
+
QIcon playIcon;
QIcon pauseIcon;
QMenu *fileMenu;
diff --git a/demos/qtdemo/itemcircleanimation.cpp b/demos/qtdemo/itemcircleanimation.cpp
index 8c94eb7..74c3e6a 100644
--- a/demos/qtdemo/itemcircleanimation.cpp
+++ b/demos/qtdemo/itemcircleanimation.cpp
@@ -302,6 +302,7 @@ void ItemCircleAnimation::setupGuides()
int y = 20;
this->qtGuide1 = new GuideCircle(QRectF(x, y, 260, 260), -36, 342);
+ this->currGuide = 0;
new GuideLine(QPointF(x + 240, y + 268), this->qtGuide1);
new GuideLine(QPointF(x + 265, y + 246), this->qtGuide1);
new GuideLine(QPointF(x + 158, y + 134), this->qtGuide1);
diff --git a/dist/changes-4.6.0 b/dist/changes-4.6.0
index 24d8fc0..3a130ca 100644
--- a/dist/changes-4.6.0
+++ b/dist/changes-4.6.0
@@ -19,14 +19,20 @@ Merge Request: http://qt.gitorious.org
* General *
****************************************************************************
- - QtDBus
- * The minimum required version of the D-Bus reference library is
- now 0.93.
- * Support for reading and writing of custom property types added.
- * Support for getting return arguments in remote method invocation
- via QMetaMethod::invokeMethod.
+New features
+------------
- - [MR#1742] Added new multimedia keys to the Qt::Key enum.
+ - QState, QStateMachine
+ * New classes for state machine framework added to QtCore.
+
+ - QAbstractAnimation
+ * New animation framework added to QtCore
+
+ - QTouchEvent
+ * New class for handling multitouch events added to QtGui
+
+ - QGesture, QGestureRecognizer
+ * New gesture framework added to QtGui
- QMatrix4x4, QGenericMatrix, QVector2D, QVector3D, QVector4D, QQuaternion
* New classes to support 3D applications.
@@ -37,7 +43,14 @@ Merge Request: http://qt.gitorious.org
- QGraphicsEffect
* New classes for applying graphics effects to graphics items and widgets.
- - Boxes demo ported to use new 3D math and shader program classes.
+ - QWebElement
+ * New class for DOM access added to QtWebKit
+
+ - QAudioInput, QAudioOutput
+ * New audio input and output classes.
+
+ - QAbstractVideoSurface, QVideoFrame
+ * New abstract video output classes.
- OpenVG graphics system added.
@@ -45,28 +58,29 @@ Merge Request: http://qt.gitorious.org
- Improved support for input methods in graphics view.
- - QAudioInput, QAudioOutput
- * New audio input and output classes.
-
- - QAbstractVideoSurface, QVideoFrame
- * New abstract video output classes.
+ - [MR#1742] Added new multimedia keys to the Qt::Key enum.
- - New state machine framework added to QtCore.
+ - Boxes demo ported to use new 3D math and shader program classes.
- QtTest now supports outputting XUnit XML documents, for integrating
with existing continuous integration systems. This is enabled by
running the test program with the -xunitxml option.
-Third party components
-----------------------
+ - QtDBus
+ * The minimum required version of the D-Bus reference library is
+ now 0.93.
+ * Support for reading and writing of custom property types added.
+ * Support for getting return arguments in remote method invocation
+ via QMetaMethod::invokeMethod.
- - Updated FreeType to version 2.3.9.
- - Updated harfbuzz to the latest version from fd.org.
+Optimizations
+-------------
- - Updated sqlite to version 3.6.19.
+ - Optimized rendering strategy in QGraphicsView
+ * See list of Important Behavior Changes below
- - Updated libpng to version 1.2.40
+ - Improved delivery of posted events on Windows
****************************************************************************
@@ -74,6 +88,7 @@ Third party components
****************************************************************************
QtCore
+------
- QByteArray
* New overloads for QByteArray::insert() and QByteArray::prepend().
@@ -170,6 +185,7 @@ QtCore
* [256468] Fixed comment indentation.
QtGui
+-----
- Qt::escape
* Now escape the double quote (&quot;).
@@ -435,6 +451,7 @@ QtGui
with Qt::WA_NoSystemBackground and window opacity set.
QtDBus
+------
- QDBusConnection
* Made sending of invalid/incomplete messages consistently fail with error
@@ -447,6 +464,7 @@ QtDBus
deleted or to change owners.
QtNetwork
+---------
- QAbstractSocket
* Only disconnect from host when all bytes have been written.
@@ -483,6 +501,7 @@ QtNetwork
cases the connection stalled when a buffer limit was used.
QtOpenGL
+--------
- QGLColormap
* setEntry() was inserting entries instead of replacing them.
@@ -531,6 +550,7 @@ QtOpenGL
- Added lots of OpenGL autotests.
QtScript
+--------
- Many optimizations.
- Improved ECMA script compliance.
@@ -538,6 +558,7 @@ QtScript
to a QtScript array index.
QtSql
+-----
- [QTBUG-3162] Views for Sql table models should not reset state on failed
queries.
@@ -571,6 +592,7 @@ QtSql
- Add proper iODBC linking support.
QtSvg
+-----
- QSvgHandler
* [245602] [204686] Fixed gradient and solid-color referencing.
@@ -582,6 +604,7 @@ QtSvg
* [257052] Changed drawImage() to ignore aspect ratio.
QtWebKit
+--------
- Many bug fixes.
@@ -608,67 +631,49 @@ QtWebKit
* New functions for defining local URL schemes.
- QWebSettings
- * New options for text encoding, printing shrink factor and off-line web
- application cache (HTML5).
+ * New options for text encoding and off-line web application cache (HTML5).
- QWebView
* Support for render hints.
QtXml
+-----
- QDomDocument
* Set the codec to UTF-8 if codec not present or unknown.
QtXmlPatterns
+-------------
- QXmlQuery
* [245219] Added QXmlQuery::setFocus(const QString &focus).
Qt Plugins
+----------
- Tiff plugin
* [258526] Rotate the image if the tiff file contains an orientation tag.
* [254317] Add support for mono and indexed format
- - QPlainTextEdit
- * Fixed crash when clicking on a text edit which was smaller than the
- height of the font used.
-
- - QPrinter
- * [QTBUG-4497] Removed redundant SetPen command in the postscript code
- when reusing a QPrinter object.
+Third party components
+----------------------
+
+ - Updated FreeType to version 2.3.9.
+
+ - Updated harfbuzz to the latest version from fd.org.
+
+ - Updated sqlite to version 3.6.19.
+
+ - Updated libpng to version 1.2.40
- - QTextLayout
- * [QTBUG-4468] Count tabs as multiple characters when applying a fixed
- column width.
- * [176401] Take into account the negative right bearing of the last
- character in an item of text if the glyph extends beyond its ascent.
-
- - QTextDocument
- * [207189] Support setting font size using short hand syntax in the
- CSS "font" property.
- * [201228] Remove implicit margin on bullet lists when exporting to
- HTML.
- * [240086] Fixed bug which caused floating objects which span several
- pages to float into the second page of the document even when it's
- the only existing object, causing the document to contain a blank
- first page.
- * [240325] Even when wrap mode is set to Qt::TextWordWrap, the layout
- would sometimes break outside word boundaries when floating objects
- affected the width available to the text. This has been fixed.
-
- - QFontEngine
- * [QTBUG-2354] Support certain 'Microsoft' platform symbol fonts which
- also contain a regular unicode table for exactly the symbol range of
- code points.
-
- - QFontMetrics
- * [176401] Account for right bearing in bounding rect.
****************************************************************************
* Platform Specific Changes *
****************************************************************************
+ - Added support for the Symbian platform with integration for the S60
+ framework.
+
- Added community supported Qt ports for QNX and VxWorks. See platform
notes in the Qt documentation for details.
@@ -905,6 +910,60 @@ Qt for Embedded Linux
- Add powerpc mkspec and remove "empty" ppc mkspec .
+DirectFB
+--------
+
+ - When running Qt/DirectFB the DirectFB window id of a top level QWidget can
+ be queried using property("_q_DirectFBWindowID")
+
+ - Allow setting the background color of the primary layer in DirectFB with
+ connect options. QWS_DISPLAY=directfb:bgcolor=red or
+ QWS_DISPLAY=directfb:bgcolor=\#aabbccdd
+
+ - Add support for rendering mouse cursor using a top level window when cursor
+ support is not working in IDirectFBDisplayLayer. Define
+ QT_DIRECTFB_WINDOW_AS_CURSOR to enable.
+
+ - Add experimental support for optimized locking/unlocking of surfaces. Enable
+ by defining QT_DIRECTFB_SUBSURFACE.
+
+ - Fix a bug to conceptually allow using QDirectFBScreen as a subscreen of a
+ proxy screen. Don't make QDirectFBScreen::instance() assume that
+ QScreen::instance() is a QDirectFBScreen.
+
+ - Optimize move/resize operations with DirectFB. With a properly configured
+ DirectFB these operations are handled for us and we don't need to force a
+ repaint of the window.
+
+ - Support top level window opacity in DirectFB
+
+ - Fix a bug when loading RGB32 images that would lead to rendering issues.
+
+ - Fix a bug when painting with invalid pens/brushes.
+
+ - Fix a bug that would show up when QWidget::scroll is called.
+
+ - Implement support for loading pixmaps using IDirectFBImageProvider.
+
+ - Disable color table support by default. This seems to work incorrectly on
+ most boards and loading these images will generally require an image
+ conversion anyway.
+
+ - Fix a crash when resizing windows.
+
+ - Compile with versions < 1.0. We still recommend using newer versions.
+
+ - Considerable code cleanup
+
+ - Various optimizations regarding painting, loading of images and creation of
+ surfaces.
+
+ - Allow forcibly falling back to raster engine for painting operations by
+ exporting QT_DIRECTFB_FORCE_RASTER=1
+
+ - Reenable support for RGB32 primary surface.
+
+
Qt for Windows CE
-----------------
@@ -974,61 +1033,6 @@ Qt for Windows CE
****************************************************************************
-* DirectFB *
-****************************************************************************
-
- - When running Qt/DirectFB the DirectFB window id of a top level QWidget can
- be queried using property("_q_DirectFBWindowID")
-
- - Allow setting the background color of the primary layer in DirectFB with
- connect options. QWS_DISPLAY=directfb:bgcolor=red or
- QWS_DISPLAY=directfb:bgcolor=\#aabbccdd
-
- - Add support for rendering mouse cursor using a top level window when cursor
- support is not working in IDirectFBDisplayLayer. Define
- QT_DIRECTFB_WINDOW_AS_CURSOR to enable.
-
- - Add experimental support for optimized locking/unlocking of surfaces. Enable
- by defining QT_DIRECTFB_SUBSURFACE.
-
- - Fix a bug to conceptually allow using QDirectFBScreen as a subscreen of a
- proxy screen. Don't make QDirectFBScreen::instance() assume that
- QScreen::instance() is a QDirectFBScreen.
-
- - Optimize move/resize operations with DirectFB. With a properly configured
- DirectFB these operations are handled for us and we don't need to force a
- repaint of the window.
-
- - Support top level window opacity in DirectFB
-
- - Fix a bug when loading RGB32 images that would lead to rendering issues.
-
- - Fix a bug when painting with invalid pens/brushes.
-
- - Fix a bug that would show up when QWidget::scroll is called.
-
- - Implement support for loading pixmaps using IDirectFBImageProvider.
-
- - Disable color table support by default. This seems to work incorrectly on
- most boards and loading these images will generally require an image
- conversion anyway.
-
- - Fix a crash when resizing windows.
-
- - Compile with versions < 1.0. We still recommend using newer versions.
-
- - Considerable code cleanup
-
- - Various optimizations regarding painting, loading of images and creation of
- surfaces.
-
- - Allow forcibly falling back to raster engine for painting operations by
- exporting QT_DIRECTFB_FORCE_RASTER=1
-
- - Reenable support for RGB32 primary surface.
-
-
-****************************************************************************
* Important Behavior Changes *
****************************************************************************
diff --git a/doc/src/getting-started/known-issues.qdoc b/doc/src/getting-started/known-issues.qdoc
index 0b63423..5c8888d 100644
--- a/doc/src/getting-started/known-issues.qdoc
+++ b/doc/src/getting-started/known-issues.qdoc
@@ -59,34 +59,6 @@
\section1 Installation Issues
- \section2 Building the Source Package on Windows 7
-
- \list
- \o When building Qt 4.5.0 with Windows 7, the build fails with an error
- message regarding failing to embed manifest. This a known issue with
- Windows 7, explained in the Windows 7 SDK Beta
- \l{http://download.microsoft.com/download/8/8/0/8808A472-6450-4723-9C87-977069714B27/ReleaseNotes.Htm}
- {release notes}. A workaround for this issue is to patch the
- \bold{embed_manifest_exe.prf} file with the following:
-
- \code
- diff --git a/mkspecs/features/win32/embed_manifest_exe.prf b/mkspecs/features/win32/embed_manifest_exe.prf
- index e1747f1..05f116e 100644
- --- a/mkspecs/features/win32/embed_manifest_exe.prf
- +++ b/mkspecs/features/win32/embed_manifest_exe.prf
- @@ -8,4 +8,9 @@ if(win32-msvc2005|win32-msvc2008):!equals(TEMPLATE_PREFIX, "vc"):equals(TEMPLATE
- QMAKE_POST_LINK = $$quote(mt.exe -nologo -manifest \"$$replace(OBJECTS_DIR,/,\\)\\$${NOPATH_TARGET}.intermediate.ma
- nifest\" -outputresource:$(DESTDIR_TARGET);1$$escape_expand(\n\t))
- QMAKE_POST_LINK += $$QMAKE_PREV_POST_LINK
- QMAKE_CLEAN += \"$$replace(OBJECTS_DIR,/,\\)\\$${NOPATH_TARGET}.intermediate.manifest\"
- + isEmpty(RC_FILE) {
- + system("echo.>$$replace(OUT_PWD,/,\\)\\$$replace(OBJECTS_DIR,/,\\)\\Windows7WorkAround.rc")
- + RC_FILE = $$replace(OUT_PWD,/,\\)\\$$replace(OBJECTS_DIR,/,\\)\\Windows7WorkAround.rc
- + }
- +
- }
- \endcode
-
\section2 Installing the Source Package on Unix systems
\o If you download a Zip source package, you will need to convert
diff --git a/src/3rdparty/phonon/ds9/backend.cpp b/src/3rdparty/phonon/ds9/backend.cpp
index 6ed0145..fbc4bdc 100644
--- a/src/3rdparty/phonon/ds9/backend.cpp
+++ b/src/3rdparty/phonon/ds9/backend.cpp
@@ -41,6 +41,8 @@ namespace Phonon
{
namespace DS9
{
+ QMutex *Backend::directShowMutex = 0;
+
bool Backend::AudioMoniker::operator==(const AudioMoniker &other)
{
return other->IsEqual(*this) == S_OK;
@@ -50,6 +52,8 @@ namespace Phonon
Backend::Backend(QObject *parent, const QVariantList &)
: QObject(parent)
{
+ directShowMutex = &m_directShowMutex;
+
::CoInitialize(0);
//registering meta types
@@ -62,11 +66,8 @@ namespace Phonon
m_audioOutputs.clear();
m_audioEffects.clear();
::CoUninitialize();
- }
- QMutex *Backend::directShowMutex()
- {
- return &qobject_cast<Backend*>(qt_plugin_instance())->m_directShowMutex;
+ directShowMutex = 0;
}
QObject *Backend::createObject(BackendInterface::Class c, QObject *parent, const QList<QVariant> &args)
diff --git a/src/3rdparty/phonon/ds9/backend.h b/src/3rdparty/phonon/ds9/backend.h
index 8b020c2..7c3c109 100644
--- a/src/3rdparty/phonon/ds9/backend.h
+++ b/src/3rdparty/phonon/ds9/backend.h
@@ -64,7 +64,7 @@ namespace Phonon
Filter getAudioOutputFilter(int index) const;
- static QMutex *directShowMutex();
+ static QMutex *directShowMutex;
Q_SIGNALS:
void objectDescriptionChanged(ObjectDescriptionType);
diff --git a/src/3rdparty/phonon/ds9/backendnode.cpp b/src/3rdparty/phonon/ds9/backendnode.cpp
index 855357a..3afcafa 100644
--- a/src/3rdparty/phonon/ds9/backendnode.cpp
+++ b/src/3rdparty/phonon/ds9/backendnode.cpp
@@ -58,7 +58,24 @@ namespace Phonon
BackendNode::~BackendNode()
{
//this will remove the filter from the graph
- mediaObjectDestroyed();
+ FILTER_INFO info;
+ for(int i = 0; i < FILTER_COUNT; ++i) {
+ const Filter &filter = m_filters[i];
+ if (!filter)
+ continue;
+ filter->QueryFilterInfo(&info);
+ if (info.pGraph) {
+ HRESULT hr = info.pGraph->RemoveFilter(filter);
+
+ if (hr == VFW_E_NOT_STOPPED && m_mediaObject) {
+ m_mediaObject->ensureStopped();
+
+ hr = info.pGraph->RemoveFilter(filter);
+ }
+ Q_ASSERT(SUCCEEDED(hr));
+ info.pGraph->Release();
+ }
+ }
}
void BackendNode::setMediaObject(MediaObject *mo)
diff --git a/src/3rdparty/phonon/ds9/mediaobject.cpp b/src/3rdparty/phonon/ds9/mediaobject.cpp
index 250b94a..106a4c8 100644
--- a/src/3rdparty/phonon/ds9/mediaobject.cpp
+++ b/src/3rdparty/phonon/ds9/mediaobject.cpp
@@ -177,7 +177,7 @@ namespace Phonon
void WorkerThread::handleTask()
{
- QMutexLocker locker(Backend::directShowMutex());
+ QMutexLocker locker(Backend::directShowMutex);
{
QMutexLocker locker(&m_mutex);
if (m_finished || m_queue.isEmpty()) {
diff --git a/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp b/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp
index f2efaa0..99e96cd 100644
--- a/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp
+++ b/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp
@@ -109,12 +109,12 @@ void MMF::AbstractMediaPlayer::pause()
case GroundState:
case LoadingState:
case PausedState:
- case ErrorState:
// Do nothing
break;
case StoppedState:
case PlayingState:
+ case ErrorState:
case BufferingState:
doPause();
stopTickTimer();
@@ -289,10 +289,6 @@ void MMF::AbstractMediaPlayer::setNextSource(const MediaSource &source)
}
-//-----------------------------------------------------------------------------
-// VolumeObserver
-//-----------------------------------------------------------------------------
-
void MMF::AbstractMediaPlayer::volumeChanged(qreal volume)
{
TRACE_CONTEXT(AbstractMediaPlayer::volumeChanged, EAudioInternal);
diff --git a/src/3rdparty/phonon/mmf/abstractmediaplayer.h b/src/3rdparty/phonon/mmf/abstractmediaplayer.h
index cff7bab..cb6e437 100644
--- a/src/3rdparty/phonon/mmf/abstractmediaplayer.h
+++ b/src/3rdparty/phonon/mmf/abstractmediaplayer.h
@@ -56,8 +56,6 @@ public:
virtual MediaSource source() const;
virtual void setFileSource(const Phonon::MediaSource&, RFile&);
virtual void setNextSource(const MediaSource &source);
-
- // VolumeObserver
virtual void volumeChanged(qreal volume);
protected:
diff --git a/src/3rdparty/phonon/mmf/abstractplayer.cpp b/src/3rdparty/phonon/mmf/abstractplayer.cpp
index de2722d..caf4092 100644
--- a/src/3rdparty/phonon/mmf/abstractplayer.cpp
+++ b/src/3rdparty/phonon/mmf/abstractplayer.cpp
@@ -92,11 +92,6 @@ void MMF::AbstractPlayer::setTransitionTime(qint32 time)
m_transitionTime = time;
}
-
-//-----------------------------------------------------------------------------
-// VolumeObserver
-//-----------------------------------------------------------------------------
-
void MMF::AbstractPlayer::volumeChanged(qreal volume)
{
m_volume = volume;
@@ -134,7 +129,7 @@ void MMF::AbstractPlayer::setError(Phonon::ErrorType error,
Phonon::ErrorType MMF::AbstractPlayer::errorType() const
{
const Phonon::ErrorType result = (ErrorState == m_state)
- ? errorType() : NoError;
+ ? m_error : NoError;
return result;
}
diff --git a/src/3rdparty/phonon/mmf/abstractplayer.h b/src/3rdparty/phonon/mmf/abstractplayer.h
index 66496cc..2e9cfa0 100644
--- a/src/3rdparty/phonon/mmf/abstractplayer.h
+++ b/src/3rdparty/phonon/mmf/abstractplayer.h
@@ -24,8 +24,6 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
#include <QObject>
-#include "volumeobserver.h"
-
#include "videooutput.h"
class RFile;
@@ -49,7 +47,6 @@ class VideoOutput;
* - Video, in which case the implementation is VideoPlayer
*/
class AbstractPlayer : public QObject
- , public VolumeObserver
{
// Required although this class has no signals or slots
// Without this, qobject_cast will fail
@@ -85,7 +82,6 @@ public:
virtual void setFileSource(const Phonon::MediaSource&, RFile&) = 0;
virtual void setNextSource(const Phonon::MediaSource &) = 0;
- // VolumeObserver
virtual void volumeChanged(qreal volume);
void setVideoOutput(VideoOutput* videoOutput);
diff --git a/src/3rdparty/phonon/mmf/audiooutput.cpp b/src/3rdparty/phonon/mmf/audiooutput.cpp
index 82af9f1..d6e0c13 100644
--- a/src/3rdparty/phonon/mmf/audiooutput.cpp
+++ b/src/3rdparty/phonon/mmf/audiooutput.cpp
@@ -24,7 +24,6 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
#include "defs.h"
#include "mediaobject.h"
#include "utils.h"
-#include "volumeobserver.h"
QT_BEGIN_NAMESPACE
@@ -41,7 +40,6 @@ using namespace Phonon::MMF;
MMF::AudioOutput::AudioOutput(Backend *, QObject *parent) : MediaNode(parent)
, m_volume(InitialVolume)
- , m_observer(0)
{
}
@@ -59,12 +57,9 @@ qreal MMF::AudioOutput::volume() const
void MMF::AudioOutput::setVolume(qreal volume)
{
TRACE_CONTEXT(AudioOutput::setVolume, EAudioApi);
- TRACE_ENTRY("observer 0x%08x volume %f", m_observer, volume);
+ TRACE_ENTRY("volume %f", volume);
if (volume != m_volume) {
- if (m_observer) {
- m_observer->volumeChanged(volume);
- }
m_volume = volume;
TRACE("emit volumeChanged(%f)", volume)
@@ -86,17 +81,12 @@ bool MMF::AudioOutput::setOutputDevice(int index)
return true;
}
-void MMF::AudioOutput::setVolumeObserver(VolumeObserver* observer)
-{
- m_observer = observer;
- if (m_observer) {
- m_observer->volumeChanged(m_volume);
- }
-}
-
bool MMF::AudioOutput::activateOnMediaObject(MediaObject *mo)
{
- setVolumeObserver(mo);
+ // Ensure that the MediaObject has the correct initial volume
+ mo->volumeChanged(m_volume);
+ // Connect MediaObject to receive future volume changes
+ connect(this, SIGNAL(volumeChanged(qreal)), mo, SLOT(volumeChanged(qreal)));
return true;
}
diff --git a/src/3rdparty/phonon/mmf/audiooutput.h b/src/3rdparty/phonon/mmf/audiooutput.h
index d0ba086..1e1e134 100644
--- a/src/3rdparty/phonon/mmf/audiooutput.h
+++ b/src/3rdparty/phonon/mmf/audiooutput.h
@@ -31,12 +31,11 @@ namespace Phonon
namespace MMF
{
class Backend;
-class VolumeObserver;
/**
* @short AudioOutputInterface implementation for MMF.
*
- * Forwards volume commands to the VolumeObserver instance,
+ * Forwards volume commands to the MediaObject instance,
* which is provided by the backend when MediaNode objects are
* connected.
*
@@ -82,13 +81,8 @@ Q_SIGNALS:
void audioDeviceFailed();
private:
-
- void setVolumeObserver(VolumeObserver* observer);
-
qreal m_volume;
- // Not owned
- VolumeObserver* m_observer;
};
}
}
diff --git a/src/3rdparty/phonon/mmf/backend.cpp b/src/3rdparty/phonon/mmf/backend.cpp
index cac27e3..7e3a67f 100644
--- a/src/3rdparty/phonon/mmf/backend.cpp
+++ b/src/3rdparty/phonon/mmf/backend.cpp
@@ -38,10 +38,6 @@ QT_BEGIN_NAMESPACE
using namespace Phonon;
using namespace Phonon::MMF;
-/*! \class MMF::VolumeObserver
- \internal
-*/
-
/*! \class MMF::Backend
\internal
*/
diff --git a/src/3rdparty/phonon/mmf/mediaobject.cpp b/src/3rdparty/phonon/mmf/mediaobject.cpp
index f004fd7..e42e0fa 100644
--- a/src/3rdparty/phonon/mmf/mediaobject.cpp
+++ b/src/3rdparty/phonon/mmf/mediaobject.cpp
@@ -359,11 +359,6 @@ void MMF::MediaObject::setTransitionTime(qint32 time)
m_player->setTransitionTime(time);
}
-
-//-----------------------------------------------------------------------------
-// VolumeObserver
-//-----------------------------------------------------------------------------
-
void MMF::MediaObject::volumeChanged(qreal volume)
{
m_player->volumeChanged(volume);
diff --git a/src/3rdparty/phonon/mmf/mediaobject.h b/src/3rdparty/phonon/mmf/mediaobject.h
index 409918d..ee94ea2 100644
--- a/src/3rdparty/phonon/mmf/mediaobject.h
+++ b/src/3rdparty/phonon/mmf/mediaobject.h
@@ -30,7 +30,6 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
#include "abstractplayer.h"
#include "mmf_medianode.h"
#include "defs.h"
-#include "volumeobserver.h"
QT_BEGIN_NAMESPACE
@@ -46,7 +45,6 @@ class VideoOutput;
*/
class MediaObject : public MediaNode
, public MediaObjectInterface
- , public VolumeObserver
{
Q_OBJECT
Q_INTERFACES(Phonon::MediaObjectInterface)
@@ -77,9 +75,6 @@ public:
virtual qint32 transitionTime() const;
virtual void setTransitionTime(qint32);
- // VolumeObserver
- void volumeChanged(qreal volume);
-
/**
* This class owns the AbstractPlayer, and will delete it upon
* destruction.
@@ -90,6 +85,9 @@ public:
virtual bool activateOnMediaObject(MediaObject *);
+public Q_SLOTS:
+ void volumeChanged(qreal volume);
+
Q_SIGNALS:
void totalTimeChanged(qint64 length);
void hasVideoChanged(bool hasVideo);
diff --git a/src/3rdparty/phonon/mmf/mmf_videoplayer.cpp b/src/3rdparty/phonon/mmf/mmf_videoplayer.cpp
index ba7d005..2059fbe 100644
--- a/src/3rdparty/phonon/mmf/mmf_videoplayer.cpp
+++ b/src/3rdparty/phonon/mmf/mmf_videoplayer.cpp
@@ -49,7 +49,7 @@ MMF::VideoPlayer::VideoPlayer()
, m_screenDevice(*CCoeEnv::Static()->ScreenDevice())
, m_window(0)
, m_totalTime(0)
- , m_mmfOutputChangePending(false)
+ , m_pendingChanges(false)
{
construct();
}
@@ -60,7 +60,7 @@ MMF::VideoPlayer::VideoPlayer(const AbstractPlayer& player)
, m_screenDevice(*CCoeEnv::Static()->ScreenDevice())
, m_window(0)
, m_totalTime(0)
- , m_mmfOutputChangePending(false)
+ , m_pendingChanges(false)
{
construct();
}
@@ -70,24 +70,11 @@ void MMF::VideoPlayer::construct()
TRACE_CONTEXT(VideoPlayer::VideoPlayer, EVideoApi);
TRACE_ENTRY_0();
- if (m_videoOutput)
- m_videoOutput->setObserver(this);
+ getVideoWindow();
const TInt priority = 0;
const TMdaPriorityPreference preference = EMdaPriorityPreferenceNone;
- // Ignore return value - first call must always return true
- getNativeWindowSystemHandles();
-
- // TODO: is this the correct way to handle errors which occur when
- // creating a Symbian object in the constructor of a Qt object?
-
- // TODO: check whether videoOutput is visible? If not, then the
- // corresponding window will not be active, meaning that the
- // clipping region will be set to empty and the video will not be
- // visible. If this is the case, we should set m_mmfOutputChangePending
- // and respond to future showEvents from the videoOutput widget.
-
TRAPD(err,
m_player.reset(CVideoPlayerUtility::NewL
(
@@ -95,7 +82,7 @@ void MMF::VideoPlayer::construct()
priority, preference,
m_wsSession, m_screenDevice,
*m_window,
- m_rect, m_rect
+ m_videoRect, m_videoRect
))
);
@@ -110,8 +97,8 @@ MMF::VideoPlayer::~VideoPlayer()
TRACE_CONTEXT(VideoPlayer::~VideoPlayer, EVideoApi);
TRACE_ENTRY_0();
- if (m_videoOutput)
- m_videoOutput->setObserver(0);
+ // QObject destructor removes all signal-slot connections involving this
+ // object, so we do not need to disconnect from m_videoOutput here.
TRACE_EXIT_0();
}
@@ -124,11 +111,7 @@ void MMF::VideoPlayer::doPlay()
{
TRACE_CONTEXT(VideoPlayer::doPlay, EVideoApi);
- // See comment in updateMmfOutput
- if (m_mmfOutputChangePending) {
- TRACE_0("MMF output change pending - pushing now");
- updateMmfOutput();
- }
+ applyPendingChanges();
m_player->Play();
}
@@ -255,13 +238,10 @@ void MMF::VideoPlayer::MvpuoPrepareComplete(TInt aError)
maxVolumeChanged(m_player->MaxVolume());
if (m_videoOutput)
- m_videoOutput->setFrameSize(m_frameSize);
+ m_videoOutput->setVideoSize(m_videoFrameSize);
- // See comment in updateMmfOutput
- if (m_mmfOutputChangePending) {
- TRACE_0("MMF output change pending - pushing now");
- updateMmfOutput();
- }
+ updateVideoRect();
+ applyPendingChanges();
emit totalTimeChanged(totalTime());
changeState(StoppedState);
@@ -279,7 +259,7 @@ void MMF::VideoPlayer::doPrepareCompleteL(TInt aError)
// Get frame size
TSize size;
m_player->VideoFrameSizeL(size);
- m_frameSize = QSize(size.iWidth, size.iHeight);
+ m_videoFrameSize = QSize(size.iWidth, size.iHeight);
// Get duration
m_totalTime = toMilliSeconds(m_player->DurationL());
@@ -322,27 +302,178 @@ void MMF::VideoPlayer::MvpuoEvent(const TMMFEvent &aEvent)
//-----------------------------------------------------------------------------
-// VideoOutputObserver
+// Video window updates
//-----------------------------------------------------------------------------
-void MMF::VideoPlayer::videoOutputRegionChanged()
+void MMF::VideoPlayer::getVideoWindow()
+{
+ TRACE_CONTEXT(VideoPlayer::getVideoWindow, EVideoInternal);
+ TRACE_ENTRY_0();
+
+ if(m_videoOutput) {
+ // Dump information to log, only in debug builds
+ m_videoOutput->dump();
+
+ initVideoOutput();
+ m_window = m_videoOutput->videoWindow();
+ updateVideoRect();
+ } else
+ // Top-level window
+ m_window = QApplication::activeWindow()->effectiveWinId()->DrawableWindow();
+
+ TRACE_EXIT_0();
+}
+
+void MMF::VideoPlayer::videoOutputChanged()
+{
+ TRACE_CONTEXT(VideoPlayer::videoOutputChanged, EVideoInternal);
+ TRACE_ENTRY_0();
+
+ if (m_videoOutput) {
+ initVideoOutput();
+ videoWindowChanged();
+ }
+
+ TRACE_EXIT_0();
+}
+
+void MMF::VideoPlayer::initVideoOutput()
+{
+ m_videoOutput->winId();
+ m_videoOutput->setVideoSize(m_videoFrameSize);
+
+ bool connected = connect(
+ m_videoOutput, SIGNAL(videoWindowChanged()),
+ this, SLOT(videoWindowChanged())
+ );
+ Q_ASSERT(connected);
+
+ connected = connect(
+ m_videoOutput, SIGNAL(aspectRatioChanged()),
+ this, SLOT(aspectRatioChanged())
+ );
+ Q_ASSERT(connected);
+
+ connected = connect(
+ m_videoOutput, SIGNAL(scaleModeChanged()),
+ this, SLOT(scaleModeChanged())
+ );
+ Q_ASSERT(connected);
+
+ // Suppress warnings in release builds
+ Q_UNUSED(connected);
+}
+
+void MMF::VideoPlayer::videoWindowChanged()
{
TRACE_CONTEXT(VideoPlayer::videoOutputRegionChanged, EVideoInternal);
TRACE_ENTRY("state %d", state());
- const bool changed = getNativeWindowSystemHandles();
+ m_window = m_videoOutput->videoWindow();
- // See comment in updateMmfOutput
- if (changed) {
- if (state() == LoadingState)
- m_mmfOutputChangePending = true;
- else
- updateMmfOutput();
+ updateVideoRect();
+
+ TRACE_EXIT_0();
+}
+
+// Helper function for aspect ratio / scale mode handling
+QSize scaleToAspect(const QSize& srcRect, int aspectWidth, int aspectHeight)
+{
+ const qreal aspectRatio = qreal(aspectWidth) / aspectHeight;
+
+ int width = srcRect.width();
+ int height = srcRect.width() / aspectRatio;
+ if (height > srcRect.height()){
+ height = srcRect.height();
+ width = srcRect.height() * aspectRatio;
}
+ return QSize(width, height);
+}
+
+void MMF::VideoPlayer::updateVideoRect()
+{
+ QRect videoRect;
+ const QRect windowRect = m_videoOutput->videoWindowRect();
+ const QSize windowSize = windowRect.size();
+
+ // Calculate size of smallest rect which contains video frame size
+ // and conforms to aspect ratio
+ switch (m_videoOutput->aspectRatio()) {
+ case Phonon::VideoWidget::AspectRatioAuto:
+ videoRect.setSize(m_videoFrameSize);
+ break;
+
+ case Phonon::VideoWidget::AspectRatioWidget:
+ videoRect.setSize(windowSize);
+ break;
+
+ case Phonon::VideoWidget::AspectRatio4_3:
+ videoRect.setSize(scaleToAspect(m_videoFrameSize, 4, 3));
+ break;
+
+ case Phonon::VideoWidget::AspectRatio16_9:
+ videoRect.setSize(scaleToAspect(m_videoFrameSize, 16, 9));
+ break;
+ }
+
+ // Scale to fill the window width
+ const int windowWidth = windowSize.width();
+ const int windowHeight = windowSize.height();
+ const qreal windowScaleFactor = qreal(windowWidth) / videoRect.width();
+ int videoWidth = windowWidth;
+ int videoHeight = videoRect.height() * windowScaleFactor;
+
+ const qreal windowToVideoHeightRatio = qreal(windowHeight) / videoHeight;
+
+ switch(m_videoOutput->scaleMode()) {
+ case Phonon::VideoWidget::ScaleAndCrop:
+ if(videoHeight < windowHeight) {
+ videoWidth *= windowToVideoHeightRatio;
+ videoHeight = windowHeight;
+ }
+ break;
+ case Phonon::VideoWidget::FitInView:
+ default:
+ if(videoHeight > windowHeight) {
+ videoWidth *= windowToVideoHeightRatio;
+ videoHeight = windowHeight;
+ }
+ break;
+ }
+
+ // Calculate scale factors
+ m_scaleWidth = 100.0f * videoWidth / m_videoFrameSize.width();
+ m_scaleHeight = 100.0f * videoHeight / m_videoFrameSize.height();
+
+ m_videoRect = qt_QRect2TRect(windowRect);
+
+ if (state() == LoadingState)
+ m_pendingChanges = true;
+ else {
+ applyVideoWindowChange();
+ m_pendingChanges = false;
+ }
+}
+
+void MMF::VideoPlayer::aspectRatioChanged()
+{
+ TRACE_CONTEXT(VideoPlayer::aspectRatioChanged, EVideoInternal);
+ TRACE_ENTRY("state %d aspectRatio %d", state());
+
+ updateVideoRect();
TRACE_EXIT_0();
}
+void MMF::VideoPlayer::scaleModeChanged()
+{
+ TRACE_CONTEXT(VideoPlayer::scaleModeChanged, EVideoInternal);
+ TRACE_ENTRY("state %d", state());
+
+ updateVideoRect();
+
+ TRACE_EXIT_0();
+}
#ifndef QT_NO_DEBUG
@@ -383,113 +514,61 @@ void getDsaRegion(RWsSession &session, const RWindowBase &window)
#endif // _DEBUG
-void MMF::VideoPlayer::updateMmfOutput()
+void MMF::VideoPlayer::applyPendingChanges()
{
- TRACE_CONTEXT(VideoPlayer::updateMmfOutput, EVideoInternal);
- TRACE_ENTRY_0();
+ if(m_pendingChanges)
+ applyVideoWindowChange();
- // Calling SetDisplayWindowL is a no-op unless the MMF controller has
- // been loaded, so we shouldn't do it. Instead, the
- // m_mmfOutputChangePending flag is used to record the fact that we
- // need to call SetDisplayWindowL, and this is checked in
- // MvpuoPrepareComplete, at which point the MMF controller has been
- // loaded.
+ m_pendingChanges = false;
+}
+
+void MMF::VideoPlayer::applyVideoWindowChange()
+{
+ TRACE_CONTEXT(VideoPlayer::applyVideoWindowChange, EVideoInternal);
+ TRACE_ENTRY_0();
#ifndef QT_NO_DEBUG
getDsaRegion(m_wsSession, *m_window);
#endif
- TRAPD(err,
- m_player->SetDisplayWindowL
- (
- m_wsSession, m_screenDevice,
- *m_window,
- m_rect, m_rect
- )
- );
+ static const TBool antialias = ETrue;
- if (KErrNone != err) {
- TRACE("SetDisplayWindowL error %d", err);
+ TRAPD(err, m_player->SetScaleFactorL(m_scaleWidth, m_scaleHeight, antialias));
+ if(KErrNone != err) {
+ TRACE("SetScaleFactorL (1) err %d", err);
setError(NormalError);
}
- m_mmfOutputChangePending = false;
+ if(KErrNone == err) {
+ TRAP(err,
+ m_player->SetDisplayWindowL
+ (
+ m_wsSession, m_screenDevice,
+ *m_window,
+ m_videoRect, m_videoRect
+ )
+ );
+
+ if (KErrNone != err) {
+ TRACE("SetDisplayWindowL err %d", err);
+ setError(NormalError);
+ } else {
+ TRAP(err, m_player->SetScaleFactorL(m_scaleWidth, m_scaleHeight, antialias));
+ if(KErrNone != err) {
+ TRACE("SetScaleFactorL (2) err %d", err);
+ setError(NormalError);
+ }
+ }
+ }
TRACE_EXIT_0();
}
//-----------------------------------------------------------------------------
-// Private functions
+// Metadata
//-----------------------------------------------------------------------------
-void MMF::VideoPlayer::videoOutputChanged()
-{
- TRACE_CONTEXT(VideoPlayer::videoOutputChanged, EVideoInternal);
- TRACE_ENTRY_0();
-
- if (m_videoOutput) {
- m_videoOutput->setObserver(this);
- m_videoOutput->setFrameSize(m_frameSize);
- }
-
- videoOutputRegionChanged();
-
- TRACE_EXIT_0();
-}
-
-bool MMF::VideoPlayer::getNativeWindowSystemHandles()
-{
- TRACE_CONTEXT(VideoPlayer::getNativeWindowSystemHandles, EVideoInternal);
- TRACE_ENTRY_0();
-
- CCoeControl *control = 0;
-
- if (m_videoOutput)
- // Create native window
- control = m_videoOutput->winId();
- else
- // Get top-level window
- control = QApplication::activeWindow()->effectiveWinId();
-
-#ifndef QT_NO_DEBUG
- if (m_videoOutput) {
- QScopedPointer<ObjectDump::QDumper> dumper(new ObjectDump::QDumper);
- dumper->setPrefix("Phonon::MMF"); // to aid searchability of logs
- ObjectDump::addDefaultAnnotators(*dumper);
- TRACE_0("Dumping VideoOutput:");
- dumper->dumpObject(*m_videoOutput);
- }
- else {
- TRACE_0("m_videoOutput is null - dumping top-level control info:");
- TRACE("control %08x", control);
- TRACE("control.parent %08x", control->Parent());
- TRACE("control.isVisible %d", control->IsVisible());
- TRACE("control.rect %d,%d %dx%d",
- control->Position().iX, control->Position().iY,
- control->Size().iWidth, control->Size().iHeight);
- TRACE("control.ownsWindow %d", control->OwnsWindow());
- }
-#endif
-
- RWindowBase *const window = control->DrawableWindow();
- const TRect rect(window->AbsPosition(), window->Size());
-
- TRACE("rect %d %d - %d %d",
- rect.iTl.iX, rect.iTl.iY,
- rect.iBr.iX, rect.iBr.iY);
-
- bool changed = false;
-
- if (window != m_window || rect != m_rect) {
- m_window = window;
- m_rect = rect;
- changed = true;
- }
-
- TRACE_RETURN("changed %d", changed);
-}
-
int MMF::VideoPlayer::numberOfMetaDataEntries() const
{
int numberOfEntries = 0;
diff --git a/src/3rdparty/phonon/mmf/mmf_videoplayer.h b/src/3rdparty/phonon/mmf/mmf_videoplayer.h
index fa4e59b..599bb88 100644
--- a/src/3rdparty/phonon/mmf/mmf_videoplayer.h
+++ b/src/3rdparty/phonon/mmf/mmf_videoplayer.h
@@ -23,7 +23,6 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
#include "abstractmediaplayer.h"
#include "videooutput.h"
-#include "videooutputobserver.h"
QT_BEGIN_NAMESPACE
@@ -40,7 +39,6 @@ namespace MMF
*/
class VideoPlayer : public AbstractMediaPlayer
, public MVideoPlayerUtilityObserver
- , public VideoOutputObserver
{
Q_OBJECT
@@ -70,8 +68,10 @@ public:
virtual void MvpuoPlayComplete(TInt aError);
virtual void MvpuoEvent(const TMMFEvent &aEvent);
- // VideoOutputObserver
- virtual void videoOutputRegionChanged();
+public Q_SLOTS:
+ void videoWindowChanged();
+ void aspectRatioChanged();
+ void scaleModeChanged();
private:
void construct();
@@ -81,10 +81,13 @@ private:
// AbstractPlayer
virtual void videoOutputChanged();
- // Returns true if handles have changed
- bool getNativeWindowSystemHandles();
+ void getVideoWindow();
+ void initVideoOutput();
- void updateMmfOutput();
+ void updateVideoRect();
+
+ void applyPendingChanges();
+ void applyVideoWindowChange();
// AbstractMediaPlayer
virtual int numberOfMetaDataEntries() const;
@@ -97,12 +100,17 @@ private:
RWsSession& m_wsSession;
CWsScreenDevice& m_screenDevice;
RWindowBase* m_window;
- TRect m_rect;
- QSize m_frameSize;
+ /* Extent of the video display - will be clipped to m_windowRect */
+ TRect m_videoRect;
+
+ TReal32 m_scaleWidth;
+ TReal32 m_scaleHeight;
+
+ QSize m_videoFrameSize;
qint64 m_totalTime;
- bool m_mmfOutputChangePending;
+ bool m_pendingChanges;
};
diff --git a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_stub.cpp b/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_stub.cpp
deleted file mode 100644
index 6207dac..0000000
--- a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_stub.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/* This file is part of the KDE project.
-
-Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-
-This library is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 2.1 or 3 of the License.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with this library. If not, see <http://www.gnu.org/licenses/>.
-
-*/
-
-#include "objectdump.h"
-
-QT_BEGIN_NAMESPACE
-
-namespace ObjectDump
-{
-
-void addDefaultAnnotators_sys(QDumper& /*dumper*/)
-{
-
-}
-
-void addDefaultAnnotators_sys(QVisitor& /*visitor*/)
-{
-
-}
-
-} // namespace ObjectDump
-
-QT_END_NAMESPACE
-
-
diff --git a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump.cpp b/src/3rdparty/phonon/mmf/objectdump.cpp
index 9add439..6b6b71e 100644
--- a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump.cpp
+++ b/src/3rdparty/phonon/mmf/objectdump.cpp
@@ -16,6 +16,8 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
+#ifndef QT_NO_DEBUG
+
#include <QByteArray>
#include <QDebug>
#include <QHash>
@@ -523,5 +525,5 @@ void dumpAncestors(const QObject& leaf, QVisitor& visitor)
QT_END_NAMESPACE
-
+#endif
diff --git a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump.h b/src/3rdparty/phonon/mmf/objectdump.h
index e94b3ac..e94b3ac 100644
--- a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump.h
+++ b/src/3rdparty/phonon/mmf/objectdump.h
diff --git a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_global.h b/src/3rdparty/phonon/mmf/objectdump_global.h
index b8987e0..b8987e0 100644
--- a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_global.h
+++ b/src/3rdparty/phonon/mmf/objectdump_global.h
diff --git a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_symbian.cpp b/src/3rdparty/phonon/mmf/objectdump_symbian.cpp
index 03220a7..41dd240 100644
--- a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_symbian.cpp
+++ b/src/3rdparty/phonon/mmf/objectdump_symbian.cpp
@@ -16,6 +16,8 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
+#ifndef QT_NO_DEBUG
+
#include <QTextStream>
#include <QWidget>
#include <coecntrl.h>
@@ -99,46 +101,39 @@ QList<QByteArray> QAnnotatorWindow::annotation(const QObject& object)
if (widget) {
const CCoeControl* control = widget->effectiveWinId();
- RDrawableWindow *window = 0;
-
- if (control && (window = control->DrawableWindow())) {
- QByteArray array;
- QTextStream stream(&array);
+ if (control) {
+ RDrawableWindow *const window = control->DrawableWindow();
+ if(window) {
+ QByteArray array;
+ QTextStream stream(&array);
- stream << "window: ";
+ stream << "window: ";
- // ClientHandle() is available first in 5.0.
-#if !defined(__SERIES60_31__) && !defined(__S60_32__)
- if (QSysInfo::s60Version() > QSysInfo::SV_S60_3_2)
- // Client-side window handle
+ // Server-side address of CWsWindow object
+ // This is useful for correlation with the window tree dumped by the window
+ // server (see RWsSession::LogCommand).
// Cast to a void pointer so that log output is in hexadecimal format.
- stream << "cli " << reinterpret_cast<const void*>(window->ClientHandle()) << ' ';
-#endif
+ stream << "srv " << reinterpret_cast<const void*>(window->WsHandle()) << ' ';
- // Server-side address of CWsWindow object
- // This is useful for correlation with the window tree dumped by the window
- // server (see RWsSession::LogCommand).
- // Cast to a void pointer so that log output is in hexadecimal format.
- stream << "srv " << reinterpret_cast<const void*>(window->WsHandle()) << ' ';
+ stream << "group " << window->WindowGroupId() << ' ';
- stream << "group " << window->WindowGroupId() << ' ';
-
- // Client-side handle to the parent window.
- // Cast to a void pointer so that log output is in hexadecimal format.
- stream << "parent " << reinterpret_cast<const void*>(window->Parent()) << ' ';
+ // Client-side handle to the parent window.
+ // Cast to a void pointer so that log output is in hexadecimal format.
+ stream << "parent " << reinterpret_cast<const void*>(window->Parent()) << ' ';
- stream << window->Position().iX << ',' << window->Position().iY << ' ';
- stream << '(' << window->AbsPosition().iX << ',' << window->AbsPosition().iY << ") ";
- stream << window->Size().iWidth << 'x' << window->Size().iHeight << ' ';
+ stream << window->Position().iX << ',' << window->Position().iY << ' ';
+ stream << '(' << window->AbsPosition().iX << ',' << window->AbsPosition().iY << ") ";
+ stream << window->Size().iWidth << 'x' << window->Size().iHeight << ' ';
- const TDisplayMode displayMode = window->DisplayMode();
- stream << "mode " << displayMode << ' ';
+ const TDisplayMode displayMode = window->DisplayMode();
+ stream << "mode " << displayMode << ' ';
- stream << "ord " << window->OrdinalPosition();
+ stream << "ord " << window->OrdinalPosition();
- stream.flush();
- result.append(array);
+ stream.flush();
+ result.append(array);
+ }
}
}
@@ -165,4 +160,5 @@ void addDefaultAnnotators_sys(QVisitor& visitor)
QT_END_NAMESPACE
+#endif
diff --git a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_symbian.h b/src/3rdparty/phonon/mmf/objectdump_symbian.h
index 563c862..563c862 100644
--- a/src/3rdparty/phonon/mmf/mmfphonondebug/objectdump_symbian.h
+++ b/src/3rdparty/phonon/mmf/objectdump_symbian.h
diff --git a/src/3rdparty/phonon/mmf/mmfphonondebug/objecttree.cpp b/src/3rdparty/phonon/mmf/objecttree.cpp
index bc61435..750db22 100644
--- a/src/3rdparty/phonon/mmf/mmfphonondebug/objecttree.cpp
+++ b/src/3rdparty/phonon/mmf/objecttree.cpp
@@ -16,6 +16,8 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
+#ifndef QT_NO_DEBUG
+
#include <QTextStream>
#include <QWidget>
#include "objecttree.h"
@@ -98,5 +100,5 @@ AncestorConstIterator::AncestorConstIterator(const QObject& leaf)
QT_END_NAMESPACE
-
+#endif
diff --git a/src/3rdparty/phonon/mmf/mmfphonondebug/objecttree.h b/src/3rdparty/phonon/mmf/objecttree.h
index 98bdf14..98bdf14 100644
--- a/src/3rdparty/phonon/mmf/mmfphonondebug/objecttree.h
+++ b/src/3rdparty/phonon/mmf/objecttree.h
diff --git a/src/3rdparty/phonon/mmf/videooutput.cpp b/src/3rdparty/phonon/mmf/videooutput.cpp
index 1b338a2..ddf30de 100644
--- a/src/3rdparty/phonon/mmf/videooutput.cpp
+++ b/src/3rdparty/phonon/mmf/videooutput.cpp
@@ -19,7 +19,6 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
#include "ancestormovemonitor.h"
#include "utils.h"
#include "videooutput.h"
-#include "videooutputobserver.h"
#ifndef QT_NO_DEBUG
#include "objectdump.h"
@@ -30,8 +29,11 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
#include <QMoveEvent>
#include <QResizeEvent>
+#include <QtCore/private/qcore_symbian_p.h> // for qt_TRect2QRect
#include <QtGui/private/qwidget_p.h> // to access QWExtra
+#include <coecntrl.h>
+
QT_BEGIN_NAMESPACE
using namespace Phonon;
@@ -42,6 +44,16 @@ using namespace Phonon::MMF;
*/
//-----------------------------------------------------------------------------
+// Constants
+//-----------------------------------------------------------------------------
+
+static const Phonon::VideoWidget::AspectRatio DefaultAspectRatio =
+ Phonon::VideoWidget::AspectRatioAuto;
+static const Phonon::VideoWidget::ScaleMode DefaultScaleMode =
+ Phonon::VideoWidget::FitInView;
+
+
+//-----------------------------------------------------------------------------
// Constructor / destructor
//-----------------------------------------------------------------------------
@@ -49,7 +61,8 @@ MMF::VideoOutput::VideoOutput
(AncestorMoveMonitor* ancestorMoveMonitor, QWidget* parent)
: QWidget(parent)
, m_ancestorMoveMonitor(ancestorMoveMonitor)
- , m_observer(0)
+ , m_aspectRatio(DefaultAspectRatio)
+ , m_scaleMode(DefaultScaleMode)
{
TRACE_CONTEXT(VideoOutput::VideoOutput, EVideoInternal);
TRACE_ENTRY("parent 0x%08x", parent);
@@ -66,6 +79,7 @@ MMF::VideoOutput::VideoOutput
// to be invisible when running on the target device.
qt_widget_private(this)->extraData()->disableBlit = true;
+ getVideoWindowRect();
registerForAncestorMoved();
dump();
@@ -83,33 +97,35 @@ MMF::VideoOutput::~VideoOutput()
TRACE_EXIT_0();
}
-void MMF::VideoOutput::setFrameSize(const QSize& frameSize)
+void MMF::VideoOutput::setVideoSize(const QSize& frameSize)
{
- TRACE_CONTEXT(VideoOutput::setFrameSize, EVideoInternal);
+ TRACE_CONTEXT(VideoOutput::setVideoSize, EVideoInternal);
TRACE("oldSize %d %d newSize %d %d",
- m_frameSize.width(), m_frameSize.height(),
+ m_videoFrameSize.width(), m_videoFrameSize.height(),
frameSize.width(), frameSize.height());
- if (frameSize != m_frameSize) {
- m_frameSize = frameSize;
+ if (frameSize != m_videoFrameSize) {
+ m_videoFrameSize = frameSize;
updateGeometry();
}
}
-void MMF::VideoOutput::setObserver(VideoOutputObserver* observer)
-{
- TRACE_CONTEXT(VideoOutput::setObserver, EVideoInternal);
- TRACE("observer 0x%08x", observer);
-
- m_observer = observer;
-}
-
void MMF::VideoOutput::ancestorMoved()
{
TRACE_CONTEXT(VideoOutput::ancestorMoved, EVideoInternal);
TRACE_ENTRY_0();
- videoOutputRegionChanged();
+ RWindowBase *const window = videoWindow();
+
+ if(window) {
+ const TPoint newWindowPosSymbian = window->AbsPosition();
+ const QPoint newWindowPos(newWindowPosSymbian.iX, newWindowPosSymbian.iY);
+
+ if(newWindowPos != m_videoWindowRect.topLeft()) {
+ m_videoWindowRect.moveTo(newWindowPos);
+ emit videoWindowChanged();
+ }
+ }
TRACE_EXIT_0();
}
@@ -123,9 +139,8 @@ QSize MMF::VideoOutput::sizeHint() const
// TODO: replace this with a more sensible default
QSize result(320, 240);
- if (!m_frameSize.isNull()) {
- result = m_frameSize;
- }
+ if (!m_videoFrameSize.isNull())
+ result = m_videoFrameSize;
return result;
}
@@ -149,7 +164,10 @@ void MMF::VideoOutput::resizeEvent(QResizeEvent* event)
event->oldSize().width(), event->oldSize().height(),
event->size().width(), event->size().height());
- videoOutputRegionChanged();
+ if(event->size() != event->oldSize()) {
+ m_videoWindowRect.setSize(event->size());
+ emit videoWindowChanged();
+ }
}
void MMF::VideoOutput::moveEvent(QMoveEvent* event)
@@ -159,7 +177,10 @@ void MMF::VideoOutput::moveEvent(QMoveEvent* event)
event->oldPos().x(), event->oldPos().y(),
event->pos().x(), event->pos().y());
- videoOutputRegionChanged();
+ if(event->pos() != event->oldPos()) {
+ m_videoWindowRect.moveTo(event->pos());
+ emit videoWindowChanged();
+ }
}
bool MMF::VideoOutput::event(QEvent* event)
@@ -168,7 +189,8 @@ bool MMF::VideoOutput::event(QEvent* event)
if (event->type() == QEvent::WinIdChange) {
TRACE_0("WinIdChange");
- videoOutputRegionChanged();
+ getVideoWindowRect();
+ emit videoWindowChanged();
return true;
} else if (event->type() == QEvent::ParentChange) {
// Tell ancestor move monitor to update ancestor list for this widget
@@ -180,14 +202,66 @@ bool MMF::VideoOutput::event(QEvent* event)
//-----------------------------------------------------------------------------
+// Public functions
+//-----------------------------------------------------------------------------
+
+RWindowBase* MMF::VideoOutput::videoWindow()
+{
+ CCoeControl *control = internalWinId();
+ if(!control)
+ control = effectiveWinId();
+
+ RWindowBase *window = 0;
+ if(control)
+ window = control->DrawableWindow();
+
+ return window;
+}
+
+const QRect& MMF::VideoOutput::videoWindowRect() const
+{
+ return m_videoWindowRect;
+}
+
+Phonon::VideoWidget::AspectRatio MMF::VideoOutput::aspectRatio() const
+{
+ return m_aspectRatio;
+}
+
+void MMF::VideoOutput::setAspectRatio
+ (Phonon::VideoWidget::AspectRatio aspectRatio)
+{
+ if(m_aspectRatio != aspectRatio) {
+ m_aspectRatio = aspectRatio;
+ emit aspectRatioChanged();
+ }
+}
+
+Phonon::VideoWidget::ScaleMode MMF::VideoOutput::scaleMode() const
+{
+ return m_scaleMode;
+}
+
+void MMF::VideoOutput::setScaleMode
+ (Phonon::VideoWidget::ScaleMode scaleMode)
+{
+ if(m_scaleMode != scaleMode) {
+ m_scaleMode = scaleMode;
+ emit scaleModeChanged();
+ }
+}
+
+
+//-----------------------------------------------------------------------------
// Private functions
//-----------------------------------------------------------------------------
-void MMF::VideoOutput::videoOutputRegionChanged()
+void MMF::VideoOutput::getVideoWindowRect()
{
- dump();
- if (m_observer)
- m_observer->videoOutputRegionChanged();
+ RWindowBase *const window = videoWindow();
+ if(window)
+ m_videoWindowRect =
+ qt_TRect2QRect(TRect(window->AbsPosition(), window->Size()));
}
void MMF::VideoOutput::registerForAncestorMoved()
@@ -199,15 +273,20 @@ void MMF::VideoOutput::dump() const
{
#ifndef QT_NO_DEBUG
TRACE_CONTEXT(VideoOutput::dump, EVideoInternal);
+
QScopedPointer<ObjectDump::QVisitor> visitor(new ObjectDump::QVisitor);
visitor->setPrefix("Phonon::MMF"); // to aid searchability of logs
ObjectDump::addDefaultAnnotators(*visitor);
TRACE("Dumping tree from leaf 0x%08x:", this);
- //ObjectDump::dumpAncestors(*this, *visitor);
ObjectDump::dumpTreeFromLeaf(*this, *visitor);
+
+ QScopedPointer<ObjectDump::QDumper> dumper(new ObjectDump::QDumper);
+ dumper->setPrefix("Phonon::MMF"); // to aid searchability of logs
+ ObjectDump::addDefaultAnnotators(*dumper);
+ TRACE_0("Dumping VideoOutput:");
+ dumper->dumpObject(*this);
#endif
}
-
QT_END_NAMESPACE
diff --git a/src/3rdparty/phonon/mmf/videooutput.h b/src/3rdparty/phonon/mmf/videooutput.h
index db4d127..6dfe69d 100644
--- a/src/3rdparty/phonon/mmf/videooutput.h
+++ b/src/3rdparty/phonon/mmf/videooutput.h
@@ -24,6 +24,11 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
#include <QRect>
#include "defs.h"
+#include <Phonon/VideoWidget>
+
+#include <e32std.h>
+class RWindowBase;
+
QT_BEGIN_NAMESPACE
namespace Phonon
@@ -31,7 +36,6 @@ namespace Phonon
namespace MMF
{
class AncestorMoveMonitor;
-class VideoOutputObserver;
class VideoOutput : public QWidget
{
@@ -41,11 +45,29 @@ public:
VideoOutput(AncestorMoveMonitor* ancestorMoveMonitor, QWidget* parent);
~VideoOutput();
- void setFrameSize(const QSize& size);
- void setObserver(VideoOutputObserver* observer);
+ // Set size of video frame. Called by VideoPlayer.
+ void setVideoSize(const QSize& size);
+
+ RWindowBase* videoWindow();
+ const QRect& videoWindowRect() const;
+ Phonon::VideoWidget::AspectRatio aspectRatio() const;
+ void setAspectRatio(Phonon::VideoWidget::AspectRatio aspectRatio);
+
+ Phonon::VideoWidget::ScaleMode scaleMode() const;
+ void setScaleMode(Phonon::VideoWidget::ScaleMode scaleMode);
+
+ // Called by AncestorMoveMonitor
void ancestorMoved();
+ // Debugging output
+ void dump() const;
+
+Q_SIGNALS:
+ void videoWindowChanged();
+ void aspectRatioChanged();
+ void scaleModeChanged();
+
protected:
// Override QWidget functions
QSize sizeHint() const;
@@ -55,19 +77,18 @@ protected:
bool event(QEvent* event);
private:
- void dump() const;
- void videoOutputRegionChanged();
-
+ void getVideoWindowRect();
void registerForAncestorMoved();
private:
// Not owned
AncestorMoveMonitor* m_ancestorMoveMonitor;
- // Not owned
- VideoOutputObserver* m_observer;
+ QSize m_videoFrameSize;
+ QRect m_videoWindowRect;
- QSize m_frameSize;
+ Phonon::VideoWidget::AspectRatio m_aspectRatio;
+ Phonon::VideoWidget::ScaleMode m_scaleMode;
};
}
diff --git a/src/3rdparty/phonon/mmf/videooutputobserver.h b/src/3rdparty/phonon/mmf/videooutputobserver.h
deleted file mode 100644
index e3ba305..0000000
--- a/src/3rdparty/phonon/mmf/videooutputobserver.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* This file is part of the KDE project.
-
-Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-
-This library is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 2.1 or 3 of the License.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with this library. If not, see <http://www.gnu.org/licenses/>.
-
-*/
-
-#ifndef PHONON_MMF_VIDEOOUTPUTOBSERVER_H
-#define PHONON_MMF_VIDEOOUTPUTOBSERVER_H
-
-#include <QtGlobal>
-
-QT_BEGIN_NAMESPACE
-
-namespace Phonon
-{
-namespace MMF
-{
-/**
- * Interface via which VideoOutput notifies VideoPlayer of changes to the
- * video output screen region.
- */
-class VideoOutputObserver
-{
-public:
- virtual void videoOutputRegionChanged() = 0;
-};
-}
-}
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/3rdparty/phonon/mmf/videowidget.cpp b/src/3rdparty/phonon/mmf/videowidget.cpp
index 7d7abf1..bd22307 100644
--- a/src/3rdparty/phonon/mmf/videowidget.cpp
+++ b/src/3rdparty/phonon/mmf/videowidget.cpp
@@ -35,11 +35,7 @@ using namespace Phonon::MMF;
// Constants
//-----------------------------------------------------------------------------
-static const Phonon::VideoWidget::AspectRatio DefaultAspectRatio =
- Phonon::VideoWidget::AspectRatioAuto;
static const qreal DefaultBrightness = 1.0;
-static const Phonon::VideoWidget::ScaleMode DefaultScaleMode =
- Phonon::VideoWidget::FitInView;
static const qreal DefaultContrast = 1.0;
static const qreal DefaultHue = 1.0;
static const qreal DefaultSaturation = 1.0;
@@ -52,10 +48,8 @@ static const qreal DefaultSaturation = 1.0;
MMF::VideoWidget::VideoWidget
(AncestorMoveMonitor* ancestorMoveMonitor, QWidget* parent)
: MediaNode(parent)
- , m_widget(new VideoOutput(ancestorMoveMonitor, parent))
- , m_aspectRatio(DefaultAspectRatio)
+ , m_videoOutput(new VideoOutput(ancestorMoveMonitor, parent))
, m_brightness(DefaultBrightness)
- , m_scaleMode(DefaultScaleMode)
, m_contrast(DefaultContrast)
, m_hue(DefaultHue)
, m_saturation(DefaultSaturation)
@@ -81,7 +75,7 @@ MMF::VideoWidget::~VideoWidget()
Phonon::VideoWidget::AspectRatio MMF::VideoWidget::aspectRatio() const
{
- return m_aspectRatio;
+ return m_videoOutput->aspectRatio();
}
void MMF::VideoWidget::setAspectRatio
@@ -90,7 +84,7 @@ void MMF::VideoWidget::setAspectRatio
TRACE_CONTEXT(VideoWidget::setAspectRatio, EVideoApi);
TRACE("aspectRatio %d", aspectRatio);
- m_aspectRatio = aspectRatio;
+ m_videoOutput->setAspectRatio(aspectRatio);
}
qreal MMF::VideoWidget::brightness() const
@@ -108,7 +102,7 @@ void MMF::VideoWidget::setBrightness(qreal brightness)
Phonon::VideoWidget::ScaleMode MMF::VideoWidget::scaleMode() const
{
- return m_scaleMode;
+ return m_videoOutput->scaleMode();
}
void MMF::VideoWidget::setScaleMode(Phonon::VideoWidget::ScaleMode scaleMode)
@@ -116,7 +110,7 @@ void MMF::VideoWidget::setScaleMode(Phonon::VideoWidget::ScaleMode scaleMode)
TRACE_CONTEXT(VideoWidget::setScaleMode, EVideoApi);
TRACE("setScaleMode %d", setScaleMode);
- m_scaleMode = scaleMode;
+ m_videoOutput->setScaleMode(scaleMode);
}
qreal MMF::VideoWidget::contrast() const
@@ -160,17 +154,12 @@ void MMF::VideoWidget::setSaturation(qreal saturation)
QWidget* MMF::VideoWidget::widget()
{
- return m_widget.data();
-}
-
-VideoOutput& MMF::VideoWidget::videoOutput()
-{
- return *static_cast<VideoOutput*>(widget());
+ return m_videoOutput.data();
}
bool MMF::VideoWidget::activateOnMediaObject(MediaObject *mo)
{
- mo->setVideoOutput(&videoOutput());
+ mo->setVideoOutput(m_videoOutput.data());
return true;
}
diff --git a/src/3rdparty/phonon/mmf/videowidget.h b/src/3rdparty/phonon/mmf/videowidget.h
index 318dfae..2f0978b 100644
--- a/src/3rdparty/phonon/mmf/videowidget.h
+++ b/src/3rdparty/phonon/mmf/videowidget.h
@@ -20,6 +20,7 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
#define PHONON_MMF_VIDEOWIDGET_H
#include "mmf_medianode.h"
+#include "videooutput.h"
#include <QtGui/QWidget>
#include <Phonon/VideoWidget>
@@ -59,17 +60,13 @@ public:
virtual void setSaturation(qreal saturation);
virtual QWidget *widget();
- VideoOutput& videoOutput();
-
protected:
virtual bool activateOnMediaObject(MediaObject *mo);
private:
- QScopedPointer<QWidget> m_widget;
+ QScopedPointer<VideoOutput> m_videoOutput;
- Phonon::VideoWidget::AspectRatio m_aspectRatio;
qreal m_brightness;
- Phonon::VideoWidget::ScaleMode m_scaleMode;
qreal m_contrast;
qreal m_hue;
qreal m_saturation;
diff --git a/src/3rdparty/phonon/mmf/volumeobserver.h b/src/3rdparty/phonon/mmf/volumeobserver.h
deleted file mode 100644
index bedd3de..0000000
--- a/src/3rdparty/phonon/mmf/volumeobserver.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* This file is part of the KDE project.
-
-Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-
-This library is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 2.1 or 3 of the License.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with this library. If not, see <http://www.gnu.org/licenses/>.
-
-*/
-
-#ifndef PHONON_MMF_VOLUMEOBSERVER_H
-#define PHONON_MMF_VOLUMEOBSERVER_H
-
-#include <QtGlobal>
-
-QT_BEGIN_NAMESPACE
-
-namespace Phonon
-{
-namespace MMF
-{
-/**
- * Interface used by AudioOutput to pass volume control commands
- * back along the audio path to the MediaObject.
- */
-class VolumeObserver
-{
-public:
- virtual void volumeChanged(qreal volume) = 0;
-};
-}
-}
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/corelib/kernel/qsharedmemory_unix.cpp b/src/corelib/kernel/qsharedmemory_unix.cpp
index 40b9f04..a850df0 100644
--- a/src/corelib/kernel/qsharedmemory_unix.cpp
+++ b/src/corelib/kernel/qsharedmemory_unix.cpp
@@ -49,6 +49,7 @@
#include <errno.h>
+#ifndef QT_NO_SHAREDMEMORY
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
@@ -56,6 +57,7 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
+#endif //QT_NO_SHAREDMEMORY
#include "private/qcore_unix_p.h"
diff --git a/src/gui/dialogs/qfiledialog_win.cpp b/src/gui/dialogs/qfiledialog_win.cpp
index 8089b43..d8ae73e 100644
--- a/src/gui/dialogs/qfiledialog_win.cpp
+++ b/src/gui/dialogs/qfiledialog_win.cpp
@@ -509,7 +509,7 @@ static bool qt_win_set_IFileDialogOptions(IFileDialog *pfd,
DWORD newOptions;
hr = pfd->GetOptions(&newOptions);
if (SUCCEEDED(hr)) {
- newOptions |= (FOS_NOCHANGEDIR | FOS_NOREADONLYRETURN);
+ newOptions |= FOS_NOCHANGEDIR;
if (mode == QFileDialog::ExistingFile ||
mode == QFileDialog::ExistingFiles)
newOptions |= (FOS_FILEMUSTEXIST | FOS_PATHMUSTEXIST);
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 3ef311c..3f9f443 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -1517,6 +1517,8 @@ void QGraphicsView::setScene(QGraphicsScene *scene)
QEvent windowDeactivate(QEvent::WindowDeactivate);
QApplication::sendEvent(d->scene, &windowDeactivate);
}
+ if(hasFocus())
+ d->scene->clearFocus();
}
// Assign the new scene and update the contents (scrollbars, etc.)).
diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp
index 3f297df..7008fbd 100644
--- a/src/gui/image/qpixmap_x11.cpp
+++ b/src/gui/image/qpixmap_x11.cpp
@@ -416,6 +416,11 @@ void QX11PixmapData::fromImage(const QImage &img,
d = img.depth();
is_null = (w <= 0 || h <= 0);
+ if (is_null) {
+ w = h = 0;
+ return;
+ }
+
if (defaultScreen >= 0 && defaultScreen != xinfo.screen()) {
QX11InfoData* xd = xinfo.getX11Data(true);
xd->screen = defaultScreen;
diff --git a/src/gui/itemviews/qlistview.cpp b/src/gui/itemviews/qlistview.cpp
index 15db9a6..c6622cb 100644
--- a/src/gui/itemviews/qlistview.cpp
+++ b/src/gui/itemviews/qlistview.cpp
@@ -972,9 +972,9 @@ void QListView::paintEvent(QPaintEvent *e)
option.rect = visualRect(*it);
if (flow() == TopToBottom)
- option.rect.setWidth(qMin(viewport()->size().width() - 2 * d->spacing(), option.rect.width()));
+ option.rect.setWidth(qMin(d->contentsSize().width() - 2 * d->spacing(), option.rect.width()));
else
- option.rect.setHeight(qMin(viewport()->size().height() - 2 * d->spacing(), option.rect.height()));
+ option.rect.setHeight(qMin(d->contentsSize().height() - 2 * d->spacing(), option.rect.height()));
option.state = state;
if (selections && selections->isSelected(*it))
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 04e4b31..c7f0c00 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -323,7 +323,6 @@ QSymbianControl::QSymbianControl(QWidget *w)
, qwidget(w)
, m_longTapDetector(0)
, m_ignoreFocusChanged(0)
- , m_previousEventLongTap(0)
, m_symbianPopupIsOpen(0)
{
}
@@ -362,9 +361,6 @@ QSymbianControl::~QSymbianControl()
setFocusSafely(false);
S60->appUi()->RemoveFromStack(this);
delete m_longTapDetector;
-
- if(m_previousEventLongTap)
- QApplicationPrivate::mouse_buttons = QApplicationPrivate::mouse_buttons & ~Qt::RightButton;
}
void QSymbianControl::setWidget(QWidget *w)
@@ -379,19 +375,11 @@ void QSymbianControl::HandleLongTapEventL( const TPoint& aPenEventLocation, cons
alienWidget = qwidget->childAt(widgetPos);
if (!alienWidget)
alienWidget = qwidget;
- QApplicationPrivate::mouse_buttons = QApplicationPrivate::mouse_buttons &(~Qt::LeftButton);
- QApplicationPrivate::mouse_buttons = QApplicationPrivate::mouse_buttons | Qt::RightButton;
- QMouseEvent mEvent(QEvent::MouseButtonPress, alienWidget->mapFrom(qwidget, widgetPos), globalPos,
- Qt::RightButton, QApplicationPrivate::mouse_buttons, Qt::NoModifier);
-
- bool res = sendMouseEvent(alienWidget, &mEvent);
#if !defined(QT_NO_CONTEXTMENU)
- QContextMenuEvent contextMenuEvent(QContextMenuEvent::Mouse, widgetPos, globalPos, mEvent.modifiers());
+ QContextMenuEvent contextMenuEvent(QContextMenuEvent::Mouse, widgetPos, globalPos, Qt::NoModifier);
qt_sendSpontaneousEvent(alienWidget, &contextMenuEvent);
#endif
-
- m_previousEventLongTap = true;
}
#ifdef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER
@@ -515,12 +503,6 @@ void QSymbianControl::HandlePointerEvent(const TPointerEvent& pEvent)
mapS60MouseEventTypeToQt(&type, &button, &pEvent);
Qt::KeyboardModifiers modifiers = mapToQtModifiers(pEvent.iModifiers);
- if (m_previousEventLongTap)
- if (type == QEvent::MouseButtonRelease){
- button = Qt::RightButton;
- QApplicationPrivate::mouse_buttons = QApplicationPrivate::mouse_buttons & ~Qt::RightButton;
- m_previousEventLongTap = false;
- }
if (type == QMouseEvent::None)
return;
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index 89c18fb..e3af683 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -1036,7 +1036,7 @@ QKeySequence QKeySequence::mnemonic(const QString &text)
#else
found = true;
} else {
- qWarning(qPrintable(QString::fromLatin1("QKeySequence::mnemonic: \"%1\" contains multiple occurences of '&'").arg(text)));
+ qWarning("QKeySequence::mnemonic: \"%s\" contains multiple occurences of '&'", qPrintable(text));
#endif
}
}
diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h
index ec8c9cb..08f8bb5 100644
--- a/src/gui/kernel/qt_s60_p.h
+++ b/src/gui/kernel/qt_s60_p.h
@@ -204,7 +204,6 @@ private:
QWidget *qwidget;
QLongTapTimer* m_longTapDetector;
bool m_ignoreFocusChanged : 1;
- bool m_previousEventLongTap : 1;
bool m_symbianPopupIsOpen : 1;
#ifdef Q_WS_S60
diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp
index ba1b642..b92c5c2 100644
--- a/src/gui/painting/qblendfunctions.cpp
+++ b/src/gui/painting/qblendfunctions.cpp
@@ -227,9 +227,6 @@ void qt_scale_image_16bit(uchar *destPixels, int dbpl,
quint32 basex;
quint32 srcy;
- const int dstx = qCeil((tx1 + 0.5 - qMin(targetRect.left(), targetRect.right())) * ix) - 1;
- const int dsty = qCeil((ty1 + 0.5 - qMin(targetRect.top(), targetRect.bottom())) * iy) - 1;
-
if (sx < 0) {
int dstx = qFloor((tx1 + qreal(0.5) - targetRect.right()) * ix) + 1;
basex = quint32(srcRect.right() * 65536) + dstx;
diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
index b640858..d45bd10 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -78,8 +78,8 @@ const char *qt_real_to_string(qreal val, char *buf) {
unsigned int ival = (unsigned int) val;
qreal frac = val - (qreal)ival;
- int ifrac = (int)(frac * 1000000);
- if (ifrac == 1000000) {
+ int ifrac = (int)(frac * 1000000000);
+ if (ifrac == 1000000000) {
++ival;
ifrac = 0;
}
@@ -90,7 +90,7 @@ const char *qt_real_to_string(qreal val, char *buf) {
++i;
ival /= 10;
}
- int fact = 100000;
+ int fact = 100000000;
if (i == 0) {
*(buf++) = '0';
} else {
diff --git a/src/gui/styles/qgtkstyle_p.cpp b/src/gui/styles/qgtkstyle_p.cpp
index 7119a4f..62d9197 100644
--- a/src/gui/styles/qgtkstyle_p.cpp
+++ b/src/gui/styles/qgtkstyle_p.cpp
@@ -202,8 +202,12 @@ Ptr_gnome_vfs_init QGtkStylePrivate::gnome_vfs_init = 0;
typedef int (*x11ErrorHandler)(Display*, XErrorEvent*);
+Q_DECLARE_METATYPE(QGtkStylePrivate*);
+
static void gtkStyleSetCallback(GtkWidget*, QGtkStylePrivate* stylePrivate)
{
+ qRegisterMetaType<QGtkStylePrivate *>();
+
// We have to let this function return and complete the event
// loop to ensure that all gtk widgets have been styled before
// updating
diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 939ea45..7c3e11f 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -783,6 +783,14 @@ void QS60StylePrivate::setThemePaletteHash(QPalette *palette) const
widgetPalette.setBrush(QPalette::Window, QBrush());
QApplication::setPalette(widgetPalette, "QScrollArea");
widgetPalette = *palette;
+
+ //Webpages should not use S60 theme colors as they are designed to work
+ //with themeBackground and do not generally mesh well with web page backgrounds.
+ QPalette webPalette = *palette;
+ webPalette.setColor(QPalette::WindowText, Qt::black);
+ webPalette.setColor(QPalette::Text, Qt::black);
+ QApplication::setPalette(webPalette, "QWebView");
+ QApplication::setPalette(webPalette, "QGraphicsWebView");
}
QSize QS60StylePrivate::partSize(QS60StyleEnums::SkinParts part, SkinElementFlags flags)
@@ -2007,7 +2015,7 @@ void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *opti
buttonRect.adjust(0,-newY,0,-newY);
painter->save();
- QColor themeColor = d->s60Color(QS60StyleEnums::CL_QsnIconColors, 13, option);
+ QColor themeColor = d->s60Color(QS60StyleEnums::CL_QsnTextColors, 6, option);
QColor buttonTextColor = option->palette.buttonText().color();
if (themeColor != buttonTextColor)
painter->setPen(buttonTextColor);
diff --git a/src/gui/styles/qstylesheetstyle.cpp b/src/gui/styles/qstylesheetstyle.cpp
index 59210c3..8b40931 100644
--- a/src/gui/styles/qstylesheetstyle.cpp
+++ b/src/gui/styles/qstylesheetstyle.cpp
@@ -4637,6 +4637,7 @@ int QStyleSheetStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const
}
break;
+#ifndef QT_NO_TABWIDGET
case PM_TabBarTabHSpace:
case PM_TabBarTabVSpace:
subRule = renderRule(w, opt, PseudoElement_TabBarTab);
@@ -4660,11 +4661,14 @@ int QStyleSheetStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const
return 0;
break;
- case PM_TabBarBaseOverlap:
- if (hasStyleRule(w->parentWidget(), PseudoElement_TabWidgetPane)) {
+ case PM_TabBarBaseOverlap: {
+ const QWidget *tabWidget = qobject_cast<const QTabWidget *>(w) ? w : w->parentWidget();
+ if (hasStyleRule(tabWidget, PseudoElement_TabWidgetPane)) {
return 0;
}
break;
+ }
+#endif // QT_NO_TABWIDGET
case PM_SliderThickness: // horizontal slider's height (sizeHint)
case PM_SliderLength: // minimum length of slider
diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp
index 2ad6512..18e1ffc 100644
--- a/src/gui/text/qtextdocument_p.cpp
+++ b/src/gui/text/qtextdocument_p.cpp
@@ -1114,9 +1114,11 @@ void QTextDocumentPrivate::endEditBlock()
return;
if (undoEnabled && undoState > 0) {
+ const bool wasBlocking = !undoStack[undoState - 1].block_end;
if (undoStack[undoState - 1].block_part) {
undoStack[undoState - 1].block_end = true;
- emit document()->undoCommandAdded();
+ if (wasBlocking)
+ emit document()->undoCommandAdded();
}
}
diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp
index f5dbe1c..9f3fe4f 100644
--- a/src/gui/widgets/qlineedit.cpp
+++ b/src/gui/widgets/qlineedit.cpp
@@ -1515,7 +1515,8 @@ void QLineEdit::mouseReleaseEvent(QMouseEvent* e)
}
#endif
- d->handleSoftwareInputPanel(e->button(), d->clickCausedFocus);
+ if (!isReadOnly())
+ d->handleSoftwareInputPanel(e->button(), d->clickCausedFocus);
d->clickCausedFocus = 0;
}
@@ -1594,7 +1595,9 @@ void QLineEdit::keyPressEvent(QKeyEvent *event)
&& !isReadOnly())
{
setEditFocus(true);
+#ifndef Q_OS_SYMBIAN
clear();
+#endif
} else {
event->ignore();
return;
@@ -1651,7 +1654,9 @@ void QLineEdit::inputMethodEvent(QInputMethodEvent *e)
&& hasFocus() && !hasEditFocus()
&& !e->preeditString().isEmpty()) {
setEditFocus(true);
+#ifndef Q_OS_SYMBIAN
selectAll(); // so text is replaced rather than appended to
+#endif
}
#endif
diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp
index 54d1612..fc88d06 100644
--- a/src/gui/widgets/qmenu.cpp
+++ b/src/gui/widgets/qmenu.cpp
@@ -1106,6 +1106,7 @@ void QMenuPrivate::_q_actionTriggered()
{
Q_Q(QMenu);
if (QAction *action = qobject_cast<QAction *>(q->sender())) {
+ QWeakPointer<QAction> actionGuard = action;
#ifdef QT3_SUPPORT
//we store it here because the action might be deleted/changed by connected slots
const int id = q->findIdForAction(action);
@@ -1115,7 +1116,7 @@ void QMenuPrivate::_q_actionTriggered()
emit q->activated(id);
#endif
- if (!activationRecursionGuard) {
+ if (!activationRecursionGuard && actionGuard) {
//in case the action has not been activated by the mouse
//we check the parent hierarchy
QList< QPointer<QWidget> > list;
diff --git a/src/gui/widgets/qplaintextedit.cpp b/src/gui/widgets/qplaintextedit.cpp
index 18adc6c..c7759e8 100644
--- a/src/gui/widgets/qplaintextedit.cpp
+++ b/src/gui/widgets/qplaintextedit.cpp
@@ -1966,7 +1966,8 @@ void QPlainTextEdit::mouseReleaseEvent(QMouseEvent *e)
d->ensureCursorVisible();
}
- d->handleSoftwareInputPanel(e->button(), d->clickCausedFocus);
+ if (!isReadOnly())
+ d->handleSoftwareInputPanel(e->button(), d->clickCausedFocus);
d->clickCausedFocus = 0;
}
diff --git a/src/gui/widgets/qtextedit.cpp b/src/gui/widgets/qtextedit.cpp
index 998ab4f..1c49ef0 100644
--- a/src/gui/widgets/qtextedit.cpp
+++ b/src/gui/widgets/qtextedit.cpp
@@ -1212,7 +1212,9 @@ void QTextEdit::keyPressEvent(QKeyEvent *e)
if (!hasEditFocus() && !(e->modifiers() & Qt::ControlModifier)) {
if (e->text()[0].isPrint()) {
setEditFocus(true);
+#ifndef Q_OS_SYMBIAN
clear();
+#endif
} else {
e->ignore();
return;
@@ -1576,7 +1578,8 @@ void QTextEdit::mouseReleaseEvent(QMouseEvent *e)
d->autoScrollTimer.stop();
ensureCursorVisible();
}
- d->handleSoftwareInputPanel(e->button(), d->clickCausedFocus);
+ if (!isReadOnly())
+ d->handleSoftwareInputPanel(e->button(), d->clickCausedFocus);
d->clickCausedFocus = 0;
}
@@ -1674,7 +1677,9 @@ void QTextEdit::inputMethodEvent(QInputMethodEvent *e)
&& QApplication::keypadNavigationEnabled()
&& !hasEditFocus()) {
setEditFocus(true);
+#ifndef Q_OS_SYMBIAN
selectAll(); // so text is replaced rather than appended to
+#endif
}
#endif
d->sendControlEvent(e);
diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
index 5de6c70..9645fa8 100644
--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
+++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
@@ -152,13 +152,23 @@ bool QAudioDeviceInfoInternal::open()
{
int err = 0;
QString dev = device;
- if(!dev.contains(QLatin1String("default"))) {
+ QList<QByteArray> devices = availableDevices(mode);
+
+ if(dev.compare(QLatin1String("default")) == 0) {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = QLatin1String(devices.first().constData());
+#else
+ dev = QLatin1String("hw:0,0");
+#endif
+ } else {
#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
- dev = QString(QLatin1String("default:CARD=%1")).arg(dev);
+ dev = device;
#else
int idx = 0;
char *name;
+ QString shortName = device.mid(device.indexOf(QLatin1String("="),0)+1);
+
while(snd_card_get_name(idx,&name) == 0) {
if(dev.contains(QLatin1String(name)))
break;
@@ -195,16 +205,25 @@ bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const
snd_pcm_hw_params_t *params;
QString dev = device;
- // open()
- if(!dev.contains(QLatin1String("default"))) {
+ QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput);
+
+ if(dev.compare(QLatin1String("default")) == 0) {
#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
- dev = QString(QLatin1String("default:CARD=%1")).arg(dev);
+ dev = QLatin1String(devices.first().constData());
+#else
+ dev = QLatin1String("hw:0,0");
+#endif
+ } else {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = device;
#else
int idx = 0;
char *name;
-
+
+ QString shortName = device.mid(device.indexOf(QLatin1String("="),0)+1);
+
while(snd_card_get_name(idx,&name) == 0) {
- if(dev.contains(QLatin1String(name)))
+ if(shortName.compare(QLatin1String(name)) == 0)
break;
idx++;
}
@@ -386,6 +405,7 @@ QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
{
QList<QByteArray> devices;
QByteArray filter;
+
#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
// Create a list of all current audio devices that support mode
void **hints, **n;
@@ -408,12 +428,10 @@ QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
descr = snd_device_name_get_hint(*n, "DESC");
io = snd_device_name_get_hint(*n, "IOID");
if((name != NULL) && (descr != NULL) && ((io == NULL) || (io == filter))) {
- QString str = QLatin1String(name);
-
- if(str.contains(QLatin1String("default"))) {
- int pos = str.indexOf(QLatin1String("="),0);
- devices.append(str.mid(pos+1).toLocal8Bit().constData());
- }
+ QString deviceName = QLatin1String(name);
+ QString deviceDescription = QLatin1String(descr);
+ if(deviceDescription.contains(QLatin1String("Default Audio Device")))
+ devices.append(deviceName.toLocal8Bit().constData());
}
if(name != NULL)
free(name);
@@ -448,7 +466,7 @@ QByteArray QAudioDeviceInfoInternal::defaultInputDevice()
if(devices.size() == 0)
return QByteArray();
- return QByteArray("default");
+ return devices.first();
}
QByteArray QAudioDeviceInfoInternal::defaultOutputDevice()
@@ -457,7 +475,7 @@ QByteArray QAudioDeviceInfoInternal::defaultOutputDevice()
if(devices.size() == 0)
return QByteArray();
- return QByteArray("default");
+ return devices.first();
}
QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudioinput.cpp b/src/multimedia/audio/qaudioinput.cpp
index e794eaf..8b368d5 100644
--- a/src/multimedia/audio/qaudioinput.cpp
+++ b/src/multimedia/audio/qaudioinput.cpp
@@ -47,7 +47,6 @@
#include "qaudiodevicefactory_p.h"
-
QT_BEGIN_NAMESPACE
/*!
diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp
index 8a8f0db..3dbe66c 100644
--- a/src/multimedia/audio/qaudioinput_alsa_p.cpp
+++ b/src/multimedia/audio/qaudioinput_alsa_p.cpp
@@ -52,6 +52,7 @@
#include <QtCore/qcoreapplication.h>
#include "qaudioinput_alsa_p.h"
+#include "qaudiodeviceinfo_alsa_p.h"
QT_BEGIN_NAMESPACE
@@ -80,8 +81,7 @@ QAudioInputPrivate::QAudioInputPrivate(const QByteArray &device, const QAudioFor
pullMode = true;
resuming = false;
- QStringList list1 = QString(QLatin1String(device)).split(QLatin1String(":"));
- m_device = QByteArray(list1.at(0).toLocal8Bit().constData());
+ m_device = device;
timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),SLOT(userFeed()));
@@ -259,22 +259,31 @@ bool QAudioInputPrivate::open()
unsigned int freakuency=settings.frequency();
QString dev = QString(QLatin1String(m_device.constData()));
- if(!dev.contains(QLatin1String("default"))) {
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
- dev = QString(QLatin1String("default:CARD=%1")).arg(QLatin1String(m_device.constData()));
+ QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioInput);
+ if(dev.compare(QLatin1String("default")) == 0) {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = QLatin1String(devices.first());
+#else
+ dev = QLatin1String("hw:0,0");
+#endif
+ } else {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = QLatin1String(m_device);
#else
int idx = 0;
char *name;
+ QString shortName = QLatin1String(m_device.mid(m_device.indexOf('=',0)+1).constData());
+
while(snd_card_get_name(idx,&name) == 0) {
- if(m_device.contains(name))
+ if(qstrncmp(shortName.toLocal8Bit().constData(),name,shortName.length()) == 0)
break;
idx++;
}
dev = QString(QLatin1String("hw:%1,0")).arg(idx);
#endif
}
-
+
// Step 1: try and open the device
while((count < 5) && (err < 0)) {
err=snd_pcm_open(&handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_CAPTURE,0);
@@ -614,7 +623,7 @@ qint64 QAudioInputPrivate::elapsedUSecs() const
if (deviceState == QAudio::StoppedState)
return 0;
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
snd_pcm_status_t* status;
snd_pcm_status_alloca(&status);
diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.cpp b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
index e9784d2..020a104 100644
--- a/src/multimedia/audio/qaudiooutput_alsa_p.cpp
+++ b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
@@ -52,6 +52,7 @@
#include <QtCore/qcoreapplication.h>
#include "qaudiooutput_alsa_p.h"
+#include "qaudiodeviceinfo_alsa_p.h"
QT_BEGIN_NAMESPACE
@@ -281,21 +282,31 @@ bool QAudioOutputPrivate::open()
unsigned int freakuency=settings.frequency();
QString dev = QLatin1String(m_device.constData());
- if(!dev.contains(QLatin1String("default"))) {
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
- dev = QString(QLatin1String("default:CARD=%1")).arg(QLatin1String(m_device.constData()));
+ QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput);
+ if(dev.compare(QLatin1String("default")) == 0) {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = QLatin1String(devices.first().constData());
+#else
+ dev = QLatin1String("hw:0,0");
+#endif
+ } else {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = QLatin1String(m_device);
#else
int idx = 0;
char *name;
+ QString shortName = QLatin1String(m_device.mid(m_device.indexOf('=',0)+1).constData());
+
while(snd_card_get_name(idx,&name) == 0) {
- if(m_device.contains(name))
+ if(qstrncmp(shortName.toLocal8Bit().constData(),name,shortName.length()) == 0)
break;
idx++;
}
dev = QString(QLatin1String("hw:%1,0")).arg(idx);
#endif
}
+
// Step 1: try and open the device
while((count < 5) && (err < 0)) {
err=snd_pcm_open(&handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_PLAYBACK,0);
@@ -666,7 +677,7 @@ qint64 QAudioOutputPrivate::elapsedUSecs() const
if (deviceState == QAudio::StoppedState)
return 0;
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
snd_pcm_status_t* status;
snd_pcm_status_alloca(&status);
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index f8a2ea4..d5ca218 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -184,8 +184,13 @@ public:
engineType = QPaintEngine::OpenGL2;
#else
// We can't do this in the constructor for this object because it
- // needs to be called *before* the QApplication constructor
+ // needs to be called *before* the QApplication constructor.
+ // Also check for the FragmentProgram extension in conjunction with
+ // the 2.0 version flag, to cover the case where we export the display
+ // from an old GL 1.1 server to a GL 2.x client. In that case we can't
+ // use GL 2.0.
if ((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_0)
+ && (QGLExtensions::glExtensions & QGLExtensions::FragmentProgram)
&& qgetenv("QT_GL_USE_OPENGL1ENGINE").isEmpty())
engineType = QPaintEngine::OpenGL2;
else
@@ -2170,8 +2175,8 @@ QGLTexture* QGLContextPrivate::bindTexture(const QImage &image, GLenum target, G
int tx_h = qt_next_power_of_two(image.height());
QImage img = image;
- if (( !(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_0) &&
- !(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0) )
+ if (!(QGLExtensions::glExtensions & QGLExtensions::NPOTTextures)
+ && !(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0)
&& (target == GL_TEXTURE_2D && (tx_w != image.width() || tx_h != image.height())))
{
img = img.scaled(tx_w, tx_h);
@@ -2192,9 +2197,9 @@ QGLTexture* QGLContextPrivate::bindTexture(const QImage &image, GLenum target, G
bool genMipmap = false;
#endif
if (glFormat.directRendering()
- && QGLExtensions::glExtensions & QGLExtensions::GenerateMipmap
+ && (QGLExtensions::glExtensions & QGLExtensions::GenerateMipmap)
&& target == GL_TEXTURE_2D
- && options & QGLContext::MipmapBindOption)
+ && (options & QGLContext::MipmapBindOption))
{
#ifdef QGL_BIND_TEXTURE_DEBUG
printf(" - generating mipmaps (%d ms)\n", time.elapsed());
@@ -2220,7 +2225,7 @@ QGLTexture* QGLContextPrivate::bindTexture(const QImage &image, GLenum target, G
bool premul = options & QGLContext::PremultipliedAlphaBindOption;
GLenum externalFormat;
GLuint pixel_type;
- if (QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_1_2) {
+ if (QGLExtensions::glExtensions & QGLExtensions::BGRATextureFormat) {
externalFormat = GL_BGRA;
pixel_type = GL_UNSIGNED_INT_8_8_8_8_REV;
} else {
@@ -4886,54 +4891,59 @@ QGLWidget::QGLWidget(QGLContext *context, QWidget *parent,
void QGLExtensions::init_extensions()
{
- QString extensions = QLatin1String(reinterpret_cast<const char *>(glGetString(GL_EXTENSIONS)));
- if (extensions.contains(QLatin1String("texture_rectangle")))
+ QList<QByteArray> extensions = QByteArray(reinterpret_cast<const char *>(glGetString(GL_EXTENSIONS))).split(' ');
+ if (extensions.contains("GL_ARB_texture_rectangle"))
glExtensions |= TextureRectangle;
- if (extensions.contains(QLatin1String("multisample")))
+ if (extensions.contains("GL_ARB_multisample"))
glExtensions |= SampleBuffers;
- if (extensions.contains(QLatin1String("generate_mipmap")))
+ if (extensions.contains("GL_SGIS_generate_mipmap"))
glExtensions |= GenerateMipmap;
- if (extensions.contains(QLatin1String("texture_compression_s3tc")))
+ if (extensions.contains("GL_EXT_texture_compression_s3tc"))
glExtensions |= TextureCompression;
- if (extensions.contains(QLatin1String("ARB_fragment_program")))
+ if (extensions.contains("GL_ARB_fragment_program"))
glExtensions |= FragmentProgram;
- if (extensions.contains(QLatin1String("mirrored_repeat")))
+ if (extensions.contains("GL_ARB_texture_mirrored_repeat"))
glExtensions |= MirroredRepeat;
- if (extensions.contains(QLatin1String("EXT_framebuffer_object")))
+ if (extensions.contains("GL_EXT_framebuffer_object"))
glExtensions |= FramebufferObject;
- if (extensions.contains(QLatin1String("EXT_stencil_two_side")))
+ if (extensions.contains("GL_EXT_stencil_two_side"))
glExtensions |= StencilTwoSide;
- if (extensions.contains(QLatin1String("EXT_stencil_wrap")))
+ if (extensions.contains("GL_EXT_stencil_wrap"))
glExtensions |= StencilWrap;
- if (extensions.contains(QLatin1String("EXT_packed_depth_stencil")))
+ if (extensions.contains("GL_EXT_packed_depth_stencil"))
glExtensions |= PackedDepthStencil;
- if (extensions.contains(QLatin1String("GL_NV_float_buffer")))
+ if (extensions.contains("GL_NV_float_buffer"))
glExtensions |= NVFloatBuffer;
- if (extensions.contains(QLatin1String("ARB_pixel_buffer_object")))
+ if (extensions.contains("GL_ARB_pixel_buffer_object"))
glExtensions |= PixelBufferObject;
#if defined(QT_OPENGL_ES_2)
glExtensions |= FramebufferObject;
glExtensions |= GenerateMipmap;
#endif
#if defined(QT_OPENGL_ES_1) || defined(QT_OPENGL_ES_1_CL)
- if (extensions.contains(QLatin1String("OES_framebuffer_object")))
+ if (extensions.contains("GL_OES_framebuffer_object"))
glExtensions |= FramebufferObject;
#endif
#if defined(QT_OPENGL_ES)
- if (extensions.contains(QLatin1String("OES_packed_depth_stencil")))
+ if (extensions.contains("GL_OES_packed_depth_stencil"))
glExtensions |= PackedDepthStencil;
#endif
- if (extensions.contains(QLatin1String("ARB_framebuffer_object"))) {
+ if (extensions.contains("GL_ARB_framebuffer_object")) {
// ARB_framebuffer_object also includes EXT_framebuffer_blit.
glExtensions |= FramebufferObject;
glExtensions |= FramebufferBlit;
}
- if (extensions.contains(QLatin1String("EXT_framebuffer_blit")))
+
+ if (extensions.contains("GL_EXT_framebuffer_blit"))
glExtensions |= FramebufferBlit;
- if (extensions.contains(QLatin1String("GL_ARB_texture_non_power_of_two")))
+ if (extensions.contains("GL_ARB_texture_non_power_of_two"))
glExtensions |= NPOTTextures;
+ if (extensions.contains("GL_EXT_bgra"))
+ glExtensions |= BGRATextureFormat;
+
+
QGLContext cx(QGLFormat::defaultFormat());
if (glExtensions & TextureCompression) {
qt_glCompressedTexImage2DARB = (pfn_glCompressedTexImage2DARB) cx.getProcAddress(QLatin1String("glCompressedTexImage2DARB"));
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index 45b2942..8e472e5 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -375,7 +375,8 @@ public:
NVFloatBuffer = 0x00000400,
PixelBufferObject = 0x00000800,
FramebufferBlit = 0x00001000,
- NPOTTextures = 0x00002000
+ NPOTTextures = 0x00002000,
+ BGRATextureFormat = 0x00004000
};
Q_DECLARE_FLAGS(Extensions, Extension)
diff --git a/src/opengl/qgl_x11.cpp b/src/opengl/qgl_x11.cpp
index 899047a..a037282 100644
--- a/src/opengl/qgl_x11.cpp
+++ b/src/opengl/qgl_x11.cpp
@@ -343,8 +343,8 @@ void* qglx_getProcAddress(const char* procName)
static bool triedResolvingGlxGetProcAddress = false;
if (!triedResolvingGlxGetProcAddress) {
triedResolvingGlxGetProcAddress = true;
- QString glxExt = QLatin1String(glXGetClientString(QX11Info::display(), GLX_EXTENSIONS));
- if (glxExt.contains(QLatin1String("GLX_ARB_get_proc_address"))) {
+ QList<QByteArray> glxExt = QByteArray(glXGetClientString(QX11Info::display(), GLX_EXTENSIONS)).split(' ');
+ if (glxExt.contains("GLX_ARB_get_proc_address")) {
#if defined(Q_OS_LINUX) || defined(Q_OS_BSD4)
void *handle = dlopen(NULL, RTLD_LAZY);
if (handle) {
@@ -523,8 +523,8 @@ bool QGLContext::chooseContext(const QGLContext* shareContext)
if (!d->gpm)
return false;
}
- QString glxExt = QLatin1String(glXGetClientString(QX11Info::display(), GLX_EXTENSIONS));
- if (glxExt.contains(QLatin1String("GLX_SGI_video_sync"))) {
+ QList<QByteArray> glxExt = QByteArray(glXQueryExtensionsString(xinfo->display(), xinfo->screen())).split(' ');
+ if (glxExt.contains("GLX_SGI_video_sync")) {
if (d->glFormat.swapInterval() == -1)
d->glFormat.setSwapInterval(0);
} else {
@@ -874,8 +874,9 @@ void QGLContext::swapBuffers() const
static qt_glXWaitVideoSyncSGI glXWaitVideoSyncSGI = 0;
static bool resolved = false;
if (!resolved) {
- QString glxExt = QLatin1String(glXGetClientString(QX11Info::display(), GLX_EXTENSIONS));
- if (glxExt.contains(QLatin1String("GLX_SGI_video_sync"))) {
+ const QX11Info *xinfo = qt_x11Info(d->paintDevice);
+ QList<QByteArray> glxExt = QByteArray(glXQueryExtensionsString(xinfo->display(), xinfo->screen())).split(' ');
+ if (glxExt.contains("GLX_SGI_video_sync")) {
glXGetVideoSyncSGI = (qt_glXGetVideoSyncSGI)qglx_getProcAddress("glXGetVideoSyncSGI");
glXWaitVideoSyncSGI = (qt_glXWaitVideoSyncSGI)qglx_getProcAddress("glXWaitVideoSyncSGI");
}
@@ -1106,8 +1107,8 @@ void *QGLContext::getProcAddress(const QString &proc) const
if (resolved && !glXGetProcAddressARB)
return 0;
if (!glXGetProcAddressARB) {
- QString glxExt = QLatin1String(glXGetClientString(QX11Info::display(), GLX_EXTENSIONS));
- if (glxExt.contains(QLatin1String("GLX_ARB_get_proc_address"))) {
+ QList<QByteArray> glxExt = QByteArray(glXGetClientString(QX11Info::display(), GLX_EXTENSIONS)).split(' ');
+ if (glxExt.contains("GLX_ARB_get_proc_address")) {
#if defined(Q_OS_LINUX) || defined(Q_OS_BSD4)
void *handle = dlopen(NULL, RTLD_LAZY);
if (handle) {
@@ -1594,7 +1595,7 @@ typedef void (*qt_glXReleaseTexImageEXT)(Display*, GLXDrawable, int);
static qt_glXBindTexImageEXT glXBindTexImageEXT = 0;
static qt_glXReleaseTexImageEXT glXReleaseTexImageEXT = 0;
-bool qt_resolveTextureFromPixmap()
+static bool qt_resolveTextureFromPixmap(QPaintDevice *paintDevice)
{
static bool resolvedTextureFromPixmap = false;
@@ -1607,9 +1608,9 @@ bool qt_resolveTextureFromPixmap()
{
return false; // Can't use TFP without NPOT
}
-
- QString glxExt = QLatin1String(glXGetClientString(QX11Info::display(), GLX_EXTENSIONS));
- if (glxExt.contains(QLatin1String("GLX_EXT_texture_from_pixmap"))) {
+ const QX11Info *xinfo = qt_x11Info(paintDevice);
+ QList<QByteArray> glxExt = QByteArray(glXQueryExtensionsString(xinfo->display(), xinfo->screen())).split(' ');
+ if (glxExt.contains("GLX_EXT_texture_from_pixmap")) {
glXBindTexImageEXT = (qt_glXBindTexImageEXT) qglx_getProcAddress("glXBindTexImageEXT");
glXReleaseTexImageEXT = (qt_glXReleaseTexImageEXT) qglx_getProcAddress("glXReleaseTexImageEXT");
}
@@ -1630,7 +1631,7 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmapData *pmd, con
Q_ASSERT(pmd->classId() == QPixmapData::X11Class);
- if (!qt_resolveTextureFromPixmap())
+ if (!qt_resolveTextureFromPixmap(paintDevice))
return 0;
QX11PixmapData *pixmapData = static_cast<QX11PixmapData*>(pmd);
diff --git a/src/opengl/qglpixelbuffer_egl.cpp b/src/opengl/qglpixelbuffer_egl.cpp
index 744fbd4..de08655 100644
--- a/src/opengl/qglpixelbuffer_egl.cpp
+++ b/src/opengl/qglpixelbuffer_egl.cpp
@@ -72,37 +72,53 @@ bool QGLPixelBufferPrivate::init(const QSize &size, const QGLFormat &f, QGLWidge
return false;
}
+ // Find the shared context.
+ QEglContext *shareContext = 0;
+ if (shareWidget && shareWidget->d_func()->glcx)
+ shareContext = shareWidget->d_func()->glcx->d_func()->eglContext;
+
// Choose an appropriate configuration. We use the best format
// we can find, even if it is greater than the requested format.
// We try for a pbuffer that is capable of texture rendering if possible.
- QEglProperties configProps;
- qt_egl_set_format(configProps, QInternal::Pbuffer, f);
- configProps.setRenderableType(ctx->api());
- bool ok = false;
+ textureFormat = EGL_NONE;
+ if (shareContext) {
+ // Use the same configuration as the widget we are sharing with.
+ ctx->setConfig(shareContext->config());
+#if QGL_RENDER_TEXTURE
+ EGLint value = EGL_FALSE;
+ if (ctx->configAttrib(EGL_BIND_TO_TEXTURE_RGBA, &value) && value)
+ textureFormat = EGL_TEXTURE_RGBA;
+ else if (ctx->configAttrib(EGL_BIND_TO_TEXTURE_RGB, &value) && value)
+ textureFormat = EGL_TEXTURE_RGB;
+#endif
+ } else {
+ QEglProperties configProps;
+ qt_egl_set_format(configProps, QInternal::Pbuffer, f);
+ configProps.setRenderableType(ctx->api());
+ bool ok = false;
#if QGL_RENDER_TEXTURE
- textureFormat = EGL_TEXTURE_RGBA;
- configProps.setValue(EGL_BIND_TO_TEXTURE_RGBA, EGL_TRUE);
- ok = ctx->chooseConfig(configProps, QEgl::BestPixelFormat);
- if (!ok) {
- // Try again with RGB texture rendering.
- textureFormat = EGL_TEXTURE_RGB;
- configProps.removeValue(EGL_BIND_TO_TEXTURE_RGBA);
- configProps.setValue(EGL_BIND_TO_TEXTURE_RGB, EGL_TRUE);
+ textureFormat = EGL_TEXTURE_RGBA;
+ configProps.setValue(EGL_BIND_TO_TEXTURE_RGBA, EGL_TRUE);
ok = ctx->chooseConfig(configProps, QEgl::BestPixelFormat);
if (!ok) {
- // One last try for a pbuffer with no texture rendering.
- configProps.removeValue(EGL_BIND_TO_TEXTURE_RGB);
- textureFormat = EGL_NONE;
+ // Try again with RGB texture rendering.
+ textureFormat = EGL_TEXTURE_RGB;
+ configProps.removeValue(EGL_BIND_TO_TEXTURE_RGBA);
+ configProps.setValue(EGL_BIND_TO_TEXTURE_RGB, EGL_TRUE);
+ ok = ctx->chooseConfig(configProps, QEgl::BestPixelFormat);
+ if (!ok) {
+ // One last try for a pbuffer with no texture rendering.
+ configProps.removeValue(EGL_BIND_TO_TEXTURE_RGB);
+ textureFormat = EGL_NONE;
+ }
}
- }
-#else
- textureFormat = EGL_NONE;
#endif
- if (!ok) {
- if (!ctx->chooseConfig(configProps, QEgl::BestPixelFormat)) {
- delete ctx;
- ctx = 0;
- return false;
+ if (!ok) {
+ if (!ctx->chooseConfig(configProps, QEgl::BestPixelFormat)) {
+ delete ctx;
+ ctx = 0;
+ return false;
+ }
}
}
@@ -137,9 +153,6 @@ bool QGLPixelBufferPrivate::init(const QSize &size, const QGLFormat &f, QGLWidge
}
// Create a new context for the configuration.
- QEglContext *shareContext = 0;
- if (shareWidget && shareWidget->d_func()->glcx)
- shareContext = shareWidget->d_func()->glcx->d_func()->eglContext;
if (!ctx->createContext(shareContext)) {
delete ctx;
ctx = 0;
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
index c9a010f..021d52e 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
@@ -138,7 +138,7 @@ void QDirectFBWindowSurface::createWindow(const QRect &rect)
DFBWindowDescription description;
memset(&description, 0, sizeof(DFBWindowDescription));
- description.caps = DWCAPS_NODECORATION|DWCAPS_DOUBLEBUFFER;
+ description.caps = DWCAPS_NODECORATION;
description.flags = DWDESC_CAPS|DWDESC_SURFACE_CAPS|DWDESC_PIXELFORMAT|DWDESC_HEIGHT|DWDESC_WIDTH|DWDESC_POSX|DWDESC_POSY;
#if (Q_DIRECTFB_VERSION >= 0x010200)
description.flags |= DWDESC_OPTIONS;
diff --git a/src/plugins/phonon/mmf/mmf.pro b/src/plugins/phonon/mmf/mmf.pro
index ff27ea1..c070605 100644
--- a/src/plugins/phonon/mmf/mmf.pro
+++ b/src/plugins/phonon/mmf/mmf.pro
@@ -1,4 +1,99 @@
-TEMPLATE = subdirs
-SUBDIRS = mmfphonondebug plugin
+# MMF Phonon backend
+
+QT += phonon
+TARGET = phonon_mmf
+PHONON_MMF_DIR = $$QT_SOURCE_TREE/src/3rdparty/phonon/mmf
+
+# Uncomment the following line in order to use the CDrmPlayerUtility client
+# API for audio playback, rather than CMdaAudioPlayerUtility.
+#CONFIG += phonon_mmf_audio_drm
+
+phonon_mmf_audio_drm {
+ LIBS += -lDrmAudioPlayUtility
+ DEFINES += QT_PHONON_MMF_AUDIO_DRM
+} else {
+ LIBS += -lmediaclientaudio
+}
+
+# This is necessary because both epoc32/include and Phonon contain videoplayer.h.
+# By making /epoc32/include the first SYSTEMINCLUDE, we ensure that
+# '#include <videoplayer.h>' picks up the Symbian header, as intended.
+PREPEND_INCLUDEPATH = /epoc32/include
+
+INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+
+HEADERS += \
+ $$PHONON_MMF_DIR/abstractaudioeffect.h \
+ $$PHONON_MMF_DIR/abstractmediaplayer.h \
+ $$PHONON_MMF_DIR/abstractplayer.h \
+ $$PHONON_MMF_DIR/ancestormovemonitor.h \
+ $$PHONON_MMF_DIR/audioequalizer.h \
+ $$PHONON_MMF_DIR/audiooutput.h \
+ $$PHONON_MMF_DIR/audioplayer.h \
+ $$PHONON_MMF_DIR/backend.h \
+ $$PHONON_MMF_DIR/bassboost.h \
+ $$PHONON_MMF_DIR/defs.h \
+ $$PHONON_MMF_DIR/dummyplayer.h \
+ $$PHONON_MMF_DIR/effectfactory.h \
+ $$PHONON_MMF_DIR/mediaobject.h \
+ $$PHONON_MMF_DIR/mmf_medianode.h \
+ $$PHONON_MMF_DIR/mmf_videoplayer.h \
+ $$PHONON_MMF_DIR/objectdump.h \
+ $$PHONON_MMF_DIR/objectdump_global.h \
+ $$PHONON_MMF_DIR/objecttree.h \
+ $$PHONON_MMF_DIR/utils.h \
+ $$PHONON_MMF_DIR/videooutput.h \
+ $$PHONON_MMF_DIR/videowidget.h
+
+SOURCES += \
+ $$PHONON_MMF_DIR/abstractaudioeffect.cpp \
+ $$PHONON_MMF_DIR/abstractmediaplayer.cpp \
+ $$PHONON_MMF_DIR/abstractplayer.cpp \
+ $$PHONON_MMF_DIR/ancestormovemonitor.cpp \
+ $$PHONON_MMF_DIR/audioequalizer.cpp \
+ $$PHONON_MMF_DIR/audiooutput.cpp \
+ $$PHONON_MMF_DIR/audioplayer.cpp \
+ $$PHONON_MMF_DIR/backend.cpp \
+ $$PHONON_MMF_DIR/bassboost.cpp \
+ $$PHONON_MMF_DIR/dummyplayer.cpp \
+ $$PHONON_MMF_DIR/effectfactory.cpp \
+ $$PHONON_MMF_DIR/mediaobject.cpp \
+ $$PHONON_MMF_DIR/mmf_medianode.cpp \
+ $$PHONON_MMF_DIR/mmf_videoplayer.cpp \
+ $$PHONON_MMF_DIR/objectdump.cpp \
+ $$PHONON_MMF_DIR/objecttree.cpp \
+ $$PHONON_MMF_DIR/utils.cpp \
+ $$PHONON_MMF_DIR/videooutput.cpp \
+ $$PHONON_MMF_DIR/videowidget.cpp
+
+HEADERS += $$PHONON_MMF_DIR/objectdump_symbian.h
+SOURCES += $$PHONON_MMF_DIR/objectdump_symbian.cpp
+
+LIBS += -lcone
+LIBS += -lws32
+
+# This is only needed for debug builds, but is always linked against.
+LIBS += -lhal
+
+TARGET.CAPABILITY = all -tcb
+
+LIBS += -lmediaclientvideo # For CVideoPlayerUtility
+LIBS += -lcone # For CCoeEnv
+LIBS += -lws32 # For RWindow
+LIBS += -lefsrv # For file server
+LIBS += -lapgrfx -lapmime # For recognizer
+LIBS += -lmmfcontrollerframework # For CMMFMetaDataEntry
+
+# These are for effects.
+LIBS += -lAudioEqualizerEffect -lBassBoostEffect -lDistanceAttenuationEffect -lDopplerBase -lEffectBase -lEnvironmentalReverbEffect -lListenerDopplerEffect -lListenerLocationEffect -lListenerOrientationEffect -lLocationBase -lLoudnessEffect -lOrientationBase -lSourceDopplerEffect -lSourceLocationEffect -lSourceOrientationEffect -lStereoWideningEffect
+
+# This is needed for having the .qtplugin file properly created on Symbian.
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/phonon_backend
+
+target.path = $$[QT_INSTALL_PLUGINS]/phonon_backend
+INSTALLS += target
+
+include(../../qpluginbase.pri)
+
+TARGET.UID3=0x2001E629
-plugin.depends = mmfphonondebug
diff --git a/src/plugins/phonon/mmf/mmfphonondebug/mmfphonondebug.pro b/src/plugins/phonon/mmf/mmfphonondebug/mmfphonondebug.pro
deleted file mode 100644
index 2cfec15..0000000
--- a/src/plugins/phonon/mmf/mmfphonondebug/mmfphonondebug.pro
+++ /dev/null
@@ -1,31 +0,0 @@
-TEMPLATE = lib
-TARGET = phonon_mmf_debug
-OBJECTDUMP_DIR = $$QT_SOURCE_TREE/src/3rdparty/phonon/mmf/mmfphonondebug
-
-CONFIG += staticlib
-
-DEFINES += OBJECTDUMP_LIBRARY
-
-HEADERS += \
- $$OBJECTDUMP_DIR/objectdump_global.h \
- $$OBJECTDUMP_DIR/objectdump.h \
- $$OBJECTDUMP_DIR/objecttree.h
-
-SOURCES += \
- $$OBJECTDUMP_DIR/objectdump.cpp \
- $$OBJECTDUMP_DIR/objecttree.cpp
-
-symbian {
- HEADERS += $$OBJECTDUMP_DIR/objectdump_symbian.h
- SOURCES += $$OBJECTDUMP_DIR/objectdump_symbian.cpp
-
- LIBS += -lcone
- LIBS += -lws32
-
- TARGET.CAPABILITY = all -tcb
-
-} else {
- SOURCES += $$OBJECTDUMP_DIR/objectdump_stub.cpp
-}
-
-TARGET.UID3=0x2001E62A
diff --git a/src/plugins/phonon/mmf/plugin/plugin.pro b/src/plugins/phonon/mmf/plugin/plugin.pro
deleted file mode 100644
index 8a7de98..0000000
--- a/src/plugins/phonon/mmf/plugin/plugin.pro
+++ /dev/null
@@ -1,91 +0,0 @@
-# MMF Phonon backend
-
-QT += phonon
-TARGET = phonon_mmf
-PHONON_MMF_DIR = $$QT_SOURCE_TREE/src/3rdparty/phonon/mmf
-
-# Uncomment the following line in order to use the CDrmPlayerUtility client
-# API for audio playback, rather than CMdaAudioPlayerUtility.
-#CONFIG += phonon_mmf_audio_drm
-
-phonon_mmf_audio_drm {
- LIBS += -lDrmAudioPlayUtility
- DEFINES += QT_PHONON_MMF_AUDIO_DRM
-} else {
- LIBS += -lmediaclientaudio
-}
-
-# This is necessary because both epoc32/include and Phonon contain videoplayer.h.
-# By making /epoc32/include the first SYSTEMINCLUDE, we ensure that
-# '#include <videoplayer.h>' picks up the Symbian header, as intended.
-PREPEND_INCLUDEPATH = /epoc32/include
-
-INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
-
-HEADERS += \
- $$PHONON_MMF_DIR/abstractaudioeffect.h \
- $$PHONON_MMF_DIR/abstractmediaplayer.h \
- $$PHONON_MMF_DIR/abstractplayer.h \
- $$PHONON_MMF_DIR/ancestormovemonitor.h \
- $$PHONON_MMF_DIR/audiooutput.h \
- $$PHONON_MMF_DIR/audioequalizer.h \
- $$PHONON_MMF_DIR/audioplayer.h \
- $$PHONON_MMF_DIR/backend.h \
- $$PHONON_MMF_DIR/bassboost.h \
- $$PHONON_MMF_DIR/defs.h \
- $$PHONON_MMF_DIR/dummyplayer.h \
- $$PHONON_MMF_DIR/effectfactory.h \
- $$PHONON_MMF_DIR/mmf_medianode.h \
- $$PHONON_MMF_DIR/mediaobject.h \
- $$PHONON_MMF_DIR/utils.h \
- $$PHONON_MMF_DIR/videooutput.h \
- $$PHONON_MMF_DIR/videooutputobserver.h \
- $$PHONON_MMF_DIR/mmf_videoplayer.h \
- $$PHONON_MMF_DIR/videowidget.h \
- $$PHONON_MMF_DIR/volumeobserver.h
-
-SOURCES += \
- $$PHONON_MMF_DIR/abstractaudioeffect.cpp \
- $$PHONON_MMF_DIR/abstractmediaplayer.cpp \
- $$PHONON_MMF_DIR/abstractplayer.cpp \
- $$PHONON_MMF_DIR/ancestormovemonitor.cpp \
- $$PHONON_MMF_DIR/audiooutput.cpp \
- $$PHONON_MMF_DIR/audioequalizer.cpp \
- $$PHONON_MMF_DIR/audioplayer.cpp \
- $$PHONON_MMF_DIR/backend.cpp \
- $$PHONON_MMF_DIR/bassboost.cpp \
- $$PHONON_MMF_DIR/dummyplayer.cpp \
- $$PHONON_MMF_DIR/effectfactory.cpp \
- $$PHONON_MMF_DIR/mmf_medianode.cpp \
- $$PHONON_MMF_DIR/mediaobject.cpp \
- $$PHONON_MMF_DIR/utils.cpp \
- $$PHONON_MMF_DIR/videooutput.cpp \
- $$PHONON_MMF_DIR/mmf_videoplayer.cpp \
- $$PHONON_MMF_DIR/videowidget.cpp
-
-debug {
- INCLUDEPATH += $$PHONON_MMF_DIR/mmfphonondebug
- LIBS += -lphonon_mmf_debug.lib
- LIBS += -lhal
-}
-
-LIBS += -lmediaclientvideo # For CVideoPlayerUtility
-LIBS += -lcone # For CCoeEnv
-LIBS += -lws32 # For RWindow
-LIBS += -lefsrv # For file server
-LIBS += -lapgrfx -lapmime # For recognizer
-LIBS += -lmmfcontrollerframework # For CMMFMetaDataEntry
-
-# These are for effects.
-LIBS += -lAudioEqualizerEffect -lBassBoostEffect -lDistanceAttenuationEffect -lDopplerBase -lEffectBase -lEnvironmentalReverbEffect -lListenerDopplerEffect -lListenerLocationEffect -lListenerOrientationEffect -lLocationBase -lLoudnessEffect -lOrientationBase -lSourceDopplerEffect -lSourceLocationEffect -lSourceOrientationEffect -lStereoWideningEffect
-
-# This is needed for having the .qtplugin file properly created on Symbian.
-QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/phonon_backend
-
-target.path = $$[QT_INSTALL_PLUGINS]/phonon_backend
-INSTALLS += target
-
-include(../../../qpluginbase.pri)
-
-TARGET.UID3=0x2001E629
-
diff --git a/src/tools/rcc/rcc.cpp b/src/tools/rcc/rcc.cpp
index 51f850a..6b3227a 100644
--- a/src/tools/rcc/rcc.cpp
+++ b/src/tools/rcc/rcc.cpp
@@ -709,46 +709,6 @@ bool RCCResourceLibrary::writeHeader()
{
if (m_format == C_Code) {
writeString("/****************************************************************************\n");
- writeString("**\n");
- writeString("** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).\n");
- writeString("** All rights reserved.\n");
- writeString("** Contact: Nokia Corporation (qt-info@nokia.com)\n");
- writeString("**\n");
- writeString("** This file is part of the tools applications of the Qt Toolkit.\n");
- writeString("**\n");
- writeString("** $QT_BEGIN_LICENSE:LGPL$\n");
- writeString("** No Commercial Usage\n");
- writeString("** This file contains pre-release code and may not be distributed.\n");
- writeString("** You may use this file in accordance with the terms and conditions\n");
- writeString("** contained in the Technology Preview License Agreement accompanying\n");
- writeString("** this package.\n");
- writeString("**\n");
- writeString("** GNU Lesser General Public License Usage\n");
- writeString("** Alternatively, this file may be used under the terms of the GNU Lesser\n");
- writeString("** General Public License version 2.1 as published by the Free Software\n");
- writeString("** Foundation and appearing in the file LICENSE.LGPL included in the\n");
- writeString("** packaging of this file. Please review the following information to\n");
- writeString("** ensure the GNU Lesser General Public License version 2.1 requirements\n");
- writeString("** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\n");
- writeString("**\n");
- writeString("** In addition, as a special exception, Nokia gives you certain additional\n");
- writeString("** rights. These rights are described in the Nokia Qt LGPL Exception\n");
- writeString("** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.\n");
- writeString("**\n");
- writeString("** If you have questions regarding the use of this file, please contact\n");
- writeString("** Nokia at qt-info@nokia.com.\n");
- writeString("**\n");
- writeString("**\n");
- writeString("**\n");
- writeString("**\n");
- writeString("**\n");
- writeString("**\n");
- writeString("**\n");
- writeString("**\n");
- writeString("** $QT_END_LICENSE$\n");
- writeString("**\n");
- writeString("****************************************************************************/\n");
- writeString("/****************************************************************************\n");
writeString("** Resource object code\n");
writeString("**\n");
writeString("** Created: ");
diff --git a/tests/auto/collections/tst_collections.cpp b/tests/auto/collections/tst_collections.cpp
index f97805e..84f466b 100644
--- a/tests/auto/collections/tst_collections.cpp
+++ b/tests/auto/collections/tst_collections.cpp
@@ -3586,7 +3586,7 @@ void tst_Collections::alignment()
#else
void tst_Collections::alignment()
{
- QSKIP("Compiler doesn't support necessary extension keywords", SkipAll)
+ QSKIP("Compiler doesn't support necessary extension keywords", SkipAll);
}
#endif
diff --git a/tests/auto/qfile/qfile.pro b/tests/auto/qfile/qfile.pro
index f70f750..33fd2fd 100644
--- a/tests/auto/qfile/qfile.pro
+++ b/tests/auto/qfile/qfile.pro
@@ -5,5 +5,5 @@ wince*:{
SUBDIRS = test stdinprocess
}
-SUBDIRS += largefile
+!symbian*:SUBDIRS += largefile
diff --git a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
index 9269164..36ee22c 100644
--- a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
+++ b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
@@ -1286,8 +1286,9 @@ void tst_QGraphicsProxyWidget::paintEvent()
QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();
+ QApplication::setActiveWindow(&view);
QTest::qWaitForWindowShown(&view);
- QTest::qWait(70);
+ QTRY_VERIFY(view.isActiveWindow());
SubQGraphicsProxyWidget proxy;
@@ -1298,14 +1299,14 @@ void tst_QGraphicsProxyWidget::paintEvent()
w->show();
QTest::qWaitForWindowShown(w);
QApplication::processEvents();
- QTest::qWait(100);
+ QTest::qWait(30);
proxy.setWidget(w);
scene.addItem(&proxy);
//make sure we flush all the paint events
- QTest::qWait(70);
+ QTest::qWait(30);
QTRY_VERIFY(proxy.paintCount > 1);
- QTest::qWait(110);
+ QTest::qWait(30);
proxy.paintCount = 0;
w->update();
@@ -2573,20 +2574,22 @@ void tst_QGraphicsProxyWidget::changingCursor_basic()
proxy->setWidget(widget);
proxy->show();
scene.addItem(proxy);
+ QApplication::setActiveWindow(&view);
QTest::qWaitForWindowShown(&view);
QApplication::processEvents();
+ QTRY_VERIFY(view.isActiveWindow());
// in
QTest::mouseMove(view.viewport(), view.mapFromScene(proxy->mapToScene(proxy->boundingRect().center())));
sendMouseMove(view.viewport(), view.mapFromScene(proxy->mapToScene(proxy->boundingRect().center())));
- QTest::qWait(125);
- QCOMPARE(view.viewport()->cursor().shape(), Qt::IBeamCursor);
+ QTest::qWait(12);
+ QTRY_COMPARE(view.viewport()->cursor().shape(), Qt::IBeamCursor);
// out
QTest::mouseMove(view.viewport(), QPoint(1, 1));
sendMouseMove(view.viewport(), QPoint(1, 1));
- QTest::qWait(125);
- QCOMPARE(view.viewport()->cursor().shape(), Qt::ArrowCursor);
+ QTest::qWait(12);
+ QTRY_COMPARE(view.viewport()->cursor().shape(), Qt::ArrowCursor);
#endif
}
@@ -2746,10 +2749,12 @@ void tst_QGraphicsProxyWidget::windowOpacity()
widget->resize(100, 100);
QGraphicsProxyWidget *proxy = scene.addWidget(widget);
proxy->setCacheMode(QGraphicsItem::ItemCoordinateCache);
+
+ QApplication::setActiveWindow(&view);
view.show();
QTest::qWaitForWindowShown(&view);
QApplication::sendPostedEvents();
- QTest::qWait(150);
+ QTRY_VERIFY(view.isActiveWindow());
qRegisterMetaType<QList<QRectF> >("QList<QRectF>");
QSignalSpy signalSpy(&scene, SIGNAL(changed(const QList<QRectF> &)));
diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
index 9a561eb..a49c2c1 100644
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -3983,20 +3983,28 @@ void tst_QGraphicsScene::isActive()
QVERIFY(!scene1.isActive()); //it is hidden;
QVERIFY(scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(scene2.hasFocus());
view1->show();
QVERIFY(scene1.isActive());
QVERIFY(scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(scene2.hasFocus());
view2->hide();
QVERIFY(scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
toplevel1.hide();
- QTest::qWait(12);
+ QTest::qWait(50);
QTRY_VERIFY(!scene1.isActive());
QTRY_VERIFY(!scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
toplevel1.show();
QApplication::setActiveWindow(&toplevel1);
@@ -4005,14 +4013,21 @@ void tst_QGraphicsScene::isActive()
QTRY_VERIFY(scene1.isActive());
QTRY_VERIFY(!scene2.isActive());
+ QVERIFY(scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
view2->show();
QVERIFY(scene1.isActive());
QVERIFY(scene2.isActive());
+ QVERIFY(scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
}
QVERIFY(!scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
+
{
QWidget toplevel2;
@@ -4025,6 +4040,8 @@ void tst_QGraphicsScene::isActive()
QVERIFY(!scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
toplevel2.show();
QApplication::setActiveWindow(&toplevel2);
@@ -4033,66 +4050,89 @@ void tst_QGraphicsScene::isActive()
QVERIFY(scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
view2->setScene(&scene2);
QVERIFY(scene1.isActive());
QVERIFY(scene2.isActive());
+ QVERIFY(scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
view1->setScene(&scene2);
QVERIFY(!scene1.isActive());
QVERIFY(scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(scene2.hasFocus());
view1->hide();
QVERIFY(!scene1.isActive());
QVERIFY(scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(scene2.hasFocus());
view1->setScene(&scene1);
QVERIFY(!scene1.isActive());
QVERIFY(scene2.isActive());
-
- view1->show();
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(scene2.hasFocus());
view1->show();
QVERIFY(scene1.isActive());
QVERIFY(scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(scene2.hasFocus());
view2->hide();
QVERIFY(scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
QGraphicsView topLevelView;
topLevelView.show();
QApplication::setActiveWindow(&topLevelView);
+ topLevelView.setFocus();
QTest::qWaitForWindowShown(&topLevelView);
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&topLevelView));
QVERIFY(!scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
topLevelView.setScene(&scene1);
QVERIFY(scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
view2->show();
QVERIFY(scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
view1->hide();
QVERIFY(scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
QApplication::setActiveWindow(&toplevel2);
QTRY_COMPARE(QApplication::activeWindow(), &toplevel2);
QVERIFY(!scene1.isActive());
QVERIFY(scene2.isActive());
-
-
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(scene2.hasFocus());
}
QVERIFY(!scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
{
QWidget toplevel3;
@@ -4104,6 +4144,9 @@ void tst_QGraphicsScene::isActive()
QVERIFY(!scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
+
toplevel3.show();
QApplication::setActiveWindow(&toplevel3);
@@ -4112,23 +4155,30 @@ void tst_QGraphicsScene::isActive()
QVERIFY(scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
layout->addWidget(view2);
QApplication::processEvents();
QVERIFY(scene1.isActive());
QVERIFY(scene2.isActive());
+ QVERIFY(scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
view1->setParent(0);
QVERIFY(!scene1.isActive());
QVERIFY(scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(scene2.hasFocus());
delete view1;
}
QVERIFY(!scene1.isActive());
QVERIFY(!scene2.isActive());
+ QVERIFY(!scene1.hasFocus());
+ QVERIFY(!scene2.hasFocus());
}
-
QTEST_MAIN(tst_QGraphicsScene)
#include "tst_qgraphicsscene.moc"
diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
index f07453c..1ff06c2 100644
--- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
@@ -3600,6 +3600,7 @@ void tst_QGraphicsView::inputMethodSensitivity()
item->setFlag(QGraphicsItem::ItemIsFocusable);
scene.addItem(item);
scene.setFocusItem(item);
+ QCOMPARE(scene.focusItem(), item);
QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true);
item->setFlag(QGraphicsItem::ItemAcceptsInputMethod, false);
@@ -3614,27 +3615,35 @@ void tst_QGraphicsView::inputMethodSensitivity()
scene.addItem(item2);
scene.setFocusItem(item2);
QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), false);
+ QCOMPARE(scene.focusItem(), item2);
scene.setFocusItem(item);
QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true);
+ QCOMPARE(scene.focusItem(), item);
view.setScene(0);
QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), false);
+ QCOMPARE(scene.focusItem(), item);
view.setScene(&scene);
QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true);
+ QCOMPARE(scene.focusItem(), item);
scene.setFocusItem(item2);
QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), false);
+ QCOMPARE(scene.focusItem(), item2);
view.setScene(0);
QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), false);
+ QCOMPARE(scene.focusItem(), item2);
scene.setFocusItem(item);
QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), false);
+ QCOMPARE(scene.focusItem(), item);
view.setScene(&scene);
QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true);
+ QCOMPARE(scene.focusItem(), item);
}
class InputContextTester : public QInputContext
diff --git a/tests/auto/qlibrary/lib2/lib2.pro b/tests/auto/qlibrary/lib2/lib2.pro
index 436d7ba..fc00af8 100644
--- a/tests/auto/qlibrary/lib2/lib2.pro
+++ b/tests/auto/qlibrary/lib2/lib2.pro
@@ -37,9 +37,9 @@ symbian-abld: {
symbian-sbsv2: {
TARGET.CAPABILITY=ALL -TCB
QMAKE_POST_LINK = \
- $(GNUCP) $${EPOCROOT}epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dll $${EPOCROOT}epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dl2 && \
- $(GNUCP) $${EPOCROOT}epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dll $${EPOCROOT}epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/system.trolltech.test.mylib.dll && \
- if test $(PLATFORM) != WINSCW;then $(GNUCP) $${EPOCROOT}epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dll $${PWD}/../tst/mylib.dl2; fi
+ $(GNUCP) $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dll $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dl2 && \
+ $(GNUCP) $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dll $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/system.trolltech.test.mylib.dll && \
+ if test $(PLATFORM) != WINSCW;then $(GNUCP) $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dll $${PWD}/../tst/mylib.dl2; fi
}
#no special install rule for the library used by test
diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp
index f12fa92..f0f69a4 100644
--- a/tests/auto/qmenu/tst_qmenu.cpp
+++ b/tests/auto/qmenu/tst_qmenu.cpp
@@ -101,11 +101,13 @@ private slots:
void menuSizeHint();
void task258920_mouseBorder();
void setFixedWidth();
+ void deleteActionInTriggered();
protected slots:
void onActivated(QAction*);
void onHighlighted(QAction*);
void onStatusMessageChanged(const QString &);
void onStatusTipTimer();
+ void deleteAction(QAction *a) { delete a; }
private:
void createActions();
QMenu *menus[2], *lastMenu;
@@ -858,6 +860,17 @@ void tst_QMenu::setFixedWidth()
QCOMPARE(menu.sizeHint().width(), menu.minimumWidth());
}
+void tst_QMenu::deleteActionInTriggered()
+{
+ // should not crash
+ QMenu m;
+ QObject::connect(&m, SIGNAL(triggered(QAction*)), this, SLOT(deleteAction(QAction*)));
+ QWeakPointer<QAction> a = m.addAction("action");
+ a.data()->trigger();
+ QVERIFY(!a);
+}
+
+
QTEST_MAIN(tst_QMenu)
diff --git a/tests/auto/qtextdocument/tst_qtextdocument.cpp b/tests/auto/qtextdocument/tst_qtextdocument.cpp
index 1d54409..11e32b0 100644
--- a/tests/auto/qtextdocument/tst_qtextdocument.cpp
+++ b/tests/auto/qtextdocument/tst_qtextdocument.cpp
@@ -2615,6 +2615,17 @@ void tst_QTextDocument::testUndoCommandAdded()
cf.setFontItalic(true);
cursor.mergeCharFormat(cf);
QCOMPARE(spy.count(), 1);
+
+ spy.clear();
+ doc->undo();
+ QCOMPARE(spy.count(), 0);
+ doc->undo();
+ QCOMPARE(spy.count(), 0);
+ spy.clear();
+ doc->redo();
+ QCOMPARE(spy.count(), 0);
+ doc->redo();
+ QCOMPARE(spy.count(), 0);
}
void tst_QTextDocument::testUndoBlocks()
diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp
index 58f059b..4fc6dd3 100644
--- a/tests/auto/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/qtreeview/tst_qtreeview.cpp
@@ -3653,7 +3653,9 @@ void tst_QTreeView::doubleClickedWithSpans()
view.setModel(&model);
view.setFirstColumnSpanned(0, QModelIndex(), true);
view.show();
+ QApplication::setActiveWindow(&view);
QTest::qWaitForWindowShown(&view);
+ QTRY_VERIFY(view.isActiveWindow());
QPoint p(10, 10);
QCOMPARE(view.indexAt(p), model.index(0, 0));
diff --git a/translations/assistant_de.ts b/translations/assistant_de.ts
index 027c566..b020003 100644
--- a/translations/assistant_de.ts
+++ b/translations/assistant_de.ts
@@ -79,7 +79,7 @@
<context>
<name>BookmarkManager</name>
<message>
- <location line="+434"/>
+ <location line="+435"/>
<source>Bookmarks</source>
<translation>Lesezeichen</translation>
</message>
@@ -103,7 +103,7 @@
<context>
<name>BookmarkWidget</name>
<message>
- <location line="-416"/>
+ <location line="-417"/>
<source>Filter:</source>
<translation>Filter:</translation>
</message>
@@ -130,7 +130,7 @@
<message>
<location line="+1"/>
<source>Show Bookmark in New Tab</source>
- <translation>Lesezeichen in neuem Tab öffnen</translation>
+ <translation>Lesezeichen in neuem Reiter öffnen</translation>
</message>
<message>
<location line="+3"/>
@@ -151,7 +151,7 @@
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+238"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+239"/>
<source>Add new page</source>
<translation>Neue Seite hinzufügen</translation>
</message>
@@ -166,7 +166,7 @@
<translation>Drucken</translation>
</message>
<message>
- <location line="+148"/>
+ <location line="+130"/>
<location line="+2"/>
<source>unknown</source>
<translation>unbekannt</translation>
@@ -192,7 +192,7 @@
<translation>Lesezeichen für diese Seite hinzufügen ...</translation>
</message>
<message>
- <location line="+255"/>
+ <location line="+235"/>
<source>Search</source>
<translation>Suchen</translation>
</message>
@@ -207,7 +207,7 @@
<message>
<location line="+1"/>
<source>Open Link in New Tab</source>
- <translation>Link in neuem Tab öffnen</translation>
+ <translation>Link in neuem Reiter öffnen</translation>
</message>
</context>
<context>
@@ -226,7 +226,7 @@
<context>
<name>FindWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-955"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-918"/>
<source>Previous</source>
<translation>Zurück</translation>
</message>
@@ -282,7 +282,7 @@
<context>
<name>HelpViewer</name>
<message>
- <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+492"/>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+489"/>
<source>Help</source>
<translation>Hilfe</translation>
</message>
@@ -304,12 +304,12 @@
<message>
<location line="+3"/>
<source>Open Link in New Tab Ctrl+LMB</source>
- <translation>Link in neuem Tab öffnen </translation>
+ <translation>Link in neuem Reiter öffnen </translation>
</message>
<message>
<location line="-275"/>
<source>Open Link in New Tab</source>
- <translation>Link in neuem Tab öffnen</translation>
+ <translation>Link in neuem Reiter öffnen</translation>
</message>
<message>
<location line="+209"/>
@@ -334,7 +334,7 @@
<message>
<location line="+1"/>
<source>Open Link in New Tab</source>
- <translation>Link in neuem Tab öffnen</translation>
+ <translation>Link in neuem Reiter öffnen</translation>
</message>
</context>
<context>
@@ -392,7 +392,7 @@
<message>
<location line="+37"/>
<source>Download failed: Downloaded file is corrupted.</source>
- <translation>Herunterladen fehlgeschlagen: Die Datei ist warscheinlich beschädigt.</translation>
+ <translation>Herunterladen fehlgeschlagen: Die Datei ist wahrscheinlich beschädigt.</translation>
</message>
<message>
<location line="+2"/>
@@ -441,19 +441,19 @@
<name>MainWindow</name>
<message>
<location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+110"/>
- <location line="+391"/>
+ <location line="+383"/>
<source>Index</source>
<translation>Index</translation>
</message>
<message>
- <location line="-385"/>
- <location line="+383"/>
+ <location line="-377"/>
+ <location line="+375"/>
<source>Contents</source>
<translation>Inhalt</translation>
</message>
<message>
- <location line="-378"/>
- <location line="+382"/>
+ <location line="-370"/>
+ <location line="+374"/>
<source>Bookmarks</source>
<translation>Lesezeichen</translation>
</message>
@@ -463,14 +463,14 @@
<translation>Suchen</translation>
</message>
<message>
- <location line="-372"/>
- <location line="+215"/>
- <location line="+512"/>
+ <location line="-364"/>
+ <location line="+207"/>
+ <location line="+514"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
<message>
- <location line="-544"/>
+ <location line="-546"/>
<location line="+5"/>
<source>Unfiltered</source>
<translation>Ohne Filter</translation>
@@ -493,12 +493,12 @@
<message>
<location line="+7"/>
<source>New &amp;Tab</source>
- <translation>Neuer &amp;Tab</translation>
+ <translation>Neuer &amp;Reiter</translation>
</message>
<message>
<location line="+3"/>
<source>&amp;Close Tab</source>
- <translation>Tab &amp;schließen</translation>
+ <translation>Reiter &amp;schließen</translation>
</message>
<message>
<location line="+4"/>
@@ -516,7 +516,12 @@
<translation>&amp;Textsuche ...</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+2"/>
+ <source>&amp;Find</source>
+ <translation>&amp;Suchen</translation>
+ </message>
+ <message>
+ <location line="+4"/>
<source>Find &amp;Next</source>
<translation>&amp;Weitersuchen</translation>
</message>
@@ -583,10 +588,15 @@
<message>
<location line="+6"/>
<source>Sync with Table of Contents</source>
- <translation>Seite mit Inhalt-Tab abgleichen</translation>
+ <translation>Seite mit Inhaltsangabe abgleichen</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="+2"/>
+ <source>Sync</source>
+ <translation>Synchronisieren</translation>
+ </message>
+ <message>
+ <location line="+5"/>
<source>Next Page</source>
<translation>Nächste Seite</translation>
</message>
@@ -636,7 +646,7 @@
<translation>Filter:</translation>
</message>
<message>
- <location line="+23"/>
+ <location line="+25"/>
<source>Address Toolbar</source>
<translation>Adressleiste</translation>
</message>
@@ -661,7 +671,7 @@
<translation>Suchindex wird aufgebaut</translation>
</message>
<message>
- <location line="-638"/>
+ <location line="-640"/>
<source>Looking for Qt Documentation...</source>
<translation>Suche nach Qt-Dokumentation ...</translation>
</message>
@@ -963,7 +973,7 @@
<translation>Qt Assistant</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/main.cpp" line="+217"/>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+225"/>
<source>Could not register documentation file
%1
@@ -1023,7 +1033,7 @@ Grund:
<context>
<name>SearchWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+195"/>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+196"/>
<source>&amp;Copy</source>
<translation>&amp;Kopieren</translation>
</message>
@@ -1035,7 +1045,7 @@ Grund:
<message>
<location line="+4"/>
<source>Open Link in New Tab</source>
- <translation>Link in neuem Tab öffnen</translation>
+ <translation>Link in neuem Reiter öffnen</translation>
</message>
<message>
<location line="+8"/>
diff --git a/translations/designer_de.ts b/translations/designer_de.ts
index 638a8b4..76ccbfb 100644
--- a/translations/designer_de.ts
+++ b/translations/designer_de.ts
@@ -702,7 +702,7 @@
<context>
<name>ConnectionDelegate</name>
<message>
- <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+643"/>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+644"/>
<source>&lt;object&gt;</source>
<translation>&lt;Objekt&gt;</translation>
</message>
@@ -4446,8 +4446,8 @@ Möchten Sie sie überschreiben?</translation>
<location line="+6"/>
<source>Customized (%n roles)</source>
<translation>
- <numerusform>Angepaßt (eine Rolle)</numerusform>
- <numerusform>Angepaßt (%n Rollen)</numerusform>
+ <numerusform>Angepasst (eine Rolle)</numerusform>
+ <numerusform>Angepasst (%n Rollen)</numerusform>
</translation>
</message>
<message>
@@ -4689,7 +4689,7 @@ Möchten Sie sie überschreiben?</translation>
<message>
<location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
<source>&lt;Filter&gt;</source>
- <translation>&lt;FIlter&gt;</translation>
+ <translation>&lt;Filter&gt;</translation>
</message>
</context>
<context>
@@ -5550,18 +5550,15 @@ Please select another name.</source>
<context>
<name>qdesigner_internal::ObjectInspector</name>
<message>
- <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+754"/>
- <source>&amp;Find in Text...</source>
- <translation>&amp;Suchen...</translation>
- </message>
-</context>
-<context>
- <name>qdesigner_internal::ObjectInspector::ObjectInspectorPrivate</name>
- <message>
- <location line="-438"/>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+316"/>
<source>Change Current Page</source>
<translation>Seite wechseln</translation>
</message>
+ <message>
+ <location line="+438"/>
+ <source>&amp;Find in Text...</source>
+ <translation>&amp;Suchen...</translation>
+ </message>
</context>
<context>
<name>qdesigner_internal::OrderDialog</name>
@@ -5747,7 +5744,7 @@ Please select another name.</source>
<message>
<location line="+55"/>
<source>New custom widget plugins have been found.</source>
- <translation>Es wurden neuinstallierten Plugins mit benutzerdefinierten Widgets gefunden.</translation>
+ <translation>Es wurden neu installierte Plugins mit benutzerdefinierten Widgets gefunden.</translation>
</message>
</context>
<context>
@@ -5775,9 +5772,6 @@ Please select another name.</source>
<source>Browse...</source>
<translation>Durchsuchen...</translation>
</message>
-</context>
-<context>
- <name>qdesigner_internal::PreviewConfigurationWidget::PreviewConfigurationWidgetPrivate</name>
<message>
<location line="+118"/>
<source>Load Custom Device Skin</source>
diff --git a/translations/linguist_de.ts b/translations/linguist_de.ts
index 25f35ef..9362811 100644
--- a/translations/linguist_de.ts
+++ b/translations/linguist_de.ts
@@ -4,7 +4,7 @@
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1358"/>
<source>Qt Linguist</source>
<translation>Qt Linguist</translation>
</message>
@@ -109,11 +109,17 @@
</message>
<message>
<location line="+4"/>
+ <location line="+8"/>
<source>&lt;p&gt;[more duplicates omitted]</source>
<translation>&lt;p&gt;[weitere mehrfach vorhandene Nachrichten weggelassen]</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="-5"/>
+ <source>&lt;p&gt;* ID: %1</source>
+ <translation>&lt;p&gt;* ID: %1</translation>
+ </message>
+ <message>
+ <location line="+8"/>
<source>&lt;p&gt;* Context: %1&lt;br&gt;* Source: %2</source>
<translation>&lt;p&gt;* Kontext: %1&lt;br&gt;* Quelle: %2</translation>
</message>
@@ -123,7 +129,7 @@
<translation>&lt;br&gt;* Kommentar: %3</translation>
</message>
<message>
- <location line="+70"/>
+ <location line="+71"/>
<source>Linguist does not know the plural rules for &apos;%1&apos;.
Will assume a single universal form.</source>
<translation>Die Regeln zur Pluralbildung der Sprache &apos;%1&apos; sind in Linguist nicht definiert.
@@ -311,7 +317,7 @@ Es wird mit einer einfachen Universalform gearbeitet.</translation>
<context>
<name>LRelease</name>
<message numerus="yes">
- <location filename="../tools/linguist/shared/qm.cpp" line="+747"/>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+761"/>
<source>Dropped %n message(s) which had no ID.</source>
<translation>
<numerusform>Es wurde ein Eintrag ohne Bezeichner gelöscht.</numerusform>
@@ -908,7 +914,7 @@ Es wird mit einer einfachen Universalform gearbeitet.</translation>
<translation>Freigeben unter ...</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-2004"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-2005"/>
<source></source>
<comment>This is the application&apos;s main window.</comment>
<translation></translation>
@@ -926,17 +932,17 @@ Es wird mit einer einfachen Universalform gearbeitet.</translation>
</message>
<message>
<location line="-2"/>
- <location line="+62"/>
+ <location line="+63"/>
<source>Context</source>
<translation>Kontext</translation>
</message>
<message>
- <location line="-61"/>
+ <location line="-62"/>
<source>Items</source>
<translation>Einträge</translation>
</message>
<message>
- <location line="+78"/>
+ <location line="+79"/>
<source>This panel lists the source contexts.</source>
<translation>Dieser Bereich zeigt die Kontexte an.</translation>
</message>
@@ -1391,7 +1397,7 @@ Alle Dateien (*)</translation>
<message>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<source>Open/Refresh Form &amp;Preview</source>
- <translation>Die &amp;Vorschau öffnen/&amp;aktualisieren</translation>
+ <translation>&amp;Vorschau öffnen/aktualisieren</translation>
</message>
<message>
<location/>
@@ -1801,8 +1807,8 @@ Zeile: %2</translation>
<translation>Alle Dateien (*)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/>
- <location line="+18"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1127"/>
+ <location line="+27"/>
<location line="+67"/>
<location line="+39"/>
<location line="+17"/>
diff --git a/translations/qt_de.ts b/translations/qt_de.ts
index 0d329e5..81968fb 100644
--- a/translations/qt_de.ts
+++ b/translations/qt_de.ts
@@ -4,7 +4,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2245"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2262"/>
<source>Close Tab</source>
<translation>Schließen</translation>
</message>
@@ -12,7 +12,7 @@
<context>
<name>FakeReply</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp" line="+2191"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp" line="+2198"/>
<source>Fake error !</source>
<translation>Fake error !</translation>
</message>
@@ -58,7 +58,7 @@
<context>
<name>Phonon::AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+377"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+385"/>
<source>&lt;html&gt;The audio playback device &lt;b&gt;%1&lt;/b&gt; does not work.&lt;br/&gt;Falling back to &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</source>
<translation>&lt;html&gt;Das Audiogerät &lt;b&gt;%1&lt;/b&gt; funktioniert nicht.&lt;br/&gt;Es wird stattdessen &lt;b&gt;%2&lt;/b&gt; verwendet.&lt;/html&gt;</translation>
</message>
@@ -76,7 +76,7 @@
<context>
<name>Phonon::Gstreamer::Backend</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+171"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+182"/>
<source>Warning: You do not seem to have the package gstreamer0.10-plugins-good installed.
Some video features have been disabled.</source>
<translation>Achtung: Das Paket gstreamer0.10-plugins-good ist nicht installiert.
@@ -96,10 +96,11 @@ Die Audio- und Video-Unterstützung steht nicht zur Verfügung.</translation>
<location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
<source>Cannot start playback.
-Check your Gstreamer installation and make sure you
+Check your GStreamer installation and make sure you
have libgstreamer-plugins-base installed.</source>
- <translation>Die Wiedergabe kann nicht gestartet werden.
-Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Paket libgstreamer-plugins-base installiert ist.</translation>
+ <translation>Das Abspielen konnte nicht gestartet werden.
+
+Bitte überprüfen Sie Ihre GStreamer-Installation und stellen Sie sicher, dass das Paket libgstreamer-plugins-base installiert ist.</translation>
</message>
<message>
<location line="+113"/>
@@ -107,10 +108,10 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
<translation>Es sind nicht alle erforderlichen Codecs installiert. Um diesen Inhalt abzuspielen, muss der folgende Codec installiert werden: %0</translation>
</message>
<message>
- <location line="+681"/>
+ <location line="+702"/>
<location line="+8"/>
<location line="+15"/>
- <location line="+22"/>
+ <location line="+26"/>
<location line="+6"/>
<location line="+19"/>
<location line="+339"/>
@@ -119,12 +120,12 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
<translation>Die Medienquelle konnte nicht geöffnet werden.</translation>
</message>
<message>
- <location line="-420"/>
+ <location line="-424"/>
<source>Invalid source type.</source>
<translation>Ungültiger Typ der Medienquelle.</translation>
</message>
<message>
- <location line="+394"/>
+ <location line="+398"/>
<source>Could not locate media source.</source>
<translation>Die Medienquelle konnte nicht gefunden werden.</translation>
</message>
@@ -142,7 +143,7 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
<context>
<name>Phonon::MMF</name>
<message>
- <location filename="../src/3rdparty/phonon/mmf/audiooutput.cpp" line="+110"/>
+ <location filename="../src/3rdparty/phonon/mmf/audiooutput.cpp" line="+108"/>
<source>Audio Output</source>
<translation>Audio-Ausgabe</translation>
</message>
@@ -164,13 +165,13 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
<name>Phonon::MMF::EffectFactory</name>
<message>
<location filename="../src/3rdparty/phonon/mmf/effectfactory.cpp" line="+65"/>
- <source>audio equalizer</source>
+ <source>Audio Equalizer</source>
<translation>Audio-Equalizer</translation>
</message>
<message>
<location line="+2"/>
- <source>Bass boost</source>
- <translation>Hervorhebung der Bässe</translation>
+ <source>Bass Boost</source>
+ <translation>Bass-Boost</translation>
</message>
<message>
<location line="+2"/>
@@ -200,6 +201,14 @@ Bitte prüfen Sie die Gstreamer-Installation und stellen Sie sicher, dass das Pa
</message>
</context>
<context>
+ <name>Phonon::MMF::MediaObject</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/mediaobject.cpp" line="+291"/>
+ <source>Media type could not be determined</source>
+ <translation>Der Typ des Mediums konnte nicht bestimmt werden</translation>
+ </message>
+</context>
+<context>
<name>Phonon::VolumeSlider</name>
<message>
<location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="+42"/>
@@ -903,8 +912,8 @@ nach
<context>
<name>QAbstractSocket</name>
<message>
- <location filename="../src/network/socket/qabstractsocket.cpp" line="+890"/>
- <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+633"/>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+899"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+643"/>
<location filename="../src/network/socket/qsocks5socketengine.cpp" line="+661"/>
<location line="+26"/>
<source>Host not found</source>
@@ -923,8 +932,8 @@ nach
<translation>Das Zeitlimit für die Verbindung wurde überschritten</translation>
</message>
<message>
- <location line="-548"/>
- <location line="+789"/>
+ <location line="-555"/>
+ <location line="+805"/>
<location line="+208"/>
<source>Operation on socket is not supported</source>
<translation>Diese Socket-Operation wird nicht unterstützt</translation>
@@ -964,9 +973,17 @@ nach
</message>
</context>
<context>
+ <name>QAccessibleButton</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+250"/>
+ <source>Press</source>
+ <translation>Drücken</translation>
+ </message>
+</context>
+<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2290"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2279"/>
<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>
@@ -1018,7 +1035,7 @@ nach
<context>
<name>QCheckBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="-136"/>
<source>Uncheck</source>
<translation>Löschen</translation>
</message>
@@ -1276,7 +1293,7 @@ nach
<message>
<location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1872"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+606"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+622"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -1580,12 +1597,12 @@ nach
<translation>S&amp;peichern</translation>
</message>
<message>
- <location line="+1807"/>
+ <location line="+1801"/>
<source>Recent Places</source>
<translation>Zuletzt besucht</translation>
</message>
<message>
- <location line="-2517"/>
+ <location line="-2511"/>
<source>&amp;Rename</source>
<translation>&amp;Umbenennen</translation>
</message>
@@ -1793,7 +1810,6 @@ Möchten Sie die Datei trotzdem löschen?</translation>
</message>
<message>
<location line="+1"/>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+1"/>
<source>%1 bytes</source>
<translation>%1 Byte</translation>
</message>
@@ -1844,60 +1860,65 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<source>Computer</source>
<translation>Computer</translation>
</message>
+ <message>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+1"/>
+ <source>%1 byte(s)</source>
+ <translation>%1 byte</translation>
+ </message>
</context>
<context>
<name>QFontDatabase</name>
<message>
<location filename="../src/gui/text/qfontdatabase.cpp" line="+102"/>
- <location line="+1335"/>
+ <location line="+1342"/>
<source>Normal</source>
<translation>Normal</translation>
</message>
<message>
- <location line="-1332"/>
+ <location line="-1339"/>
<location line="+12"/>
- <location line="+1308"/>
+ <location line="+1315"/>
<source>Bold</source>
<translation>Fett</translation>
</message>
<message>
- <location line="-1317"/>
- <location line="+1319"/>
+ <location line="-1324"/>
+ <location line="+1326"/>
<source>Demi Bold</source>
<translation>Halbfett</translation>
</message>
<message>
- <location line="-1316"/>
+ <location line="-1323"/>
<location line="+18"/>
- <location line="+1294"/>
+ <location line="+1301"/>
<source>Black</source>
<translation>Schwarz</translation>
</message>
<message>
- <location line="-1304"/>
+ <location line="-1311"/>
<source>Demi</source>
<translation>Semi</translation>
</message>
<message>
<location line="+6"/>
- <location line="+1304"/>
+ <location line="+1311"/>
<source>Light</source>
<translation>Leicht</translation>
</message>
<message>
- <location line="-1158"/>
- <location line="+1161"/>
+ <location line="-1165"/>
+ <location line="+1168"/>
<source>Italic</source>
<translation>Kursiv</translation>
</message>
<message>
- <location line="-1158"/>
- <location line="+1160"/>
+ <location line="-1165"/>
+ <location line="+1167"/>
<source>Oblique</source>
<translation>Schräggestellt</translation>
</message>
<message>
- <location line="+703"/>
+ <location line="+704"/>
<source>Any</source>
<translation>Alle</translation>
</message>
@@ -2061,6 +2082,11 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<source>Runic</source>
<translation>Runen</translation>
</message>
+ <message>
+ <location line="+3"/>
+ <source>N&apos;Ko</source>
+ <translation>N&apos;Ko</translation>
+ </message>
</context>
<context>
<name>QFontDialog</name>
@@ -2201,7 +2227,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Changing directory failed:
%1</source>
- <translation>Ändern des Verzeichnises schlug fehl:
+ <translation>Ändern des Verzeichnisses schlug fehl:
%1</translation>
</message>
<message>
@@ -2233,7 +2259,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Creating directory failed:
%1</source>
- <translation>Erstellen des Verzeichnises schlug fehl:
+ <translation>Erstellen des Verzeichnisses schlug fehl:
%1</translation>
</message>
<message>
@@ -2241,7 +2267,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
<source>Removing directory failed:
%1</source>
- <translation>Löschen des Verzeichnises schlug fehl:
+ <translation>Löschen des Verzeichnisses schlug fehl:
%1</translation>
</message>
<message>
@@ -2260,7 +2286,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QHostInfo</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+185"/>
<source>Unknown error</source>
<translation>Unbekannter Fehler</translation>
</message>
@@ -2304,13 +2330,13 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QHttp</name>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+569"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+578"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+1835"/>
<source>Connection refused</source>
<translation>Verbindung verweigert</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="+2634"/>
+ <location filename="../src/network/access/qhttp.cpp" line="+2639"/>
<location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
<source>Host %1 not found</source>
@@ -2388,7 +2414,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Der Server hat die Verbindung unerwartet geschlossen</translation>
</message>
<message>
- <location line="+151"/>
+ <location line="+172"/>
<location filename="../src/qt3support/network/q3http.cpp" line="+113"/>
<source>Invalid HTTP response header</source>
<translation>Der Kopfteil der HTTP-Antwort ist ungültig</translation>
@@ -2447,7 +2473,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Es wurde ein unbekanntes Protokoll angegeben</translation>
</message>
<message>
- <location filename="../src/network/access/qhttp.cpp" line="-138"/>
+ <location filename="../src/network/access/qhttp.cpp" line="-159"/>
<source>Connection refused (or timed out)</source>
<translation>Verbindung verweigert oder Zeitlimit überschritten</translation>
</message>
@@ -2621,7 +2647,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+2058"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+2072"/>
<source>Permission denied</source>
<translation>Zugriff verweigert</translation>
</message>
@@ -2705,7 +2731,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Operation unmap fehlgeschlagen für &apos;%1&apos;: %2</translation>
</message>
<message>
- <location line="+341"/>
+ <location line="+344"/>
<source>The plugin &apos;%1&apos; uses incompatible Qt library. (%2.%3.%4) [%5]</source>
<translation>Das Plugin &apos;%1&apos; verwendet eine inkompatible Qt-Bibliothek. (%2.%3.%4) [%5]</translation>
</message>
@@ -2739,13 +2765,13 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+236"/>
<location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+87"/>
<source>Cannot load library %1: %2</source>
- <translation>Die Library %1 kann nicht geladen werden: %2</translation>
+ <translation>Die Bibliothek %1 kann nicht geladen werden: %2</translation>
</message>
<message>
<location line="+17"/>
<location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+22"/>
<source>Cannot unload library %1: %2</source>
- <translation>Die Library %1 kann nicht entladen werden: %2</translation>
+ <translation>Die Bibliothek %1 kann nicht entladen werden: %2</translation>
</message>
<message>
<location line="+34"/>
@@ -2757,7 +2783,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2012"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2035"/>
<source>Select All</source>
<translation>Alles auswählen</translation>
</message>
@@ -2796,7 +2822,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<name>QLocalServer</name>
<message>
<location filename="../src/network/socket/qlocalserver.cpp" line="+224"/>
- <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+256"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+246"/>
<source>%1: Name error</source>
<translation>%1: Fehlerhafter Name</translation>
</message>
@@ -3101,7 +3127,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QMenuBar</name>
<message>
- <location filename="../src/gui/widgets/qmenu_symbian.cpp" line="+404"/>
+ <location filename="../src/gui/widgets/qmenu_symbian.cpp" line="+410"/>
<source>Actions</source>
<translation>Optionen</translation>
</message>
@@ -3183,7 +3209,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<message>
<location line="+3"/>
<source>Out of resources</source>
- <translation>Keine Resourcen verfügbar</translation>
+ <translation>Keine Ressourcen verfügbar</translation>
</message>
<message>
<location line="+3"/>
@@ -3320,27 +3346,30 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QNetworkAccessFileBackend</name>
<message>
+ <location filename="../src/network/access/qfilenetworkreply.cpp" line="+83"/>
<location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+100"/>
<source>Request for opening non-local file %1</source>
<translation>Anforderung zum Öffnen einer Datei über Netzwerk %1</translation>
</message>
<message>
- <location line="+45"/>
+ <location line="+31"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+45"/>
<source>Error opening %1: %2</source>
<translation>%1 konnte nicht geöffnet werden: %2</translation>
</message>
<message>
- <location line="+38"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+38"/>
<source>Write error writing to %1: %2</source>
<translation>Fehler beim Schreiben zur Datei %1: %2</translation>
</message>
<message>
- <location line="+48"/>
+ <location filename="../src/network/access/qfilenetworkreply.cpp" line="-11"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+48"/>
<source>Cannot open %1: Path is a directory</source>
<translation>%1 kann nicht geöffnet werden: Der Pfad spezifiziert ein Verzeichnis</translation>
</message>
<message>
- <location line="+21"/>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+21"/>
<source>Read error reading from %1: %2</source>
<translation>Beim Lesen von der Datei %1 trat ein Fehler auf: %2</translation>
</message>
@@ -3406,7 +3435,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2076"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2083"/>
<source>Unable to logon</source>
<translation>Logon-Vorgang fehlgeschlagen</translation>
</message>
@@ -3435,8 +3464,8 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QOCIResult</name>
<message>
- <location line="-972"/>
- <location line="+161"/>
+ <location line="-979"/>
+ <location line="+168"/>
<location line="+15"/>
<source>Unable to bind column for batch execute</source>
<translation>Die Spalte konnte nicht für den Stapelverarbeitungs-Befehl gebunden werden</translation>
@@ -3599,7 +3628,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1198"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1197"/>
<source>Name</source>
<translation>Name</translation>
</message>
@@ -3785,7 +3814,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Alias: %1</translation>
</message>
<message>
- <location line="+223"/>
+ <location line="+225"/>
<location line="+199"/>
<source>unknown</source>
<translation>unbekannt</translation>
@@ -3968,12 +3997,12 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Drucken</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-357"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-359"/>
<source>Print To File ...</source>
<translation>In Datei drucken ...</translation>
</message>
<message>
- <location line="+80"/>
+ <location line="+82"/>
<source>File %1 is not writable.
Please choose a different file name.</source>
<translation>Die Datei %1 ist schreibgeschützt.
@@ -4164,7 +4193,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Benutzerdefiniert</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-524"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-523"/>
<location line="+68"/>
<source>&amp;Options &gt;&gt;</source>
<translation>&amp;Einstellungen &gt;&gt;</translation>
@@ -4471,7 +4500,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QProcess</name>
<message>
- <location filename="../src/corelib/io/qprocess_unix.cpp" line="+402"/>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+406"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="+137"/>
<source>Could not open input redirection for reading</source>
<translation>Die Eingabeumleitung konnte nicht zum Lesen geöffnet werden</translation>
@@ -4488,7 +4517,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Ressourcenproblem (&quot;fork failure&quot;): %1</translation>
</message>
<message>
- <location line="+252"/>
+ <location line="+258"/>
<location line="+52"/>
<location line="+74"/>
<location line="+66"/>
@@ -4652,7 +4681,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+544"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+540"/>
<source>Error opening database</source>
<translation>Die Datenbankverbindung konnte nicht geöffnet werden</translation>
</message>
@@ -4680,8 +4709,8 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QSQLiteResult</name>
<message>
- <location line="-408"/>
- <location line="+66"/>
+ <location line="-404"/>
+ <location line="+62"/>
<location line="+8"/>
<source>Unable to fetch row</source>
<translation>Der Datensatz konnte nicht abgeholt werden</translation>
@@ -4707,7 +4736,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Die Anzahl der Parameter ist falsch</translation>
</message>
<message>
- <location line="-204"/>
+ <location line="-200"/>
<source>No query</source>
<translation>Kein Abfrage</translation>
</message>
@@ -5155,7 +5184,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</message>
<message>
<location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="+83"/>
- <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+80"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+79"/>
<location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
<source>%1: permission denied</source>
<translation>%1: Zugriff verweigert</translation>
@@ -5375,7 +5404,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Hilfe</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+5"/>
<source>Back</source>
<translation>Zurück</translation>
</message>
@@ -5570,6 +5599,451 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>(F) starten</translation>
</message>
<message>
+ <location line="+1"/>
+ <source>Monitor Brightness Up</source>
+ <translation>Monitor heller</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Monitor Brightness Down</source>
+ <translation>Monitor dunkler</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Keyboard Light On/Off</source>
+ <translation>Tastaturbeleuchtung Ein/Aus</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Keyboard Brightness Up</source>
+ <translation>Tastaturbeleuchtung heller</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Keyboard Brightness Down</source>
+ <translation>Tastaturbeleuchtung dunkler</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Power Off</source>
+ <translation>Ausschalten</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Wake Up</source>
+ <translation>Aufwecken</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Eject</source>
+ <translation>Auswerfen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Screensaver</source>
+ <translation>Bildschirmschoner</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>WWW</source>
+ <translation>Internet</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Sleep</source>
+ <translation>Schlafmodus</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>LightBulb</source>
+ <translation>Beleuchtung</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Shop</source>
+ <translation>Shop</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>History</source>
+ <translation>Verlauf</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Add Favorite</source>
+ <translation>Lesezeichen hinzufügen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hot Links</source>
+ <translation>Empfohlene Verweise</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Adjust Brightness</source>
+ <translation>Helligkeit einstellen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Finance</source>
+ <translation>Finanzen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Community</source>
+ <translation>Community</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Audio Rewind</source>
+ <translation>Audio rückspulen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Back Forward</source>
+ <translation>Hinterstes nach vorn</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Application Left</source>
+ <translation>Anwendung links</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Application Right</source>
+ <translation>Anwendung rechts</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Book</source>
+ <translation>Buch</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>CD</source>
+ <translation>CD</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Calculator</source>
+ <translation>Rechner</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Clear</source>
+ <translation>Löschen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Clear Grab</source>
+ <translation>Zugriff löschen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Close</source>
+ <translation>Schließen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Copy</source>
+ <translation>Kopieren</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Cut</source>
+ <translation>Ausschneiden</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Display</source>
+ <translation>Anzeigen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>DOS</source>
+ <translation>DOS</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Documents</source>
+ <translation>Dokumente</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Spreadsheet</source>
+ <translation>Spreadsheet</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Browser</source>
+ <translation>Browser</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Game</source>
+ <translation>Spiel</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Go</source>
+ <translation>Los</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>iTouch</source>
+ <translation>iTouch</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Logoff</source>
+ <translation>Logoff</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Market</source>
+ <translation>Markt</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Meeting</source>
+ <translation>Versammlung</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Keyboard Menu</source>
+ <translation>Tastaturmenü</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Menu PB</source>
+ <translation>Menü PB</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>My Sites</source>
+ <translation>Meine Orte</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>News</source>
+ <translation>Nachrichten</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Home Office</source>
+ <translation>Home Office</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Option</source>
+ <translation>Option</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Paste</source>
+ <translation>Einfügen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Phone</source>
+ <translation>Telefon</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Reply</source>
+ <translation>Antworten</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Reload</source>
+ <translation>Neu laden</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Rotate Windows</source>
+ <translation>Fenster rotieren</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Rotation PB</source>
+ <translation>Rotation PB</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Rotation KB</source>
+ <translation>Rotation KB</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Save</source>
+ <translation>Speichern</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Send</source>
+ <translation>Senden</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Spellchecker</source>
+ <translation>Rechtschreibprüfung</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Split Screen</source>
+ <translation>Bildschirm teilen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Support</source>
+ <translation>Hilfe</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Task Panel</source>
+ <translation>Task-Leiste</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Terminal</source>
+ <translation>Terminal</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Tools</source>
+ <translation>Werkzeuge</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Travel</source>
+ <translation>Reise</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Word Processor</source>
+ <translation>Textverarbeitung</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>XFer</source>
+ <translation>XFer</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zoom In</source>
+ <translation>Vergrößern</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zoom Out</source>
+ <translation>Verkleinern</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Away</source>
+ <translation>Abwesend</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Messenger</source>
+ <translation>Messenger</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>WebCam</source>
+ <translation>WebCam</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Mail Forward</source>
+ <translation>Weiterleitung</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Pictures</source>
+ <translation>Bilder</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Music</source>
+ <translation>Musik</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Battery</source>
+ <translation>Batterie</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Bluetooth</source>
+ <translation>Bluetooth</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Wireless</source>
+ <translation>Drahtlos</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ultra Wide Band</source>
+ <translation>Ultra Wide Band</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Audio Forward</source>
+ <translation>Audio vorspulen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Audio Repeat</source>
+ <translation>Audio wiederholen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Audio Random Play</source>
+ <translation>Audio zufällige Auswahl spielen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Subtitle</source>
+ <translation>Untertitel</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Audio Cycle Track</source>
+ <translation>Audiospur wechseln</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Time</source>
+ <translation>Zeit</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>View</source>
+ <translation>Ansicht</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Top Menu</source>
+ <translation>Hauptmenü</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Suspend</source>
+ <translation>Pause</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hibernate</source>
+ <translation>Hibernate</translation>
+ </message>
+ <message>
<location line="+4"/>
<source>Print Screen</source>
<translation>Bildschirm drucken</translation>
@@ -5625,7 +6099,8 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>System Request</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="-18"/>
+ <location line="+22"/>
<source>Select</source>
<translation>Auswählen</translation>
</message>
@@ -5675,7 +6150,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Umdrehen</translation>
</message>
<message>
- <location line="+561"/>
+ <location line="+573"/>
<location line="+135"/>
<source>Ctrl</source>
<translation>Strg</translation>
@@ -5709,7 +6184,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>F%1</translation>
</message>
<message>
- <location line="-767"/>
+ <location line="-869"/>
<source>Home Page</source>
<translation>Startseite</translation>
</message>
@@ -5810,7 +6285,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Unbekannten Fehlercode vom SOCKSv5-Proxy-Server erhalten: 0x%1</translation>
</message>
<message>
- <location line="+685"/>
+ <location line="+689"/>
<source>Network operation timed out</source>
<translation>Das Zeitlimit für die Operation wurde überschritten</translation>
</message>
@@ -5818,7 +6293,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QSoftKeyManager</name>
<message>
- <location filename="../src/gui/kernel/qsoftkeymanager.cpp" line="+78"/>
+ <location filename="../src/gui/kernel/qsoftkeymanager.cpp" line="+79"/>
<source>Ok</source>
<translation>Ok</translation>
</message>
@@ -5843,7 +6318,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Abbrechen</translation>
</message>
<message>
- <location line="+151"/>
+ <location line="+172"/>
<source>Exit</source>
<translation>Beenden</translation>
</message>
@@ -5946,7 +6421,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Ungültige oder leere Schlüsselliste (%1)</translation>
</message>
<message>
- <location line="+62"/>
+ <location line="+42"/>
+ <source>Private key does not certify public key, %1</source>
+ <translation>Der private Schlüssel passt nicht zum öffentlichen Schlüssel, %1</translation>
+ </message>
+ <message>
+ <location line="+20"/>
<source>Error creating SSL session, %1</source>
<translation>Es konnte keine SSL-Sitzung erzeugt werden, %1</translation>
</message>
@@ -5971,15 +6451,125 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Der private Schlüssel konnte nicht geladen werden, %1</translation>
</message>
<message>
- <location line="+7"/>
- <source>Private key does not certificate public key, %1</source>
- <translation>Die Zertifizierung des öffentlichen Schlüssels durch den privaten Schlüssel schlug fehl, %1</translation>
+ <location filename="../src/network/ssl/qsslerror.cpp" line="+213"/>
+ <source>No error</source>
+ <translation>Kein Fehler</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The issuer certificate could not be found</source>
+ <translation>Das Zertifikat des Ausstellers konnte nicht gefunden werden</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The certificate signature could not be decrypted</source>
+ <translation>Die Signatur des Zertifikats konnte nicht entschlüsselt werden</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The public key in the certificate could not be read</source>
+ <translation>Der öffentliche Schlüssel konnte nicht gelesen werden</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The signature of the certificate is invalid</source>
+ <translation>Die Signatur des Zertifikats ist ungültig</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The certificate is not yet valid</source>
+ <translation>Das Zertifikat ist noch nicht gültig</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The certificate has expired</source>
+ <translation>Die Gültigkeit des Zertifikats ist abgelaufen</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The certificate&apos;s notBefore field contains an invalid time</source>
+ <translation>Das Feld &apos;notBefore&apos; des Zertifikats enthält eine ungültige Zeit</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The certificate&apos;s notAfter field contains an invalid time</source>
+ <translation>Das Feld &apos;notAfter&apos; des Zertifikats enthält eine ungültige Zeit</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The certificate is self-signed, and untrusted</source>
+ <translation>Das Zertifikat ist selbstsigniert und daher nicht vertrauenswürdig</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The root certificate of the certificate chain is self-signed, and untrusted</source>
+ <translation>Das oberste Zertifikat der Kette ist selbstsigniert und daher nicht vertrauenswürdig</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The issuer certificate of a locally looked up certificate could not be found</source>
+ <translation>Das Zertifikat des Ausstellers eines lokal gefundenen Zertifikats konnte nicht gefunden werden</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>No certificates could be verified</source>
+ <translation>Keines der Zertifikate konnte verifiziert werden</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>One of the CA certificates is invalid</source>
+ <translation>Eines der Zertifikate der Zertifizierungsstelle ist ungültig</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The basicConstraints path length parameter has been exceeded</source>
+ <translation>Die Länge des basicConstraints-Pfades wurde überschritten</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The supplied certificate is unsuitable for this purpose</source>
+ <translation>Das angegebene Zertifikat kann in diesem Fall nicht verwendet werden</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The root CA certificate is not trusted for this purpose</source>
+ <translation>Das oberste Zertifikat der Zertifizierungsstelle ist für diesen Fall nicht vertrauenswürdig</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The root CA certificate is marked to reject the specified purpose</source>
+ <translation>Das oberste Zertifikat der Zertifizierungsstelle weist diesen Fall auf Grund einer speziellen Kennzeichnung zurück</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The current candidate issuer certificate was rejected because its subject name did not match the issuer name of the current certificate</source>
+ <translation>Das Zertifikat des betrachteten Ausstellers wurde zurückgewiesen da sein Subjektname nicht dem Namen des Austellers des aktuellen Zertifikats entspricht</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>The current candidate issuer certificate was rejected because its issuer name and serial number was present and did not match the authority key identifier of the current certificate</source>
+ <translation>Das Zertifikat des betrachteten Ausstellers wurde zurückgewiesen da Ausstellername und Seriennummer vorhanden sind und nicht dem Bezeichner der Zertifizierungsstelle des aktuellen Zertifikats entsprechen</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>The peer did not present any certificate</source>
+ <translation>Die Gegenstelle hat kein Zertifikat angegeben</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The host name did not match any of the valid hosts for this certificate</source>
+ <translation>Der Name des Hosts ist keiner aus der Liste der für dieses Zertifikat gültigen Hosts</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Unknown error</source>
+ <translation>Unbekannter Fehler</translation>
</message>
</context>
<context>
<name>QStateMachine</name>
<message>
- <location filename="../src/corelib/statemachine/qstatemachine.cpp" line="+998"/>
+ <location filename="../src/corelib/statemachine/qstatemachine.cpp" line="+1028"/>
<source>Missing initial state in compound state &apos;%1&apos;</source>
<translation>Der Anfangszustand des zusammengesetzten Zustands &apos;%1&apos; fehlt</translation>
</message>
@@ -6033,7 +6623,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QTDSDriver</name>
<message>
- <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+595"/>
<source>Unable to open connection</source>
<translation>Die Datenbankverbindung kann nicht geöffnet werden</translation>
</message>
@@ -6067,7 +6657,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+2007"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+2024"/>
<source>&amp;Undo</source>
<translation>&amp;Rückgängig</translation>
</message>
@@ -6110,7 +6700,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QToolButton</name>
<message>
- <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+254"/>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+310"/>
<location line="+6"/>
<source>Press</source>
<translation>Drücken</translation>
@@ -6167,7 +6757,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QUnicodeControlCharacterMenu</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+884"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+899"/>
<source>LRM Left-to-right mark</source>
<translation>LRM Left-to-right mark</translation>
</message>
@@ -6225,7 +6815,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+704"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+712"/>
<source>Request cancelled</source>
<translation>Anfrage wurde abgebrochen</translation>
</message>
@@ -6258,7 +6848,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWebPage</name>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+41"/>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+42"/>
<source>Submit</source>
<comment>default label for Submit buttons in forms on web pages</comment>
<translation>Senden</translation>
@@ -6276,7 +6866,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Rücksetzen</translation>
</message>
<message>
- <location line="+15"/>
+ <location line="+16"/>
<source>Choose File</source>
<comment>title for file button used in HTML forms</comment>
<translation>Durchsuchen</translation>
@@ -6774,7 +7364,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Unbekannt</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+170"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+167"/>
<source>Web Inspector - %2</source>
<translation>Web Inspector - %2</translation>
</message>
@@ -6785,7 +7375,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="+416"/>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+412"/>
<source>Bad HTTP request</source>
<translation>Ungültige HTTP-Anforderung</translation>
</message>
@@ -6870,7 +7460,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1727"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1822"/>
<source>JavaScript Alert - %1</source>
<translation>JavaScript-Hinweis - %1</translation>
</message>
@@ -6895,7 +7485,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Das Skript dieser Webseite ist fehlerhaft. Möchten Sie es anhalten?</translation>
</message>
<message>
- <location line="+383"/>
+ <location line="+381"/>
<source>Move the cursor to the next character</source>
<translation>Positionsmarke auf folgendes Zeichen setzen</translation>
</message>
@@ -6972,7 +7562,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location line="+3"/>
<source>Select to the next word</source>
- <translation>Bis zum nachsten Wort markieren</translation>
+ <translation>Bis zum nächsten Wort markieren</translation>
</message>
<message>
<location line="+3"/>
@@ -7116,7 +7706,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5666"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5720"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -7648,7 +8238,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%1 ist ein unbekannter Schema-Typ.</translation>
</message>
<message>
- <location line="-7041"/>
+ <location line="-7254"/>
+ <source>A template with name %1 has already been declared.</source>
+ <translation>Eine Vorlage des Namens %1 existiert bereits.</translation>
+ </message>
+ <message>
+ <location line="+213"/>
<source>Only one %1 declaration can occur in the query prolog.</source>
<translation>Der Anfrage-Prolog darf nur eine %1-Deklaration enthalten.</translation>
</message>
@@ -7703,12 +8298,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Modul-Import wird nicht unterstützt</translation>
</message>
<message>
- <location line="+52"/>
- <source>No value is available for the external variable by name %1.</source>
- <translation>Für die externe Variable des Namens %1 ist kein Wert verfügbar.</translation>
- </message>
- <message>
- <location line="+126"/>
+ <location line="+178"/>
<source>The namespace of a user defined function in a library module must be equivalent to the module namespace. In other words, it should be %1 instead of %2</source>
<translation>Der Namensraum einer nutzerdefinierten Funktion aus einem Bibliotheksmodul muss dem Namensraum des Moduls entsprechen (%1 anstatt %2) </translation>
</message>
@@ -7723,27 +8313,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Externe Funktionen werden nicht unterstützt. Alle unterstützten Funktionen können direkt verwendet werden, ohne sie als extern zu deklarieren</translation>
</message>
<message>
- <location line="+37"/>
- <source>An argument by name %1 has already been declared. Every argument name must be unique.</source>
- <translation>Es existiert bereits ein Argument mit dem Namen %1. Die Namen der Argumente müssen eindeutig sein.</translation>
- </message>
- <message>
- <location line="+1672"/>
+ <location line="+1709"/>
<source>The %1-axis is unsupported in XQuery</source>
<translation>Die %1-Achse wird in XQuery nicht unterstützt</translation>
</message>
<message>
- <location line="-5464"/>
- <source>No variable by name %1 exists</source>
- <translation>Es existiert keine Variable mit dem Namen %1</translation>
- </message>
- <message>
- <location line="+5797"/>
- <source>No function by name %1 is available.</source>
- <translation>Es existiert keine Funktion mit dem Namen %1.</translation>
- </message>
- <message>
- <location line="+102"/>
+ <location line="+435"/>
<source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
<translation>Der Namensraum-URI darf nicht leer sein, wenn er an den Präfix %1 gebunden ist.</translation>
</message>
@@ -7760,7 +8335,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location line="+30"/>
<source>Two namespace declaration attributes have the same name: %1.</source>
- <translation>Es wurden zwei Namenraum-Deklarationsattribute gleichen Namens (%1) gefunden.</translation>
+ <translation>Es wurden zwei Namensraum-Deklarationsattribute gleichen Namens (%1) gefunden.</translation>
</message>
<message>
<location line="+89"/>
@@ -7768,12 +8343,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Ein Namensraum-URI muss eine Konstante sein und darf keine eingebetteten Ausdrücke verwenden.</translation>
</message>
<message>
- <location line="+16"/>
- <source>An attribute by name %1 has already appeared on this element.</source>
- <translation>Das Element hat bereits ein Attribut mit dem Namen %1.</translation>
- </message>
- <message>
- <location line="+683"/>
+ <location line="+699"/>
<location line="+71"/>
<source>%1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported.</source>
<translation>%1 befindet sich nicht unter den Attributdeklarationen im Bereich. Schema-Import wird nicht unterstützt.</translation>
@@ -7975,7 +8545,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Ein positionales Prädikat muss sich als einfacher, numerischer Wert auswerten lassen.</translation>
</message>
<message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+137"/>
+ <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+113"/>
+ <source>The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, %2 is invalid.</source>
+ <translation>Der Zielname einer Processing-Anweisung kann nicht %1 (unabhängig von Groß/Kleinschreibung sein). %2 ist daher ungültig.</translation>
+ </message>
+ <message>
+ <location line="+24"/>
<source>%1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3.</source>
<translation>%1 ist kein gültiger Zielname einer Processing-Anweisung, es muss ein %2 Wert wie zum Beispiel %3 sein.</translation>
</message>
@@ -8065,17 +8640,32 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Das Schlüsselwort %1 kann nicht mit einem anderen Modusnamen zusammen verwendet werden.</translation>
</message>
<message>
- <location line="+29"/>
- <source>The value of attribute %1 must of type %2, which %3 isn&apos;t.</source>
- <translation>Der Wert des Attributs %1 muss vom Typ %2 sein. %3 ist kein gültiger Wert.</translation>
+ <location line="-3117"/>
+ <source>No variable with name %1 exists</source>
+ <translation>Es existiert keine Variable des Namens %1</translation>
</message>
<message>
- <location line="+387"/>
- <source>A variable by name %1 has already been declared.</source>
- <translation>Es wurde bereits eine Variable mit dem Namen %1 deklariert.</translation>
+ <location line="+3146"/>
+ <source>The value of attribute %1 must be of type %2, which %3 isn&apos;t.</source>
+ <translation>Der Wert des Attributs %1 muss vom Typ %2 sein, was bei %3 nicht der Fall ist.</translation>
</message>
<message>
- <location line="+135"/>
+ <location line="+75"/>
+ <source>The prefix %1 cannot be bound. By default, it is already bound to the namespace %2.</source>
+ <translation>Der Präfix %1 kann nicht gebunden werden. Er ist bereits per Vorgabe an den Namensraum %2 gebunden.</translation>
+ </message>
+ <message>
+ <location line="+312"/>
+ <source>A variable with name %1 has already been declared.</source>
+ <translation>Eine Variable des Namens %1 wurde bereits deklariert.</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>No value is available for the external variable with name %1.</source>
+ <translation>Es ist kein Wert für die externe Variable des Namens %1 verfügbar.</translation>
+ </message>
+ <message>
+ <location line="+96"/>
<source>A stylesheet function must have a prefixed name.</source>
<translation>Der Name einer Stylesheet-Funktion muss einen Präfix haben.</translation>
</message>
@@ -8085,14 +8675,19 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Der Namensraum %1 ist reserviert und kann daher von nutzerdefinierten Funktionen nicht verwendet werden (für diesen Zweck gibt es den vordefinierten Präfix %2).</translation>
</message>
<message>
- <location line="+285"/>
+ <location line="+106"/>
+ <source>An argument with name %1 has already been declared. Every argument name must be unique.</source>
+ <translation>Es wurde bereits ein Argument des Namens %1 deklariert. Argumentnamen müssen eindeutig sein.</translation>
+ </message>
+ <message>
+ <location line="+179"/>
<source>When function %1 is used for matching inside a pattern, the argument must be a variable reference or a string literal.</source>
- <translation>Bei der Verwendung der Funktion %1 zur Auswertung innerhalb eines Suchmusters muss das Argument eine Variablenreferenz oder ein String-Literal sein.</translation>
+ <translation>Bei der Verwendung der Funktion %1 zur Auswertung innerhalb eines Suchmusters muss das Argument eine Variablenreferenz oder ein Zeichenketten-Literal sein.</translation>
</message>
<message>
<location line="+11"/>
<source>In an XSL-T pattern, the first argument to function %1 must be a string literal, when used for matching.</source>
- <translation>Bei einem XSL-T-Suchmuster muss das erste Argument zur Funktion %1 bei der Verwendung zur Suche ein String-Literal sein.</translation>
+ <translation>Bei einem XSL-T-Suchmuster muss das erste Argument zur Funktion %1 bei der Verwendung zur Suche ein Zeichenketten-Literal sein.</translation>
</message>
<message>
<location line="+14"/>
@@ -8140,7 +8735,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Die Namen von Vorlagenparametern müssen eindeutig sein, %1 existiert bereits.</translation>
</message>
<message>
- <location line="-5773"/>
+ <location line="+462"/>
+ <source>No function with name %1 is available.</source>
+ <translation>Es ist keine Funktion des Namens %1 verfügbar.</translation>
+ </message>
+ <message>
+ <location line="-6235"/>
<source>%1 is not a valid numeric literal.</source>
<translation>%1 ist kein gültiger numerischer Literal.</translation>
</message>
@@ -8160,12 +8760,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Es wurde ein Sprachkonstrukt angetroffen, was in der aktuellen Sprache (%1) nicht erlaubt ist.</translation>
</message>
<message>
- <location line="+3804"/>
- <source>The prefix %1 can not be bound. By default, it is already bound to the namespace %2.</source>
- <translation>Der Präfix %1 kann nicht gebunden werden. Er ist bereits durch Vorgabe an den Namensraum %2 gebunden.</translation>
- </message>
- <message>
- <location line="+2698"/>
+ <location line="+6502"/>
<source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
<translation>Der Namensraum %1 kann nur an %2 gebunden werden. Dies ist bereits vordeklariert.</translation>
</message>
@@ -8175,7 +8770,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Der Präfix %1 kann nur an %2 gebunden werden. Dies ist bereits vordeklariert.</translation>
</message>
<message>
- <location line="+181"/>
+ <location line="+120"/>
+ <source>An attribute with name %1 has already appeared on this element.</source>
+ <translation>Das Element hat bereits ein Attribut des Namens %1.</translation>
+ </message>
+ <message>
+ <location line="+61"/>
<source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
<translation>Es wurde ein fehlerhafter direkter Element-Konstruktor gefunden. %1 endet mit %2.</translation>
</message>
@@ -8197,7 +8797,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location line="+76"/>
<source>%1 is not a valid name for a processing-instruction.</source>
- <translation>%1 ist kein gültiger Name für eine Prozessing-Instruktion.</translation>
+ <translation>%1 ist kein gültiger Name für eine Processing-Instruktion.</translation>
</message>
<message>
<location line="+188"/>
@@ -8239,11 +8839,6 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<source>Modulus division (%1) by zero (%2) is undefined.</source>
<translation>Die Modulo-Division (%1) durch Null (%2) ist nicht definiert.</translation>
</message>
- <message>
- <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="-24"/>
- <source>The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid.</source>
- <translation>%2 ist kein gültiger Zielname einer Processing-Anweisung, da dieser nicht %1 sein darf (ungeachtet der Groß/Kleinschreibung).</translation>
- </message>
<message numerus="yes">
<location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
<source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
@@ -8277,19 +8872,14 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Die Deklaration des Default-Namensraums muss vor Funktions-, Variablen- oder Optionsdeklaration erfolgen.</translation>
</message>
<message>
- <location line="-3458"/>
- <source>A template by name %1 has already been declared.</source>
- <translation>Es existiert bereits eine Vorlage des Namens %1.</translation>
- </message>
- <message>
- <location line="+3468"/>
+ <location line="+10"/>
<source>Namespace declarations must occur before function, variable, and option declarations.</source>
<translation>Namensraums-Deklarationen müssen vor Funktions- Variablen- oder Optionsdeklarationen stehen.</translation>
</message>
<message>
<location line="+11"/>
<source>Module imports must occur before function, variable, and option declarations.</source>
- <translation>Modul-Importe müssen vor Funktions- Variablen- oder Optionsdeklarationen stehen.</translation>
+ <translation>Modul-Importe müssen vor Funktions-, Variablen- oder Optionsdeklarationen stehen.</translation>
</message>
<message>
<location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+12"/>
@@ -8429,7 +9019,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location line="+31"/>
<source>At least one %1-element must occur inside %2.</source>
- <translation>In %2 muss mindenstens ein %1-Element stehen.</translation>
+ <translation>In %2 muss mindestens ein %1-Element stehen.</translation>
</message>
<message>
<location line="+58"/>
@@ -8887,7 +9477,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location line="+18"/>
<source>processContent of base wildcard must be weaker than derived wildcard.</source>
- <translation>Das &apos;processContent&apos;-Attribut des Basisuchmusters muss schwächer sein als das des abgeleiteten Suchmusters.</translation>
+ <translation>Das &apos;processContent&apos;-Attribut des Basissuchmusters muss schwächer sein als das des abgeleiteten Suchmusters.</translation>
</message>
<message>
<location line="+39"/>
@@ -8918,7 +9508,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</message>
<message>
<location line="+5"/>
- <source>Derived attribute %1 does not exists in the base definition.</source>
+ <source>Derived attribute %1 does not exist in the base definition.</source>
<translation>Das abgeleitete Attribut %1 existiert in der Basisdefinition nicht.</translation>
</message>
<message>
@@ -9011,7 +9601,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location line="+279"/>
<source>Content model of complex type %1 contains %2 element so it cannot be derived by extension from a non-empty type.</source>
- <translation>Das Inhaltsmodell des komplexen Typs %1enthält ein Element &apos;%2&apos;; es kann daher nicht durch Erweiterung von einem nichtleeren Typ abgeleitet werden.</translation>
+ <translation>Das Inhaltsmodell des komplexen Typs %1enthält ein Element &apos;%2&apos;; es kann daher nicht durch Erweiterung von einem Typ abgeleitet werden, der nicht leer ist.</translation>
</message>
<message>
<location line="+6"/>
@@ -9116,7 +9706,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location filename="../src/xmlpatterns/schema/qxsdparticlechecker.cpp" line="+165"/>
<source>Empty particle cannot be derived from non-empty particle.</source>
- <translation>Von einem nichtleeren Partikel kann kein leerer Partikel abgeleitet werden.</translation>
+ <translation>Es kann kein leerer Partikel von einem Partikel abgeleitet werden, der nicht leer ist.</translation>
</message>
<message>
<location line="+15"/>
@@ -9370,8 +9960,8 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</message>
<message>
<location line="+131"/>
- <source>Component with id %1 has been defined previously.</source>
- <translation>Die Komponente mit der Id %1 ist bereits definiert.</translation>
+ <source>Component with ID %1 has been defined previously.</source>
+ <translation>Es wurde bereits eine Komponente mit der ID %1 definiert.</translation>
</message>
<message>
<location line="+17"/>
@@ -9775,7 +10365,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<message>
<location line="+8"/>
<source>Attribute %1 contains invalid data: %2</source>
- <translation>Das Attribut %1 enthält ungültigeDaten: %2</translation>
+ <translation>Das Attribut %1 enthält ungültige Daten: %2</translation>
</message>
<message>
<location line="+8"/>
@@ -9784,11 +10374,16 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</message>
<message>
<location line="+6"/>
- <source>Fixed value constrained not allowed if element is nillable.</source>
- <translation>Eine feste Einschränkung des Werts ist nicht zulässig, wenn das Element &apos;nillable&apos; spezifiert.</translation>
+ <source>Fixed value constraint not allowed if element is nillable.</source>
+ <translation>Eine Beschränkung auf einen festen Wert ist nicht zulässig, wenn das Element &apos;nillable&apos; spezifiziert.</translation>
</message>
<message>
- <location line="+32"/>
+ <location line="+230"/>
+ <source>Element %1 cannot contain other elements, as it has a fixed content.</source>
+ <translation>Das Element %1 kann keine anderen Element enthalten, da sein Inhalt festgelegt ist.</translation>
+ </message>
+ <message>
+ <location line="-198"/>
<source>Specified type %1 is not validly substitutable with element type %2.</source>
<translation>Der angebenene Typ %1 kann nicht durch den Elementtyp %2 substituiert werden.</translation>
</message>
@@ -9832,12 +10427,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Das Element %1 enthält unzulässigen Textinhalt.</translation>
</message>
<message>
- <location line="+18"/>
- <source>Element %1 can not contain other elements, as it has a fixed content.</source>
- <translation>Das Element %1 darf kann keine Unterelemente haben, da es festen Inhalt enthält.</translation>
- </message>
- <message>
- <location line="+43"/>
+ <location line="+61"/>
<source>Element %1 is missing required attribute %2.</source>
<translation>Bei dem Element %1 fehlt ein erforderliches Attribut %2.</translation>
</message>
diff --git a/translations/qt_help_de.ts b/translations/qt_help_de.ts
index b1b7c76..f64e741 100644
--- a/translations/qt_help_de.ts
+++ b/translations/qt_help_de.ts
@@ -33,32 +33,52 @@
<name>QHelpCollectionHandler</name>
<message>
<location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
- <source>The collection file is not set up yet!</source>
- <translation>Die Katalogdatei ist noch nicht eingerichtet.</translation>
+ <source>The collection file &apos;%1&apos; is not set up yet!</source>
+ <translation>Die Katalogdatei &apos;%1&apos; ist noch nicht eingerichtet.</translation>
</message>
<message>
- <location line="+22"/>
+ <location line="+23"/>
<source>Cannot load sqlite database driver!</source>
<translation>Der Datenbanktreiber für SQLite kann nicht geladen werden.</translation>
</message>
<message>
<location line="+11"/>
- <location line="+48"/>
+ <location line="+49"/>
<source>Cannot open collection file: %1</source>
<translation>Katalogdatei kann nicht geöffnet werden: %1</translation>
</message>
<message>
- <location line="-39"/>
+ <location line="-40"/>
<source>Cannot create tables in file %1!</source>
<translation>In Datei %1 können keine Tabellen angelegt werden.</translation>
</message>
<message>
<location line="+16"/>
- <source>The specified collection file already exists!</source>
- <translation>Die angegebene Katalogdatei existiert bereits.</translation>
+ <source>The collection file &apos;%1&apos; already exists!</source>
+ <translation>Die Katalogdatei &apos;%1&apos; existiert bereits.</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+148"/>
+ <source>Unknown filter &apos;%1&apos;!</source>
+ <translation>Unbekannter Filter &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location line="+105"/>
+ <source>Invalid documentation file &apos;%1&apos;!</source>
+ <translation>Ungültige Dokumentationsdatei &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location line="+167"/>
+ <source>Cannot register namespace &apos;%1&apos;!</source>
+ <translation>Der Namensraum &apos;%1&apos; kann nicht registriert werden.</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Cannot open database &apos;%1&apos; to optimize!</source>
+ <translation>Die Datenbank &apos;%1&apos; kann nicht zur Optimierung geöffnet werden.</translation>
+ </message>
+ <message>
+ <location line="-438"/>
<source>Cannot create directory: %1</source>
<translation>Das Verzeichnis kann nicht angelegt werden: %1</translation>
</message>
@@ -68,12 +88,7 @@
<translation>Die Katalogdatei kann nicht kopiert werden: %1</translation>
</message>
<message>
- <location line="+119"/>
- <source>Unknown filter!</source>
- <translation>Unbekannter Filter.</translation>
- </message>
- <message>
- <location line="+55"/>
+ <location line="+174"/>
<source>Cannot register filter %1!</source>
<translation>Der Filter kann nicht registriert werden: %1</translation>
</message>
@@ -83,12 +98,7 @@
<translation>Die Dokumentationsdatei kann nicht geöffnet werden: %1</translation>
</message>
<message>
- <location line="+6"/>
- <source>Invalid documentation file!</source>
- <translation>Ungültige Dokumentationsdatei.</translation>
- </message>
- <message>
- <location line="+34"/>
+ <location line="+40"/>
<source>The namespace %1 was not registered!</source>
<translation>Der Namensraum %1 wurde nicht registriert.</translation>
</message>
@@ -97,16 +107,6 @@
<source>Namespace %1 already exists!</source>
<translation>Der Namensraum %1 existiert bereits.</translation>
</message>
- <message>
- <location line="+13"/>
- <source>Cannot register namespace!</source>
- <translation>Der Namensraum kann nicht registriert werden.</translation>
- </message>
- <message>
- <location line="+24"/>
- <source>Cannot open database to optimize!</source>
- <translation>Die Datenbank kann nicht zur Optimierung geöffnet werden.</translation>
- </message>
</context>
<context>
<name>QHelpDBReader</name>
@@ -120,7 +120,7 @@
<context>
<name>QHelpEngineCore</name>
<message>
- <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+524"/>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+523"/>
<source>The specified namespace does not exist!</source>
<translation>Der angegebene Namensraum existiert nicht.</translation>
</message>
@@ -128,7 +128,7 @@
<context>
<name>QHelpEngineCorePrivate</name>
<message>
- <location line="-402"/>
+ <location line="-401"/>
<source>Cannot open documentation file %1: %2!</source>
<translation>Die Dokumentationsdatei %1 kann nicht geöffnet werden: %2.</translation>
</message>
@@ -318,11 +318,6 @@
<context>
<name>QObject</name>
<message>
- <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/>
- <source>Untitled</source>
- <translation>Ohne Titel</translation>
- </message>
- <message>
<location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+85"/>
<source>Unknown token.</source>
<translation>Unbekanntes Token.</translation>