From 45f66384c560f75477f0554fa0dd5a48d0d8f503 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 22 Jul 2010 14:35:05 +0200 Subject: Added Maemo 6 to the X11 desktopEnvironment list DE_MAEMO6 is set when the rootwindow is MCompositor --- src/gui/kernel/qapplication_x11.cpp | 34 ++++++++++++++++++++++++++++++++++ src/gui/kernel/qt_x11_p.h | 1 + 2 files changed, 35 insertions(+) diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index a4cc5a3..a9fccb0 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -2334,6 +2334,40 @@ void qt_init(QApplicationPrivate *priv, int, X11->desktopEnvironment = DE_4DWM; break; } + + Window windowManagerWindow = XNone; + Atom typeReturned; + int formatReturned; + unsigned long nitemsReturned; + unsigned long unused; + unsigned char *data = 0; + if (XGetWindowProperty(QX11Info::display(), QX11Info::appRootWindow(), + ATOM(_NET_SUPPORTING_WM_CHECK), + 0, 1024, False, XA_WINDOW, &typeReturned, + &formatReturned, &nitemsReturned, &unused, &data) + == Success) { + if (typeReturned == XA_WINDOW && formatReturned == 32) + windowManagerWindow = *((Window*) data); + if (data) + XFree(data); + + if (windowManagerWindow != XNone) { + QString wmName; + Atom utf8atom = ATOM(UTF8_STRING); + if (XGetWindowProperty(QX11Info::display(), windowManagerWindow, ATOM(_NET_WM_NAME), + 0, 1024, False, utf8atom, &typeReturned, + &formatReturned, &nitemsReturned, &unused, &data) + == Success) { + if (typeReturned == utf8atom && formatReturned == 8) + wmName = QString::fromUtf8((const char*)data); + if (data) + XFree(data); + if (wmName == QLatin1String("MCompositor")) + X11->desktopEnvironment = DE_MAEMO6; + } + } + } + } while(0); if (data) diff --git a/src/gui/kernel/qt_x11_p.h b/src/gui/kernel/qt_x11_p.h index d62d9c3..60bcc51 100644 --- a/src/gui/kernel/qt_x11_p.h +++ b/src/gui/kernel/qt_x11_p.h @@ -338,6 +338,7 @@ enum DesktopEnvironment { DE_KDE, DE_GNOME, DE_CDE, + DE_MAEMO6, DE_4DWM }; -- cgit v0.12 From 7e8495a3d14bb5770fd2bdb81616d19e2e1d94af Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Tue, 2 Nov 2010 14:20:00 +0100 Subject: Cleanup Meego Compositor detection Make the code friendlier and rename the enum value to DE_MEEGO_COMPOSITOR Reviewed-by: Robert Griebl --- src/gui/kernel/qapplication_x11.cpp | 44 ++++++++++++++----------------------- src/gui/kernel/qt_x11_p.h | 2 +- 2 files changed, 18 insertions(+), 28 deletions(-) diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index a9fccb0..7c68170 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -2335,35 +2335,25 @@ void qt_init(QApplicationPrivate *priv, int, break; } - Window windowManagerWindow = XNone; - Atom typeReturned; - int formatReturned; - unsigned long nitemsReturned; - unsigned long unused; - unsigned char *data = 0; - if (XGetWindowProperty(QX11Info::display(), QX11Info::appRootWindow(), + if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(_NET_SUPPORTING_WM_CHECK), - 0, 1024, False, XA_WINDOW, &typeReturned, - &formatReturned, &nitemsReturned, &unused, &data) - == Success) { - if (typeReturned == XA_WINDOW && formatReturned == 32) - windowManagerWindow = *((Window*) data); - if (data) + 0, 1024, False, XA_WINDOW, &type, + &format, &length, &after, &data) == Success) { + if (type == XA_WINDOW && format == 32) { + Window windowManagerWindow = *((Window*) data); XFree(data); - - if (windowManagerWindow != XNone) { - QString wmName; - Atom utf8atom = ATOM(UTF8_STRING); - if (XGetWindowProperty(QX11Info::display(), windowManagerWindow, ATOM(_NET_WM_NAME), - 0, 1024, False, utf8atom, &typeReturned, - &formatReturned, &nitemsReturned, &unused, &data) - == Success) { - if (typeReturned == utf8atom && formatReturned == 8) - wmName = QString::fromUtf8((const char*)data); - if (data) - XFree(data); - if (wmName == QLatin1String("MCompositor")) - X11->desktopEnvironment = DE_MAEMO6; + data = 0; + + if (windowManagerWindow != XNone) { + Atom utf8atom = ATOM(UTF8_STRING); + if (XGetWindowProperty(QX11Info::display(), windowManagerWindow, ATOM(_NET_WM_NAME), + 0, 1024, False, utf8atom, &type, + &format, &length, &after, &data) == Success) { + if (type == utf8atom && format == 8) { + if (qstrcmp((const char *)data, "MCompositor") == 0) + X11->desktopEnvironment = DE_MEEGO_COMPOSITOR; + } + } } } } diff --git a/src/gui/kernel/qt_x11_p.h b/src/gui/kernel/qt_x11_p.h index 60bcc51..56c8094 100644 --- a/src/gui/kernel/qt_x11_p.h +++ b/src/gui/kernel/qt_x11_p.h @@ -338,7 +338,7 @@ enum DesktopEnvironment { DE_KDE, DE_GNOME, DE_CDE, - DE_MAEMO6, + DE_MEEGO_COMPOSITOR, DE_4DWM }; -- cgit v0.12 From f7048f6dc67d81ea557c43b61192aef0eafd9d98 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 22 Jul 2010 14:42:23 +0200 Subject: Added environment variable for style overriding. This is needed to run all autotests in a specified style by default. Reviewed By: Harald Fernengel --- src/gui/kernel/qapplication.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 6c4004e..a4ae46b 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -1430,10 +1430,18 @@ QStyle *QApplication::style() // Compile-time search for default style // QString style; - if (!QApplicationPrivate::styleOverride.isEmpty()) +#ifdef QT_BUILD_INTERNAL + QString envStyle = QString::fromLocal8Bit(qgetenv("QT_STYLE_OVERRIDE")); +#else + QString envStyle; +#endif + if (!QApplicationPrivate::styleOverride.isEmpty()) { style = QApplicationPrivate::styleOverride; - else + } else if (!envStyle.isEmpty()) { + style = envStyle; + } else { style = QApplicationPrivate::desktopStyleKey(); + } QStyle *&app_style = QApplicationPrivate::app_style; app_style = QStyleFactory::create(style); -- cgit v0.12 From 72b5609eb62125dcf9e5c83edb4dc743a255e964 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 22 Jul 2010 14:47:11 +0200 Subject: Added new auto test helper PlatformQuirks. In Future all autotests should use this class to determine, whether the platform has the capabilities needed for this test --- tests/auto/platformquirks.h | 122 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 tests/auto/platformquirks.h diff --git a/tests/auto/platformquirks.h b/tests/auto/platformquirks.h new file mode 100644 index 0000000..cdfe793 --- /dev/null +++ b/tests/auto/platformquirks.h @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef PLATFORMQUIRKS_H +#define PLATFORMQUIRKS_H + +#include + +#ifdef QT_GUI_LIB +#include +#endif + +#ifdef Q_WS_X11 +#include +#endif + +struct PlatformQuirks +{ + enum MediaFileTypes { + mp3, + wav, + ogg + }; + + /* On some platforms, libpng or libjpeg sacrifice precision for speed. + Esp. with NEON support, color values after decoding can be off by up + to three bytes. + */ + static inline bool isImageLoaderImprecise() + { +#ifdef Q_WS_MAEMO_5 + return true; +#endif +#ifdef Q_WS_X11 + if (X11->desktopEnvironment == DE_MAEMO6) + return true; +#endif + return false; + } + + /* Some windowing systems automatically maximize apps on startup (e.g. Maemo) + "Normal" fixed-sized windows do not work, the WM ignores their size settings. + */ + static inline bool isAutoMaximizing() + { +#ifdef Q_WS_MAEMO_5 + return true; +#endif +#ifdef Q_WS_X11 + if (X11->desktopEnvironment == DE_MAEMO6) + return true; +#endif + return false; + } + + static inline bool haveMouseCursor() + { +#ifdef Q_WS_MAEMO_5 + return false; +#endif +#ifdef Q_WS_X11 + if (X11->desktopEnvironment == DE_MAEMO6) + return false; +#endif + return true; + } + + /* On some systems an ogg codec is not installed by default. + The autotests have to know which fileType is the default on the system*/ + static inline MediaFileTypes defaultMediaFileType() + { +#ifdef Q_WS_MAEMO_5 + return PlatformQuirks::mp3; +#endif +#ifdef Q_WS_X11 + if (X11->desktopEnvironment == DE_MAEMO6) + return PlatformQuirks::mp3; +#endif + return PlatformQuirks::ogg; + } +}; + +#endif + -- cgit v0.12 From b375f4c0fd88c92e76c265198e55c7698c07a505 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Tue, 2 Nov 2010 14:46:02 +0100 Subject: Small cleanup of platformquirks header --- tests/auto/platformquirks.h | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/tests/auto/platformquirks.h b/tests/auto/platformquirks.h index cdfe793..06d23d7 100644 --- a/tests/auto/platformquirks.h +++ b/tests/auto/platformquirks.h @@ -54,12 +54,13 @@ struct PlatformQuirks { - enum MediaFileTypes { - mp3, - wav, - ogg + enum MediaFileTypes + { + mp3, + wav, + ogg }; - + /* On some platforms, libpng or libjpeg sacrifice precision for speed. Esp. with NEON support, color values after decoding can be off by up to three bytes. @@ -68,12 +69,12 @@ struct PlatformQuirks { #ifdef Q_WS_MAEMO_5 return true; -#endif -#ifdef Q_WS_X11 - if (X11->desktopEnvironment == DE_MAEMO6) - return true; -#endif +#elif defined(Q_WS_X11) + // ### this is a very bad assumption, we should really check the version of libjpeg + return X11->desktopEnvironment == DE_MEEGO_COMPOSITOR; +#else return false; +#endif } /* Some windowing systems automatically maximize apps on startup (e.g. Maemo) @@ -83,26 +84,24 @@ struct PlatformQuirks { #ifdef Q_WS_MAEMO_5 return true; -#endif -#ifdef Q_WS_X11 - if (X11->desktopEnvironment == DE_MAEMO6) - return true; -#endif +#elif defined(Q_WS_X11) + return X11->desktopEnvironment == DE_MEEGO_COMPOSITOR; +#else return false; +#endif } static inline bool haveMouseCursor() { #ifdef Q_WS_MAEMO_5 return false; -#endif -#ifdef Q_WS_X11 - if (X11->desktopEnvironment == DE_MAEMO6) - return false; -#endif +#elif defined(Q_WS_X11) + return X11->desktopEnvironment != DE_MEEGO_COMPOSITOR; +#else return true; +#endif } - + /* On some systems an ogg codec is not installed by default. The autotests have to know which fileType is the default on the system*/ static inline MediaFileTypes defaultMediaFileType() @@ -111,7 +110,8 @@ struct PlatformQuirks return PlatformQuirks::mp3; #endif #ifdef Q_WS_X11 - if (X11->desktopEnvironment == DE_MAEMO6) + // ### very bad assumption + if (X11->desktopEnvironment == DE_MEEGO_COMPOSITOR) return PlatformQuirks::mp3; #endif return PlatformQuirks::ogg; -- cgit v0.12 From 85467f12bae6d748ba5643f4eb518bd63cd80352 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Tue, 2 Nov 2010 14:52:28 +0100 Subject: use PlatformQuirks class for better testing --- tests/auto/qimagereader/tst_qimagereader.cpp | 36 ++++++++++++++++------------ 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp index 4b4bdd6..d213e8e 100644 --- a/tests/auto/qimagereader/tst_qimagereader.cpp +++ b/tests/auto/qimagereader/tst_qimagereader.cpp @@ -55,6 +55,8 @@ #include #include +#include "../platformquirks.h" + #if defined(Q_OS_SYMBIAN) # define SRCDIR "." #endif @@ -315,23 +317,27 @@ void tst_QImageReader::jpegRgbCmyk() QImage image1(prefix + QLatin1String("YCbCr_cmyk.jpg")); QImage image2(prefix + QLatin1String("YCbCr_cmyk.png")); - // first, do some obvious tests - QCOMPARE(image1.height(), image2.height()); - QCOMPARE(image1.width(), image2.width()); - QCOMPARE(image1.format(), image2.format()); - QCOMPARE(image1.format(), QImage::Format_RGB32); - - // compare all the pixels with a slack of 3. This ignores rounding errors in libjpeg/libpng - for (int h = 0; h < image1.height(); ++h) { - const uchar *s1 = image1.constScanLine(h); - const uchar *s2 = image2.constScanLine(h); - for (int w = 0; w < image1.width() * 4; ++w) { - if (*s1 != *s2) { - QVERIFY2(qAbs(*s1 - *s2) <= 3, qPrintable(QString("images differ in line %1, col %2 (image1: %3, image2: %4)").arg(h).arg(w).arg(*s1, 0, 16).arg(*s2, 0, 16))); + if (PlatformQuirks::isImageLoaderImprecise()) { + // first, do some obvious tests + QCOMPARE(image1.height(), image2.height()); + QCOMPARE(image1.width(), image2.width()); + QCOMPARE(image1.format(), image2.format()); + QCOMPARE(image1.format(), QImage::Format_RGB32); + + // compare all the pixels with a slack of 3. This ignores rounding errors in libjpeg/libpng + for (int h = 0; h < image1.height(); ++h) { + const uchar *s1 = image1.constScanLine(h); + const uchar *s2 = image2.constScanLine(h); + for (int w = 0; w < image1.width() * 4; ++w) { + if (*s1 != *s2) { + QVERIFY2(qAbs(*s1 - *s2) <= 3, qPrintable(QString("images differ in line %1, col %2 (image1: %3, image2: %4)").arg(h).arg(w).arg(*s1, 0, 16).arg(*s2, 0, 16))); + } + s1++; + s2++; } - s1++; - s2++; } + } else { + QCOMPARE(image1, image2); } } -- cgit v0.12 From 1b103adc6cb443428c5ca7833cafa6ab9da0fa37 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 22 Jul 2010 15:07:21 +0200 Subject: Fixed QColumnView autotests to use a dummy top level widget. This is needed for all platforms which are autoMaximizing top level widgets --- tests/auto/qcolumnview/tst_qcolumnview.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/tests/auto/qcolumnview/tst_qcolumnview.cpp b/tests/auto/qcolumnview/tst_qcolumnview.cpp index 1da8c5d..fbfdf87 100644 --- a/tests/auto/qcolumnview/tst_qcolumnview.cpp +++ b/tests/auto/qcolumnview/tst_qcolumnview.cpp @@ -398,9 +398,10 @@ void tst_QColumnView::scrollTo() QFETCH(bool, giveFocus); if (reverse) qApp->setLayoutDirection(Qt::RightToLeft); - ColumnView view; + QWidget topLevel; + ColumnView view(&topLevel); view.resize(200, 200); - view.show(); + topLevel.show(); view.scrollTo(QModelIndex(), QAbstractItemView::EnsureVisible); QCOMPARE(view.HorizontalOffset(), 0); @@ -718,13 +719,14 @@ void tst_QColumnView::moveGrip() QFETCH(bool, reverse); if (reverse) qApp->setLayoutDirection(Qt::RightToLeft); - ColumnView view; + QWidget topLevel; + ColumnView view(&topLevel); TreeModel model; view.setModel(&model); QModelIndex home = model.thirdLevel(); view.setCurrentIndex(home); view.resize(640, 200); - view.show(); + topLevel.show(); QTest::qWait(ANIMATION_DELAY); int columnNum = view.createdColumns.count() - 2; @@ -741,9 +743,9 @@ void tst_QColumnView::moveGrip() QAbstractItemView *column = qobject_cast(grip->parent()); int oldX = column->width(); - QCOMPARE(view.columnWidths()[columnNum], oldX); + QCOMPARE(view.columnWidths().value(columnNum), oldX); grip->moveGrip(10); - QCOMPARE(view.columnWidths()[columnNum], (oldX + (reverse ? -10 : 10))); + QCOMPARE(view.columnWidths().value(columnNum), (oldX + (reverse ? -10 : 10))); } void tst_QColumnView::doubleClick() @@ -889,12 +891,13 @@ void tst_QColumnView::rowDelegate() void tst_QColumnView::resize() { - ColumnView view; + QWidget topLevel; + ColumnView view(&topLevel); QDirModel model; view.setModel(&model); view.resize(200, 200); - view.show(); + topLevel.show(); QModelIndex home = model.index(QDir::homePath()).parent(); view.setCurrentIndex(home); QTest::qWait(ANIMATION_DELAY); -- cgit v0.12 From 185cf9f10500dc26a5fda44ca38ebeb470218cf3 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 22 Jul 2010 16:30:52 +0200 Subject: Fixed QWaitCondition autotest to use only 2 threads when running on linux and arm --- tests/auto/qwaitcondition/tst_qwaitcondition.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp b/tests/auto/qwaitcondition/tst_qwaitcondition.cpp index 5391591..ffc4730 100644 --- a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp +++ b/tests/auto/qwaitcondition/tst_qwaitcondition.cpp @@ -76,7 +76,7 @@ private slots: static const int iterations = 10; // Note: some tests rely on ThreadCount being multiple of 2 -#ifdef Q_OS_SOLARIS +#if defined(Q_OS_SOLARIS) || ( defined(Q_OS_LINUX) && defined(QT_ARCH_ARMV6) ) static const int ThreadCount = 4; #else static const int ThreadCount = 10; -- cgit v0.12 From affe4a42dea9c72bf220e7e57d427a79b6fd099f Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 22 Jul 2010 16:37:07 +0200 Subject: Fixed QTreeWidget autotest, to use a top level dummy widget --- tests/auto/qtreewidget/tst_qtreewidget.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/auto/qtreewidget/tst_qtreewidget.cpp b/tests/auto/qtreewidget/tst_qtreewidget.cpp index 1e37384..77d353d 100644 --- a/tests/auto/qtreewidget/tst_qtreewidget.cpp +++ b/tests/auto/qtreewidget/tst_qtreewidget.cpp @@ -3098,8 +3098,9 @@ void tst_QTreeWidget::task253109_itemHeight() void tst_QTreeWidget::task206367_duplication() { - QTreeWidget treeWidget; - treeWidget.show(); + QWidget topLevel; + QTreeWidget treeWidget(&topLevel); + topLevel.show(); treeWidget.resize(200, 200); treeWidget.setSortingEnabled(true); -- cgit v0.12 From 978c1c612aacde31cc294f5ba2ad1af6feeae61c Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 22 Jul 2010 16:43:17 +0200 Subject: Fixed QTextEdit autotest, to use top level dummy widgets --- tests/auto/qtextedit/tst_qtextedit.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/auto/qtextedit/tst_qtextedit.cpp b/tests/auto/qtextedit/tst_qtextedit.cpp index 101baa5..878579b 100644 --- a/tests/auto/qtextedit/tst_qtextedit.cpp +++ b/tests/auto/qtextedit/tst_qtextedit.cpp @@ -2111,6 +2111,7 @@ void tst_QTextEdit::setDocumentPreservesPalette() QPalette whitePal = ed->palette(); whitePal.setColor(QPalette::Active, QPalette::Text, "white"); + QVERIFY(whitePal != ed->palette()); ed->setPalette(whitePal); QVERIFY(whitePal.color(QPalette::Active, QPalette::Text) @@ -2155,7 +2156,8 @@ void tst_QTextEdit::pasteFromQt3RichText() void tst_QTextEdit::noWrapBackgrounds() { - QTextEdit edit; + QWidget topLevel; + QTextEdit edit(&topLevel); edit.setLineWrapMode(QTextEdit::NoWrap); QTextFrame *root = edit.document()->rootFrame(); @@ -2169,6 +2171,7 @@ void tst_QTextEdit::noWrapBackgrounds() edit.textCursor().setBlockFormat(format); edit.insertPlainText(QLatin1String(" \n \n \n \n")); edit.setFixedSize(100, 200); + topLevel.show(); QImage img = QPixmap::grabWidget(edit.viewport()).toImage(); QCOMPARE(img, img.mirrored(true, false)); -- cgit v0.12 From de9a3a8c71079e89173bea8029bbb4d0f3876bd5 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 22 Jul 2010 16:48:19 +0200 Subject: Fixed QTableView autotest to use a dummy toplevel widget. - Fixed some timing problems - Fixed mouseClick center --- tests/auto/qtableview/tst_qtableview.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/tests/auto/qtableview/tst_qtableview.cpp b/tests/auto/qtableview/tst_qtableview.cpp index 3e5d077..6c920c9 100644 --- a/tests/auto/qtableview/tst_qtableview.cpp +++ b/tests/auto/qtableview/tst_qtableview.cpp @@ -2591,9 +2591,10 @@ void tst_QTableView::scrollTo() QFETCH(int, expectedVerticalScroll); QtTestTableModel model(rowCount, columnCount); - QtTestTableView view; + QWidget toplevel; + QtTestTableView view(&toplevel); - view.show(); + toplevel.show(); // resizing to this size will ensure that there can ONLY_BE_ONE_CELL inside the view. QSize forcedSize(columnWidth * 2, rowHeight * 2); view.resize(forcedSize); @@ -2748,10 +2749,11 @@ void tst_QTableView::indexAt() QFETCH(int, expectedColumn); QtTestTableModel model(rowCount, columnCount); - QtTestTableView view; + QWidget toplevel; + QtTestTableView view(&toplevel); - view.show(); - QTest::qWaitForWindowShown(&view); + toplevel.show(); + QTest::qWaitForWindowShown(&toplevel); //some styles change the scroll mode in their polish view.setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); @@ -3657,20 +3659,23 @@ void tst_QTableView::mouseWheel() #ifdef Q_OS_WINCE QSKIP("Since different Windows CE versions sport different taskbars, we skip this test", SkipAll); #endif + QFETCH(int, scrollMode); QFETCH(int, delta); QFETCH(int, horizontalPositon); QFETCH(int, verticalPosition); QtTestTableModel model(100, 100); - QtTestTableView view; + QWidget topLevel; + QtTestTableView view(&topLevel); view.resize(500, 500); for (int r = 0; r < 100; ++r) view.setRowHeight(r, 50); for (int c = 0; c < 100; ++c) view.setColumnWidth(c, 100); - view.show(); - QTest::qWaitForWindowShown(&view); + topLevel.show(); + + QTest::qWaitForWindowShown(&topLevel); view.setModel(&model); @@ -3772,7 +3777,7 @@ void tst_QTableView::task191545_dragSelectRows() QRect cellRect = table.visualRect(model.index(3, 0)); QHeaderView *vHeader = table.verticalHeader(); QWidget *vHeaderVp = vHeader->viewport(); - QPoint rowPos(5, (cellRect.top() + cellRect.bottom()) / 2); + QPoint rowPos(cellRect.center()); QMouseEvent rowPressEvent(QEvent::MouseButtonPress, rowPos, Qt::LeftButton, Qt::NoButton, Qt::ControlModifier); qApp->sendEvent(vHeaderVp, &rowPressEvent); @@ -3851,6 +3856,7 @@ void tst_QTableView::task191545_dragSelectRows() QMouseEvent cellReleaseEvent(QEvent::MouseButtonRelease, cellPos, Qt::LeftButton, Qt::NoButton, Qt::ControlModifier); qApp->sendEvent(tableVp, &cellReleaseEvent); + QTest::qWait(200); for (int i = 0; i < 6; ++i) for (int j = 0; j < 6; ++j) { QModelIndex index = model.index(3 + i, 3 + j, table.rootIndex()); -- cgit v0.12 From b10d49dde4e793f380401900fddfc939d5ff20ba Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 08:41:08 +0200 Subject: Fixed QSplitter autotest to use a dummy toplevel widget. --- tests/auto/qsplitter/tst_qsplitter.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/auto/qsplitter/tst_qsplitter.cpp b/tests/auto/qsplitter/tst_qsplitter.cpp index e7b5dc7..7cb2b65 100644 --- a/tests/auto/qsplitter/tst_qsplitter.cpp +++ b/tests/auto/qsplitter/tst_qsplitter.cpp @@ -1230,7 +1230,8 @@ void tst_QSplitter::testShowHide() QSplitter *split = new QSplitter(Qt::Horizontal); - QWidget widget; + QWidget topLevel; + QWidget widget(&topLevel); widget.resize(400 + split->handleWidth(), 200); QVBoxLayout *lay=new QVBoxLayout(&widget); lay->setMargin(0); @@ -1240,7 +1241,7 @@ void tst_QSplitter::testShowHide() split->setSizes(QList() << 200 << 200); lay->addWidget(split); widget.setLayout(lay); - widget.show(); + topLevel.show(); QTest::qWait(100); @@ -1378,8 +1379,9 @@ class MyTextEdit : public QTextEdit void tst_QSplitter::task169702_sizes() { + QWidget topLevel; // Create two nested (non-collapsible) splitters - QSplitter* outerSplitter = new QSplitter(Qt::Vertical); + QSplitter* outerSplitter = new QSplitter(Qt::Vertical, &topLevel); outerSplitter->setChildrenCollapsible(false); QSplitter* splitter = new QSplitter(Qt::Horizontal, outerSplitter); splitter->setChildrenCollapsible(false); @@ -1396,12 +1398,12 @@ void tst_QSplitter::task169702_sizes() splitter->addWidget(new QTextEdit("Bar")); outerSplitter->setGeometry(100, 100, 500, 500); - outerSplitter->show(); + topLevel.show(); QTest::qWait(100); testW->m_iFactor++; testW->updateGeometry(); - QTest::qWait(100); + QTest::qWait(500);//100 is too fast for Maemo //Make sure the minimimSizeHint is respected QCOMPARE(testW->size().height(), testW->minimumSizeHint().height()); -- cgit v0.12 From 5034f1774413c78e1d99f4c5e18a6ff8acd8915f Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 08:59:28 +0200 Subject: Fixed QPrinter autotest, to use qreals for the margintest --- tests/auto/qprinter/tst_qprinter.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/auto/qprinter/tst_qprinter.cpp b/tests/auto/qprinter/tst_qprinter.cpp index e908961..fb9f8f0 100644 --- a/tests/auto/qprinter/tst_qprinter.cpp +++ b/tests/auto/qprinter/tst_qprinter.cpp @@ -596,12 +596,12 @@ void tst_QPrinter::testPageMargins_data() QTest::addColumn("bottom"); QTest::addColumn("unit"); - QTest::newRow("data0") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast(QPrinter::Millimeter); - QTest::newRow("data1") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast(QPrinter::Point); - QTest::newRow("data2") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast(QPrinter::Inch); - QTest::newRow("data3") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast(QPrinter::Pica); - QTest::newRow("data4") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast(QPrinter::Didot); - QTest::newRow("data5") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast(QPrinter::Cicero); + QTest::newRow("data0") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast(QPrinter::Millimeter); + QTest::newRow("data1") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast(QPrinter::Point); + QTest::newRow("data2") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast(QPrinter::Inch); + QTest::newRow("data3") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast(QPrinter::Pica); + QTest::newRow("data4") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast(QPrinter::Didot); + QTest::newRow("data5") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast(QPrinter::Cicero); } void tst_QPrinter::testPageMargins() -- cgit v0.12 From 8a74d2041e24a17e70e1a00d0cc3794250a13fed Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 09:01:27 +0200 Subject: Fixed QPlainTextEdit autotest to use the right size in the linewrap testcase. The framewith has to be also added to the minimum with, otherwise the test will fail when the current style has a bigger border. --- tests/auto/qplaintextedit/tst_qplaintextedit.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/qplaintextedit/tst_qplaintextedit.cpp index a6dd8be..99d11cc 100644 --- a/tests/auto/qplaintextedit/tst_qplaintextedit.cpp +++ b/tests/auto/qplaintextedit/tst_qplaintextedit.cpp @@ -880,6 +880,7 @@ void tst_QPlainTextEdit::lineWrapModes() // We thus need to make it wide enough to show something visible. int minimumWidth = 2 * ed->document()->documentMargin(); minimumWidth += ed->fontMetrics().width(QLatin1Char('a')); + minimumWidth += ed->frameWidth(); ed->resize(minimumWidth, 1000); QCOMPARE(lineCount(), 26); ed->setParent(0); -- cgit v0.12 From 46115a0b8d3de85170a2600b5abb81458dc263bf Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 09:05:31 +0200 Subject: Fixed the QMouseEvent_modal autotest. Added some waits, needed on slower platforms, like maemo --- tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp b/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp index 99a8913..694d65d 100644 --- a/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp +++ b/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp @@ -147,12 +147,14 @@ void tst_qmouseevent_modal::mousePressRelease() QVERIFY( w->d->count() == 0 ); QTest::mousePress( w->pb, Qt::LeftButton ); + QTest::qWait(200); QVERIFY( !w->d->isVisible() ); QVERIFY( w->d->count() == 1 ); QVERIFY( !w->pb->isDown() ); QTest::mousePress( w->pb, Qt::LeftButton ); + QTest::qWait(200); QVERIFY( !w->d->isVisible() ); QVERIFY( w->d->count() == 2 ); @@ -161,12 +163,14 @@ void tst_qmouseevent_modal::mousePressRelease() // With the current QWS mouse handling, the 3rd press would fail... QTest::mousePress( w->pb, Qt::LeftButton ); + QTest::qWait(200); QVERIFY( !w->d->isVisible() ); QVERIFY( w->d->count() == 3 ); QVERIFY( !w->pb->isDown() ); QTest::mousePress( w->pb, Qt::LeftButton ); + QTest::qWait(200); QVERIFY( !w->d->isVisible() ); QVERIFY( w->d->count() == 4 ); -- cgit v0.12 From 8b68c73d1fe916fafa1e0aa0c59ba3131ebd77cc Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 09:21:38 +0200 Subject: Fixed QMainWindow autotests, to skip an test, that makes no sense on maemo --- tests/auto/qmainwindow/tst_qmainwindow.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/auto/qmainwindow/tst_qmainwindow.cpp b/tests/auto/qmainwindow/tst_qmainwindow.cpp index c82c566..e3122c4 100644 --- a/tests/auto/qmainwindow/tst_qmainwindow.cpp +++ b/tests/auto/qmainwindow/tst_qmainwindow.cpp @@ -55,6 +55,7 @@ #include #include #include +#include "../platformquirks.h" //TESTED_FILES= @@ -1679,6 +1680,9 @@ void tst_QMainWindow::addToolbarAfterShow() void tst_QMainWindow::centralWidgetSize() { + if(PlatformQuirks::isAutoMaximizing()) + QSKIP("The platform is auto maximizing, so the test makes no sense", SkipAll);; + QMainWindow mainWindow; mainWindow.menuBar()->addMenu("menu"); -- cgit v0.12 From 4280dd6bf4831379eea17e145df1fabc6a9fb901 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 09:29:12 +0200 Subject: Fixed QLayout autotest to use a dummy toplevel widget. --- tests/auto/qlayout/tst_qlayout.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/auto/qlayout/tst_qlayout.cpp b/tests/auto/qlayout/tst_qlayout.cpp index c6fe3f0..a974a42 100644 --- a/tests/auto/qlayout/tst_qlayout.cpp +++ b/tests/auto/qlayout/tst_qlayout.cpp @@ -133,12 +133,13 @@ void tst_QLayout::geometry() // For QWindowsStyle we know that QWidgetItem::geometry() and QWidget::geometry() // should be the same. QApplication::setStyle(new QWindowsStyle); - QWidget w; + QWidget topLevel; + QWidget w(&topLevel); QVBoxLayout layout(&w); SizeHinterFrame widget(QSize(100,100)); layout.addWidget(&widget); QLayoutItem *item = layout.itemAt(0); - w.show(); + topLevel.show(); QApplication::processEvents(); QCOMPARE(item->geometry().size(), QSize(100,100)); -- cgit v0.12 From b5e984e2d220596dcc3770969c942bbcf6fdc9a5 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 09:32:08 +0200 Subject: Fixed QInputDialog autotest, to compare with the separator defined by the current locale --- tests/auto/qinputdialog/tst_qinputdialog.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/auto/qinputdialog/tst_qinputdialog.cpp b/tests/auto/qinputdialog/tst_qinputdialog.cpp index 5d03142..580c644 100644 --- a/tests/auto/qinputdialog/tst_qinputdialog.cpp +++ b/tests/auto/qinputdialog/tst_qinputdialog.cpp @@ -147,9 +147,10 @@ void testInvalidateAndRestore( QVERIFY(sbox->hasAcceptableInput()); QVERIFY(okButton->isEnabled()); QCOMPARE(sbox->value(), lastValidValue); + QLocale loc; QCOMPARE( normalizeNumericString(ledit->text()), - normalizeNumericString(QString("%1").arg(sbox->value()))); + normalizeNumericString(loc.toString(sbox->value()))); } template @@ -169,9 +170,10 @@ void testGetNumeric(QInputDialog *dialog, SpinBoxType * = 0, ValueType * = 0) QVERIFY(sbox->value() >= sbox->minimum()); QVERIFY(sbox->value() <= sbox->maximum()); QVERIFY(sbox->hasAcceptableInput()); + QLocale loc; QCOMPARE( normalizeNumericString(ledit->selectedText()), - normalizeNumericString(QString("%1").arg(sbox->value()))); + normalizeNumericString(loc.toString(sbox->value()))); QVERIFY(okButton->isEnabled()); const ValueType origValue = sbox->value(); @@ -185,7 +187,7 @@ void testGetNumeric(QInputDialog *dialog, SpinBoxType * = 0, ValueType * = 0) testTypingValue(sbox, okButton, "0.0"); testTypingValue(sbox, okButton, "foobar"); - testTypingValue(sbox, okButton, QString("%1").arg(origValue)); + testTypingValue(sbox, okButton, loc.toString(origValue)); } void testGetText(QInputDialog *dialog) -- cgit v0.12 From cb98eee3069549023973b422c5e32929d3a65c6d Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 09:38:05 +0200 Subject: Fixe QHeaderView autotest to use a dummy toplevel widget. --- tests/auto/qheaderview/tst_qheaderview.cpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/tests/auto/qheaderview/tst_qheaderview.cpp b/tests/auto/qheaderview/tst_qheaderview.cpp index da0a0bb..5252ec6 100644 --- a/tests/auto/qheaderview/tst_qheaderview.cpp +++ b/tests/auto/qheaderview/tst_qheaderview.cpp @@ -196,6 +196,7 @@ private slots: void QTBUG12268_hiddenMovedSectionSorting(); protected: + QWidget *topLevel; QHeaderView *view; QStandardItemModel *model; }; @@ -345,7 +346,8 @@ void tst_QHeaderView::cleanupTestCase() void tst_QHeaderView::init() { - view = new QHeaderView(Qt::Vertical); + topLevel = new QWidget(); + view = new QHeaderView(Qt::Vertical,topLevel); // Some initial value tests before a model is added QCOMPARE(view->length(), 0); QVERIFY(view->sizeHint() == QSize(0,0)); @@ -373,7 +375,8 @@ void tst_QHeaderView::init() QSignalSpy spy(view, SIGNAL(sectionCountChanged(int, int))); view->setModel(model); QCOMPARE(spy.count(), 1); - view->show(); + view->resize(200,200); + topLevel->show(); } void tst_QHeaderView::cleanup() @@ -508,7 +511,7 @@ void tst_QHeaderView::stretch() view->resize(viewSize); view->setStretchLastSection(true); QCOMPARE(view->stretchLastSection(), true); - view->show(); + topLevel->show(); QCOMPARE(view->width(), viewSize.width()); QCOMPARE(view->visualIndexAt(view->viewport()->height() - 5), 3); @@ -674,7 +677,7 @@ void tst_QHeaderView::visualIndexAt() QFETCH(QList, visual); view->setStretchLastSection(true); - view->show(); + topLevel->show(); for (int i = 0; i < hidden.count(); ++i) view->setSectionHidden(hidden.at(i), true); @@ -682,6 +685,8 @@ void tst_QHeaderView::visualIndexAt() for (int j = 0; j < from.count(); ++j) view->moveSection(from.at(j), to.at(j)); + QTest::qWait(100); + for (int k = 0; k < coordinate.count(); ++k) QCOMPARE(view->visualIndexAt(coordinate.at(k)), visual.at(k)); } @@ -696,7 +701,7 @@ void tst_QHeaderView::length() view->setFont(font); #endif view->setStretchLastSection(true); - view->show(); + topLevel->show(); //minimumSectionSize should be the size of the last section of the widget is not tall enough int length = view->minimumSectionSize(); @@ -708,7 +713,7 @@ void tst_QHeaderView::length() QCOMPARE(length, view->length()); view->setStretchLastSection(false); - view->show(); + topLevel->show(); QVERIFY(length != view->length()); @@ -759,7 +764,7 @@ void tst_QHeaderView::logicalIndexAt() QCOMPARE(view->logicalIndexAt(0), 0); QCOMPARE(view->logicalIndexAt(1), 0); - view->show(); + topLevel->show(); view->setStretchLastSection(true); // First item QCOMPARE(view->logicalIndexAt(0), 0); @@ -1062,7 +1067,7 @@ void tst_QHeaderView::resizeWithResizeModes() view->resizeSection(i, sections.at(i)); view->setResizeMode(i, (QHeaderView::ResizeMode)modes.at(i)); } - view->show(); + topLevel->show(); view->resize(size, size); for (int j = 0; j < expected.count(); ++j) QCOMPARE(view->sectionSize(j), expected.at(j)); @@ -1160,7 +1165,7 @@ void tst_QHeaderView::resizeSection() view->resize(400, 400); - view->show(); + topLevel->show(); view->setMovable(true); view->setStretchLastSection(false); @@ -2035,14 +2040,14 @@ void tst_QHeaderView::QTBUG7833_sectionClicked() QTest::mouseClick(tv.horizontalHeader()->viewport(), Qt::LeftButton, Qt::NoModifier, - QPoint(tv.horizontalHeader()->sectionViewportPosition(11) + 5, 5)); + QPoint(tv.horizontalHeader()->sectionViewportPosition(11) + tv.horizontalHeader()->sectionSize(11)/2, 5)); QCOMPARE(clickedSpy.count(), 1); QCOMPARE(pressedSpy.count(), 1); QCOMPARE(clickedSpy.at(0).at(0).toInt(), 11); QCOMPARE(pressedSpy.at(0).at(0).toInt(), 11); QTest::mouseClick(tv.horizontalHeader()->viewport(), Qt::LeftButton, Qt::NoModifier, - QPoint(tv.horizontalHeader()->sectionViewportPosition(8) + 5, 5)); + QPoint(tv.horizontalHeader()->sectionViewportPosition(8) + tv.horizontalHeader()->sectionSize(0)/2, 5)); QCOMPARE(clickedSpy.count(), 2); QCOMPARE(pressedSpy.count(), 2); @@ -2050,7 +2055,7 @@ void tst_QHeaderView::QTBUG7833_sectionClicked() QCOMPARE(pressedSpy.at(1).at(0).toInt(), 8); QTest::mouseClick(tv.horizontalHeader()->viewport(), Qt::LeftButton, Qt::NoModifier, - QPoint(tv.horizontalHeader()->sectionViewportPosition(0) + 5, 5)); + QPoint(tv.horizontalHeader()->sectionViewportPosition(0) + tv.horizontalHeader()->sectionSize(0)/2, 5)); QCOMPARE(clickedSpy.count(), 3); QCOMPARE(pressedSpy.count(), 3); -- cgit v0.12 From 410d46b1cd4da7efc87a9d7cac47f509e1658f03 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 10:04:09 +0200 Subject: Fixed QGripLayout autotest to use a dummy toplevel widget. --- tests/auto/qgridlayout/tst_qgridlayout.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tests/auto/qgridlayout/tst_qgridlayout.cpp b/tests/auto/qgridlayout/tst_qgridlayout.cpp index e0924de..ed6d635 100644 --- a/tests/auto/qgridlayout/tst_qgridlayout.cpp +++ b/tests/auto/qgridlayout/tst_qgridlayout.cpp @@ -52,6 +52,7 @@ #include #include "../../shared/util.h" +#include "../platformquirks.h" //TESTED_CLASS= //TESTED_FILES=gui/kernel/qlayout.cpp gui/kernel/qlayout.h @@ -678,6 +679,8 @@ void tst_QGridLayout::spacingsAndMargins() QApplication::setStyle(new Qt42Style); QWidget toplevel; + if(PlatformQuirks::isAutoMaximizing()) + toplevel.setWindowFlags(Qt::X11BypassWindowManagerHint); QVBoxLayout vbox(&toplevel); QGridLayout grid1; vbox.addLayout(&grid1); @@ -713,11 +716,12 @@ void tst_QGridLayout::spacingsAndMargins() toplevel.show(); toplevel.adjustSize(); QApplication::processEvents(); + QTest::qWaitForWindowShown(&toplevel); QSize topsize = toplevel.size(); QSize minimumsize = vbox.totalMinimumSize(); -#ifdef Q_WS_QWS +#if defined(Q_WS_QWS) if (topsize.width() < minimumsize.width() || topsize.height() < minimumsize.height()) QSKIP("The screen is too small to run this test case", SkipSingle); #endif @@ -1463,15 +1467,18 @@ void tst_QGridLayout::layoutSpacingImplementation() QFETCH(int, vSpacing); QFETCH(bool, customSubElementRect); + QWidget toplevel; + CustomLayoutStyle *style = new CustomLayoutStyle(); style->hspacing = hSpacing; style->vspacing = vSpacing; style->reimplementSubelementRect = customSubElementRect; QApplication::setStyle(style); + widget->setParent(&toplevel); widget->resize(widget->sizeHint()); - widget->show(); -#if defined(Q_WS_X11) - qt_x11_wait_for_window_manager(widget); // wait for the show + toplevel.show(); +#ifdef Q_WS_X11 + qt_x11_wait_for_window_manager(&toplevel); // wait for the show #endif QLayout *layout = widget->layout(); @@ -1482,8 +1489,6 @@ void tst_QGridLayout::layoutSpacingImplementation() //qDebug() << item->widget()->pos(); QCOMPARE(item->widget()->pos(), expectedpositions.at(pi)); } - delete widget; - } void tst_QGridLayout::spacing() -- cgit v0.12 From f7fe120e5cad8329f4b4a9bf9bc7fee0d5fbaf9a Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 10:27:19 +0200 Subject: Fixed QEventLoop autotest. Add a restriction in exec(). Only execute when NO_EVENTLOOP_EXCEPTIONS is not set --- tests/auto/qeventloop/tst_qeventloop.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/qeventloop/tst_qeventloop.cpp b/tests/auto/qeventloop/tst_qeventloop.cpp index 8c2ffd9..8331a5f 100644 --- a/tests/auto/qeventloop/tst_qeventloop.cpp +++ b/tests/auto/qeventloop/tst_qeventloop.cpp @@ -431,7 +431,7 @@ void tst_QEventLoop::exec() QCOMPARE(executor.returnCode, -1); } -#if !defined(QT_NO_EXCEPTIONS) && !defined(Q_OS_WINCE_WM) && !defined(Q_OS_SYMBIAN) +#if !defined(QT_NO_EXCEPTIONS) && !defined(Q_OS_WINCE_WM) && !defined(Q_OS_SYMBIAN) && !defined(NO_EVENTLOOP_EXCEPTIONS) // Windows Mobile cannot handle cross library exceptions // qobject.cpp will try to rethrow the exception after handling // which causes gwes.exe to crash -- cgit v0.12 From af082b6b515d45f905aab29e1b685e91bc6f50cf Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 10:49:32 +0200 Subject: Fixed QCalendarWidget autotest to use a dummy toplevel widget. Fixed the MousePress to the right position --- tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp index 042d8e0..01473d8 100644 --- a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp +++ b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp @@ -82,7 +82,8 @@ private slots: // Testing get/set functions void tst_QCalendarWidget::getSetCheck() { - QCalendarWidget object; + QWidget topLevel; + QCalendarWidget object(&topLevel); //horizontal header formats object.setHorizontalHeaderFormat(QCalendarWidget::NoHorizontalHeader); @@ -191,7 +192,7 @@ void tst_QCalendarWidget::buttonClickCheck() QCOMPARE(month, object.monthShown()); button = qFindChild(&object, "qt_calendar_yearbutton"); - QTest::mouseClick(button, Qt::LeftButton); + QTest::mouseClick(button, Qt::LeftButton, Qt::NoModifier, button->rect().center(), 2); QVERIFY(!button->isVisible()); QSpinBox *spinbox = qFindChild(&object, "qt_calendar_yearedit"); QTest::qWait(500); -- cgit v0.12 From 08864c3ec88abf5fdb782ffe972e2576fc703e8c Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 10:51:20 +0200 Subject: Fixed QBoxLayout autotest to use a dummy toplevel widget --- tests/auto/qboxlayout/tst_qboxlayout.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/auto/qboxlayout/tst_qboxlayout.cpp b/tests/auto/qboxlayout/tst_qboxlayout.cpp index c4acfdc..659f8a5 100644 --- a/tests/auto/qboxlayout/tst_qboxlayout.cpp +++ b/tests/auto/qboxlayout/tst_qboxlayout.cpp @@ -198,7 +198,8 @@ void tst_QBoxLayout::sizeConstraints() void tst_QBoxLayout::setGeometry() { - QWidget w; + QWidget toplevel; + QWidget w(&toplevel); QVBoxLayout *lay = new QVBoxLayout; lay->setMargin(0); lay->setSpacing(0); @@ -209,7 +210,7 @@ void tst_QBoxLayout::setGeometry() lay2->setAlignment(Qt::AlignRight); lay->addLayout(lay2); w.setLayout(lay); - w.show(); + toplevel.show(); QRect newGeom(0, 0, 70, 70); lay2->setGeometry(newGeom); -- cgit v0.12 From d16b01310af4f9f1ec8b82eb883863745a7c9204 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 10:53:47 +0200 Subject: Fixed QAbstractSlider autotest to use a dummy toplevel widget --- tests/auto/qabstractslider/tst_qabstractslider.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/tests/auto/qabstractslider/tst_qabstractslider.cpp b/tests/auto/qabstractslider/tst_qabstractslider.cpp index cf069db..cd41d05 100644 --- a/tests/auto/qabstractslider/tst_qabstractslider.cpp +++ b/tests/auto/qabstractslider/tst_qabstractslider.cpp @@ -55,6 +55,8 @@ class Slider : public QAbstractSlider { public: + Slider(QWidget *parent) + : QAbstractSlider(parent) {} using QAbstractSlider::setRepeatAction; using QAbstractSlider::repeatAction; }; @@ -95,6 +97,7 @@ private slots: private: void waitUntilTimeElapsed(const QTime& t, int ms); + QWidget *topLevel; Slider *slider; int previousAction; int reportedMinimum; @@ -113,7 +116,8 @@ Q_DECLARE_METATYPE(QPoint) void tst_QAbstractSlider::initTestCase() { - slider = new Slider; + topLevel = new QWidget; + slider = new Slider(topLevel); slider->setObjectName("testWidget"); slider->resize(100,100); slider->show(); @@ -129,7 +133,7 @@ void tst_QAbstractSlider::initTestCase() void tst_QAbstractSlider::cleanupTestCase() { - delete slider; + delete topLevel; } void tst_QAbstractSlider::actionTriggered(int action) @@ -735,7 +739,6 @@ void tst_QAbstractSlider::wheelEvent_data() << 100 // expected position after #endif << QPoint(1,1); - QTest::newRow("Different orientation") << 0 // initial position << 0 // minimum << 100 // maximum @@ -774,7 +777,6 @@ void tst_QAbstractSlider::wheelEvent_data() #endif << QPoint(0,0); - QTest::newRow("Inverted controls") << 50 // initial position << 0 // minimum << 100 // maximum @@ -924,6 +926,7 @@ void tst_QAbstractSlider::sliderPressedReleased() QFETCH(uint, subControl); QFETCH(int, expectedCount); + QWidget topLevel; QAbstractSlider *slider; switch (control) { default: @@ -931,11 +934,11 @@ void tst_QAbstractSlider::sliderPressedReleased() return; break; case QStyle::CC_Slider: - slider = new QSlider; + slider = new QSlider(&topLevel); slider->setLayoutDirection(Qt::LeftToRight); // Makes "upside down" much easier to compute break; case QStyle::CC_ScrollBar: - slider = new QScrollBar; + slider = new QScrollBar(&topLevel); break; } @@ -949,7 +952,7 @@ void tst_QAbstractSlider::sliderPressedReleased() QSignalSpy spy2(slider, SIGNAL(sliderReleased())); // Mac Style requires the control to be active to get the correct values... - slider->show(); + topLevel.show(); slider->activateWindow(); QStyleOptionSlider option; -- cgit v0.12 From 162ff4f01c5700da270f80f3e0decae11f42f6df Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 23 Jul 2010 10:54:38 +0200 Subject: Fixed QAbstractScrollArea autotest to use a dummy toplevel widget --- tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp b/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp index da83826..d6c4b53 100644 --- a/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp +++ b/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp @@ -353,12 +353,13 @@ void tst_QAbstractScrollArea::task214488_layoutDirection() void tst_QAbstractScrollArea::patternBackground() { - QScrollArea scrollArea; + QWidget topLevel; + QScrollArea scrollArea(&topLevel); scrollArea.resize(200, 200); QWidget widget; widget.resize(600, 600); scrollArea.setWidget(&widget); - scrollArea.show(); + topLevel.show(); QLinearGradient linearGrad(QPointF(250, 250), QPointF(300, 300)); linearGrad.setColorAt(0, Qt::yellow); -- cgit v0.12 From 65bad8e2c8894f23f47ff2b7418bcd1fc71d4602 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 4 Mar 2010 15:34:22 +0100 Subject: Fixed QFileInfo autotest to skip on NFS. Exported the isLikelyToBeNfs() function to skip the fileInfo Test on NFS. Otherwise the Test will fail, because the FileSystemTimes are not synchronized. --- src/corelib/io/qsettings.cpp | 8 ++++---- tests/auto/qfileinfo/tst_qfileinfo.cpp | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index 8ee42e7..e5d182e 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -134,7 +134,7 @@ QT_BEGIN_INCLUDE_NAMESPACE # include QT_END_INCLUDE_NAMESPACE -static bool isLikelyToBeNfs(int handle) +Q_AUTOTEST_EXPORT bool isLikelyToBeNfs(int handle) { struct statfs buf; if (fstatfs(handle, &buf) != 0) @@ -160,7 +160,7 @@ QT_END_INCLUDE_NAMESPACE # define AUTOFSNG_SUPER_MAGIC 0x7d92b1a0 # endif -static bool isLikelyToBeNfs(int handle) +Q_AUTOTEST_EXPORT bool isLikelyToBeNfs(int handle) { struct statfs buf; if (fstatfs(handle, &buf) != 0) @@ -177,7 +177,7 @@ QT_BEGIN_INCLUDE_NAMESPACE # include QT_END_INCLUDE_NAMESPACE -static bool isLikelyToBeNfs(int handle) +Q_AUTOTEST_EXPORT bool isLikelyToBeNfs(int handle) { struct statvfs buf; if (fstatvfs(handle, &buf) != 0) @@ -189,7 +189,7 @@ static bool isLikelyToBeNfs(int handle) #endif } #else -static inline bool isLikelyToBeNfs(int /* handle */) +Q_AUTOTEST_EXPORT inline bool isLikelyToBeNfs(int /* handle */) { return true; } diff --git a/tests/auto/qfileinfo/tst_qfileinfo.cpp b/tests/auto/qfileinfo/tst_qfileinfo.cpp index 208110a..0306bb6 100644 --- a/tests/auto/qfileinfo/tst_qfileinfo.cpp +++ b/tests/auto/qfileinfo/tst_qfileinfo.cpp @@ -70,6 +70,8 @@ # define SRCDIR "" #endif +extern bool isLikelyToBeNfs(int /* handle */); + //TESTED_CLASS= //TESTED_FILES= @@ -939,6 +941,8 @@ void tst_QFileInfo::fileTimes() QEXPECT_FAIL("longfile absolutepath", "Maximum total filepath cannot exceed 256 characters in Symbian", Abort); #endif QVERIFY(file.open(QFile::WriteOnly | QFile::Text)); + if(isLikelyToBeNfs(file.handle())) + QSKIP("This Test doesn't work on NFS", SkipAll); QTextStream ts(&file); ts << fileName << endl; } -- cgit v0.12 From efc4e9c3602d569a8437db52c09edd7fb6a6dc34 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Mon, 26 Jul 2010 15:45:54 +0200 Subject: Fixed QXmlQuery autotest to pass when qreal != double --- tests/auto/qxmlquery/tst_qxmlquery.cpp | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/tests/auto/qxmlquery/tst_qxmlquery.cpp b/tests/auto/qxmlquery/tst_qxmlquery.cpp index 2187aeb..e6c40b8 100644 --- a/tests/auto/qxmlquery/tst_qxmlquery.cpp +++ b/tests/auto/qxmlquery/tst_qxmlquery.cpp @@ -1197,9 +1197,15 @@ void tst_QXmlQuery::basicXQueryToQtTypeCheck() const expectedValues.append(QVariant()); /* xs:dayTimeDuration */ expectedValues.append(QVariant()); /* xs:yearMonthDuration */ - expectedValues.append(QVariant(double(3e3))); /* xs:float */ - expectedValues.append(QVariant(double(4e4))); /* xs:double */ - expectedValues.append(QVariant(double(2))); /* xs:decimal */ + if(sizeof(qreal) == sizeof(float)) {//ARM casts to Float not to double + expectedValues.append(QVariant(float(3e3))); /* xs:float */ + expectedValues.append(QVariant(float(4e4))); /* xs:double */ + expectedValues.append(QVariant(float(2))); /* xs:decimal */ + } else { + expectedValues.append(QVariant(double(3e3))); /* xs:float */ + expectedValues.append(QVariant(double(4e4))); /* xs:double */ + expectedValues.append(QVariant(double(2))); /* xs:decimal */ + } /* xs:integer and its sub-types. */ expectedValues.append(QVariant(qlonglong(16))); @@ -1347,10 +1353,17 @@ void tst_QXmlQuery::basicQtToXQueryTypeCheck() const QVERIFY(!item.isNull()); QVERIFY(item.isAtomicValue()); - QCOMPARE(item.toAtomicValue().toString(), - QLatin1String("4 true 3 654 7 41414141 C 2000-10-11Z 2001-09-10T01:02:03 " - "A QString http://example.com/ 5 6 true true true true true true true true true true " - "true true true")); + if(sizeof(qreal) == sizeof(float)) //ARM casts to Float not to double + QCOMPARE(item.toAtomicValue().toString(), + QLatin1String("4 true 3 654 7 41414141 C 2000-10-11Z 2001-09-10T01:02:03 " + "A QString http://example.com/ 5 6 true false false true true true true true true true " + "true true true")); + else + QCOMPARE(item.toAtomicValue().toString(), + QLatin1String("4 true 3 654 7 41414141 C 2000-10-11Z 2001-09-10T01:02:03 " + "A QString http://example.com/ 5 6 true true true true true true true true true true " + "true true true")); + } void tst_QXmlQuery::bindNode() const -- cgit v0.12 From 9967695bf224d6518fa411f0441e0605e61e0bf5 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Mon, 26 Jul 2010 16:15:47 +0200 Subject: Fixed QGraphicsEffect autotest to use platform quirks --- tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp index 07fa630..5315cd1 100644 --- a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp +++ b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp @@ -51,6 +51,7 @@ #include "../../shared/util.h" #include +#include "../platformquirks.h" //TESTED_CLASS= //TESTED_FILES= @@ -710,7 +711,10 @@ void tst_QGraphicsEffect::prepareGeometryChangeInvalidateCache() scene.addItem(item); QGraphicsView view(&scene); - view.show(); + if(PlatformQuirks::isAutoMaximizing()) + view.showFullScreen(); + else + view.show(); QTest::qWaitForWindowShown(&view); QTRY_COMPARE(item->nbPaint, 1); -- cgit v0.12 From 7a763f19996bc892a63d021e64c570cbfb13f391 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Tue, 27 Jul 2010 09:33:13 +0200 Subject: Fixed QTreeWidget autotest. Added qWaitForWindowShown() --- tests/auto/qtreewidget/tst_qtreewidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/qtreewidget/tst_qtreewidget.cpp b/tests/auto/qtreewidget/tst_qtreewidget.cpp index 77d353d..32bf557 100644 --- a/tests/auto/qtreewidget/tst_qtreewidget.cpp +++ b/tests/auto/qtreewidget/tst_qtreewidget.cpp @@ -464,6 +464,7 @@ void tst_QTreeWidget::editItem() QTreeWidget tree; populate(&tree, topLevelItems, new TreeItem(QStringList() << "1" << "2")); tree.show(); + QTest::qWaitForWindowShown(&tree); QSignalSpy itemChangedSpy( &tree, SIGNAL(itemChanged(QTreeWidgetItem*,int))); -- cgit v0.12 From 2eb6556bac03bde101e2135be1114d6835341678 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Tue, 27 Jul 2010 09:43:10 +0200 Subject: Fixed QTreeView autotest to use a dummy toplevel widget --- tests/auto/qtreeview/tst_qtreeview.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp index c7b53e9..3c2bf15 100644 --- a/tests/auto/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/qtreeview/tst_qtreeview.cpp @@ -2379,11 +2379,12 @@ void tst_QTreeView::extendedSelection() QFETCH(int, selectedCount); QStandardItemModel model(5, 2); - QTreeView view; + QWidget topLevel; + QTreeView view(&topLevel); view.resize(qMax(mousePressPos.x() * 2, 200), qMax(mousePressPos.y() * 2, 200)); view.setModel(&model); view.setSelectionMode(QAbstractItemView::ExtendedSelection); - view.show(); + topLevel.show(); QTest::mousePress(view.viewport(), Qt::LeftButton, 0, mousePressPos); QCOMPARE(view.selectionModel()->selectedIndexes().count(), selectedCount); } @@ -3280,9 +3281,10 @@ void tst_QTreeView::task220298_selectColumns() void tst_QTreeView::task224091_appendColumns() { QStandardItemModel *model = new QStandardItemModel(); - QTreeView *treeView = new QTreeView(); + QWidget* topLevel= new QWidget; + QTreeView *treeView = new QTreeView(topLevel); treeView->setModel(model); - treeView->show(); + topLevel->show(); treeView->resize(50,50); QTest::qWaitForWindowShown(treeView); @@ -3299,7 +3301,7 @@ void tst_QTreeView::task224091_appendColumns() QTRY_VERIFY(treeView->verticalScrollBar()->isVisible()); - delete treeView; + delete topLevel; delete model; } @@ -3758,7 +3760,8 @@ void tst_QTreeView::taskQTBUG_9216_setSizeAndUniformRowHeightsWrongRepaint() void tst_QTreeView::keyboardNavigationWithDisabled() { - QTreeView view; + QWidget topLevel; + QTreeView view(&topLevel); QStandardItemModel model(90, 0); for (int i = 0; i < 90; i ++) { model.setItem(i, new QStandardItem(QString::number(i))); @@ -3767,10 +3770,10 @@ void tst_QTreeView::keyboardNavigationWithDisabled() view.setModel(&model); view.resize(200, view.visualRect(model.index(0,0)).height()*10); - view.show(); - QApplication::setActiveWindow(&view); - QTest::qWaitForWindowShown(&view); - QTRY_VERIFY(view.isActiveWindow()); + topLevel.show(); + QApplication::setActiveWindow(&topLevel); + QTest::qWaitForWindowShown(&topLevel); + QTRY_VERIFY(topLevel.isActiveWindow()); view.setCurrentIndex(model.index(1, 0)); QTest::keyClick(view.viewport(), Qt::Key_Up); -- cgit v0.12 From 28b4eb0a10b922581f4f7c6a7cdc60383a35a578 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Tue, 27 Jul 2010 10:52:56 +0200 Subject: Fixed QListWidget autotest to use a dummy toplevel widget --- tests/auto/qlistwidget/tst_qlistwidget.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/auto/qlistwidget/tst_qlistwidget.cpp b/tests/auto/qlistwidget/tst_qlistwidget.cpp index eb3fb6b..990945d 100644 --- a/tests/auto/qlistwidget/tst_qlistwidget.cpp +++ b/tests/auto/qlistwidget/tst_qlistwidget.cpp @@ -1499,6 +1499,11 @@ void tst_QListWidget::itemWidget() class MyListWidget : public QListWidget { public: + MyListWidget(QWidget *parent=0) + : QListWidget(parent) + { + } + void paintEvent(QPaintEvent *e) { painted += e->region(); QListWidget::paintEvent(e); @@ -1513,14 +1518,16 @@ void tst_QListWidget::fastScroll() QSKIP("S60 style doesn't support fast scrolling", SkipAll); } - MyListWidget widget; + QWidget topLevel; + MyListWidget widget(&topLevel); for (int i = 0; i < 50; ++i) widget.addItem(QString("Item %1").arg(i)); - widget.show(); + topLevel.show(); // Make sure the widget gets the first full repaint. On // some WMs, we'll get two (first inactive exposure, then // active exposure. + QTest::qWaitForWindowShown(&widget); #ifdef Q_WS_X11 qt_x11_wait_for_window_manager(&widget); #endif @@ -1531,6 +1538,7 @@ void tst_QListWidget::fastScroll() QVERIFY(!itemSize.isEmpty()); QScrollBar *sbar = widget.verticalScrollBar(); + widget.setVerticalScrollMode(QAbstractItemView::ScrollPerItem); widget.painted = QRegion(); sbar->setValue(sbar->value() + sbar->singleStep()); QApplication::processEvents(); -- cgit v0.12 From 1409261805af661c0f19d109027d44ec04ddbfc4 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Tue, 27 Jul 2010 11:32:28 +0200 Subject: Fixed QGraphicsWidget autotest to use PlatformQuirks. --- tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp index 9d6def8..2368d59 100644 --- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp +++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp @@ -53,6 +53,7 @@ #include #include #include "../../shared/util.h" +#include "../platformquirks.h" class EventSpy : public QObject @@ -1111,6 +1112,10 @@ void tst_QGraphicsWidget::initStyleOption_data() // void initStyleOption(QStyleOption* option) const public void tst_QGraphicsWidget::initStyleOption() { +#ifdef Q_WS_MAEMO_5 + QSKIP("The test passes, but it doesn't work when the display is in energy saving mode", SkipAll); +#endif + QGraphicsScene scene; QGraphicsView view(&scene); view.show(); @@ -1773,6 +1778,9 @@ void tst_QGraphicsWidget::verifyFocusChain() void tst_QGraphicsWidget::updateFocusChainWhenChildDie() { +#ifdef Q_WS_MAEMO_5 + QSKIP("On Maemo 5 the Display Manager is shown on Window change, so the test won't work", SkipAll); +#endif QGraphicsScene scene; QGraphicsView view(&scene); view.show(); @@ -3144,7 +3152,10 @@ void tst_QGraphicsWidget::initialShow() MyGraphicsWidget *widget = new MyGraphicsWidget; QGraphicsView view(&scene); - view.show(); + if(PlatformQuirks::isAutoMaximizing()) + view.showFullScreen(); + else + view.show(); QTest::qWaitForWindowShown(&view); scene.addItem(widget); @@ -3186,7 +3197,7 @@ void tst_QGraphicsWidget::initialShow2() scene.addItem(widget); QGraphicsView view(&scene); - view.setWindowFlags(Qt::X11BypassWindowManagerHint); + view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint); view.show(); QTest::qWaitForWindowShown(&view); -- cgit v0.12 From 27e6214401970b809e0e594cccaa3b3bddad151a Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Tue, 27 Jul 2010 13:47:10 +0200 Subject: Fixed QButtonGroup autotest to run on Maemo --- tests/auto/qbuttongroup/tst_qbuttongroup.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp b/tests/auto/qbuttongroup/tst_qbuttongroup.cpp index a610a7f..1831e5d 100644 --- a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp +++ b/tests/auto/qbuttongroup/tst_qbuttongroup.cpp @@ -396,19 +396,20 @@ void tst_QButtonGroup::task106609() vbox->addWidget(radio2); buttons->addButton(radio3, 3); vbox->addWidget(radio3); - - radio1->setFocus(); - radio1->setChecked(true); dlg.show(); + QTest::qWaitForWindowShown(&dlg); qRegisterMetaType("QAbstractButton*"); QSignalSpy spy1(buttons, SIGNAL(buttonClicked(QAbstractButton*))); QSignalSpy spy2(buttons, SIGNAL(buttonClicked(int))); - QTestEventLoop::instance().enterLoop(1); QApplication::setActiveWindow(&dlg); QTRY_COMPARE(QApplication::activeWindow(), static_cast(&dlg)); + radio1->setFocus(); + radio1->setChecked(true); + QTestEventLoop::instance().enterLoop(1); + //qDebug() << "int:" << spy2.count() << "QAbstractButton*:" << spy1.count(); QCOMPARE(spy2.count(), 2); QCOMPARE(spy1.count(), 2); -- cgit v0.12 From 4dabd36fe0cd52dc297d2fa56c50917314c385a2 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Tue, 27 Jul 2010 14:20:53 +0200 Subject: Fixed QString autotest when QT_QLOCALE_USES_FCVT is set +/-nan tests fail when QT_QLOCALE_USES_FCVT is set Because the behavior of qstrtod and strtod of glibc differs --- tests/auto/qstring/tst_qstring.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp index 9df2a4d..16cf872 100644 --- a/tests/auto/qstring/tst_qstring.cpp +++ b/tests/auto/qstring/tst_qstring.cpp @@ -4433,8 +4433,10 @@ void tst_QString::nanAndInf() CHECK_NAN("nan ", true, true) CHECK_NAN("\t NAN", true, true) CHECK_NAN("\t NAN ", true, true) +#ifndef QT_QLOCALE_USES_FCVT //In case we use glibc this tests will fail CHECK_NAN("-nan", false, false) CHECK_NAN("+NAN", false, false) +#endif CHECK_NAN("NaN", true, true) CHECK_NAN("nAn", true, true) CHECK_NAN("NANe-10", false, false) -- cgit v0.12 From 09800d84d99c51941df8b15c2979af79ac750ee3 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Wed, 28 Jul 2010 10:24:18 +0200 Subject: Fixed QMenuBar autotest. Added mainwindow activation --- tests/auto/qmenubar/tst_qmenubar.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/auto/qmenubar/tst_qmenubar.cpp b/tests/auto/qmenubar/tst_qmenubar.cpp index cc9fb0c..392a4a0 100644 --- a/tests/auto/qmenubar/tst_qmenubar.cpp +++ b/tests/auto/qmenubar/tst_qmenubar.cpp @@ -338,6 +338,8 @@ void tst_QMenuBar::initTestCase_noQt3() initSimpleMenubar_noQt3(); mw->show(); + QTest::qWaitForWindowShown(mw); + mw->activateWindow(); menu1 = new QtTestSlot( mw ); menu2 = new QtTestSlot( mw ); -- cgit v0.12 From 07dfb4618fca86314334f331fe788f9a480ef6db Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Wed, 28 Jul 2010 13:18:50 +0200 Subject: Fixed QMenu autotest to use a dummy toplevel widget Added some waits --- tests/auto/qmenu/tst_qmenu.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp index 7065b13..84f1b94 100644 --- a/tests/auto/qmenu/tst_qmenu.cpp +++ b/tests/auto/qmenu/tst_qmenu.cpp @@ -298,15 +298,17 @@ void tst_QMenu::mouseActivation() #ifdef Q_OS_WINCE_WM QSKIP("We have a separate mouseActivation test for Windows mobile.", SkipAll); #endif - QMenu menu; + QWidget topLevel; + QMenu menu(&topLevel); + topLevel.show(); menu.addAction("Menu Action"); menu.show(); - QTest::mouseClick(&menu, Qt::LeftButton, 0, QPoint(5, 5), 300); + QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.rect().center(), 300); QVERIFY(!menu.isVisible()); //context menus can allways be accessed with right click except on windows menu.show(); - QTest::mouseClick(&menu, Qt::RightButton, 0, QPoint(5, 5), 300); + QTest::mouseClick(&menu, Qt::RightButton, 0, menu.rect().center(), 300); QVERIFY(!menu.isVisible()); #ifdef Q_OS_WIN @@ -466,9 +468,9 @@ void tst_QMenu::overrideMenuAction() m->addAction(aQuit); w.show(); + QTest::qWaitForWindowShown(&w); QApplication::setActiveWindow(&w); w.setFocus(); - QTest::qWaitForWindowShown(&w); QTRY_VERIFY(w.hasFocus()); //test of the action inside the menu @@ -504,6 +506,7 @@ void tst_QMenu::statusTip() w.addToolBar(&tb); w.show(); + QTest::qWaitForWindowShown(&w); QRect rect1 = tb.actionGeometry(&a); QToolButton *btn = qobject_cast(tb.childAt(rect1.center())); @@ -589,6 +592,8 @@ void tst_QMenu::tearOff() QVERIFY(menu->isTearOffEnabled()); widget.show(); + QTest::qWaitForWindowShown(&widget); + widget.activateWindow(); menu->popup(QPoint(0,0)); QTest::qWait(50); QVERIFY(!menu->isTearOffMenuVisible()); -- cgit v0.12 From 7c0b56d38541443657b8f99792830c0a06b4d558 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Wed, 28 Jul 2010 13:24:15 +0200 Subject: Fixed QListView autotest to use a dummy toplevel widget --- tests/auto/qlistview/tst_qlistview.cpp | 35 ++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/tests/auto/qlistview/tst_qlistview.cpp b/tests/auto/qlistview/tst_qlistview.cpp index 425ac89..523a3ab 100644 --- a/tests/auto/qlistview/tst_qlistview.cpp +++ b/tests/auto/qlistview/tst_qlistview.cpp @@ -334,7 +334,8 @@ void tst_QListView::cursorMove() int columns = 6; QStandardItemModel model(rows, columns); - QListView view; + QWidget topLevel; + QListView view(&topLevel); view.setModel(&model); for (int j = 0; j < columns; ++j) { @@ -358,7 +359,7 @@ void tst_QListView::cursorMove() view.setGridSize(cellsize); view.setViewMode(QListView::IconMode); view.doItemsLayout(); - view.show(); + topLevel.show(); QVector keymoves; keymoves << Qt::Key_Up << Qt::Key_Up << Qt::Key_Right << Qt::Key_Right << Qt::Key_Up @@ -1108,7 +1109,8 @@ void tst_QListView::selection() QFETCH(QRect, selectionRect); QFETCH(IntList, expectedItems); - PublicListView v; + QWidget topLevel; + PublicListView v(&topLevel); QtTestModel model; model.colCount = 1; model.rCount = itemCount; @@ -1142,7 +1144,7 @@ void tst_QListView::selection() v.resize(525,525); #endif - v.show(); + topLevel.show(); QTest::qWaitForWindowShown(&v); QApplication::processEvents(); @@ -1158,7 +1160,8 @@ void tst_QListView::selection() void tst_QListView::scrollTo() { - QListView lv; + QWidget topLevel; + QListView lv(&topLevel); QStringListModel model(&lv); QStringList list; list << "Short item 1"; @@ -1194,8 +1197,8 @@ void tst_QListView::scrollTo() model.setStringList(list); lv.setModel(&model); lv.setFixedSize(100, 200); - lv.show(); - QTest::qWaitForWindowShown(&lv); + topLevel.show(); + QTest::qWaitForWindowShown(&topLevel); //by default, the list view scrolls per item and has no wrapping QModelIndex index = model.index(6,0); @@ -1266,7 +1269,8 @@ void tst_QListView::scrollBarRanges() const int rowCount = 10; const int rowHeight = 20; - QListView lv; + QWidget topLevel; + QListView lv(&topLevel); QStringListModel model(&lv); QStringList list; for (int i = 0; i < rowCount; ++i) @@ -1278,7 +1282,7 @@ void tst_QListView::scrollBarRanges() TestDelegate *delegate = new TestDelegate(&lv); delegate->m_sizeHint = QSize(100, rowHeight); lv.setItemDelegate(delegate); - lv.show(); + topLevel.show(); for (int h = 30; h <= 210; ++h) { lv.resize(250, h); @@ -1354,14 +1358,15 @@ void tst_QListView::scrollBarAsNeeded() const int rowCounts[3] = {0, 1, 20}; - QListView lv; + QWidget topLevel; + QListView lv(&topLevel); lv.setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); lv.setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); lv.setFlow((QListView::Flow)flow); QStringListModel model(&lv); lv.setModel(&model); lv.resize(size); - lv.show(); + topLevel.show(); for (uint r = 0; r < sizeof(rowCounts)/sizeof(int); ++r) { QStringList list; @@ -1631,6 +1636,7 @@ void tst_QListView::task254449_draggingItemToNegativeCoordinates() list.setViewMode(QListView::IconMode); list.show(); QTest::qWaitForWindowShown(&list); + list.activateWindow(); class MyItemDelegate : public QStyledItemDelegate { @@ -1815,7 +1821,8 @@ void tst_QListView::taskQTBUG_2233_scrollHiddenItems() QFETCH(int, flow); const int rowCount = 200; - QListView view; + QWidget topLevel; + QListView view(&topLevel); QStringListModel model(&view); QStringList list; for (int i = 0; i < rowCount; ++i) @@ -1839,8 +1846,8 @@ void tst_QListView::taskQTBUG_2233_scrollHiddenItems() } //QTBUG-7929 should not crash - view.show(); - QTest::qWaitForWindowShown(&view); + topLevel.show(); + QTest::qWaitForWindowShown(&topLevel); QScrollBar *bar = view.flow() == QListView::TopToBottom ? view.verticalScrollBar() : view.horizontalScrollBar(); -- cgit v0.12 From 8c14359f0a43e3a7d196b39cb197d41ff6e4fbea Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 30 Jul 2010 09:25:12 +0200 Subject: Fixed QGraphicsItem autotest to use a dummy toplevel widget --- tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 67 ++++++++++++++++++-------- 1 file changed, 48 insertions(+), 19 deletions(-) diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index a3bd0b0..bfa634f 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -94,6 +94,8 @@ Q_DECLARE_METATYPE(QRectF) #define COMPARE_REGIONS QTRY_COMPARE #endif +#include "../platformquirks.h" + static QGraphicsRectItem staticItem; //QTBUG-7629, we should not crash at exit. static void sendMousePress(QGraphicsScene *scene, const QPointF &point, Qt::MouseButton button = Qt::LeftButton) @@ -272,7 +274,7 @@ class MyGraphicsView : public QGraphicsView public: int repaints; QRegion paintedRegion; - MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {} + MyGraphicsView(QGraphicsScene *scene, QWidget *parent=0) : QGraphicsView(scene,parent), repaints(0) {} void paintEvent(QPaintEvent *e) { paintedRegion += e->region(); @@ -4070,9 +4072,10 @@ void tst_QGraphicsItem::cursor() item1->setCursor(Qt::IBeamCursor); item2->setCursor(Qt::PointingHandCursor); - QGraphicsView view(&scene); + QWidget topLevel; + QGraphicsView view(&scene,&topLevel); view.setFixedSize(200, 100); - view.show(); + topLevel.show(); QTest::mouseMove(&view, view.rect().center()); QTest::qWait(25); @@ -4094,6 +4097,8 @@ void tst_QGraphicsItem::cursor() QApplication::sendEvent(view.viewport(), &event); } + if (!PlatformQuirks::haveMouseCursor()) + return; #if !defined(Q_OS_WINCE) QTest::qWait(250); #else @@ -4959,7 +4964,10 @@ void tst_QGraphicsItem::paint() QGraphicsView view(&scene); - view.show(); + if(PlatformQuirks::isAutoMaximizing()) + view.showFullScreen(); + else + view.show(); QTest::qWaitForWindowShown(&view); QApplication::processEvents(); #ifdef Q_OS_WIN32 @@ -5975,9 +5983,10 @@ void tst_QGraphicsItem::untransformable() QGraphicsScene scene(-500, -500, 1000, 1000); scene.addItem(item1); - QGraphicsView view(&scene); + QWidget topLevel; + QGraphicsView view(&scene,&topLevel); view.resize(300, 300); - view.show(); + topLevel.show(); view.scale(8, 8); view.centerOn(0, 0); @@ -6616,7 +6625,10 @@ void tst_QGraphicsItem::opacity2() scene.addItem(parent); MyGraphicsView view(&scene); - view.show(); + if(PlatformQuirks::isAutoMaximizing()) + view.showFullScreen(); + else + view.show(); QTest::qWaitForWindowShown(&view); QTRY_VERIFY(view.repaints >= 1); @@ -7050,6 +7062,7 @@ void tst_QGraphicsItem::tabChangesFocus() widget.setLayout(layout); widget.show(); QTest::qWaitForWindowShown(&widget); + QTest::qWait(2000); QTRY_VERIFY(scene.isActive()); @@ -7495,9 +7508,10 @@ void tst_QGraphicsItem::update() { QGraphicsScene scene; scene.setSceneRect(-100, -100, 200, 200); - MyGraphicsView view(&scene); + QWidget topLevel; + MyGraphicsView view(&scene,&topLevel); - view.show(); + topLevel.show(); #ifdef Q_WS_X11 qt_x11_wait_for_window_manager(&view); #endif @@ -7776,10 +7790,11 @@ void tst_QGraphicsItem::itemUsesExtendedStyleOption() MyStyleOptionTester *rect = new MyStyleOptionTester(QRect(0, 0, 100, 100)); scene.addItem(rect); rect->setPos(200, 200); - QGraphicsView view(&scene); - view.setWindowFlags(Qt::X11BypassWindowManagerHint); + QWidget topLevel; + QGraphicsView view(&scene, &topLevel); + topLevel.setWindowFlags(Qt::X11BypassWindowManagerHint); rect->startTrack = false; - view.show(); + topLevel.show(); QTest::qWaitForWindowShown(&view); QTest::qWait(60); rect->startTrack = true; @@ -7980,6 +7995,9 @@ void tst_QGraphicsItem::sorting_data() void tst_QGraphicsItem::sorting() { + if (PlatformQuirks::isAutoMaximizing()) + QSKIP("Skipped because Platform is auto maximizing", SkipAll); + _paintedItems.clear(); QGraphicsScene scene; @@ -8015,7 +8033,7 @@ void tst_QGraphicsItem::sorting() _paintedItems.clear(); view.viewport()->repaint(); -#ifdef Q_WS_MAC +#if defined(Q_WS_MAC) // There's no difference between repaint and update on the Mac, // so we have to process events here to make sure we get the event. QTest::qWait(100); @@ -8114,10 +8132,12 @@ void tst_QGraphicsItem::hitTestGraphicsEffectItem() QGraphicsScene scene; scene.setSceneRect(-100, -100, 200, 200); - QGraphicsView view(&scene); - view.show(); + QWidget toplevel; + + QGraphicsView view(&scene, &toplevel); + toplevel.show(); #ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&view); + qt_x11_wait_for_window_manager(&toplevel); #endif QTest::qWait(100); @@ -10721,7 +10741,10 @@ void tst_QGraphicsItem::QTBUG_6738_missingUpdateWithSetParent() scene.addItem(parent); MyGraphicsView view(&scene); - view.show(); + if(PlatformQuirks::isAutoMaximizing()) + view.showFullScreen(); + else + view.show(); QTest::qWaitForWindowShown(&view); QTRY_VERIFY(view.repaints > 0); @@ -10769,7 +10792,10 @@ void tst_QGraphicsItem::QT_2653_fullUpdateDiscardingOpacityUpdate() // ItemIgnoresTransformations, ItemClipsChildrenToShape, ItemIsSelectable parentGreen->setFlag(QGraphicsItem::ItemIgnoresTransformations); - view.show(); + if (PlatformQuirks::isAutoMaximizing()) + view.showFullScreen(); + else + view.show(); QTest::qWaitForWindowShown(&view); view.reset(); @@ -10954,7 +10980,10 @@ void tst_QGraphicsItem::doNotMarkFullUpdateIfNotInScene() item3->setParentItem(item2); item2->setParentItem(item); scene.addItem(item); - view.show(); + if(PlatformQuirks::isAutoMaximizing()) + view.showFullScreen(); + else + view.show(); QTest::qWaitForWindowShown(&view); QTRY_COMPARE(view.repaints, 1); QTRY_COMPARE(item->painted, 1); -- cgit v0.12 From eac4fdc9becea59573a945dff0294e7c3d17ea5b Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 30 Jul 2010 10:37:40 +0200 Subject: Fixed QGraphicsScene autotest to use a dummy toplevel widget --- tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp index 09cf4e2..6a2f849 100644 --- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp +++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp @@ -2694,12 +2694,14 @@ void tst_QGraphicsScene::render() QPixmap pix(30, 30); pix.fill(Qt::blue); - QGraphicsScene scene; + QGraphicsView view; + QGraphicsScene scene(&view); scene.addEllipse(QRectF(-10, -10, 20, 20), QPen(Qt::black), QBrush(Qt::white)); scene.addEllipse(QRectF(-2, -7, 4, 4), QPen(Qt::black), QBrush(Qt::yellow))->setZValue(1); QGraphicsPixmapItem *item = scene.addPixmap(pix); item->setZValue(2); item->setOffset(QPointF(3, 3)); + view.show(); scene.setSceneRect(scene.itemsBoundingRect()); @@ -2820,6 +2822,8 @@ void tst_QGraphicsScene::contextMenuEvent() QGraphicsView view(&scene); view.show(); + QTest::qWaitForWindowShown(&view); + view.activateWindow(); #ifdef Q_WS_X11 qt_x11_wait_for_window_manager(&view); #endif @@ -2851,12 +2855,14 @@ void tst_QGraphicsScene::contextMenuEvent_ItemIgnoresTransformations() item->setFlag(QGraphicsItem::ItemIgnoresTransformations); scene.addItem(item); - QGraphicsView view(&scene); + QWidget topLevel; + QGraphicsView view(&scene, &topLevel); view.resize(200, 200); - view.show(); + topLevel.show(); #ifdef Q_WS_X11 qt_x11_wait_for_window_manager(&view); #endif + QTest::qWaitForWindowShown(&topLevel); { QPoint pos(50, 50); -- cgit v0.12 From 8c696e362851c8d98e5895c8f7302f02a1ba685a Mon Sep 17 00:00:00 2001 From: Ralf Engels Date: Tue, 3 Aug 2010 14:31:11 +0200 Subject: Fix QGraphicsItems autotest --- tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index bfa634f..0b29410 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -7511,6 +7511,7 @@ void tst_QGraphicsItem::update() QWidget topLevel; MyGraphicsView view(&scene,&topLevel); + topLevel.resize(300, 300); topLevel.show(); #ifdef Q_WS_X11 qt_x11_wait_for_window_manager(&view); @@ -8135,6 +8136,7 @@ void tst_QGraphicsItem::hitTestGraphicsEffectItem() QWidget toplevel; QGraphicsView view(&scene, &toplevel); + toplevel.resize(300, 300); toplevel.show(); #ifdef Q_WS_X11 qt_x11_wait_for_window_manager(&toplevel); -- cgit v0.12 From 01956f9244bf6da45745a836333a9baf134c4075 Mon Sep 17 00:00:00 2001 From: Ralf Engels Date: Thu, 5 Aug 2010 14:07:55 +0200 Subject: Fix QListWidget test --- tests/auto/qlistwidget/tst_qlistwidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/qlistwidget/tst_qlistwidget.cpp b/tests/auto/qlistwidget/tst_qlistwidget.cpp index 990945d..6cfd6c5 100644 --- a/tests/auto/qlistwidget/tst_qlistwidget.cpp +++ b/tests/auto/qlistwidget/tst_qlistwidget.cpp @@ -1523,6 +1523,7 @@ void tst_QListWidget::fastScroll() for (int i = 0; i < 50; ++i) widget.addItem(QString("Item %1").arg(i)); + topLevel.resize(300, 300); // toplevel needs to be wide enough for the item topLevel.show(); // Make sure the widget gets the first full repaint. On // some WMs, we'll get two (first inactive exposure, then -- cgit v0.12 From 193e4fccf1f472a2ff9f6d914d4a27d1e39e568f Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 5 Aug 2010 13:16:44 +0200 Subject: Fixed QAccessability autotest to use a dummy toplevel widget --- tests/auto/qaccessibility/tst_qaccessibility.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp index cea259c..21a530e 100644 --- a/tests/auto/qaccessibility/tst_qaccessibility.cpp +++ b/tests/auto/qaccessibility/tst_qaccessibility.cpp @@ -2269,6 +2269,7 @@ void tst_QAccessibility::scrollBarTest() delete scrollBarInterface; delete scrollBar; + // Test that the rects are ok. { QScrollBar *scrollBar = new QScrollBar(Qt::Horizontal); @@ -2289,7 +2290,6 @@ void tst_QAccessibility::scrollBarTest() const QRect scrollBarRect = scrollBarInterface->rect(0); QVERIFY(scrollBarRect.isValid()); - // Verify that the sub-control rects are valid and inside the scrollBar rect. for (int i = LineUp; i <= LineDown; ++i) { const QRect testRect = scrollBarInterface->rect(i); @@ -3469,14 +3469,15 @@ void tst_QAccessibility::tableWidgetTest() { #ifdef QTEST_ACCESSIBILITY { - QTableWidget *w = new QTableWidget(8,4); + QWidget *topLevel = new QWidget; + QTableWidget *w = new QTableWidget(8,4,topLevel); for (int r = 0; r < 8; ++r) { for (int c = 0; c < 4; ++c) { w->setItem(r, c, new QTableWidgetItem(tr("%1,%2").arg(c).arg(r))); } } w->resize(100, 100); - w->show(); + topLevel->show(); #if defined(Q_WS_X11) qt_x11_wait_for_window_manager(w); QTest::qWait(100); @@ -3503,6 +3504,7 @@ void tst_QAccessibility::tableWidgetTest() delete view; delete client; delete w; + delete topLevel; } QTestAccessibility::clearEvents(); #else -- cgit v0.12 From 145126c11d71648fa5eeb1abcd023e418fde8022 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 5 Aug 2010 13:20:38 +0200 Subject: Fixed QColumnView autotest. Added an QApplication::processEvents --- tests/auto/qcolumnview/tst_qcolumnview.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/auto/qcolumnview/tst_qcolumnview.cpp b/tests/auto/qcolumnview/tst_qcolumnview.cpp index fbfdf87..d4caede 100644 --- a/tests/auto/qcolumnview/tst_qcolumnview.cpp +++ b/tests/auto/qcolumnview/tst_qcolumnview.cpp @@ -429,6 +429,8 @@ void tst_QColumnView::scrollTo() view.setFocus(Qt::OtherFocusReason); else view.clearFocus(); + + qApp->processEvents(); QTRY_COMPARE(view.hasFocus(), giveFocus); // scroll to the right int level = 0; -- cgit v0.12 From 4e063a7c79caf77cff9748ef4e799dbbc1c1346f Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 5 Aug 2010 13:25:35 +0200 Subject: Fixed QComboBox autotest to use a dummy toplevel widget --- tests/auto/qcombobox/tst_qcombobox.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/auto/qcombobox/tst_qcombobox.cpp b/tests/auto/qcombobox/tst_qcombobox.cpp index 1fcea9e..9614e1e 100644 --- a/tests/auto/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/qcombobox/tst_qcombobox.cpp @@ -163,7 +163,7 @@ protected slots: private: QComboBox *testWidget; - QDialog *parent; + QWidget *parent; QPushButton* ok; int editTextCount; QString editText; @@ -395,7 +395,7 @@ tst_QComboBox::~tst_QComboBox() void tst_QComboBox::initTestCase() { // Create the test class - parent = new QDialog(0); + parent = new QWidget(0, Qt::Window); parent->setObjectName("parent"); parent->resize(400, 400); testWidget = new QComboBox(parent); @@ -1914,7 +1914,8 @@ void tst_QComboBox::itemListPosition() //we test QFontComboBox because it has the specific behaviour to set a fixed size //to the list view - QFontComboBox combo; + QWidget topLevel; + QFontComboBox combo(&topLevel); //the code to get the avaialbe screen space is copied from QComboBox code const int scrNumber = QApplication::desktop()->screenNumber(&combo); @@ -1932,7 +1933,7 @@ void tst_QComboBox::itemListPosition() combo.move(screen.width()-combo.sizeHint().width(), 0); //puts the combo to the top-right corner - combo.show(); + topLevel.show(); //wait because the window manager can move the window if there is a right panel QTRY_VERIFY(combo.isVisible()); combo.showPopup(); @@ -2254,9 +2255,10 @@ void tst_QComboBox::noScrollbar() qApp->setStyleSheet(stylesheet); { - QComboBox comboBox; + QWidget topLevel; + QComboBox comboBox(&topLevel); comboBox.addItems(initialContent); - comboBox.show(); + topLevel.show(); comboBox.resize(200, comboBox.height()); QTRY_VERIFY(comboBox.isVisible()); comboBox.showPopup(); -- cgit v0.12 From 565db9695dc62038e25cd5207731ac4ad59c4a05 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 5 Aug 2010 13:40:08 +0200 Subject: Fixed QPathCliper autotest, to skip a test when qreal != double --- tests/auto/qpathclipper/tst_qpathclipper.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/auto/qpathclipper/tst_qpathclipper.cpp b/tests/auto/qpathclipper/tst_qpathclipper.cpp index 4dc12cb..98c67d0 100644 --- a/tests/auto/qpathclipper/tst_qpathclipper.cpp +++ b/tests/auto/qpathclipper/tst_qpathclipper.cpp @@ -1300,6 +1300,9 @@ void tst_QPathClipper::task251909() void tst_QPathClipper::qtbug3778() { + if (sizeof(double) != sizeof(qreal)) { + QSKIP("This test only works for qreal=double, otherwise ends in rounding errors", SkipAll); + } QPainterPath path1; path1.moveTo(200, 3.22409e-5); // e-5 and higher leads to a bug -- cgit v0.12 From ead0c87a27a48881cb8fcf8319eb14f53e8a9bb1 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 5 Aug 2010 13:43:13 +0200 Subject: Fixed QStyleSheetStyle autotest to use a dummy toplevel widget -use platform quirks to skip tests --- tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp index 04b1e79..0396408 100644 --- a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp +++ b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp @@ -48,6 +48,7 @@ #endif #include +#include "../platformquirks.h" //TESTED_CLASS= //TESTED_FILES= @@ -822,6 +823,8 @@ void tst_QStyleSheetStyle::focusColors() void tst_QStyleSheetStyle::hoverColors() { + if (!PlatformQuirks::haveMouseCursor()) + QSKIP("No mouse Cursor on this platform",SkipAll); QList widgets; widgets << new QPushButton("TESTING"); widgets << new QLineEdit("TESTING"); @@ -979,10 +982,11 @@ void tst_QStyleSheetStyle::background() void tst_QStyleSheetStyle::tabAlignement() { - QTabWidget tabWidget; + QWidget topLevel; + QTabWidget tabWidget(&topLevel); tabWidget.addTab(new QLabel("tab1"),"tab1"); tabWidget.resize(QSize(400,400)); - tabWidget.show(); + topLevel.show(); QTest::qWaitForWindowShown(&tabWidget); QTest::qWait(50); QTabBar *bar = qFindChild(&tabWidget); -- cgit v0.12 From a29718ed16885fd97caa8bdde9e949dd95b11e4b Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Thu, 5 Aug 2010 14:58:39 +0200 Subject: Fixed QMenuBar autotest. Changed window activation order. --- tests/auto/qmenubar/tst_qmenubar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/qmenubar/tst_qmenubar.cpp b/tests/auto/qmenubar/tst_qmenubar.cpp index 392a4a0..8dfb976 100644 --- a/tests/auto/qmenubar/tst_qmenubar.cpp +++ b/tests/auto/qmenubar/tst_qmenubar.cpp @@ -1702,8 +1702,8 @@ void tst_QMenuBar::taskQTBUG11823_crashwithInvisibleActions() QAction * a = menubar.addAction( "&a" ); menubar.show(); - QApplication::setActiveWindow(&menubar); QTest::qWaitForWindowShown(&menubar); + QApplication::setActiveWindow(&menubar); menubar.setActiveAction(m); QCOMPARE(menubar.activeAction(), m); QTest::keyClick(0, Qt::Key_Right); -- cgit v0.12 From fde9330d0bf8031159df524bba3e5baba339408b Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 6 Aug 2010 09:54:58 +0200 Subject: Fixed QMdiArea autotest to use a dummy toplevel widget. --- tests/auto/qmdiarea/tst_qmdiarea.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tests/auto/qmdiarea/tst_qmdiarea.cpp b/tests/auto/qmdiarea/tst_qmdiarea.cpp index f865738..6483f75 100644 --- a/tests/auto/qmdiarea/tst_qmdiarea.cpp +++ b/tests/auto/qmdiarea/tst_qmdiarea.cpp @@ -63,6 +63,7 @@ #include #include "../../shared/util.h" +#include "../platformquirks.h" static const Qt::WindowFlags DefaultWindowFlags = Qt::SubWindow | Qt::WindowSystemMenuHint @@ -468,6 +469,8 @@ void tst_QMdiArea::subWindowActivated2() #ifdef Q_WS_X11 qt_x11_wait_for_window_manager(&mdiArea); #endif + QTest::qWaitForWindowShown(&mdiArea); + mdiArea.activateWindow(); QTest::qWait(100); QTRY_COMPARE(spy.count(), 5); @@ -510,6 +513,9 @@ void tst_QMdiArea::subWindowActivated2() QCOMPARE(mdiArea.activeSubWindow(), activeSubWindow); spy.clear(); + if (PlatformQuirks::isAutoMaximizing()) + QSKIP("Platform is auto maximizing, so no showMinimized()", SkipAll); + // Check that we only emit _one_ signal and the active window // is unchanged after showMinimized/showNormal. mdiArea.showMinimized(); @@ -1119,9 +1125,10 @@ void tst_QMdiArea::currentSubWindow() void tst_QMdiArea::addAndRemoveWindows() { - QMdiArea workspace; + QWidget topLevel; + QMdiArea workspace(&topLevel); workspace.resize(800, 600); - workspace.show(); + topLevel.show(); #ifdef Q_WS_X11 qt_x11_wait_for_window_manager(&workspace); #endif @@ -1594,6 +1601,8 @@ void tst_QMdiArea::tileSubWindows() { QMdiArea workspace; workspace.resize(600,480); + if (PlatformQuirks::isAutoMaximizing()) + workspace.setWindowFlags(workspace.windowFlags() | Qt::X11BypassWindowManagerHint); workspace.show(); #ifdef Q_WS_X11 qt_x11_wait_for_window_manager(&workspace); @@ -1848,8 +1857,9 @@ void tst_QMdiArea::resizeMaximizedChildWindows() QFETCH(int, increment); QFETCH(int, windowCount); - QMdiArea workspace; - workspace.show(); + QWidget topLevel; + QMdiArea workspace(&topLevel); + topLevel.show(); #if defined(Q_WS_X11) qt_x11_wait_for_window_manager(&workspace); #endif @@ -2094,6 +2104,7 @@ void tst_QMdiArea::resizeTimer() #ifdef Q_WS_X11 qt_x11_wait_for_window_manager(&mdiArea); #endif + QTest::qWaitForWindowShown(&mdiArea); #ifndef Q_OS_WINCE int time = 250; -- cgit v0.12 From e8544e43a200d769cef1f1c8f9fe3d728192a5f9 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 6 Aug 2010 14:49:09 +0200 Subject: Fixed QGraphicsView autotest to use a dummy toplevel widget Fixed some conversion problems using qreal --- tests/auto/qgraphicsview/tst_qgraphicsview.cpp | 148 +++++++++++++++++-------- 1 file changed, 102 insertions(+), 46 deletions(-) diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp index af02c55..0a9633f 100644 --- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp @@ -69,8 +69,10 @@ #include #include #include +#include #include #include "../../shared/util.h" +#include "../platformquirks.h" //TESTED_CLASS= //TESTED_FILES= @@ -400,10 +402,13 @@ void tst_QGraphicsView::interactive() scene.addItem(item); QGraphicsView view(&scene); + if (PlatformQuirks::isAutoMaximizing()) + view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint); view.setFixedSize(300, 300); QCOMPARE(item->events.size(), 0); view.show(); QTest::qWaitForWindowShown(&view); + view.activateWindow(); QApplication::processEvents(); QTRY_COMPARE(item->events.size(), 1); // activate @@ -531,13 +536,15 @@ void tst_QGraphicsView::sceneRect() void tst_QGraphicsView::sceneRect_growing() { + QWidget toplevel; + QGraphicsScene scene; for (int i = 0; i < 100; ++i) scene.addText(QString("(0, %1)").arg((i - 50) * 20))->setPos(0, (i - 50) * 20); - QGraphicsView view(&scene); + QGraphicsView view(&scene, &toplevel); view.setFixedSize(200, 200); - view.show(); + toplevel.show(); int size = 200; scene.setSceneRect(-size, -size, size * 2, size * 2); @@ -854,15 +861,17 @@ void tst_QGraphicsView::dragMode_rubberBand() void tst_QGraphicsView::rubberBandSelectionMode() { + QWidget toplevel; + QGraphicsScene scene; QGraphicsRectItem *rect = scene.addRect(QRectF(10, 10, 80, 80)); rect->setFlag(QGraphicsItem::ItemIsSelectable); - QGraphicsView view(&scene); + QGraphicsView view(&scene, &toplevel); QCOMPARE(view.rubberBandSelectionMode(), Qt::IntersectsItemShape); view.setDragMode(QGraphicsView::RubberBandDrag); view.resize(120, 120); - view.show(); + toplevel.show(); // Disable mouse tracking to prevent the window system from sending mouse // move events to the viewport while we are synthesizing events. If @@ -1071,16 +1080,18 @@ void tst_QGraphicsView::matrix_combine() void tst_QGraphicsView::centerOnPoint() { + QWidget toplevel; + QGraphicsScene scene; scene.addEllipse(QRectF(-100, -100, 50, 50)); scene.addEllipse(QRectF(50, -100, 50, 50)); scene.addEllipse(QRectF(-100, 50, 50, 50)); scene.addEllipse(QRectF(50, 50, 50, 50)); - QGraphicsView view(&scene); + QGraphicsView view(&scene, &toplevel); view.setSceneRect(-400, -400, 800, 800); view.setFixedSize(100, 100); - view.show(); + toplevel.show(); int tolerance = 5; @@ -1155,6 +1166,8 @@ void tst_QGraphicsView::centerOnItem() void tst_QGraphicsView::ensureVisibleRect() { + QWidget toplevel; + QGraphicsScene scene; QGraphicsItem *items[4]; items[0] = scene.addEllipse(QRectF(-25, -25, 50, 50), QPen(Qt::black), QBrush(Qt::green)); @@ -1170,11 +1183,11 @@ void tst_QGraphicsView::ensureVisibleRect() QGraphicsItem *icon = scene.addEllipse(QRectF(-10, -10, 20, 20), QPen(Qt::black), QBrush(Qt::gray)); - QGraphicsView view(&scene); + QGraphicsView view(&scene, &toplevel); view.setSceneRect(-500, -500, 1000, 1000); view.setFixedSize(250, 250); - view.show(); - QTest::qWaitForWindowShown(&view); + toplevel.show(); + QTest::qWaitForWindowShown(&toplevel); for (int y = -100; y < 100; y += 25) { for (int x = -100; x < 100; x += 13) { @@ -1253,6 +1266,9 @@ void tst_QGraphicsView::fitInView() view.setFixedSize(400, 200); #endif + if (PlatformQuirks::isAutoMaximizing()) + view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint); + view.show(); view.fitInView(scene.itemsBoundingRect(), Qt::IgnoreAspectRatio); qApp->processEvents(); @@ -1432,10 +1448,12 @@ void tst_QGraphicsView::itemsInRect_cosmeticAdjust() QGraphicsView view(&scene); view.setOptimizationFlag(QGraphicsView::DontAdjustForAntialiasing, !adjustForAntialiasing); view.setRenderHint(QPainter::Antialiasing, adjustForAntialiasing); + if (PlatformQuirks::isAutoMaximizing()) + view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint); view.setFrameStyle(0); view.resize(300, 300); view.show(); - QTest::qWaitForWindowShown(&view) ; + QTest::qWaitForWindowShown(&view); QTRY_VERIFY(rect->numPaints > 0); rect->numPaints = 0; @@ -1614,7 +1632,8 @@ void tst_QGraphicsView::mapToScene() QGraphicsScene scene; scene.addPixmap(QPixmap("3D-Qt-1-2.png")); - QGraphicsView view; + QWidget topLevel; + QGraphicsView view(&topLevel); view.setScene(&scene); view.setSceneRect(-500, -500, 1000, 1000); #if defined(Q_OS_WINCE) @@ -1624,7 +1643,7 @@ void tst_QGraphicsView::mapToScene() #endif view.setFixedSize(viewSize); - view.show(); + topLevel.show(); QApplication::processEvents(); QVERIFY(view.isVisible()); QCOMPARE(view.size(), viewSize); @@ -1804,11 +1823,14 @@ void tst_QGraphicsView::mapFromScenePoint() } } { + QWidget toplevel; + QGraphicsScene scene(0, 0, 200, 200); scene.addRect(QRectF(0, 0, 200, 200), QPen(Qt::black, 1)); - QGraphicsView view(&scene); + QGraphicsView view(&scene, &toplevel); + view.ensurePolished(); view.resize(view.sizeHint()); - view.show(); + toplevel.show(); QCOMPARE(view.mapFromScene(0, 0), QPoint(0, 0)); QCOMPARE(view.mapFromScene(0.4, 0.4), QPoint(0, 0)); @@ -1826,12 +1848,13 @@ void tst_QGraphicsView::mapFromScenePoint() void tst_QGraphicsView::mapFromSceneRect() { QGraphicsScene scene; - QGraphicsView view(&scene); + QWidget topLevel; + QGraphicsView view(&scene,&topLevel); view.rotate(90); view.setFixedSize(200, 200); view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - view.show(); + topLevel.show(); QTest::qWait(25); QPolygon polygon; @@ -2030,6 +2053,9 @@ void tst_QGraphicsView::cursor() #if defined(Q_OS_WINCE) QSKIP("Qt/CE does not have regular cursor support", SkipAll); #endif + if (PlatformQuirks::haveMouseCursor()) + QSKIP("The Platform does not have regular cursor support", SkipAll); + QGraphicsScene scene; QGraphicsItem *item = scene.addRect(QRectF(-10, -10, 20, 20)); item->setCursor(Qt::IBeamCursor); @@ -2057,6 +2083,9 @@ void tst_QGraphicsView::cursor2() #if defined(Q_OS_WINCE) QSKIP("Qt/CE does not have regular cursor support", SkipAll); #endif + if (PlatformQuirks::haveMouseCursor()) + QSKIP("The Platform does not have regular cursor support", SkipAll); + QGraphicsScene scene; QGraphicsItem *item = scene.addRect(QRectF(-10, -10, 20, 20)); item->setCursor(Qt::IBeamCursor); @@ -2209,6 +2238,8 @@ class CustomView : public QGraphicsView Q_OBJECT public: CustomView(QGraphicsScene *s = 0) : QGraphicsView(s) {} + CustomView(QGraphicsScene *s, QWidget *parent) + : QGraphicsView(s, parent) {} QList lastUpdateRegions; bool painted; @@ -2227,8 +2258,11 @@ void tst_QGraphicsView::viewportUpdateMode() scene.setBackgroundBrush(Qt::red); CustomView view; - view.setFixedSize(500, 500); + QDesktopWidget desktop; + view.setFixedSize(QSize(500, 500).boundedTo(desktop.availableGeometry().size())); // 500 is too big for all common smartphones view.setScene(&scene); + if(PlatformQuirks::isAutoMaximizing()) + view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint); QCOMPARE(view.viewportUpdateMode(), QGraphicsView::MinimalViewportUpdate); // Show the view, and initialize our test. @@ -2303,17 +2337,20 @@ void tst_QGraphicsView::viewportUpdateMode() void tst_QGraphicsView::viewportUpdateMode2() { + QWidget toplevel; + // Create a view with viewport rect equal to QRect(0, 0, 200, 200). QGraphicsScene dummyScene; - CustomView view; + CustomView view(0, &toplevel); view.painted = false; view.setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate); view.setScene(&dummyScene); + view.ensurePolished(); // make sure we get the right content margins int left, top, right, bottom; view.getContentsMargins(&left, &top, &right, &bottom); view.resize(200 + left + right, 200 + top + bottom); - view.show(); - QTest::qWaitForWindowShown(&view); + toplevel.show(); + QTest::qWaitForWindowShown(&toplevel); QTest::qWait(50); QTRY_VERIFY(view.painted); const QRect viewportRect = view.viewport()->rect(); @@ -3222,15 +3259,17 @@ void tst_QGraphicsView::scrollAfterResize() #else QCommonStyle style; #endif - QGraphicsView view; + QWidget toplevel; + + QGraphicsView view(&toplevel); view.setStyle(&style); if (reverse) view.setLayoutDirection(Qt::RightToLeft); view.setSceneRect(-1000, -1000, 2000, 2000); view.resize(300, 300); - view.show(); - QTest::qWaitForWindowShown(&view); + toplevel.show(); + QTest::qWaitForWindowShown(&toplevel); view.horizontalScrollBar()->setValue(0); view.verticalScrollBar()->setValue(0); QCOMPARE(view.viewportTransform(), x1); @@ -3321,8 +3360,10 @@ void tst_QGraphicsView::moveItemWhileScrolling() void tst_QGraphicsView::centerOnDirtyItem() { - QGraphicsView view; - view.setWindowFlags(view.windowFlags() | Qt::WindowStaysOnTopHint); + QWidget toplevel; + + QGraphicsView view(&toplevel); + toplevel.setWindowFlags(view.windowFlags() | Qt::WindowStaysOnTopHint); view.resize(200, 200); QGraphicsScene *scene = new QGraphicsScene; @@ -3334,8 +3375,9 @@ void tst_QGraphicsView::centerOnDirtyItem() scene->addItem(item); view.centerOn(item); - view.show(); - QTest::qWaitForWindowShown(&view); + toplevel.show(); + QTest::qWaitForWindowShown(&toplevel); + QTest::qWait(50); QImage before(view.viewport()->size(), QImage::Format_ARGB32); view.viewport()->render(&before); @@ -3697,19 +3739,26 @@ void tst_QGraphicsView::update() { QFETCH(QRect, updateRect); + // some window manager resize the toplevel to max screen size + // so we must make our view a child (no layout!) of a dummy toplevel + // to ensure that it's really 200x200 pixels + QWidget toplevel; + // Create a view with viewport rect equal to QRect(0, 0, 200, 200). QGraphicsScene dummyScene; - CustomView view; + CustomView view(0, &toplevel); view.setScene(&dummyScene); + view.ensurePolished(); // must ensure polished to get content margins right int left, top, right, bottom; view.getContentsMargins(&left, &top, &right, &bottom); view.resize(200 + left + right, 200 + top + bottom); - view.show(); - QTest::qWaitForWindowShown(&view); + toplevel.show(); + QTest::qWaitForWindowShown(&toplevel); - QApplication::setActiveWindow(&view); + + QApplication::setActiveWindow(&toplevel); QApplication::processEvents(); - QTRY_COMPARE(QApplication::activeWindow(), static_cast(&view)); + QTRY_COMPARE(QApplication::activeWindow(), static_cast(&toplevel)); const QRect viewportRect = view.viewport()->rect(); QCOMPARE(viewportRect, QRect(0, 0, 200, 200)); @@ -3718,6 +3767,7 @@ void tst_QGraphicsView::update() const bool intersects = updateRect.intersects(viewportRect); QGraphicsViewPrivate *viewPrivate = static_cast(qt_widget_private(&view)); QTRY_COMPARE(viewPrivate->updateRect(updateRect), intersects); + QApplication::processEvents(); view.lastUpdateRegions.clear(); viewPrivate->processPendingUpdates(); @@ -3741,22 +3791,22 @@ void tst_QGraphicsView::update2_data() QTest::addColumn("changedConnected"); // Anti-aliased. - QTest::newRow("pen width: 0.0, antialiasing: true") << 0.0 << true << false; - QTest::newRow("pen width: 1.5, antialiasing: true") << 1.5 << true << false; - QTest::newRow("pen width: 2.0, antialiasing: true") << 2.0 << true << false; - QTest::newRow("pen width: 3.0, antialiasing: true") << 3.0 << true << false; + QTest::newRow("pen width: 0.0, antialiasing: true") << qreal(0.0) << true << false; + QTest::newRow("pen width: 1.5, antialiasing: true") << qreal(1.5) << true << false; + QTest::newRow("pen width: 2.0, antialiasing: true") << qreal(2.0) << true << false; + QTest::newRow("pen width: 3.0, antialiasing: true") << qreal(3.0) << true << false; // Aliased. - QTest::newRow("pen width: 0.0, antialiasing: false") << 0.0 << false << false; - QTest::newRow("pen width: 1.5, antialiasing: false") << 1.5 << false << false; - QTest::newRow("pen width: 2.0, antialiasing: false") << 2.0 << false << false; - QTest::newRow("pen width: 3.0, antialiasing: false") << 3.0 << false << false; + QTest::newRow("pen width: 0.0, antialiasing: false") << qreal(0.0) << false << false; + QTest::newRow("pen width: 1.5, antialiasing: false") << qreal(1.5) << false << false; + QTest::newRow("pen width: 2.0, antialiasing: false") << qreal(2.0) << false << false; + QTest::newRow("pen width: 3.0, antialiasing: false") << qreal(3.0) << false << false; // changed() connected - QTest::newRow("pen width: 0.0, antialiasing: false, changed") << 0.0 << false << true; - QTest::newRow("pen width: 1.5, antialiasing: true, changed") << 1.5 << true << true; - QTest::newRow("pen width: 2.0, antialiasing: false, changed") << 2.0 << false << true; - QTest::newRow("pen width: 3.0, antialiasing: true, changed") << 3.0 << true << true; + QTest::newRow("pen width: 0.0, antialiasing: false, changed") << qreal(0.0) << false << true; + QTest::newRow("pen width: 1.5, antialiasing: true, changed") << qreal(1.5) << true << true; + QTest::newRow("pen width: 2.0, antialiasing: false, changed") << qreal(2.0) << false << true; + QTest::newRow("pen width: 3.0, antialiasing: true, changed") << qreal(3.0) << true << true; } void tst_QGraphicsView::update2() @@ -4198,8 +4248,8 @@ void tst_QGraphicsView::task255529_transformationAnchorMouseAndViewportMargins() class VpGraphicsView: public QGraphicsView { public: - VpGraphicsView(QGraphicsScene *scene) - : QGraphicsView(scene) + VpGraphicsView(QGraphicsScene *scene, QWidget *parent=0) + : QGraphicsView(scene, parent) { setViewportMargins(8, 16, 12, 20); setTransformationAnchor(QGraphicsView::AnchorUnderMouse); @@ -4210,6 +4260,7 @@ void tst_QGraphicsView::task255529_transformationAnchorMouseAndViewportMargins() VpGraphicsView view(&scene); view.setWindowFlags(Qt::X11BypassWindowManagerHint); view.show(); + QTest::qWaitForWindowShown(&view); QTest::qWait(50); QPoint mouseViewPos(20, 20); @@ -4324,6 +4375,9 @@ void tst_QGraphicsView::QTBUG_4151_clipAndIgnore() view.setFrameStyle(0); view.resize(75, 75); view.show(); + QTest::qWaitForWindowShown(&view); + view.activateWindow(); + QTRY_COMPARE(QApplication::activeWindow(), (QWidget *)&view); QCOMPARE(view.items(view.rect()).size(), numItems); @@ -4357,6 +4411,8 @@ void tst_QGraphicsView::QTBUG_5859_exposedRect() scene.addItem(&item); QGraphicsView view(&scene); + if (PlatformQuirks::isAutoMaximizing()) + view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint); view.scale(4.15, 4.15); view.show(); QTest::qWaitForWindowShown(&view); -- cgit v0.12 From 3923448118240a21cc169ea54d21f7ae1b324af8 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Tue, 2 Nov 2010 15:56:10 +0100 Subject: Export isLikelyToBeNfs only if we have an internal build --- src/corelib/io/qsettings.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index e5d182e..c94ec7b 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -88,6 +88,12 @@ #define CSIDL_APPDATA 0x001a // \Application Data #endif +#ifdef Q_AUTOTEST_EXPORT +# define Q_AUTOTEST_EXPORT_HELPER Q_AUTOTEST_EXPORT +#else +# define Q_AUTOTEST_EXPORT_HELPER static +#endif + // ************************************************************************ // QConfFile @@ -134,7 +140,7 @@ QT_BEGIN_INCLUDE_NAMESPACE # include QT_END_INCLUDE_NAMESPACE -Q_AUTOTEST_EXPORT bool isLikelyToBeNfs(int handle) +Q_AUTOTEST_EXPORT_HELPER bool isLikelyToBeNfs(int handle) { struct statfs buf; if (fstatfs(handle, &buf) != 0) @@ -160,7 +166,7 @@ QT_END_INCLUDE_NAMESPACE # define AUTOFSNG_SUPER_MAGIC 0x7d92b1a0 # endif -Q_AUTOTEST_EXPORT bool isLikelyToBeNfs(int handle) +Q_AUTOTEST_EXPORT_HELPER bool isLikelyToBeNfs(int handle) { struct statfs buf; if (fstatfs(handle, &buf) != 0) @@ -177,7 +183,7 @@ QT_BEGIN_INCLUDE_NAMESPACE # include QT_END_INCLUDE_NAMESPACE -Q_AUTOTEST_EXPORT bool isLikelyToBeNfs(int handle) +Q_AUTOTEST_EXPORT_HELPER bool isLikelyToBeNfs(int handle) { struct statvfs buf; if (fstatvfs(handle, &buf) != 0) @@ -189,7 +195,7 @@ Q_AUTOTEST_EXPORT bool isLikelyToBeNfs(int handle) #endif } #else -Q_AUTOTEST_EXPORT inline bool isLikelyToBeNfs(int /* handle */) +Q_AUTOTEST_EXPORT_HELPER inline bool isLikelyToBeNfs(int /* handle */) { return true; } -- cgit v0.12 From c76f883b9c48acea35fe04cfe6dbf5036b224dd2 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Tue, 2 Nov 2010 15:58:09 +0100 Subject: fix isLikelyToBeNfs usage --- tests/auto/qfileinfo/tst_qfileinfo.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/auto/qfileinfo/tst_qfileinfo.cpp b/tests/auto/qfileinfo/tst_qfileinfo.cpp index 0306bb6..910ed97 100644 --- a/tests/auto/qfileinfo/tst_qfileinfo.cpp +++ b/tests/auto/qfileinfo/tst_qfileinfo.cpp @@ -70,7 +70,7 @@ # define SRCDIR "" #endif -extern bool isLikelyToBeNfs(int /* handle */); +extern Q_AUTOTEST_EXPORT bool isLikelyToBeNfs(int /* handle */); //TESTED_CLASS= //TESTED_FILES= @@ -941,8 +941,10 @@ void tst_QFileInfo::fileTimes() QEXPECT_FAIL("longfile absolutepath", "Maximum total filepath cannot exceed 256 characters in Symbian", Abort); #endif QVERIFY(file.open(QFile::WriteOnly | QFile::Text)); - if(isLikelyToBeNfs(file.handle())) +#ifdef Q_OS_UNIX + if (isLikelyToBeNfs(file.handle())) QSKIP("This Test doesn't work on NFS", SkipAll); +#endif QTextStream ts(&file); ts << fileName << endl; } -- cgit v0.12 From 561aeb6b8f7bc4ddb5e6d3e5cbc0ddc9cd344aa9 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Tue, 2 Nov 2010 16:53:38 +0100 Subject: Fix crash check the global network proxy for 0 before dereferencing Reviewed-by: Robert Griebl --- src/network/kernel/qnetworkproxy.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp index bc5a025..d9d5918 100644 --- a/src/network/kernel/qnetworkproxy.cpp +++ b/src/network/kernel/qnetworkproxy.cpp @@ -426,7 +426,8 @@ template<> void QSharedDataPointer::detach() QNetworkProxy::QNetworkProxy() : d(0) { - globalNetworkProxy()->init(); + if (QGlobalNetworkProxy *globalProxy = globalNetworkProxy()) + globalProx->init(); } /*! @@ -441,7 +442,8 @@ QNetworkProxy::QNetworkProxy(ProxyType type, const QString &hostName, quint16 po const QString &user, const QString &password) : d(new QNetworkProxyPrivate(type, hostName, port, user, password)) { - globalNetworkProxy()->init(); + if (QGlobalNetworkProxy *globalProxy = globalNetworkProxy()) + globalProx->init(); } /*! -- cgit v0.12 From b3ffd9aa12faeca6f35118182231a145f69f4ac7 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Wed, 3 Nov 2010 12:50:32 +0100 Subject: trivial: fix build --- src/network/kernel/qnetworkproxy.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp index d9d5918..84f9517 100644 --- a/src/network/kernel/qnetworkproxy.cpp +++ b/src/network/kernel/qnetworkproxy.cpp @@ -427,7 +427,7 @@ QNetworkProxy::QNetworkProxy() : d(0) { if (QGlobalNetworkProxy *globalProxy = globalNetworkProxy()) - globalProx->init(); + globalProxy->init(); } /*! @@ -443,7 +443,7 @@ QNetworkProxy::QNetworkProxy(ProxyType type, const QString &hostName, quint16 po : d(new QNetworkProxyPrivate(type, hostName, port, user, password)) { if (QGlobalNetworkProxy *globalProxy = globalNetworkProxy()) - globalProx->init(); + globalProxy->init(); } /*! -- cgit v0.12 From 0b9aa12659d5ea6b15fe72f963cc98db9af585fc Mon Sep 17 00:00:00 2001 From: David Boddie Date: Wed, 3 Nov 2010 16:39:25 +0100 Subject: Document the difference between +0.0 and -0.0 for QPointF and QSizeF. Reviewed-by: Robert Griebl --- src/corelib/tools/qpoint.cpp | 6 +++++- src/corelib/tools/qsize.cpp | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qpoint.cpp b/src/corelib/tools/qpoint.cpp index 66f06e9..c297709 100644 --- a/src/corelib/tools/qpoint.cpp +++ b/src/corelib/tools/qpoint.cpp @@ -438,8 +438,12 @@ QDebug operator<<(QDebug d, const QPointF &p) /*! \fn bool QPointF::isNull() const - Returns true if both the x and y coordinates are set to 0.0, + Returns true if both the x and y coordinates are set to +0.0; otherwise returns false. + + \note Since this function treats +0.0 and -0.0 differently, points + with zero-valued coordinates where either or both values have a + negative sign are not defined to be null points. */ diff --git a/src/corelib/tools/qsize.cpp b/src/corelib/tools/qsize.cpp index 20ac344..12287ab 100644 --- a/src/corelib/tools/qsize.cpp +++ b/src/corelib/tools/qsize.cpp @@ -492,9 +492,13 @@ QDebug operator<<(QDebug dbg, const QSize &s) { /*! \fn bool QSizeF::isNull() const - Returns true if both the width and height is 0; otherwise returns + Returns true if both the width and height are +0.0; otherwise returns false. + \note Since this function treats +0.0 and -0.0 differently, sizes with + zero width and height where either or both values have a negative + sign are not defined to be null sizes. + \sa isValid(), isEmpty() */ -- cgit v0.12 From 163443583b8242d11d2a821db1863c4773bc624c Mon Sep 17 00:00:00 2001 From: David Boddie Date: Wed, 3 Nov 2010 16:57:08 +0100 Subject: Doc: Mentioned default values for the BorderImage tile modes. --- src/declarative/graphicsitems/qdeclarativeborderimage.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp index c58a08d..649c8fb 100644 --- a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp @@ -361,6 +361,8 @@ QDeclarativeScaleGrid *QDeclarativeBorderImage::border() \o BorderImage.Repeat - Tile the image until there is no more space. May crop the last image. \o BorderImage.Round - Like Repeat, but scales the images down to ensure that the last image is not cropped. \endlist + + The default tile mode for each property is BorderImage.Stretch. */ QDeclarativeBorderImage::TileMode QDeclarativeBorderImage::horizontalTileMode() const { -- cgit v0.12 From 9e8083d09954c9886565bcd122fd3c6e0f95a030 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Wed, 3 Nov 2010 17:08:28 +0100 Subject: Doc: Added more instructions to help with device file permissions. --- doc/src/platforms/emb-pointer.qdoc | 7 +++++-- doc/src/snippets/code/doc_src_emb-pointer.qdoc | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/src/platforms/emb-pointer.qdoc b/doc/src/platforms/emb-pointer.qdoc index 22935b4..81e532f 100644 --- a/doc/src/platforms/emb-pointer.qdoc +++ b/doc/src/platforms/emb-pointer.qdoc @@ -186,8 +186,11 @@ device file. Some drivers also require write access to the device file. For instance, if you have specified the mouse driver with \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 11 - then examine the permissions of the device file by entering the following - command in a console: + then examine the permissions of the device file by entering the + following command in a console: + \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc show permissions + Change the permissions of the device file, if necessary, in the following + way: \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 12 If the device file is actually a symbolic link to another file, you must diff --git a/doc/src/snippets/code/doc_src_emb-pointer.qdoc b/doc/src/snippets/code/doc_src_emb-pointer.qdoc index d333c90..b051a98 100644 --- a/doc/src/snippets/code/doc_src_emb-pointer.qdoc +++ b/doc/src/snippets/code/doc_src_emb-pointer.qdoc @@ -104,6 +104,10 @@ QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mouse0 //! [11] +//! [show permissions] +ls -l /dev/input/mouse0 +//! [show permissions] + //! [12] chmod a+rw /dev/input/mouse0 //! [12] -- cgit v0.12 From deb2ace2a31ae9881ef335f0f6c4f523879f01f9 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 3 Nov 2010 17:22:40 +0100 Subject: Doc: using pointer member variables and language change Reviewed-by: Friedemann Kleint Reviewed-by: Martin Smith --- doc/src/development/designer-manual.qdoc | 156 ++++++++++++++++++++++++------- 1 file changed, 124 insertions(+), 32 deletions(-) diff --git a/doc/src/development/designer-manual.qdoc b/doc/src/development/designer-manual.qdoc index b30a700..df82fba 100644 --- a/doc/src/development/designer-manual.qdoc +++ b/doc/src/development/designer-manual.qdoc @@ -1769,37 +1769,54 @@ pixmap property in the property editor. \title Using a Designer UI File in Your Application - With Qt's integrated build tools, \l{qmake Manual}{qmake} and \l uic, the - code for user interface components created with \QD is automatically - generated when the rest of your application is built. Forms can be included - and used directly from your application. Alternatively, you can use them to - extend subclasses of standard widgets. These forms can be processed at - compile time or at run time, depending on the approach used. + Qt Designer UI files represent the widget tree of the form in XML format. The + forms can be processed: + \list + \o \l{Compile Time Form Processing}{At compile time}, which means that forms + are converted to C++ code that can be compiled. + \o \l{Run Time Form Processing}{At runtime}, which means that forms are processed + by the QUiLoader class that dynamically constructs the widget tree while + parsing the XML file. + \endlist \tableofcontents \section1 Compile Time Form Processing + You create user interface components with \QD and use Qt's integrated build tools, + \l{qmake Manual}{qmake} and \l{User Interface Compiler (uic)}{uic}, to generate code + for them when the application is built. The generated code contains the form's user + interface object. It is a C++ struct that contains: + + \list + \o Pointers to the form's widgets, layouts, layout items, + button groups, and actions. + \o A member function called \c setupUi() to build the widget tree + on the parent widget. + \o A member function called \c retranslateUi() that handles the + translation of the string properties of the form. For more information, + see \l{Reacting to Language Changes}. + \endlist + + The generated code can be included in your application and used directly from + it. Alternatively, you can use it to extend subclasses of standard widgets. + A compile time processed form can be used in your application with one of the following approaches: \list - \o The Direct Approach: you construct a widget to use as a placeholder + \o \l{The Direct Approach}: you construct a widget to use as a placeholder for the component, and set up the user interface inside it. - \o The Single Inheritance Approach: you subclass the form's base class + \o \l{The Single Inheritance Approach}: you subclass the form's base class (QWidget or QDialog, for example), and include a private instance of the form's user interface object. - \o The MultipleInheritance Approach: you subclass both the form's base + \o \l{The Multiple Inheritance Approach}: you subclass both the form's base class and the form's user interface object. This allows the widgets defined in the form to be used directly from within the scope of the subclass. \endlist - - \section2 The Direct Approach - - To demonstrate how to use user interface (UI) files straight from - \QD, we create a simple Calculator Form application. This is based on the + To demonstrate, we create a simple Calculator Form application. It is based on the original \l{Calculator Form Example}{Calculator Form} example. The application consists of one source file, \c main.cpp and a UI @@ -1817,15 +1834,18 @@ pixmap property in the property editor. The special feature of this file is the \c FORMS declaration that tells \c qmake which files to process with \c uic. In this case, the \c calculatorform.ui file is used to create a \c ui_calculatorform.h file - that can be used by any file listed in the \c SOURCES declaration. To - ensure that \c qmake generates the \c ui_calculatorform.h file, we need to - include it in a file listed in \c SOURCES. Since we only have \c main.cpp, - we include it there: + that can be used by any file listed in the \c SOURCES declaration. - \snippet doc/src/snippets/uitools/calculatorform/main.cpp 0 + \note You can use Qt Creator to create the Calculator Form project. It + automatically generates the main.cpp, UI, and .pro files, which you can + then modify. + + \section2 The Direct Approach - This include is an additional check to ensure that we do not generate code - for UI files that are not used. + To use the direct approach, we include the \c ui_calculatorform.h file + directly in \c main.cpp: + + \snippet doc/src/snippets/uitools/calculatorform/main.cpp 0 The \c main function creates the calculator widget by constructing a standard QWidget that we use to host the user interface described by the @@ -1837,23 +1857,33 @@ pixmap property in the property editor. from the \c ui_calculatorform.h file that sets up all the dialog's widgets and the connections between its signals and slots. - This approach provides a quick and easy way to use simple, self-contained - components in your applications, but many componens created with \QD will + The direct approach provides a quick and easy way to use simple, self-contained + components in your applications. However, componens created with \QD often require close integration with the rest of the application code. For instance, the \c CalculatorForm code provided above will compile and run, but the QSpinBox objects will not interact with the QLabel as we need a custom slot to carry out the add operation and display the result in the - QLabel. To achieve this, we need to subclass a standard Qt widget (known as - the single inheritance approach). - + QLabel. To achieve this, we need to use the single inheritance approach. \section2 The Single Inheritance Approach + To use the single inheritance approach, we subclass a standard Qt widget and + include a private instance of the form's user interface object. This can take + the form of: + + \list + \o A member variable + \o A pointer member variable + \endlist + + \section3 Using a Member Variable + In this approach, we subclass a Qt widget and set up the user interface from within the constructor. Components used in this way expose the widgets and layouts used in the form to the Qt widget subclass, and provide a standard system for making signal and slot connections between the user interface and other objects in your application. + The generated \c{Ui::CalculatorForm} structure is a member of the class. This approach is used in the \l{Calculator Form Example}{Calculator Form} example. @@ -1893,6 +1923,52 @@ pixmap property in the property editor. them. This approach can be used to create individual tabs from existing forms, for example. + \section3 Using a Pointer Member Variable + + Alternatively, the \c{Ui::CalculatorForm} structure can be made a pointer + member of the class. The header then looks as follows: + + \code + + namespace Ui { + class CalculatorForm; + } + + class CalculatorForm : public QWidget + ... + virtual ~CalculatorForm(); + ... + private: + Ui::CalculatorForm *ui; + ... + + \endcode + + The corresponding source file looks as follows: + + \code + #include "ui_calculatorform.h" + + CalculatorForm::CalculatorForm(QWidget *parent) : + QWidget(parent), ui(new Ui::CalculatorForm) + { + ui->setupUi(this); + } + + CalculatorForm::~CalculatorForm() + { + delete ui; + } + \endcode + + The advantage of this approach is that the user interface object can be + forward-declared, which means that we do not have to include the generated + \c ui_calculatorform.h file in the header. The form can then be changed without + recompiling the dependent source files. This is particularly important if the + class is subject to binary compatibility restrictions. + + We generally recommend this approach for libraries and large applications. + For more information, see \l{Creating Shared Libraries}. \section2 The Multiple Inheritance Approach @@ -1906,13 +1982,14 @@ pixmap property in the property editor. {Multiple Inheritance} example. We need to include the header file that \c uic generates from the - \c calculatorform.ui file: + \c calculatorform.ui file, as follows: \snippet examples/uitools/multipleinheritance/calculatorform.h 0 The class is defined in a similar way to the one used in the \l{The Single Inheritance Approach}{single inheritance approach}, except that - this time we inherit from \e{both} QWidget and \c{Ui::CalculatorForm}: + this time we inherit from \e{both} QWidget and \c{Ui::CalculatorForm}, + as follows: \snippet examples/uitools/multipleinheritance/calculatorform.h 1 @@ -1931,11 +2008,26 @@ pixmap property in the property editor. same say as a widget created in code by hand. We no longer require the \c{ui} prefix to access them. - Subclassing using multiple inheritance gives us more direct access to the - contents of the form, is slightly cleaner than the single inheritance - approach, but does not conveniently support composition of multiple user - interfaces. + \section2 Reacting to Language Changes + + Qt notifies applications if the user interface language changes by sending an + event of the type QEvent::LanguageChange. To call the member function + \c retranslateUi() of the user interface object, we reimplement + \c QWidget::changeEvent() in the form class, as follows: + \code + void CalculatorForm::changeEvent(QEvent *e) + { + QWidget::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } + } + \endcode \section1 Run Time Form Processing -- cgit v0.12 From 526fbec417fcdae715cba56fbb01182fa25a2c04 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Wed, 3 Nov 2010 17:50:09 +0100 Subject: Doc: Added a snippet showing the default BorderImage tiling behavior. --- .../borderimage/borderimage-defaults.qml | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 doc/src/snippets/declarative/borderimage/borderimage-defaults.qml diff --git a/doc/src/snippets/declarative/borderimage/borderimage-defaults.qml b/doc/src/snippets/declarative/borderimage/borderimage-defaults.qml new file mode 100644 index 0000000..1888f4e --- /dev/null +++ b/doc/src/snippets/declarative/borderimage/borderimage-defaults.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: page + color: "white" + width: 180; height: 180 + +//! [tiled border image] +BorderImage { + width: 180; height: 180 + border { left: 30; top: 30; right: 30; bottom: 30 } + source: "pics/borderframe.png" +} +//! [tiled border image] +} -- cgit v0.12 From d8416650ae9d345f289bd697461891dede7c410c Mon Sep 17 00:00:00 2001 From: David Boddie Date: Wed, 3 Nov 2010 19:17:47 +0100 Subject: Doc: Clarified the lifetime of the session bus connection. Reviewed-by: Thiago Macieira --- src/dbus/qdbusconnection.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp index bf771a8..f68a8ca 100644 --- a/src/dbus/qdbusconnection.cpp +++ b/src/dbus/qdbusconnection.cpp @@ -140,9 +140,9 @@ void QDBusConnectionManager::setConnection(const QString &name, QDBusConnectionP \fn QDBusConnection &QDBusConnection::sessionBus() \relates QDBusConnection - Returns a QDBusConnection object opened with the session bus. The object reference returned - by this function is valid until the QCoreApplication's destructor is run, when the - connection will be closed and the object, deleted. + Returns a QDBusConnection object opened with the session bus. The object + reference returned by this function is valid until the application terminates, + at which point the connection will be closed and the object deleted. */ /*! \fn QDBusConnection &QDBusConnection::systemBus() -- cgit v0.12 From 095f416f806062ab23d82c6907fffac4f862ee3b Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Thu, 4 Nov 2010 10:20:27 +0100 Subject: Fix tst_symbols auto test Prefix isLikelyToBeNfs with a "q", even though it's only autotest-exported. --- src/corelib/io/qsettings.cpp | 10 +++++----- tests/auto/qfileinfo/tst_qfileinfo.cpp | 4 ++-- tests/auto/symbols/tst_symbols.cpp | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index c94ec7b..e6c5fb9 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -140,7 +140,7 @@ QT_BEGIN_INCLUDE_NAMESPACE # include QT_END_INCLUDE_NAMESPACE -Q_AUTOTEST_EXPORT_HELPER bool isLikelyToBeNfs(int handle) +Q_AUTOTEST_EXPORT_HELPER bool qIsLikelyToBeNfs(int handle) { struct statfs buf; if (fstatfs(handle, &buf) != 0) @@ -166,7 +166,7 @@ QT_END_INCLUDE_NAMESPACE # define AUTOFSNG_SUPER_MAGIC 0x7d92b1a0 # endif -Q_AUTOTEST_EXPORT_HELPER bool isLikelyToBeNfs(int handle) +Q_AUTOTEST_EXPORT_HELPER bool qIsLikelyToBeNfs(int handle) { struct statfs buf; if (fstatfs(handle, &buf) != 0) @@ -183,7 +183,7 @@ QT_BEGIN_INCLUDE_NAMESPACE # include QT_END_INCLUDE_NAMESPACE -Q_AUTOTEST_EXPORT_HELPER bool isLikelyToBeNfs(int handle) +Q_AUTOTEST_EXPORT_HELPER bool qIsLikelyToBeNfs(int handle) { struct statvfs buf; if (fstatvfs(handle, &buf) != 0) @@ -195,7 +195,7 @@ Q_AUTOTEST_EXPORT_HELPER bool isLikelyToBeNfs(int handle) #endif } #else -Q_AUTOTEST_EXPORT_HELPER inline bool isLikelyToBeNfs(int /* handle */) +Q_AUTOTEST_EXPORT_HELPER inline bool qIsLikelyToBeNfs(int /* handle */) { return true; } @@ -209,7 +209,7 @@ static bool unixLock(int handle, int lockType) now is to disable locking when we detect NFS (or AutoFS or CacheFS, which are probably wrapping NFS). */ - if (isLikelyToBeNfs(handle)) + if (qIsLikelyToBeNfs(handle)) return false; struct flock fl; diff --git a/tests/auto/qfileinfo/tst_qfileinfo.cpp b/tests/auto/qfileinfo/tst_qfileinfo.cpp index 910ed97..5ec721b 100644 --- a/tests/auto/qfileinfo/tst_qfileinfo.cpp +++ b/tests/auto/qfileinfo/tst_qfileinfo.cpp @@ -70,7 +70,7 @@ # define SRCDIR "" #endif -extern Q_AUTOTEST_EXPORT bool isLikelyToBeNfs(int /* handle */); +extern Q_AUTOTEST_EXPORT bool qIsLikelyToBeNfs(int /* handle */); //TESTED_CLASS= //TESTED_FILES= @@ -942,7 +942,7 @@ void tst_QFileInfo::fileTimes() #endif QVERIFY(file.open(QFile::WriteOnly | QFile::Text)); #ifdef Q_OS_UNIX - if (isLikelyToBeNfs(file.handle())) + if (qIsLikelyToBeNfs(file.handle())) QSKIP("This Test doesn't work on NFS", SkipAll); #endif QTextStream ts(&file); diff --git a/tests/auto/symbols/tst_symbols.cpp b/tests/auto/symbols/tst_symbols.cpp index 28970eb..1572a5f 100644 --- a/tests/auto/symbols/tst_symbols.cpp +++ b/tests/auto/symbols/tst_symbols.cpp @@ -443,7 +443,7 @@ void tst_Symbols::prefix() # if defined(Q_OS_LINUX) && defined(Q_CC_INTEL) QEXPECT_FAIL("", "linux-icc* incorrectly exports some QtWebkit symbols, waiting for a fix from Intel.", Continue); # endif - QVERIFY2(!isFailed, "Libraries contain non-prefixed symbols. See Debug output :)"); + QVERIFY2(!isFailed, "Libraries contain non-prefixed symbols. See Debug output above."); #else QSKIP("Linux-specific test", SkipAll); #endif -- cgit v0.12 From 7833534ee1fda1e80a14ace34747283aaa386114 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Thu, 4 Nov 2010 10:31:22 +0100 Subject: fix tests when using Qt in a namespace --- tests/auto/qfileinfo/tst_qfileinfo.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/auto/qfileinfo/tst_qfileinfo.cpp b/tests/auto/qfileinfo/tst_qfileinfo.cpp index 5ec721b..c9bf17a 100644 --- a/tests/auto/qfileinfo/tst_qfileinfo.cpp +++ b/tests/auto/qfileinfo/tst_qfileinfo.cpp @@ -70,7 +70,9 @@ # define SRCDIR "" #endif +QT_BEGIN_NAMESPACE extern Q_AUTOTEST_EXPORT bool qIsLikelyToBeNfs(int /* handle */); +QT_END_NAMESPACE //TESTED_CLASS= //TESTED_FILES= -- cgit v0.12 From fa4ee0aadd00c976a70ef63aeb5be1d4eb52f928 Mon Sep 17 00:00:00 2001 From: Morten Engvoldsen Date: Thu, 4 Nov 2010 10:32:26 +0100 Subject: Doc: Correcting character escape bug --- tools/qdoc3/test/qt-html-templates.qdocconf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf index 30a63c8..698164d 100644 --- a/tools/qdoc3/test/qt-html-templates.qdocconf +++ b/tools/qdoc3/test/qt-html-templates.qdocconf @@ -9,7 +9,7 @@ HTML.postheader = "
\n" \ "
\n" \ " Home
\n" \ " Qt Reference Documentation\n" \ - "
\n" \ + "
\n" \ "
\n" \ "
    \n" \ "
  • Qt HOME
  • \n" \ -- cgit v0.12 From 74d586cb6d5391b186bfa8211fbb1e33f7c20e2f Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Thu, 4 Nov 2010 10:39:16 +0100 Subject: Give the toplevel widget a layout This ensures that the top-level will be large enough to view the text edit. --- tests/auto/qtextedit/tst_qtextedit.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/auto/qtextedit/tst_qtextedit.cpp b/tests/auto/qtextedit/tst_qtextedit.cpp index 878579b..321aa22 100644 --- a/tests/auto/qtextedit/tst_qtextedit.cpp +++ b/tests/auto/qtextedit/tst_qtextedit.cpp @@ -58,6 +58,7 @@ #include #include #include +#include #include #include @@ -2157,7 +2158,9 @@ void tst_QTextEdit::pasteFromQt3RichText() void tst_QTextEdit::noWrapBackgrounds() { QWidget topLevel; - QTextEdit edit(&topLevel); + QVBoxLayout *layout = new QVBoxLayout(&topLevel); + + QTextEdit edit; edit.setLineWrapMode(QTextEdit::NoWrap); QTextFrame *root = edit.document()->rootFrame(); @@ -2171,8 +2174,12 @@ void tst_QTextEdit::noWrapBackgrounds() edit.textCursor().setBlockFormat(format); edit.insertPlainText(QLatin1String(" \n \n \n \n")); edit.setFixedSize(100, 200); + + layout->addWidget(&edit); topLevel.show(); + QTest::qWait(1000); + QImage img = QPixmap::grabWidget(edit.viewport()).toImage(); QCOMPARE(img, img.mirrored(true, false)); } -- cgit v0.12 From 564058a1bbfb1c67bc3d68b7c7a2ebfe83481334 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 4 Nov 2010 12:23:54 +0200 Subject: Use qtmain.lib to provide entry point for all Symbian applications Using Open C's libcrt0.lib to provide entry point caused problems for applications that launched other processes, as Open C retains a handle to all launched processes even after said processes terminate. Task-number: QTBUG-14735 Reviewed-by: axis --- mkspecs/common/symbian/symbian.conf | 3 ++- mkspecs/features/symbian/default_post.prf | 3 --- mkspecs/features/symbian/symbian_building.prf | 20 +++++--------------- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf index decec14..6d1f708 100644 --- a/mkspecs/common/symbian/symbian.conf +++ b/mkspecs/common/symbian/symbian.conf @@ -79,7 +79,6 @@ QMAKE_LIBS_OPENGL_ES2_QT = -llibglesv2 -lcone -lws32 QMAKE_LIBS_OPENVG = -llibOpenVG -lfbscli -lbitgdi -lgdi QMAKE_LIBS_THREAD = -llibpthread QMAKE_LIBS_COMPAT = -QMAKE_LIBS_QT_ENTRY = -llibcrt0.lib QMAKE_LIBS_S60 = -lavkon -leikcoctl exists($${EPOCROOT}epoc32/include/platform/sgresource/sgimage.h) { @@ -127,6 +126,8 @@ QT_ARCH = symbian load(qt_config) +QMAKE_LIBS_QT_ENTRY = -lqtmain$${QT_LIBINFIX}.lib + # These directories must match what configure uses for QT_INSTALL_PLUGINS and QT_INSTALL_IMPORTS QT_PLUGINS_BASE_DIR = /resource/qt$${QT_LIBINFIX}/plugins QT_IMPORTS_BASE_DIR = /resource/qt/imports diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf index 0564e9b..348c366 100644 --- a/mkspecs/features/symbian/default_post.prf +++ b/mkspecs/features/symbian/default_post.prf @@ -3,9 +3,6 @@ load(default_post) contains(TEMPLATE, ".*app") { contains(CONFIG, stdbinary) { QMAKE_LIBS += - } else:contains(QT, gui):contains(CONFIG,qt) { - S60MAIN_LIBS = -leuser - QMAKE_LIBS += -lqtmain$${QT_LIBINFIX}.lib $$S60MAIN_LIBS } else { QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY } diff --git a/mkspecs/features/symbian/symbian_building.prf b/mkspecs/features/symbian/symbian_building.prf index 1a51cb2..20bc3a3 100644 --- a/mkspecs/features/symbian/symbian_building.prf +++ b/mkspecs/features/symbian/symbian_building.prf @@ -187,26 +187,16 @@ contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@:.*") { linux-armcc: { QMAKE_LIBS += usrt2_2.lib dfpaeabi.dso dfprvct2_2.dso drtaeabi.dso scppnwdl.dso drtrvct2_2.dso h_t__uf.l\\(switch8.o\\) QMAKE_LIBS += -leexe.lib\\(uc_exe_.o\\) - contains(CONFIG, "qt"):contains(QT, "gui") { #if linking with QtCore - QMAKE_LIBS -= -lqtmain$${QT_LIBINFIX}.lib - QMAKE_LIBS += -lqtmain$${QT_LIBINFIX}.lib - } else { - QMAKE_LIBS -= -llibcrt0.lib - QMAKE_LIBS += -llibcrt0.lib - } + QMAKE_LIBS -= $$QMAKE_LIBS_QT_ENTRY + QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY } else :linux-gcce { # notice that we can't merge these as ordering of arguments is important. QMAKE_LIBS += \ -l:eexe.lib \ -l:usrt2_2.lib - contains(CONFIG, "qt"):contains(QT, "gui") { #if linking with QtCore - QMAKE_LIBS -= -l:qtmain$${QT_LIBINFIX}.lib - QMAKE_LIBS += -l:qtmain$${QT_LIBINFIX}.lib - } else { - QMAKE_LIBS -= -l:libcrt0.lib - QMAKE_LIBS -= -l:libcrt0_gcce.lib - QMAKE_LIBS += -l:libcrt0_gcce.lib - } + modified_entry = $$replace(QMAKE_LIBS_QT_ENTRY, "^-l", "-l:") + QMAKE_LIBS -= $$modified_entry + QMAKE_LIBS += $$modified_entry QMAKE_LIBS += \ -l:dfpaeabi.dso \ -l:drtaeabi.dso \ -- cgit v0.12 From 018c0ebc7d7ffaa55bf5a80b2a8a0e3ee1ebcc7b Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Thu, 4 Nov 2010 13:49:43 +0100 Subject: Prevent excessive seeks in xbm detection When auto-detecting an image type, the xbm handler would read the entire file just to figure out that it's not an xbm. This patch limits the read to maximum 4k and also breaks if line length >= 299. Task-number: QT-4021 Reviewed-by: Robert Griebl --- src/gui/image/qxbmhandler.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/gui/image/qxbmhandler.cpp b/src/gui/image/qxbmhandler.cpp index 0dd4e99..f9c2e0c 100644 --- a/src/gui/image/qxbmhandler.cpp +++ b/src/gui/image/qxbmhandler.cpp @@ -66,27 +66,36 @@ static inline int hex2byte(register char *p) static bool read_xbm_header(QIODevice *device, int& w, int& h) { const int buflen = 300; + const int maxlen = 4096; char buf[buflen + 1]; QRegExp r1(QLatin1String("^#define[ \t]+[a-zA-Z0-9._]+[ \t]+")); QRegExp r2(QLatin1String("[0-9]+")); qint64 readBytes = 0; + qint64 totalReadBytes = 0; - // "#define .._width " - readBytes = device->readLine(buf, buflen); - if (readBytes <= 0) - return false; - buf[readBytes - 1] = '\0'; + buf[0] = '\0'; // skip initial comment, if any - while (buf[0] != '#' && (readBytes = device->readLine( buf, buflen )) > 0) {} + while (buf[0] != '#') { + readBytes = device->readLine(buf, buflen); + + // if readBytes >= buflen, it's very probably not a C file + if (readBytes <= 0 || readBytes >= buflen -1) + return false; + + // limit xbm headers to the first 4k in the file to prevent + // excessive reads on non-xbm files + totalReadBytes += readBytes; + if (totalReadBytes >= maxlen) + return false; + } - if (readBytes <= 0) - return false; buf[readBytes - 1] = '\0'; QString sbuf; sbuf = QString::fromLatin1(buf); + // "#define .._width " if (r1.indexIn(sbuf) == 0 && r2.indexIn(sbuf, r1.matchedLength()) == r1.matchedLength()) w = QByteArray(&buf[r1.matchedLength()]).trimmed().toInt(); -- cgit v0.12 From 5a79d8e83d1f62e365e179b84fa7be1112eb8a52 Mon Sep 17 00:00:00 2001 From: Janne Koskinen Date: Thu, 4 Nov 2010 14:47:20 +0200 Subject: Wordwrap QInputDialog label in Symbian Enable wordwrapping for QInputDialog in Symbian to allow longer texts to be displayed without cutting them off. Fixes issue with javascript prompt not showing long texts. Task-number: QT-4008 Reviewed-by: Sami Merila --- src/gui/dialogs/qinputdialog.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gui/dialogs/qinputdialog.cpp b/src/gui/dialogs/qinputdialog.cpp index abaaa49..ce27bd3 100644 --- a/src/gui/dialogs/qinputdialog.cpp +++ b/src/gui/dialogs/qinputdialog.cpp @@ -561,6 +561,9 @@ void QInputDialog::setLabelText(const QString &text) } else { d->label->setText(text); } +#ifdef Q_OS_SYMBIAN + d->label->setWordWrap(true); +#endif } QString QInputDialog::labelText() const -- cgit v0.12 From 440888de851daad78d89f2958aa95e9193832fb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Topi=20Reini=C3=B6?= Date: Thu, 4 Nov 2010 14:20:02 +0100 Subject: Prevent access to non-existent memory in QGL2PEXVertexArray QGL2PEXVertexArray::addClosingLine() uses using QDataBuffer::add() to add a QPointF at the end, with a const reference to another value in the same array. As add() resizes and possibly relocates the buffer, an already-released memory location may be accessed. This change copies the value into a temporary variable before resizing the array. Task-number: QTBUG-14944 Reviewed-by: Samuel --- src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp b/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp index 559a6fd..167a7d2 100644 --- a/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp +++ b/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp @@ -63,8 +63,9 @@ QGLRect QGL2PEXVertexArray::boundingRect() const void QGL2PEXVertexArray::addClosingLine(int index) { - if (QPointF(vertexArray.at(index)) != QPointF(vertexArray.last())) - vertexArray.add(vertexArray.at(index)); + QPointF point(vertexArray.at(index)); + if (point != QPointF(vertexArray.last())) + vertexArray.add(point); } void QGL2PEXVertexArray::addCentroid(const QVectorPath &path, int subPathIndex) -- cgit v0.12 From a52f572d513e2002e442769a46664009f45bc74a Mon Sep 17 00:00:00 2001 From: Sami Merila Date: Thu, 4 Nov 2010 15:27:39 +0200 Subject: Remove code changes that were NOT intended as part of the fix For some unknown reasons (read: missed git checkout -f), few code line changes which were NOT part of fix for QTBUG-14331 crept into the commit. These are now removed with this fix. Task-number: QTBUG-14331 Reviewed-by: Janne Anttila --- src/gui/styles/qs60style.cpp | 18 ------------------ src/gui/styles/qs60style_p.h | 1 - 2 files changed, 19 deletions(-) diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp index 53ca28c..f3fb2f5 100644 --- a/src/gui/styles/qs60style.cpp +++ b/src/gui/styles/qs60style.cpp @@ -112,8 +112,6 @@ const short QS60StylePrivate::data[][MAX_PIXELMETRICS] = { // *** End of generated data *** }; -QSet *QS60StylePrivate::m_autoFillDisabledWidgets = 0; - const short *QS60StylePrivate::m_pmPointer = QS60StylePrivate::data[0]; // theme background texture @@ -154,8 +152,6 @@ const double KTabFontMul = 0.72; QS60StylePrivate::~QS60StylePrivate() { - delete m_autoFillDisabledWidgets; - m_autoFillDisabledWidgets = 0; clearCaches(); //deletes also background image deleteThemePalette(); #ifdef Q_WS_S60 @@ -3188,13 +3184,6 @@ void QS60Style::polish(QWidget *widget) } d->setThemePalette(widget); d->setFont(widget); - - if (widget->autoFillBackground()) { - if (!d->m_autoFillDisabledWidgets) - d->m_autoFillDisabledWidgets = new QSet; - widget->setAutoFillBackground(false); - d->m_autoFillDisabledWidgets->insert(widget); - } } /*! @@ -3229,13 +3218,6 @@ void QS60Style::unpolish(QWidget *widget) if (widget) widget->setPalette(QPalette()); - - if (d->m_autoFillDisabledWidgets && - !d->m_autoFillDisabledWidgets->isEmpty() && - d->m_autoFillDisabledWidgets->contains(widget)) { - widget->setAutoFillBackground(true); - d->m_autoFillDisabledWidgets->remove(widget); - } #if defined(Q_WS_S60) && !defined(QT_NO_PROGRESSBAR) if (QProgressBar *bar = qobject_cast(widget)) { diff --git a/src/gui/styles/qs60style_p.h b/src/gui/styles/qs60style_p.h index 3d66c40..b46f75e 100644 --- a/src/gui/styles/qs60style_p.h +++ b/src/gui/styles/qs60style_p.h @@ -625,7 +625,6 @@ private: static qint64 m_webPaletteKey; static QPointer m_pressedWidget; - static QSet *m_autoFillDisabledWidgets; #ifdef Q_WS_S60 //list of progress bars having animation running -- cgit v0.12 From 6bf640a7600132c02742a2581402e04f75b60962 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 4 Nov 2010 15:24:32 +0100 Subject: QNAM HTTP: Download last chunk properly when readBufferSize() limited Task-number: QTBUG-13431 Task-number: QTBUG-6276 Reviewed-by: ogoffart --- src/network/access/qhttpnetworkconnectionchannel.cpp | 5 +++-- tests/auto/qnetworkreply/tst_qnetworkreply.cpp | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 4e5de53..02daa50 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -412,7 +412,9 @@ void QHttpNetworkConnectionChannel::_q_receiveReply() } case QHttpNetworkReplyPrivate::ReadingDataState: { QHttpNetworkReplyPrivate *replyPrivate = reply->d_func(); - if (replyPrivate->downstreamLimited && !replyPrivate->responseData.isEmpty() && replyPrivate->shouldEmitSignals()) { + if (socket->state() == QAbstractSocket::ConnectedState && + replyPrivate->downstreamLimited && !replyPrivate->responseData.isEmpty() && replyPrivate->shouldEmitSignals()) { + // (only do the following when still connected, not when we have already been disconnected and there is still data) // We already have some HTTP body data. We don't read more from the socket until // this is fetched by QHttpNetworkAccessHttpBackend. If we would read more, // we could not limit our read buffer usage. @@ -421,7 +423,6 @@ void QHttpNetworkConnectionChannel::_q_receiveReply() // to the read buffer maximum size, but we don't care since they should be small. return; } - if (!replyPrivate->isChunked() && !replyPrivate->autoDecompress && replyPrivate->bodyLength > 0) { // bulk files like images should fulfill these properties and diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp index 8850e6e..d21428b 100644 --- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp @@ -3457,11 +3457,11 @@ void tst_QNetworkReply::ioGetFromBuiltinHttp_data() { QTest::addColumn("https"); QTest::addColumn("bufferSize"); - QTest::newRow("http, no limit") << false << 0; - QTest::newRow("http, limited") << false << 4096; + QTest::newRow("http+unlimited") << false << 0; + QTest::newRow("http+limited") << false << 4096; #ifndef QT_NO_OPENSSL - QTest::newRow("https, no limit") << true << 0; - QTest::newRow("https, limited") << true << 4096; + QTest::newRow("https+unlimited") << true << 0; + QTest::newRow("https+limited") << true << 4096; #endif } @@ -3534,6 +3534,7 @@ void tst_QNetworkReply::ioGetFromBuiltinHttp() const int allowedDeviation = 16; // TODO find out why the send rate is 13% faster currently const int minRate = rate * 1024 * (100-allowedDeviation) / 100; const int maxRate = rate * 1024 * (100+allowedDeviation) / 100; + qDebug() << minRate << "<="<< server.transferRate << "<=" << maxRate << "?"; QVERIFY(server.transferRate >= minRate); QVERIFY(server.transferRate <= maxRate); } -- cgit v0.12 From 688e0e8615330f1a50ef5a601fac2ce8de5af7d6 Mon Sep 17 00:00:00 2001 From: Sergey Belyashov Date: Thu, 4 Nov 2010 17:21:33 +0100 Subject: Russian translation update Merge-request: 895 Reviewed-by: Oswald Buddenhagen --- translations/assistant_ru.ts | 581 +++++++++++++++++++++++++- translations/designer_ru.ts | 172 +++++--- translations/linguist_ru.ts | 955 +++++++++++++++++++++++++++++++++++++++++++ translations/qt_ru.ts | 166 +++++--- translations/qtconfig_ru.ts | 82 ++-- translations/qvfb_ru.ts | 139 +++++++ 6 files changed, 1933 insertions(+), 162 deletions(-) diff --git a/translations/assistant_ru.ts b/translations/assistant_ru.ts index f5ba461..61c8d6c 100644 --- a/translations/assistant_ru.ts +++ b/translations/assistant_ru.ts @@ -76,10 +76,6 @@ Reason: Ошибка создания файла коллекции справки '%1': %2. - Error reading collection file '%1': %2 - Ошибка чтения файла коллекции справки '%1': %2 - - Cannot load sqlite database driver! Не удалось загрузить драйвер баз данных sqlite! @@ -112,6 +108,17 @@ Reason: + BookmarkItem + + New Folder + Новая папка + + + Untitled + Безымянная + + + BookmarkManager Remove @@ -131,7 +138,7 @@ Reason: Untitled - Неозаглавлено + Безымянная Manage Bookmarks... @@ -329,6 +336,64 @@ Reason: Файл коллекции справки '%1' не существует. + Usage: assistant [Options] + +-collectionFile file Uses the specified collection + file instead of the default one +-showUrl url Shows the document with the + url. +-enableRemoteControl Enables Assistant to be + remotely controlled. +-show widget Shows the specified dockwidget + which can be "contents", "index", + "bookmarks" or "search". +-activate widget Activates the specified dockwidget + which can be "contents", "index", + "bookmarks" or "search". +-hide widget Hides the specified dockwidget + which can be "contents", "index" + "bookmarks" or "search". +-register helpFile Registers the specified help file + (.qch) in the given collection + file. +-unregister helpFile Unregisters the specified help file + (.qch) from the give collection + file. +-setCurrentFilter filter Set the filter as the active filter. +-remove-search-index Removes the full text search index. +-rebuild-search-index Re-builds the full text search index (potentially slow). +-quiet Does not display any error or + status message. +-help Displays this help. + + Использование: assistant [ОПЦИИ] + +-collectionFile файл Использовать указанный файл коллекции, + вместо стандартного +-showUrl ссылка Отобразить документ по ссылке. +-enableRemoteControl Включение удалённого управления Assistant. +-show виджет Отображение указанного прикрепляемого виджета, + который может быть "contents", "index", + "bookmarks" или "search". +-activate виджет Включение указанного прикрепляемого виджета, + который может быть "contents", "index", + "bookmarks" или "search". +-hide виджет Скрытие указанного прикрепляемого виджета, + который может быть "contents", "index", + "bookmarks" или "search". +-register файлСправки Регистрация указанного файла справки (.qch) + в данном файле коллекции. +-unregister файлСправки Отмена регистрации указанного файла + справки (.qch) в данном файле коллекции. +-setCurrentFilter фильтр Активация указанного фильтра. +-remove-search-index Удаление индекса полнотекстового поиска. +-rebuild-search-index Пересоздание индекса полнотекстового поиска + (потенциально медленно). +-quiet Не отображать сообщения об ошибках и состояниях. +-help Показать эту справку. + + + Missing collection file. Отсутствует файл коллекции справки. @@ -377,6 +442,56 @@ Reason: + ConversionWizard + + Help Conversion Wizard + Мастер преобразования справки + + + Converting %1... + Преобразование %1... + + + Writing help collection file... + Запись файла коллекции справки... + + + Done. + Готово. + + + + FilesPage + + Form + Форма + + + Files: + Файлы: + + + Remove + Удалить + + + Remove All + Удалить всё + + + Unreferenced Files + Невостребованные файлы + + + Remove files which are neither referenced by a keyword nor by the TOC. + Удаление файлов, на которые нет ссылок ни по ключевым словам, ни в содержании. + + + <p><b>Warning:</b> When removing images or stylesheets, be aware that those files are not directly referenced by the .adp or .dcf file.</p> + <p><b>Внимание:</b> при удалении изображений или таблиц стилей следует убедиться, что на эти файлы напрямую не ссылается файл .adp или .dcf.</p> + + + FilterNameDialogClass Add Filter Name @@ -388,6 +503,66 @@ Reason: + FilterPage + + Form + Форма + + + Filter attributes for current documentation (comma separated list): + Атрибуты фильтра для текущей документации (список, разделённый запятыми): + + + Custom Filters + Пользовательские фильтры + + + 1 + + + + 2 + + + + Add + Добавить + + + Remove + Удалить + + + Filter Settings + Настройки фильтра + + + Specify the filter attributes for the documentation. If filter attributes are used, also define a custom filter for it. Both the filter attributes and the custom filters are optional. + Укажите атрибуты фильтра для документации. Если атрибуты фильтра используются, также укажите пользовательский фильтр для них. Атрибуты и пользовательский фильтр необязательны. + + + Filter Name + Название фильтра + + + Filter Attributes + Атрибуты фильтра + + + The custom filter '%1' is defined multiple times. + Пользовательский фильтр "%1" определён несколько раз. + + + The attributes for custom filter '%1' are defined multiple times. + Атрибуты для пользовательского фильтра "%1" определены несколько раз. + + + unfiltered + list of available documentation + вся документация + + + FindWidget Previous @@ -407,6 +582,17 @@ Reason: + FinishPage + + Converting File + Преобразование файла + + + Creating the new Qt help files from the old ADP file. + Создание файлов справки Qt из старых файлов ADP. + + + FontPanel Font @@ -430,6 +616,59 @@ Reason: + GeneralPage + + Form + Форма + + + Namespace: + Пространство имён: + + + Virtual Folder: + Виртуальный каталог: + + + General Settings + Основные настройки + + + Specify the namespace and the virtual folder for the documentation. + Укажите пространство имён и виртуальный каталог для документации. + + + Namespace Error + Ошибка пространства имён + + + The namespace contains some invalid characters. + Пространство имён содержит недопустимые символы. + + + Virtual Folder Error + Ошибка виртуального каталога + + + The virtual folder contains some invalid characters. + Виртуальный каталог содержит недопустимые символы. + + + + HelpEngineWrapper + + Unfiltered + Вся документация + + + + HelpGenerator + + Warning: %1 + Предупреждение: %1 + + + HelpViewer <title>about:blank</title> @@ -453,6 +692,40 @@ Reason: + HelpWindow + + <center><b>Wizard Assistant</b></center> + <center><b>Помощь по мастеру преобразования справки</b></center> + + + + IdentifierPage + + Form + Форма + + + Create identifiers + Создавать идентификаторы + + + Global prefix: + Глобальный префикс: + + + Inherit prefix from file names + Наследовать префикс из имён файлов + + + Identifiers + Идентификаторы + + + This page allows you to create identifiers from the keywords found in the .adp or .dcf file. + Данная страница позволяет создавать идентификаторы из ключевых слов найденных в файле .adp или .dcf. + + + IndexWindow &Look for: @@ -468,6 +741,53 @@ Reason: + InputPage + + Form + Форма + + + File name: + Имя файла: + + + ... + + + + Input File + Исходный файл + + + Specify the .adp or .dcf file you want to convert to the new Qt help project format and/or collection format. + Укажите файл .adp или .dcf, который необходимо преобразовать в формат нового проекта справки Qt или коллекции. + + + Open file + Открыть файл + + + Qt Help Files (*.adp *.dcf) + Файлы справки Qt (*.adp *.dcf) + + + File Open Error + Ошибка открытия файла + + + The specified file could not be opened! + Не удалось открыть указанный файл! + + + File Parsing Error + Ошибка обработки файла + + + Parsing error in line %1! + Возникла ошибка обработки на строке %1! + + + InstallDialog Install Documentation @@ -715,6 +1035,10 @@ Reason: &Закладки + <center><h3>%1</h3><p>Version %2</p></center><p>Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).</p> + <center><h3>%1</h3><p>Версия %2</p></center><p>Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).</p> + + Could not register file '%1': %2 Не удалось зарегистрировать файл '%1': %2 @@ -776,7 +1100,93 @@ Reason: Updating search index - Обновление поискового индекса + Обновление индекса полнотекстового поиска + + + + OutputPage + + Form + Форма + + + Project file name: + Имя файла проекта: + + + Collection file name: + Имя файла коллекции: + + + Output File Names + Имена выходных файлов + + + Specify the file names for the output files. + Укажите имена выходных файлов. + + + Convert... + Преобразовать... + + + Qt Help Project File + Файл проекта справки Qt + + + Qt Help Collection Project File + Файл проекта коллекции справки Qt + + + The specified file %1 already exist. + +Do you want to remove it? + Файл %1 уже существует. + +Желаете удалить его? + + + Remove + Удалить + + + Cancel + Отмена + + + + PathPage + + Form + Форма + + + File filters: + Фильтры файлов: + + + Documentation source file paths: + Пути к исходным файлам документации: + + + Add + Добавить + + + Remove + Удалить + + + Source File Paths + Пути к исходным файлам + + + Specify the paths where the sources files are located. By default, all files in those directories matched by the file filter will be included. + Укажите пути, где расположены исходные файлы. По умолчанию, будут включены все файлы в каталогах, соответствующие фильтру файлов. + + + Source File Path + Путь к исходному файлу @@ -914,6 +1324,165 @@ Reason: + QCollectionGenerator + + Unknown token at line %1. + Неизвестный токен в строке %1. + + + Unknown token at line %1. Expected "QtHelpCollectionProject". + Неизвестный токен в строке %1. Ожидался "QtHelpCollectionProject". + + + Missing end tags. + Отсутствуют завершающие теги. + + + Missing input or output file for help file generation. + Отсутствует входной или выходной файл для создания файла справки. + + + Missing output file name. + Отсутствует имя выходного файла. + + + Qt Collection Generator version 1.0 (Qt %1) + + Генератор коллекций Qt версии 1.0 (Qt %1) + + + + Missing collection config file. + Отсутствует файл настроек коллекции. + + + +Usage: + +qcollectiongenerator <collection-config-file> [options] + + -o <collection-file> Generates a collection file + called <collection-file>. If + this option is not specified + a default name will be used. + -v Displays the version of + qcollectiongenerator. + + + +Использование: + +qcollectiongenerator <файл-конфигурации-коллекции> [ОПЦИИ] + + -o <файл-коллекции> Создание файла коллекции с именем + <файл-коллекции>. Если эта опция не указана, + будет использовано имя по умолчанию. + -v Показать версию qcollectiongenerator. + + + + + Could not open %1. + + Не удалось открыть %1. + + + Reading collection config file... + + Чтение файла конфигурации коллекции... + + + + Collection config file error: %1 + + Ошибка файла конфигурации коллекции: %1 + + + + Generating help for %1... + + Создание справки для %1... + + + Creating collection file... + + Создание файла коллекции... + + + The file %1 cannot be overwritten. + + Файл %1 не может быть перезаписан. + + + Cannot open %1. + + Не удалось открыть %1. + + + Cannot open referenced image file %1. + + Не удалось открыть необходимый файл изображения %1. + + + + + QHelpGenerator + + Missing output file name. + Отсутствует имя выходного файла. + + + Qt Help Generator version 1.0 (Qt %1) + + Генератор справки Qt, версия 1.0 (Qt %1) + + + + Missing Qt help project file. + Отсутствует файл проекта справки Qt. + + + +Usage: + +qhelpgenerator <help-project-file> [options] + + -o <compressed-file> Generates a Qt compressed help + file called <compressed-file>. + If this option is not specified + a default name will be used. + -c Checks whether all links in HTML files + point to files in this help project. + -v Displays the version of + qhelpgenerator. + + + +Использование: + +qhelpgenerator <файл-проекта-справки> [ОПЦИИ] + + -o <сжатый-файл> Создание сжатого файла справки Qt под именем + <сжатый-файл>. Если эта опция не указана, + будет использоваться имя по умолчанию. + -c Проверка на то, чтобы все ссылки в файлах + HTML указывали на файлы в этом проекте. + -v Отображение версии qhelpgenerator. + + + + + Could not open %1. + + Не удалось открыть %1. + + + Could not create output directory: %1 + + Не удалось создать каталог: %1 + + + RemoteControl Debugging Remote Control diff --git a/translations/designer_ru.ts b/translations/designer_ru.ts index 89977b1..d6ab18e 100644 --- a/translations/designer_ru.ts +++ b/translations/designer_ru.ts @@ -25,6 +25,49 @@ + AbstractItemEditor + + Selectable + + + + Editable + + + + DragEnabled + + + + DropEnabled + + + + UserCheckable + + + + Enabled + + + + Tristate + + + + Unchecked + + + + PartiallyChecked + + + + Checked + + + + AddLinkDialog Insert Link @@ -304,7 +347,7 @@ Change Z-order of '%1' - Изменить порядок удалённости '%1' + Изменить порядок удалённости '%1' Raise '%1' @@ -324,11 +367,11 @@ Promote to custom widget - Преобразовать в пользовательский виджет + Преобразовать в пользовательский виджет Demote from custom widget - Преобразовать из пользовательского виджета + Преобразовать из пользовательского виджета Lay out using grid @@ -348,7 +391,7 @@ Simplify Grid Layout - Упрощённая компоновка по сетке + Упрощённая компоновка по сетке Move Page @@ -396,7 +439,7 @@ Add Dock Window - Добавить прикрепляемое окно + Добавить прикрепляемое окно Adjust Size of '%1' @@ -404,11 +447,11 @@ Change Form Layout Item Geometry - Изменить геометрию элементов компоновки столбцами + Изменить геометрию элемента компоновки столбцами Change Layout Item Geometry - Изменить геометрию элементов компоновки + Изменить геометрию элемента компоновки Delete Subwindow @@ -653,7 +696,7 @@ Promoted Widgets - Преобразованные виджеты + Преобразованные виджеты Unable to launch %1. @@ -777,7 +820,7 @@ Embedded Design Tab in preferences dialog - Оформление портативных устройств + Оформление портативных устройств Device Profiles @@ -852,6 +895,7 @@ Parsing grid layout minimum size values FormEditorOptionsPage %1 % + Zoom percentage %1 % @@ -876,7 +920,7 @@ Parsing grid layout minimum size values FormLayoutRowDialog Add Form Layout Row - Добавление строки компоновщика формы + Добавление строки компоновщика столбцами (QFormLayout) &Label text: @@ -962,7 +1006,7 @@ Parsing grid layout minimum size values Embedded Design - Оформление портативных устройств + Оформление портативных устройств @@ -1131,7 +1175,7 @@ Parsing grid layout minimum size values Not used Usage of promoted widgets - Не используется + Не используются @@ -1205,11 +1249,11 @@ This indicates an inconsistency in the ui-file. QAxWidgetTaskMenu Set Control - Установить элемент управления + Задать элемент управления Reset Control - Удалить элемент управления + Сбросить элемент управления Licensed Control @@ -1224,7 +1268,7 @@ This indicates an inconsistency in the ui-file. QCoreApplication %1 is not a promoted class. - %1 не является преобразованным классом. + %1 не является преобразованным классом. The base class %1 is invalid. @@ -1236,7 +1280,7 @@ This indicates an inconsistency in the ui-file. Promoted Widgets - Преобразованные виджеты + Преобразованные виджеты The class %1 cannot be removed @@ -1567,11 +1611,11 @@ Would you like to retry? QDesignerAxWidget Reset control - Сбросить элемент управления + Сбросить элемент управления Set control - Установить элемент управления + Задать элемент управления Control loaded @@ -1579,7 +1623,7 @@ Would you like to retry? A COM exception occurred when executing a meta call of type %1, index %2 of "%3". - Возникло исключение COM при выполнении мета-вызова типа %1, индекс %2 "%3". + Возникло исключение COM при выполнении мета-вызова типа %1, индекс %2 в "%3". @@ -1838,7 +1882,7 @@ Container pages should only be added by specifying them in XML returned by the d Backup Information - Информация о резервированых копиях + Информация о резервных копиях The last session of Designer was not terminated correctly. Backup files were left behind. Do you want to load them? @@ -2232,27 +2276,27 @@ Empty class name passed to widget factory method Linear - Линейный + Линейный Radial - Радиальный + Радиальный Conical - Конический + Конический Pad - Равномерная + Равномерная Repeat - Цикличная + Цикличная Reflect - Зеркальная + Зеркальная Form @@ -2514,6 +2558,10 @@ Empty class name passed to widget factory method QtLocalePropertyManager + <Invalid> + <Некорректное значение> + + %1, %2 %1, %2 @@ -2651,7 +2699,7 @@ Do you want to replace it? newPrefix - newPrefix + <p><b>Warning:</b> The file</p><p>%1</p><p>is outside of the current resource file's parent directory.</p> @@ -2883,7 +2931,7 @@ to QtSizePolicyPropertyManager <Invalid> - <Неверный> + <Некорректное значение> [%1, %2, %3, %4] @@ -3174,23 +3222,23 @@ Do you want overwrite the template? Dock views - Прикрепляемые панели + Прикрепляемые панели File - Файл + Файл Edit - Правка + Правка Tools - Инструменты + Инструменты Form - Форма + Форма Toolbars @@ -3220,11 +3268,11 @@ Do you want overwrite the template? VideoPlayerTaskMenu Available Mime Types - Доступные типы данных + Доступные типы данных Display supported mime types... - Показывать поддерживаемые типы данных... + Показать поддерживаемые типы данных... Load... @@ -3306,11 +3354,11 @@ Do you want overwrite the template? Icon View - Значки + Значки Detailed View - Подробно + Подробно New action @@ -3902,7 +3950,7 @@ Do you want overwrite the template? qdesigner_internal::FormLayoutMenu Add form layout row... - Добавить строку компоновщика формы... + Добавить строку компоновки в 2 столбца... @@ -3953,7 +4001,7 @@ Do you want overwrite the template? Cannot paste widgets. Designer could not find a container without a layout to paste into. - Не удалось вставить виджеты. Qt Designer не смог найти контейнер без компоновщика для вставки виджетов. + Не удалось вставить виджеты. Qt Designer не смог найти контейнер без компоновщика для вставки виджетов. Break the layout of the container you want to paste into, select this container and then paste again. @@ -4083,11 +4131,11 @@ Do you want overwrite the template? Lay Out in a &Form Layout - Скомпоновать в &две колонки + Скомпоновать в &два столбца Lays out the selected widgets in a form layout - Компонует выделенные виджеты в две колонки (QFormLayout) + Компонует выделенные виджеты в два столбца (QFormLayout) Lay Out in a &Grid @@ -4548,7 +4596,7 @@ Please select another name. Embedded Design - Оформление портативных устройств + Оформление портативных устройств Device: @@ -4567,7 +4615,7 @@ Please select another name. New Promoted Class - Новый преобразованный класс + Новый преобразованный класс Base class name: @@ -4575,7 +4623,7 @@ Please select another name. Promoted class name: - Имя преобразованного класса: + Имя преобразованного класса: Header file: @@ -4644,7 +4692,7 @@ Please select another name. Compute Details - Расчитывать детали + Рассчитывать детали Quick @@ -4671,7 +4719,7 @@ Please select another name. qdesigner_internal::PaletteEditorButton Change Palette - Изменить палитру + Изменить палитру @@ -4742,6 +4790,14 @@ Please select another name. Поиск вновь установленных модулей пользовательских виджетов. + Loaded Plugins + Загруженные модули + + + Failed Plugins + Незагруженные модули + + Qt Designer couldn't find any plugins Qt Designer не может найти ни одного модуля @@ -4898,7 +4954,7 @@ ate the goose who was loose. Global include - Глобальное включение + Глобальное включение Usage @@ -4909,11 +4965,11 @@ ate the goose who was loose. qdesigner_internal::PromotionTaskMenu Promoted widgets... - Преобразованные виджеты... + Преобразованные виджеты... Promote to ... - Преобразовать в ... + Преобразовать в ... Change signals/slots... @@ -4921,11 +4977,11 @@ ate the goose who was loose. Promote to - Преобразовать в + Преобразовать в Demote to %1 - Преобразовать в %1 + Преобразовать в %1 @@ -4988,15 +5044,15 @@ Class: %2 qdesigner_internal::QDesignerPromotionDialog Promoted Widgets - Преобразованные виджеты + Преобразованные виджеты Promoted Classes - Преобразованные классы + Преобразованные классы Promote - Преобразовать + Преобразовать Change signals/slots... @@ -5227,7 +5283,7 @@ Class: %2 Source - Исходник + Исходник &OK @@ -5600,7 +5656,7 @@ Class: %2 Edit Tree Widget - Изменение виджета Дерево + Изменение виджета Дерево &Items @@ -5681,7 +5737,7 @@ Class: %2 qdesigner_internal::WidgetBoxTreeWidget Scratchpad - Блокнот + Блокнот Custom Widgets @@ -5742,7 +5798,7 @@ Class: %2 The current page of the container '%1' (%2) could not be determined while creating a layout.This indicates an inconsistency in the ui-file, probably a layout being constructed on a container widget. - При создании компоновщика не удалось определить текущую страницу контейнера '%1' (%2). Это указывает на некорректность файла ui - возможно, компоновщик был создан для контейнерного виджета. + При создании компоновщика не удалось определить текущую страницу контейнера '%1' (%2). Это указывает на некорректность файла ui - возможно, компоновщик был создан для виджета контейнерного типа. Attempt to add a layout to a widget '%1' (%2) which already has an unmanaged layout of type %3. diff --git a/translations/linguist_ru.ts b/translations/linguist_ru.ts index 2d06f25..3b448a0 100644 --- a/translations/linguist_ru.ts +++ b/translations/linguist_ru.ts @@ -258,6 +258,191 @@ Will assume a single universal form. + LConvert + + +Usage: + lconvert [options] <infile> [<infile>...] + +lconvert is part of Qt's Linguist tool chain. It can be used as a +stand-alone tool to convert and filter translation data files. +The following file formats are supported: + +%1 +If multiple input files are specified, they are merged with +translations from later files taking precedence. + +Options: + -h + --help Display this information and exit. + + -i <infile> + --input-file <infile> + Specify input file. Use if <infile> might start with a dash. + This option can be used several times to merge inputs. + May be '-' (standard input) for use in a pipe. + + -o <outfile> + --output-file <outfile> + Specify output file. Default is '-' (standard output). + + -if <informat> + --input-format <format> + Specify input format for subsequent <infile>s. + The format is auto-detected from the file name and defaults to 'ts'. + + -of <outformat> + --output-format <outformat> + Specify output format. See -if. + + --input-codec <codec> + Specify encoding for QM and PO input files. Default is 'Latin1' + for QM and 'UTF-8' for PO files. UTF-8 is always tried as well for + QM, corresponding to the possible use of the trUtf8() function. + + --output-codec <codec> + Specify encoding for PO output files. Default is 'UTF-8'. + + --drop-tags <regexp> + Drop named extra tags when writing TS or XLIFF files. + May be specified repeatedly. + + --drop-translations + Drop existing translations and reset the status to 'unfinished'. + Note: this implies --no-obsolete. + + --source-language <language>[_<region>] + Specify/override the language of the source strings. Defaults to + POSIX if not specified and the file does not name it yet. + + --target-language <language>[_<region>] + Specify/override the language of the translation. + The target language is guessed from the file name if this option + is not specified and the file contents name no language yet. + + --no-obsolete + Drop obsolete messages. + + --no-finished + Drop finished messages. + + --sort-contexts + Sort contexts in output TS file alphabetically. + + --locations {absolute|relative|none} + Override how source code references are saved in TS files. + Default is absolute. + + --no-ui-lines + Drop line numbers from references to UI files. + + --verbose + be a bit more verbose + +Long options can be specified with only one leading dash, too. + +Return value: + 0 on success + 1 on command line parse failures + 2 on read failures + 3 on write failures + + +Использование: + lconvert [параметры] <входной файл> [<входной файл>...] + +lconvert - это один из инструментов Qt Linguist. Он может быть использован как +для преобразования файлов переводов, так и для обработки файлов переводов. + +Поддерживаются файлы следующих форматов: + +%1 +Если задано несколько входных файлов, то они будут объединены, причем, каждый +последующий файл имеет приоритет над предыдущим. + +Параметры: + -h + --help Отображение данной справки и выход. + + -i <файл> + --input-file <файл> + Указание входного файл. Следует использовать, если <входной файл> + начинается с дефиса. Этот параметр может быть использован несколько + раз для объединения файлов. + Допустимо значение "-" (стандартный ввод) для использования каналов. + + -o <файл> + --output-file <файл> + Указание выходного файла. + По умолчанию значение "-" (стандартный вывод). + + -if <формат> + --input-format <формат> + Указание формата для последующих входных файлов. + Формат определяется автоматически из имени файла. + По умолчанию предполагается "ts". + + -of <формат> + --output-format <формат> + Указание формата выходного файла. См. -if. + + --input-codec <кодировка> + Указание кодировки входных файлов QM и PO. По умолчанию, + используется "Latin1" для QM и "UTF-8" для PO файлов. Так же UTF-8 + всегда применяется для QM, где возможно использование + функции trUtf8(). + + --output-codec <кодировка> + Указание кодировки выходных файлов формата PO. По умолчанию "UTF-8". + + --drop-tags <regexp> + Опустить дополнительные теги, соответствующие регулярному выражению + regexp, при записи файлов TS или XLIFF. + Можно указывать несколько раз. + + --drop-translations + Опустить существующие переводы и сбросить их статус в "незавершено". + Включает действие --no-obsolete. + + --source-language <язык>[_<регион>] + Задание/изменение языка исходных строк. По умолчанию POSIX, если не + указано и файл не содержит язык исходных строк в своём имени. + + --target-language <язык>[_<регион>] + Задание/изменение языка переводов. + Этот язык определяется из имени файла, если этот параметр не задан + или язык не указан внутри файла. + + --no-obsolete + Опустить устаревшие переводы. + + --no-finished + Опустить завершённые переводы. + + --sort-contexts + Упорядочить по алфавиту контекст выходного TS файла. + + --locations {absolute|relative|none} + Изменение метода сохранения ссылок на исходные тексты в TS файлах. + По умолчанию absolute. + + --no-ui-lines + Опустить номера строк в ссылках на UI файлы. + + --verbose + Выводить чуть больше информации. + +Длинные параметры также можно указывать и с одним дефисом. + +Возвращаемые результаты: + 0 в случае успеха + 1 в случае ошибки в командной строке + 2 при ошибке чтения + 3 при ошибки записи + + + + LRelease Dropped %n message(s) which had no ID. @@ -291,6 +476,763 @@ Will assume a single universal form. Пропущено %n непереведённых исходных текстов + + Usage: + lrelease [options] project-file + lrelease [options] ts-files [-qm qm-file] + +lrelease is part of Qt's Linguist tool chain. It can be used as a +stand-alone tool to convert XML-based translations files in the TS +format into the 'compiled' QM format used by QTranslator objects. + +Options: + -help Display this information and exit + -idbased + Use IDs instead of source strings for message keying + -compress + Compress the QM files + -nounfinished + Do not include unfinished translations + -removeidentical + If the translated text is the same as + the source text, do not include the message + -markuntranslated <prefix> + If a message has no real translation, use the source text + prefixed with the given string instead + -silent + Do not explain what is being done + -version + Display the version of lrelease and exit + + Использование: + lrelease [параметры] <файл-проекта> + lrelease [параметры] <ts-файлы> [-qm <qm-файлы>] + +lrelease - это один из инструментов Qt Linguist. Он может быть использован для +преобразования переводов, основанных на формате TS в "скомпилированный" +формат QM, используемый объектами QTranslator. + +Параметры: + -help + Отобразить данную справку и выйти + -idbased + Использовать ID вместо исходных строк для индексирования сообщений + -compress + Сжать файл QM + -nounfinished + Не включать незавершённые переводы + -removeidentical + Не включать переводы, совпадающие с исходным текстом + -markuntranslated <приставка> + Если сообщение не имеет перевода, то использовать исходный текст + с указанной приставкой + -silent + Не отчитываться о производимых действиях + -version + Отобразить текущую версию lrelease и выйти + + + + lrelease error: %1 + lrelease ошибка: %1 + + + Updating '%1'... + + Обновление '%1'... + + + + Removing translations equal to source text in '%1'... + + Удаление переводов для '%1'... + + + + lrelease error: cannot create '%1': %2 + + lrelease ошибка: не удалось создать '%1': %2 + + + lrelease error: cannot save '%1': %2 + lrelease ошибка: не удалось сохранить '%1': %2 + + + lrelease version %1 + + lrelease версия %1 + + + + lrelease error: cannot read project file '%1'. + + lrelease ошибка: не удалось прочитать файл проекта '%1'. + + + lrelease error: cannot process project file '%1'. + + lrelease ошибка: не удалось обработать файл проекта '%1'. + + + lrelease warning: Met no 'TRANSLATIONS' entry in project file '%1' + + lrelease ошибка: в файле проекта '%1' отсутствует запись 'TRANSLATIONS' + + + + LUpdate + + Parenthesis/bracket/brace mismatch between #if and #else branches; using #if branch + + Несовпадение скобок (круглых, квадратных или фигурных) между ветками #if и #else; используется ветка #if + + + + Parenthesis/brace mismatch between #if and #else branches; using #if branch + + Несовпадение скобок (круглых или фигурных) между ветками #if и #else; используется ветка #if + + + + Unterminated C++ comment + + Незавершённый комментарий C++ + + + + Unterminated C++ string + + Незавершённая строка C++ + + + + Excess closing brace in C++ code (or abuse of the C++ preprocessor) + + Лишняя закрывающая фигурная скобка в C++ коде (или злоупотребление препроцессором C++) + + + + Excess closing parenthesis in C++ code (or abuse of the C++ preprocessor) + + Лишняя закрывающая круглая скобка в C++ коде (или злоупотребление препроцессором C++) + + + + Excess closing bracket in C++ code (or abuse of the C++ preprocessor) + + Лишняя закрывающая квадратная скобка в C++ коде (или злоупотребление препроцессором C++) + + + + circular inclusion of %1 + + цикличное включение %1 + + + + Cannot open %1: %2 + + Невозможно открыть %1: %2 + + + + //% cannot be used with tr() / QT_TR_NOOP(). Ignoring + + //% не может быть использовано совместно с tr() / QT_TR_NOOP(). Пропускается + + + + Qualifying with unknown namespace/class %1::%2 + + Уточнение с неизвестным пространством имён/классом %1::%2 + + + + tr() cannot be called without context + + tr() не может быть вызван без контекста + + + + Class '%1' lacks Q_OBJECT macro + + У класса "%1" отсутствует макрос Q_OBJECT + + + + It is not recommended to call tr() from within a constructor '%1::%2' + + Не рекомендуется вызывать tr() в теле конструктора "%1::%2" + + + + //% cannot be used with translate() / QT_TRANSLATE_NOOP(). Ignoring + + //% не может быть использовано совместно с translate() / QT_TRANSLATE_NOOP(). Пропускается + + + + //= cannot be used with qtTrId() / QT_TRID_NOOP(). Ignoring + + //= не может быть использовано совместно с qtTrId() / QT_TRID_NOOP(). Пропускается + + + + Unexpected character in meta string + + Неожиданный символ в мета-строке + + + + Unterminated meta string + + Незавершённая мета-строка + + + + Cannot invoke tr() like this + + Использование tr() в том виде, как здесь, не допускается + + + + Discarding unconsumed meta data + + Отбрасываются неиспользуемые мета-данные + + + + Unbalanced opening brace in C++ code (or abuse of the C++ preprocessor) + + Лишняя открывающая фигурная скобка в C++ коде (или злоупотребление препроцессором C++) + + + + Unbalanced opening parenthesis in C++ code (or abuse of the C++ preprocessor) + + Лишняя открывающая круглая скобка в C++ коде (или злоупотребление препроцессором C++) + + + + Unbalanced opening bracket in C++ code (or abuse of the C++ preprocessor) + + Лишняя открывающая квадратная скобка в C++ коде (или злоупотребление препроцессором C++) + + + + Cannot open %1: %2 + Невозможно открыть %1: %2 + + + Unterminated Java comment. + + Незавершённый комментарий Java. + + + + Invalid Unicode value. + + Неверное значение Unicode. + + + + Unterminated string. + + Незавершённая строка. + + + + String used in translation can contain only literals concatenated with other literals, not expressions or numbers. + + Строка, используемая в переводе, может содержать только строковые литералы (возможно, соединённые с другими литералами), но не выражения или числа. + + + + 'class' must be followed by a class name. + + После слова "class" должно идти имя класса. + + + + Excess closing brace. + + Лишняя закрывающая фигурная скобка. + + + + 'package' must be followed by package name. + + После слова "package" должно идти имя пакета. + + + + Unbalanced opening brace. + + Лишняя открывающая фигурная скобка. + + + + Unbalanced opening parenthesis. + + Лишняя открывающая круглая скобка. + + + + Usage: + lupdate [options] [project-file]... + lupdate [options] [source-file|path|@lst-file]... -ts ts-files|@lst-file + +lupdate is part of Qt's Linguist tool chain. It extracts translatable +messages from Qt UI files, C++, Java and JavaScript/QtScript source code. +Extracted messages are stored in textual translation source files (typically +Qt TS XML). New and modified messages can be merged into existing TS files. + +Options: + -help Display this information and exit. + -no-obsolete + Drop all obsolete strings. + -extensions <ext>[,<ext>]... + Process files with the given extensions only. + The extension list must be separated with commas, not with whitespace. + Default: '%1'. + -pluralonly + Only include plural form messages. + -silent + Do not explain what is being done. + -no-sort + Do not sort contexts in TS files. + -no-recursive + Do not recursively scan the following directories. + -recursive + Recursively scan the following directories (default). + -I <includepath> or -I<includepath> + Additional location to look for include files. + May be specified multiple times. + -locations {absolute|relative|none} + Specify/override how source code references are saved in TS files. + Default is absolute. + -no-ui-lines + Do not record line numbers in references to UI files. + -disable-heuristic {sametext|similartext|number} + Disable the named merge heuristic. Can be specified multiple times. + -pro <filename> + Name of a .pro file. Useful for files with .pro file syntax but + different file suffix. Projects are recursed into and merged. + -source-language <language>[_<region>] + Specify the language of the source strings for new files. + Defaults to POSIX if not specified. + -target-language <language>[_<region>] + Specify the language of the translations for new files. + Guessed from the file name if not specified. + -ts <ts-file>... + Specify the output file(s). This will override the TRANSLATIONS + and nullify the CODECFORTR from possibly specified project files. + -codecfortr <codec> + Specify the codec assumed for tr() calls. Effective only with -ts. + -version + Display the version of lupdate and exit. + @lst-file + Read additional file names (one per line) from lst-file. + + Использование: + lupdate [параметры] [файл-проекта]... + lupdate [параметры] [исходный-файл|путь|@lst-файл]... -ts ts-файлы|@lst-файл + +lupdate - это один из инструментов Qt Linguist. Он извлекает переводимые строки +из файлов Qt UI, исходных текстов C++, Java и JavaScript/QtScript. Эти строки +сохраняются в текстовых исходных файлах перевода (обычно, Qt TS XML). Новые +или изменённые сообщения могут быть добавлены в существующие TS файлы. + +Параметры: + -help Отобразить эту информацию и выйти. + -no-obsolete + Удалить все устаревшие строки. + -extensions <ext>[,<ext>]... + Обрабатывать файлы, имеющие только указанные расширения. + Список расширений должен быть разделён запятыми, а не пробелами. + По умолчанию: + "%1". + -pluralonly + Включать только множественную форму сообщений. + -silent + Не показывать выполняемые действия. + -no-sort + Не упорядочивать контекст в TS файлах. + -no-recursive + Не сканировать каталоги рекурсивно. + -recursive + Сканировать каталоги рекурсивно (по умолчанию). + -I <путь> or -I<путь> + Дополнительное расположение подключаемых файлов. + Можно указать несколько раз. + -locations {absolute|relative|none} + Изменение метода сохранения ссылок на исходные тексты в TS файлах. + По умолчанию absolute. + -no-ui-lines + Не сохранять номера строк в ссылках на UI файлы. + -disable-heuristic {sametext|similartext|number} + Отключить указанный метод объединения: + sametext - тот же текст + similartext - похожий текст + number - числа + Может указываться несколько раз. + -pro <имя файла> + Название .pro файла. Используется для файлов в формате .pro, но + имеющих другое расширение. Проекты будут объединены и обработаны + рекурсивно. + --source-language <язык>[_<регион>] + Задание/замена языка исходных строк. По умолчанию, POSIX, если не + указано, и файл не содержит его в своём имени. + --target-language <язык>[_<регион>] + Задание/замена языка переводов. + Этот язык определяется из имени файла, если этот параметр не задан + или язык не указан внутри файла. + -ts <ts-файл>... + Указание выходного файла(ов). В этом случае будет заменена + переменная TRANSLATIONS и обнулена CODECFORTR в указанном файле + проекта. + -codecfortr <кодировка> + Указание кодировки, применимой к tr(). + Используется только вместе с -ts. + -version + Отобразить версию lupdate и выйти. + @lst-файл + Прочитать дополнительные имена файлов (по одному на строке) из + файла lst-файл. + + + + lupdate warning: Codec for tr() '%1' disagrees with existing file's codec '%2'. Expect trouble. + + Предупреждение lupdate: Кодировка для tr() "%1" не совпадает с кодировкой существующего файла "%2". Возможны проблемы. + + + + lupdate warning: Specified target language '%1' disagrees with existing file's language '%2'. Ignoring. + + Предупреждение lupdate: Указанный целевой язык "%1" не совпадает с языком существующего файла "%2". Пропускается. + + + + lupdate warning: Specified source language '%1' disagrees with existing file's language '%2'. Ignoring. + + Предупреждение lupdate: Указанный исходный язык "%1" не совпадает с языком существующего файла "%2". Пропускается. + + + + Updating '%1'... + + Обновление "%1"... + + + + Stripping non plural forms in '%1'... + + Удаление немножественных форм из "%1"... + + + + lupdate warning: Codec for source '%1' is invalid. Falling back to codec for tr(). + + Предупреждение lupdate: Некорректная кодировка для исходника "%1". Используется кодировка для tr(). + + + + lupdate warning: TS files from command line will override TRANSLATIONS in %1. + + Предупреждение lupdate: TS файлы командной строки заменят TRANSLATIONS в %1. + + + + lupdate warning: TS files from command line prevent recursing into %1. + + Предупреждение lupdate: TS файлы командной строки отключают рекурсию в %1. + + + + lupdate warning: no TS files specified. Only diagnostics will be produced for '%1'. + + Предупреждение lupdate: TS файлы не указаны. Будет произведена только диагностика "%1". + + + + The option -target-language requires a parameter. + + Параметр -target-language требует значение. + + + + The option -source-language requires a parameter. + + Параметр -source-language требует значение. + + + + The option -disable-heuristic requires a parameter. + + Параметр -disable-heuristic требует значение. + + + + Invalid heuristic name passed to -disable-heuristic. + + Неверное имя метода передано в -disable-heuristic. + + + + The option -locations requires a parameter. + + Параметр -locations требует значения. + + + Invalid parameter passed to -locations. + + Неверное значение передано в -locations. + + + + The -codecfortr option should be followed by a codec name. + + Параметру -codecfortr требуется название кодировки. + + + + The -extensions option should be followed by an extension list. + + Параметру -extensions требуется список расширений. + + + + The -pro option should be followed by a filename of .pro file. + + Параметру -pro требуется имя .pro файла. + + + + The -I option should be followed by a path. + + Параметру -I требуется путь. + + + + Unrecognized option '%1'. + + Неопознанный параметр "%1". + + + + lupdate error: List file '%1' is not readable. + + Ошибка lupdate: Не удалось прочитать файл списка "%1". + + + + lupdate warning: For some reason, '%1' is not writable. + + Предупреждение lupdate: По какой-то причине не удалось записать в "%1". + + + + lupdate error: File '%1' has no recognized extension. + + Ошибка lupdate: Расширение файла "%1" не опознано. + + + + lupdate error: File '%1' does not exist. + + Ошибка lupdate: Файл "%1" не существует. + + + + Scanning directory '%1'... + + Сканирование каталога "%1"... + + + + lupdate warning: -target-language usually only makes sense with exactly one TS file. + + Предупреждение lupdate: -target-language имеет смысл для одного TS файла. + + + + lupdate warning: -codecfortr has no effect without -ts. + + Предупреждение lupdate: -codecfortr не имеет смысла без -ts. + + + + lupdate warning: no TS files specified. Only diagnostics will be produced. + + Предупреждение lupdate: TS файлы не указаны. Будет произведена только диагностика. + + + + lupdate error: Both project and source files / include paths specified. + + Ошибка lupdate: Указаны и проект, и исходный файл / включаемые пути. + + + + Found %n source text(s) (%1 new and %2 already existing) + + + Обнаружен %n исходный текст (%1 новых и %2 уже имеющихся) + + Обнаружено %n исходных текста (%1 новых и %2 уже имеющихся) + + Обнаружено %n исходных текстов (%1 новых и %2 уже имеющихся) + + + + + Removed %n obsolete entries + + + Удалена %n устаревшая запись + + Удалены %n устаревших записи + + Удалено %n устаревших записей + + + + + Kept %n obsolete entries + + + Сохранена %n устаревшая запись + + Сохранены %n устаревшие записи + + Сохранено %n устаревших записей + + + + + Number heuristic provided %n translation(s) + + + Эвристика number добавила %n перевод + + Эвристика number добавила %n перевода + + Эвристика number добавила %n переводов + + + + + Same-text heuristic provided %n translation(s) + + + Эвристика same-text добавила %n перевод + + Эвристика same-text добавила %n перевода + + Эвристика same-text добавила %n переводов + + + + + Similar-text heuristic provided %n translation(s) + + + Эвристика similar-text добавила %n перевод + + Эвристика similar-text добавила %n перевода + + Эвристика similar-text добавила %n переводов + + + + + Illegal character + Недопустимый символ + + + Unclosed string at end of line + Незавершенный текст в конце строки + + + Illegal escape squence + Неверная esc-последовательность + + + Illegal unicode escape sequence + Неверная esc-последовательность unicode + + + Unclosed comment at end of file + Незакрытый комментарий в конце файла + + + Illegal syntax for exponential number + Неверный синтаксис для числа в экспоненциальной форме + + + Identifier cannot start with numeric literal + Идентификатор не может начинаться с цифры + + + Unterminated regular expression literal + Незавершённый литерал регулярного выражения + + + //% cannot be used with %1(). Ignoring + + //% не может быть использовано совместно с %1(). Пропускается + + + + %1() requires at least two arguments. + + для %1() требуется как минимум два параметра. + + + + %1(): both arguments must be literal strings. + + %1(): оба параметра должны быть строковыми литералами. + + + + %1() requires at least one argument. + + для %1() требуется как минимум один параметр. + + + + %1(): text to translate must be a literal string. + + %1(): переводимый текст должен быть строковым литералом. + + + + //= cannot be used with %1(). Ignoring + + //= не может быть использовано совместно с %1(). Пропускается + + + + %1(): identifier must be a literal string. + + %1(): идентификатор должен быть строковым литералом. + + + + Expected + Beginning of the string that contains comma-separated list of expected tokens + Ожидается + + + XML error: Parse error at line %1, column %2 (%3). + Ошибка XML: Ошибка разбора в строке %1, столбце %2 (%3). + + + Parse error in UI file + Ошибка разбора UI файла + MainWindow @@ -1289,6 +2231,13 @@ Line: %2 + PhraseBook + + Parse error at line %1, column %2 (%3). + Ошибка разбора в строке %1, столбце %2 (%3). + + + PhraseBookBox @@ -1460,6 +2409,12 @@ Line: %2 XLIFF localization files Файлы локализации XLIFF + + lupdate version %1 + + lupdate версия %1 + + SourceCodeView diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts index 5fbd6e3..b445c5d 100644 --- a/translations/qt_ru.ts +++ b/translations/qt_ru.ts @@ -302,6 +302,14 @@ have libgstreamer-plugins-base installed. Ошибка открытия адреса URL + Error opening resource + Ошибка открытия ресурса + + + Error opening source: resource not opened + Ошибка открытия источника: ресурс не был открыт + + Setting volume failed Не удалось установить уровень громкости @@ -313,6 +321,10 @@ have libgstreamer-plugins-base installed. Playback complete Воспроизведение завершено + + Download error + Ошибка загрузки + Phonon::MMF::AbstractVideoPlayer @@ -421,6 +433,14 @@ have libgstreamer-plugins-base installed. Ошибка открытия источника: тип не поддерживается + Error opening source: resource is compressed + Ошибка открытия источника: сжатый ресурс + + + Error opening source: resource not valid + Ошибка открытия источника: некорректный ресурс + + Error opening source: media type could not be determined Ошибка открытия источника: не удалось определить тип медиа-данных @@ -1360,7 +1380,7 @@ to QDeclarativeBinding Binding loop detected for property "%1" - Обнаружена цикличная привязка для свойства "%1" + Обнаружено зацикливание привязки для свойства "%1" @@ -1574,6 +1594,10 @@ to Некорректное присваивание свойства: ожидается сценарий + Cannot assign multiple values to a singular property + Невозможно присвоить множество значений свойству, принимающему только одно + + Cannot assign object to property Невозможно назначить объектсвойству @@ -1666,8 +1690,16 @@ to Некорректное размещение псевдонима + Invalid alias reference. An alias reference must be specified as <id>, <id>.<property> or <id>.<value property>.<property> + Некорректная ссылка на псевдоним. Ссылка на псевдоним должна быть указана, как <id>, <id>.<свойство> или <id>.<свойство значения>.<свойство> + + + Alias property exceeds alias bounds + Свойство псевдонима выходит за границы + + Invalid alias reference. An alias reference must be specified as <id> or <id>.<property> - Некорректная ссылка на псевдоним. Ссылка на псевдоним должна быть указана, как <id> или <id>.<property> + Некорректная ссылка на псевдоним. Ссылка на псевдоним должна быть указана, как <id> или <id>.<property> Invalid alias reference. Unable to find id "%1" @@ -1682,29 +1714,10 @@ to - QDeclarativeCompositeTypeManager - - Resource %1 unavailable - Ресурс "%1" недоступен - - - Namespace %1 cannot be used as a type - Пространство имён "%1" не может быть использовано в качестве типа - - - %1 %2 - %1 %2 - - - Type %1 unavailable - Тип "%1" недоступен - - - QDeclarativeConnections Cannot assign to non-existent property "%1" - Невозможно назначить несуществующему свойству "%1" + Невозможно назначить несуществующему свойству "%1" Connections: nested objects not allowed @@ -1760,6 +1773,10 @@ to QDeclarativeImportDatabase + cannot load module "%1": File name case mismatch for "%2" + невозможно загрузить модуль "%1": Регистр имени файла не соответствует "%2" + + module "%1" definition "%2" not readable невозможно прочитать определение "%2" модуля "%1" @@ -1815,6 +1832,10 @@ to is not a type не является типом + + File name case mismatch for "%2" + Регистр имени файла не соответствует "%2" + QDeclarativeKeyNavigationAttached @@ -1918,7 +1939,7 @@ to QDeclarativeParser Illegal unicode escape sequence - Неверная unicode esc-последовательность + Недопустимая unicode esc-последовательность Illegal character @@ -1930,7 +1951,7 @@ to Illegal escape squence - Неверная esc-последовательность + Недопустимая esc-последовательность Unclosed comment at end of file @@ -1938,7 +1959,7 @@ to Illegal syntax for exponential number - Недопустимый синтаксис для экспоненциального числа + Недопустимый синтаксис для экспоненциального числа Identifier cannot start with numeric literal @@ -1986,15 +2007,15 @@ to Reserved name "Qt" cannot be used as an qualifier - Зарезервированное имя "Qt" не может быть использовано в качестве спецификатора + Зарезервированное имя "Qt" не может быть использовано в качестве спецификатора Script import qualifiers must be unique. - Спецификаторы импорта сценария должны быть уникальными. + Спецификаторы импорта сценария должны быть уникальными. Script import requires a qualifier - Для импорта сценария требуется спецификатор + Для импорта сценария требуется спецификатор Library import requires a version @@ -2081,6 +2102,25 @@ to + QDeclarativeTypeLoader + + Script %1 unavailable + Сценарий %1 недоступен + + + Type %1 unavailable + Тип "%1" недоступен + + + Namespace %1 cannot be used as a type + Пространство имён "%1" не может быть использовано в качестве типа + + + %1 %2 + %1 %2 + + + QDeclarativeVME Unable to create object of type %1 @@ -3298,18 +3338,10 @@ Please verify the correct directory name was given. QLibrary - Could not mmap '%1': %2 - Не удалось выполнить mmap "%1": %2 - - Plugin verification data mismatch in '%1' Проверочная информация для модуля "%1" не совпадает - Could not unmap '%1': %2 - Не удалось выполнить unmap "%1": %2 - - The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5] Модуль "%1" использует несоместимую библиотеку Qt. (%2.%3.%4) [%5] @@ -6071,7 +6103,7 @@ Please choose a different file name. Voice Dial - Button to trigger voice dialling + Button to trigger voice dialing Голосовой вызов @@ -8381,11 +8413,11 @@ Please choose a different file name. W3C XML Schema identity constraint selector - + Переключатель ограничений типа шаблона W3C XML W3C XML Schema identity constraint field - + Поле ограничений типа шаблона W3C XML A construct was encountered which is disallowed in the current language(%1). @@ -9557,15 +9589,15 @@ Please choose a different file name. Data of type %1 are not allowed to be empty. - + Данные типа %1 не могут быть пустыми. Element %1 is missing child element. - + У элемента %1 отсутствует дочерний элемент. There is one IDREF value with no corresponding ID: %1. - + Присутствует одно значение IDREF без соответствующего ID: %1. Loaded schema file is invalid. @@ -9593,7 +9625,7 @@ Please choose a different file name. Specified type %1 is not known to the schema. - + Указанный тип %1 шаблону не известен. Element %1 is not defined in this scope. @@ -9601,15 +9633,15 @@ Please choose a different file name. Declaration for element %1 does not exist. - + Отсутствует объявление элемента %1. Element %1 contains invalid content. - + В элементе %1 находится неверное содержимое. Element %1 is declared as abstract. - + Элемент %1 объявлен абстрактным. Element %1 is not nillable. @@ -9617,7 +9649,7 @@ Please choose a different file name. Attribute %1 contains invalid data: %2 - + Атрибут %1 содержит неверные данные: %2 Element contains content although it is nillable. @@ -9625,7 +9657,7 @@ Please choose a different file name. Fixed value constraint not allowed if element is nillable. - + Для обнуляемых элементов недопустимо ограничение фиксированным значением. Element %1 cannot contain other elements, as it has a fixed content. @@ -9633,75 +9665,75 @@ Please choose a different file name. Specified type %1 is not validly substitutable with element type %2. - + Указанный тип %1 не может быть корректно замещён элементом типа %2. Complex type %1 is not allowed to be abstract. - + Недопустимо, чтобы сложный тип %1 был абстрактным. Element %1 contains not allowed attributes. - + Элемент %1 содержит недопустимые атрибуты. Element %1 contains not allowed child element. - + Элемент %1 содержит недопустимый дочерний элемент. Content of element %1 does not match its type definition: %2. - + Содержимое элемента %1 не соответствует его определению типа: %2. Content of element %1 does not match defined value constraint. - + Содержимое элемента %1 не соответствует определённому ограничению значения. Element %1 contains not allowed child content. - + Элемент %1 содержит недопустимое дочернее содержимое. Element %1 contains not allowed text content. - + Элемент %1 содержит недопустимое текстовое содержимое. Element %1 is missing required attribute %2. - + У элемента %1 отсутствует необходимый атрибут %2. Attribute %1 does not match the attribute wildcard. - + Атрибут %1 не соответствует шаблону. Declaration for attribute %1 does not exist. - + Отсутствует объявление атрибута %1. Element %1 contains two attributes of type %2. - + Элемент %1 содержит два атрибута типа %2. Attribute %1 contains invalid content. - + Элемент %1 содержит неверное содержимое. Element %1 contains unknown attribute %2. - + Элемент %1 содержит неизвестный атрибут %2. Content of attribute %1 does not match its type definition: %2. - + Содержимое атрибута %1 не соответствует его определению типа: %2. Content of attribute %1 does not match defined value constraint. - + Содержимое атрибута %1 не соответствует определённому ограничению значения. Non-unique value found for constraint %1. - + Обнаружено неуникальное значение для ограничения %1. Key constraint %1 contains absent fields. - + Ограничение на ключ %1 содержит недостающие поля. Key constraint %1 contains references nillable element %2. @@ -9717,7 +9749,7 @@ Please choose a different file name. Field %1 has no simple type. - + Поле %1 имеет не простой тип. ID value '%1' is not unique. diff --git a/translations/qtconfig_ru.ts b/translations/qtconfig_ru.ts index 7137d21..ea1671f 100644 --- a/translations/qtconfig_ru.ts +++ b/translations/qtconfig_ru.ts @@ -4,6 +4,26 @@ MainWindow + <p><b><font size+=2>Appearance</font></b></p><hr><p>Use this tab to customize the appearance of your Qt applications.</p><p>You can select the default GUI Style from the drop down list and customize the colors.</p><p>Any GUI Style plugins in your plugin path will automatically be added to the list of built-in Qt styles. (See the Library Paths tab for information on adding new plugin paths.)</p><p>When you choose 3-D Effects and Window Background colors, the Qt Configuration program will automatically generate a palette for you. To customize colors further, press the Tune Palette button to open the advanced palette editor.<p>The Preview Window shows what the selected Style and colors look like. + <p><b><font size+=2>Внешний вид</font></b></p><hr><p>На этой вкладке можно настроить внешний вид приложений Qt.</p><p>Позволяет выбрать стиль интерфейса по умолчанию из выпадающего списка и настроить используемые стилем цвета.</p><p>Каждый стиль интерфейса, содержащийся в модулях, найденных в путях к модулям, автоматически добавляется в список встроенных стилей Qt (на вкладке Пути к библиотекам имеется более подробная информация о добавлении путей к модулям).</p><p>При выборе эффектов 3D и фоновых цветов окна программа настройки Qt автоматически создаст подходящую палитру. Для дальнейшей настройки цветов следует зайти в расширенный редактор палитры, нажав кнопку Настроить палитру.<p>В окне предпросмотра можно увидеть как будет выглядеть интерфейс с выбранными стилем и цветами. + + + <p><b><font size+=2>Fonts</font></b></p><hr><p>Use this tab to select the default font for your Qt applications. The selected font is shown (initially as 'Sample Text') in the line edit below the Family, Style and Point Size drop down lists.</p><p>Qt has a powerful font substitution feature that allows you to specify a list of substitute fonts. Substitute fonts are used when a font cannot be loaded, or if the specified font doesn't have a particular character.<p>For example, if you select the font Lucida, which doesn't have Korean characters, but need to show some Korean text using the Mincho font family you can do so by adding Mincho to the list. Once Mincho is added, any Korean characters that are not found in the Lucida font will be taken from the Mincho font. Because the font substitutions are lists, you can also select multiple families, such as Song Ti (for use with Chinese text). + <p><b><font size+=2>Шрифты</font></b></p><hr><p>На этой вкладке можно выбрать шрифт по умолчанию для приложений Qt. Выбранный шрифт отображается в строке редактирования ниже выпадающих списков "Шрифт", "Начертание" и "Размер" (по умолчанию это текст "Текст для примера (Sample Text)").</p><p>Qt обладает мощным механизмом подмены шрифтов, который позволяет задавать список подставляемых шрифтов. Подставляемые шрифты используются, когда шрифт не удаётся загрузить или в нём отсутствуют необходимые символы.<p>Например, если требуется, чтобы при выборе шрифта Lucida, в котором отсутствуют корейские иероглифы, для отображения корейского текста использовался шрифт Mincho,то можно добавить его в список. После этого все корейские символы, отсутствующие в шрифте Lucida, будут браться из шрифта Mincho. Так как для замены используется список, то можно добавлять несколько шрифтов, например, можно также добавить шрифт Song Ti для отображения китайского текста. + + + <p><b><font size+=2>Interface</font></b></p><hr><p>Use this tab to customize the feel of your Qt applications.</p><p>If the Resolve Symlinks checkbox is checked Qt will follow symlinks when handling URLs. For example, in the file dialog, if this setting is turned on and /usr/tmp is a symlink to /var/tmp, entering the /usr/tmp directory will cause the file dialog to change to /var/tmp. With this setting turned off, symlinks are not resolved or followed.</p><p>The Global Strut setting is useful for people who require a minimum size for all widgets (e.g. when using a touch panel or for users who are visually impaired). Leaving the Global Strut width and height at 0 will disable the Global Strut feature</p><p>XIM (Extended Input Methods) are used for entering characters in languages that have large character sets, for example, Chinese and Japanese. + <p><b><font size+=2>Интерфейс</font></b></p><hr><p>На этой вкладке можно настроить поведение приложений Qt.</p><p>Если включено "Разрешать символьные ссылки", Qt будет следовать по символьным ссылкам при обработке путей URL. Например, если эта функция включена и /usr/tmp является символьной ссылкой на /var/tmp, то в диалоге выбора файла при вводе пути к каталогу /usr/tmp он будет изменён на /var/tmp.</p><p>Функция "Минимальные размеры" предназначены для тех, кому необходимо чтобы элементы интерфейса были не менее заданного размера (например, при использовании сенсорной панели или для людей с проблемами зрения). Если задать 0 в полях "минимальная ширина" и "минимальная высота", то данная функция будет отключена.</p><p>Метод ввода XIM (расширенные методы ввода) используется для ввода символов на языках с большим набором символов (например, китайском или японском). + + + <p><b><font size+=2>Printer</font></b></p><hr><p>Use this tab to configure the way Qt generates output for the printer.You can specify if Qt should try to embed fonts into its generated output.If you enable font embedding, the resulting postscript will be more portable and will more accurately reflect the visual output on the screen; however the resulting postscript file size will be bigger.<p>When using font embedding you can select additional directories where Qt should search for embeddable font files. By default, the X server font path is used. + <p><b><font size+=2>Принтер</font></b></p><hr><p>На этой вкладке можно настроить способ, которым Qt будет подготавливать данные для печати. Можно указать следует ли встраивать шрифты - в этом случае напечатанные документы будут более похожи на те, что на экране, но при этом увеличится объём данных, передаваемых на печатающее устройство.<p>При использовании встраивания шрифтов можно указать дополнительные каталоги, в которых Qt будет искать файлы шрифтов для встраивания. По умолчанию используется путь к шрифтам X сервера. + + + <p><b><font size+=2>Phonon</font></b></p><hr><p>Use this tab to configure the Phonon GStreamer multimedia backend. <p>It is reccommended to leave all settings on "Auto" to let Phonon determine your settings automatically. + <p><b><font size+=2>Phonon</font></b></p><hr><p>На этой вкладке можно настроить мультимедийную подсистему Phonon GStreamer.<p>Рекомендуется оставить значение "Автоматически" для всех настроек, чтобы Phonon определил параметры самостоятельно. + + Desktop Settings (Default) Настройки рабочего стола (по умолчанию) @@ -236,7 +256,7 @@ Feel Settings - Настройка указателя + Настройки поведения ms @@ -260,7 +280,7 @@ Wheel &Scroll Lines: - &Прокручивать строк при повороте колёсика: + &Прокручивать строк при повороте колёсика: Resolve symlinks in URLs @@ -268,7 +288,7 @@ GUI Effects - Эффекты пользовательского интерфейса + Эффекты интерфейса &Enable @@ -284,15 +304,15 @@ C&omboBox Effect: - Эффект &выпадающего списка: + Эффект &выпадающего списка: &ToolTip Effect: - Эффект &подсказки: + Эффект &подсказки: Tool&Box Effect: - Эффект панели &инструментов: + Эффект панели &инструментов: Disable @@ -308,7 +328,7 @@ Global Strut - Минимальные размеры + Минимальные размеры Minimum &Width: @@ -519,59 +539,59 @@ p, li { white-space: pre-wrap; } Build inactive palette from active - Создать неактивную палитру из активной + Создать неактивную палитру из активной Build disabled palette from active - Создать выключенную палитру из активной + Создать выключенную палитру из активной Central color &roles - Роли &цветов + Основные роли &цветов Choose central color role - Выберите роль цвета + Выберите основную роль цвета <b>Select a color role.</b><p>Available central roles are: <ul> <li>Window - general background color.</li> <li>WindowText - general foreground color. </li> <li>Base - used as background color for e.g. text entry widgets, usually white or another light color. </li> <li>Text - the foreground color used with Base. Usually this is the same as WindowText, in what case it must provide good contrast both with Window and Base. </li> <li>Button - general button background color, where buttons need a background different from Window, as in the Macintosh style. </li> <li>ButtonText - a foreground color used with the Button color. </li> <li>Highlight - a color to indicate a selected or highlighted item. </li> <li>HighlightedText - a text color that contrasts to Highlight. </li> <li>BrightText - a text color that is very different from WindowText and contrasts well with e.g. black. </li> </ul> </p> - <b>Выбор роли цвета.</b><p>Доступны следующие роли: <ul><li>Window - основной цвет фона.</li> <li>WindowText - основной цвет текста.</li> <li>Base - используется в качестве фона для, например, виджетов с текстовыми полями, обычно, белый или другой светлый цвет.</li> <li>Text - цвет текста используемый совместно с Base. Обычно, он совпадает с WindowText, так как в этом случае получается максимальный контраст и с Window, и с Base.</li> <li>Button - основной цвет фона кнопки, которой требуется цвет отличный от Window, например, в стиле Macintosh.</li> <li>ButtonText - цвет текста используемый совместно с Button.</li> <li>Highlight - цвет для обозначения выбранного или выделенного элемента.</li> <li>HighlightedText - цвет текста контрастирующий с Highlight.</li> <li>BrightText - цвет текста, который отличается от WindowText и хорошо контрастирует с черным.</li></ul></p> + <b>Выбор роли цвета.</b><p>Доступны следующие роли: <ul><li><b>Окно</b> - основной цвет фона.</li> <li><b>Текст окна</b> - основной цвет текста.</li> <li><b>Фон</b> - используется в качестве фона для, например, виджетов с текстовыми полями, обычно, белый или другой светлый цвет.</li> <li><b>Текст</b> - цвет текста используемый совместно с <b>Фон</b>. Обычно, он совпадает с <b>Текст окна</b>, так как в этом случае получается максимальный контраст и с <b>Окно</b>, и с <b>Фон</b>.</li> <li><b>Кнопка</b> - основной цвет фона кнопки, которой требуется цвет отличный от <b>Окно</b>, например, в стиле Macintosh.</li> <li><b>Текст кнопки</b> - цвет текста используемый совместно с <b>Кнопка</b>.</li> <li><b>Выделение</b> - цвет для обозначения выбранного или выделенного элемента.</li> <li><b>Выделенный текст</b> - цвет текста контрастирующий с <b>Выделение</b>.</li> <li><b>Яркий текст</b> - цвет текста, который отличается от <b>Текст окна</b> и хорошо контрастирует с черным.</li></ul></p> Window - + Окно WindowText - + Текст окна Button - + Кнопка Base - + Фон Text - + Текст BrightText - + Светлый текст ButtonText - + Текст на кнопке Highlight - + Выделение HighlightedText - + Выделенный текст &Select Color: @@ -595,39 +615,39 @@ p, li { white-space: pre-wrap; } Generate shadings - Создание полутонов + Создание полутонов Check to let 3D-effect colors be calculated from button-color. - Включите, чтобы цвета эффекта трёхмерности были получены из цвета кнопки. + Создать цвета эффекта трёхмерности из цвета кнопки. Choose 3D-effect color role - Выбор роли цвета дял эффекта трёхмерности + Выбор роли цвета дял эффекта трёхмерности <b>Select a color role.</b><p>Available effect roles are: <ul> <li>Light - lighter than Button color. </li> <li>Midlight - between Button and Light. </li> <li>Mid - between Button and Dark. </li> <li>Dark - darker than Button. </li> <li>Shadow - a very dark color. </li> </ul> - <b>Выбор роли цвета.</b><p>Доступны следующие роли: <ul> <li>Light - светлее цвета Button. </li> <li>Midlight - среднее между Light и Button. </li> <li>Mid - среднее между Button и Dark. </li> <li>Dark - темнее цвета Button. </li> <li>Shadow - очень темный цвет. </li> </ul> + <b>Выбор роли цвета.</b><p>Доступны следующие роли: <ul> <li><b>Светлый</b> - светлее цвета <b>Кнопка</b>. </li> <li><b>Полусветлый</b> - среднее между <b>Светлый</b> и <b>Кнопка</b>. </li> <li><b>Полутёмный</b> - среднее между <b>Кнопка</b> и <b>Тёмный</b>. </li> <li><b>Тёмный</b> - темнее цвета <b>Кнопка</b>. </li> <li><b>Тень</b> - очень темный цвет. </li> </ul> Light - + Светлый Midlight - + Полусветлый Mid - + Полутёмный Dark - + Тёмный Shadow - + Тень Select Co&lor: @@ -635,7 +655,7 @@ p, li { white-space: pre-wrap; } Choose a color for the selected effect color role. - Выбор цвета для указанной роли. + Выбор цвета для указанной роли. OK diff --git a/translations/qvfb_ru.ts b/translations/qvfb_ru.ts index a1988de..db9ff2a 100644 --- a/translations/qvfb_ru.ts +++ b/translations/qvfb_ru.ts @@ -262,6 +262,126 @@ QVFb + &File + &Файл + + + &Configure... + &Настройки... + + + &Save image... + &Сохранить изображение... + + + &Animation... + &Анимация... + + + &Quit + В&ыход + + + &View + &Вид + + + Show &Cursor + Отображать &курсор + + + &Refresh Rate... + &Частота обновлений... + + + &No rotation + &Без поворота + + + &90° rotation + Поворот на &90° + + + 1&80° rotation + Поворот на 1&80° + + + 2&70° rotation + Поворот на 2&70° + + + Zoom scale &0.5 + Масштаб &0.5 + + + Zoom scale 0.7&5 + Масштаб 0.7&5 + + + Zoom scale &1 + Масштаб &1 + + + Zoom scale &2 + Масштаб &2 + + + Zoom scale &3 + Масштаб &3 + + + Zoom scale &4 + Масштаб &4 + + + Zoom &scale... + &Масштаб... + + + &Help + &Справка + + + &About... + &О программе... + + + Save Main Screen image + Сохранить снимок основного экрана + + + snapshot.png + снимок.png + + + Portable Network Graphics (*.png) + Portable Network Graphics (*.png) + + + Save Main Screen Image + Сохранить снимок основного экрана + + + Save failed. Check that you have permission to write to the target directory. + Не удалось сохранить. Убедитесь, что Вы имеете права на запись в целевой каталог. + + + Save Second Screen image + Сохранить снимок дополнительного экрана + + + Save Second Screen Image + Сохранить снимок дополнительного экрана + + + About QVFB + О QVFB + + + <h2>The Qt for Embedded Linux Virtual X11 Framebuffer</h2><p>This application runs under Qt for X11, emulating a simple framebuffer, which the Qt for Embedded Linux server and clients can attach to just as if it was a hardware Linux framebuffer. <p>With the aid of this development tool, you can develop Qt for Embedded Linux applications under X11 without having to switch to a virtual console. This means you can comfortably use your other development tools such as GUI profilers and debuggers. + <h2>Qt для Embedded Linux Virtual X11 Framebuffer</h2><p>Данное приложение работает под Qt для X11, эмулируя простой фрэймбуфер, к которому сервер и клиенты Qt для Embedded Linux могут соединяться как если бы это был аппаратный фрэймбуфер Linux. <p>С помощью данного инструмента Вы можете разрабатывать приложения Qt для Embedded Linux под X11 без необходимости переключаться в виртуальную консоль, что делает более удобным использование других инструментов с графическим интерфейсом - как то профайлеров и отладчиков. + + Browse... Обзор... @@ -274,4 +394,23 @@ Все обложки QVFB (*.skin) + + QVFbRateDialog + + Target frame rate: + Частота смены кадров: + + + %1fps + %1 к/с + + + OK + ОК + + + Cancel + Отмена + + -- cgit v0.12 From 69a1fce88bb5f733895cc21758fd398bd650b7a6 Mon Sep 17 00:00:00 2001 From: Aaron McCarthy Date: Fri, 5 Nov 2010 10:01:24 +1000 Subject: Fix synchronous dispatch in ICD in non-main threads. ICD DBus signals always come in via the main thread. During synchronous dispatch these signals were not being emitted when expected because no event loop is running in the destination thread. Fixed by added a call to QCoreApplication::sendPostedEvents(object, QEvent::MetaCall) in the synchronous dispatch loop. Task-number: QTBUG-15004 --- src/plugins/bearer/icd/maemo_icd.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/bearer/icd/maemo_icd.cpp b/src/plugins/bearer/icd/maemo_icd.cpp index 4f879e3..57ab0a8 100644 --- a/src/plugins/bearer/icd/maemo_icd.cpp +++ b/src/plugins/bearer/icd/maemo_icd.cpp @@ -508,6 +508,7 @@ uint IcdPrivate::state(QList& state_results) mInterface.clear(); while ((time(0)<=(started+timeout_secs)) && mInterface.isEmpty()) { mDBus->synchronousDispatch(1000); + QCoreApplication::sendPostedEvents(icd, QEvent::MetaCall); } if (time(0)>(started+timeout_secs)) { @@ -685,6 +686,7 @@ uint IcdPrivate::addrinfo(QList& addr_results) mInterface.clear(); while ((time(0)<=(started+timeout_secs)) && mInterface.isEmpty()) { mDBus->synchronousDispatch(1000); + QCoreApplication::sendPostedEvents(icd, QEvent::MetaCall); } if (time(0)>(started+timeout_secs)) { -- cgit v0.12 From 9615608afa7e0a62d1a444b699f40aeeaeaf41de Mon Sep 17 00:00:00 2001 From: Aaron McCarthy Date: Fri, 5 Nov 2010 11:08:31 +1000 Subject: Fix opening a network session multiple times in succession. Don't try to open the network session if there is already an in progress open request. --- src/plugins/bearer/icd/qnetworksession_impl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/bearer/icd/qnetworksession_impl.cpp b/src/plugins/bearer/icd/qnetworksession_impl.cpp index 37434e3..8d0f587 100644 --- a/src/plugins/bearer/icd/qnetworksession_impl.cpp +++ b/src/plugins/bearer/icd/qnetworksession_impl.cpp @@ -679,7 +679,7 @@ void QNetworkSessionPrivateImpl::open() if (serviceConfig.isValid()) { lastError = QNetworkSession::OperationNotSupportedError; emit QNetworkSessionPrivate::error(lastError); - } else if (!isOpen) { + } else if (!opened) { if (publicConfig.type() == QNetworkConfiguration::UserChoice) { /* Caller is trying to connect to default IAP. * At this time we will not know the IAP details so we just -- cgit v0.12