diff options
author | Jarek Kobus <jkobus@trolltech.com> | 2009-04-17 06:59:50 (GMT) |
---|---|---|
committer | Jarek Kobus <jkobus@trolltech.com> | 2009-04-17 06:59:50 (GMT) |
commit | fa58c0e9afecc3807bd76babbd5da3918afcdd3d (patch) | |
tree | 4895431d492b093b1e2ee29032fa82999a8ed09b | |
parent | 04c01e15739d926ef653293ef1e89132085d7acd (diff) | |
parent | 8eb08c8c294f00763961e86cc3370b0ef78c8976 (diff) | |
download | Qt-fa58c0e9afecc3807bd76babbd5da3918afcdd3d.zip Qt-fa58c0e9afecc3807bd76babbd5da3918afcdd3d.tar.gz Qt-fa58c0e9afecc3807bd76babbd5da3918afcdd3d.tar.bz2 |
Merge branch '4.5' of git@scm.dev.nokia.troll.no:qt/qt into 4.5
210 files changed, 3388 insertions, 2891 deletions
@@ -205,10 +205,10 @@ earlyArgParse() h|help|--help|-help) if [ "$VAL" = "yes" ]; then OPT_HELP="$VAL" - COMMERCIAL_USER="yes" #doesn't matter we will display the help + COMMERCIAL_USER="no" #doesn't matter we will display the help else UNKNOWN_OPT=yes - COMMERCIAL_USER="yes" #doesn't matter we will display the help + COMMERCIAL_USER="no" #doesn't matter we will display the help fi ;; --*) @@ -6213,6 +6213,9 @@ QT_BUILD_KEY_COMPAT= if [ "$QT_CROSS_COMPILE" = "no" ]; then # previous versions of Qt used a build key built from the uname QT_BUILD_KEY_COMPAT="$CFG_USER_BUILD_KEY $UNAME_MACHINE $UNAME_SYSTEM $COMPILER $BUILD_OPTIONS" + if [ -n "$QT_NAMESPACE" ]; then + QT_BUILD_KEY_COMPAT="$QT_BUILD_KEY_COMPAT $QT_NAMESPACE" + fi fi # strip out leading/trailing/extra whitespace QT_BUILD_KEY=`echo $QT_BUILD_KEY | sed -e "s, *, ,g" -e "s,^ *,," -e "s, *$,,"` diff --git a/configure.exe b/configure.exe Binary files differindex 13ca0e5..ff71f08 100644 --- a/configure.exe +++ b/configure.exe diff --git a/demos/qtdemo/colors.cpp b/demos/qtdemo/colors.cpp index 18343cb..41bbfb3 100644 --- a/demos/qtdemo/colors.cpp +++ b/demos/qtdemo/colors.cpp @@ -278,6 +278,9 @@ void Colors::parseArgs(int argc, char *argv[]) + "[-low] [-ticker-letters<int>] [-ticker-speed<float>] [-no-ticker-morph] " + "[-ticker-morph-speed<float>] [-ticker-text<string>]"); exit(0); + } else{ + QMessageBox::warning(0, "QtDemo", QString("Unrecognized argument:\n") + s); + exit(0); } } diff --git a/demos/qtdemo/menumanager.cpp b/demos/qtdemo/menumanager.cpp index bfa2e3f..a9e9b4b 100644 --- a/demos/qtdemo/menumanager.cpp +++ b/demos/qtdemo/menumanager.cpp @@ -184,7 +184,6 @@ void MenuManager::itemSelected(int userCode, const QString &menuName) this->tickerInAnim->startDelay = 2000; this->ticker->useGuideQt(); this->score->queueMovie("ticker", Score::NEW_ANIMATION_ONLY); - this->window->switchTimerOnOff(true); } break; case MENU1: @@ -220,7 +219,6 @@ void MenuManager::itemSelected(int userCode, const QString &menuName) this->score->queueMovie(this->currentInfo + " -buttons", Score::NEW_ANIMATION_ONLY); if (!Colors::noTicker){ this->score->queueMovie("ticker -out", Score::NEW_ANIMATION_ONLY); - this->window->switchTimerOnOff(false); } break; case UP:{ @@ -257,7 +255,6 @@ void MenuManager::itemSelected(int userCode, const QString &menuName) this->ticker->doIntroTransitions = false; this->tickerInAnim->startDelay = 500; this->score->queueMovie("ticker", Score::NEW_ANIMATION_ONLY); - this->window->switchTimerOnOff(true); } } else if (this->currentMenuCode != ROOT) itemSelected(ROOT, Colors::rootMenuName); diff --git a/dist/changes-4.5.1 b/dist/changes-4.5.1 index e8595ff..016a99d 100644 --- a/dist/changes-4.5.1 +++ b/dist/changes-4.5.1 @@ -24,6 +24,27 @@ General Improvements -------------------- - Documentation and Examples + * Added printing feature for the Spreadsheet demo. + * [245675] Clarified the differences between QItemDelegate and + QStyledItemDelegate. + * [248752] Marked QPrintDialog::printer(), setPrinter() and addButton() + as Unix only functions, part of Qt3Support. + +- Embedded Dialogs demo + * [246517] Fixed warnings and bugs in hover handling on Mac OS X + + +Optimizations +------------- + +- Graphics View has been optimized in several areas + * Improved the performance of QGraphicsItem::clipPath. + * Improved the performance of QGraphicsItem::setPos. + * Improved the performance of QGraphicsItem::effectiveOpacity. + * Improved the performance of QGrahicsScene::items(*). + * Improved update handling. + * Reduced the number of floating point operations. + * Reduced QVariant overhead. Third party components ---------------------- @@ -34,56 +55,113 @@ Third party components **************************************************************************** - QAbstractItemModel - * [243195] Clrarified some warning messages printed if the model is invalid. + * [243195] Clarified some warning messages printed if the model is invalid. - QAbstractEventDispatcher - * [248805] Duplicates timerid could happen when timer are running while - the QObject is moved to another thread, and would stop timers from working. + * [248805] Duplicate timerids could occur when a timer is running while + the QObject is moved to another thread, stopping timers from working. - QAbstractSocket - * [192037] Emit disconnected only if we were connected before + * [192037] Emit the disconnected signal only if we were connected before. + +- QAccessible + * [241161] Fixed a bug in browsing menus with the keyboard. + * [221731] Fixed a bug where the accessibility plugin could crash if + there was an "&" at the end or spin forever if a label had a sequence of + "&&". + +- QAtomicInt + * [216492] Fixed compilation on 64-bit PowerPC machines with gcc 4.3. - QAuthenticator - * [237979] fix implemenation of md5-sess + * [237979] Fixed implementation of md5-sess. + +- QByteArray + * [246233] QByteArray::fromHex() fails with input of size 1. - QColorDialog - * [247349] Fixed bug causing the wrong alpha value to be returned. + * [247349] Fixed a bug causing the wrong alpha value to be returned. - QCombobox - * [248094] Fixed scrollbar appearing while not required. + * [248094] Fixed scrollbar from appearing when not required. - QCompleter - * [250064] Fixed focus policy propagation regression. - * [246056] Fixed assertion failure in setCompletionPrefix(). + * [250064] Fixed a focus policy propagation regression. + * [246056] Fixed an assertion failure in setCompletionPrefix(). + +- QtConcurrent + * [244718] Reduced the number of calls to QThread::idealThreadCount(). - QDirIterator - * [247645] Fix a bug that may loose all cached data inside the QFileInfo + * [247645] Fixed a bug that may loose all cached data inside QFileInfo. + +- QFile + * [244500] QFile::rename() does not always return false when the method + fails + * [244485] Renaming a file does not change QFile::fileName(). - QFileInfo - * [205244] return valid file info also for relative UNC paths + * [205244] Return valid file info also for relative UNC paths. - QFileDialog - * [250194] QFileDialog and QSortFilterProxyModel index mapping issue - * [248332] QFileDialog is slow after visiting a large directory - * [221323] QFileDialog programatical file selection bug + * [250194] Fixed an issue with QFileDialog and QSortFilterProxyModel + index mapping. + * [248332] QFileDialog is slow after visiting a large directory. + * [221323] QFileDialog programmatical file selection bug. + +- QGLFramebufferObject + * Framebuffer object extension resolution now works with OpenGL/ES 2.0. - QGraphicsItem - * [247890] Cached QGraphicsItems are not updated if update() is called when they are hidden - * [250272] When an item is deleted it does not get removed from the sceneeventfilters meaning a crash can occur + * [247890] Cached QGraphicsItems are not updated if update() is called + when they are hidden. + * [250272] When an item is deleted it does not get removed from the + sceneeventfilters, meaning a crash can occur. + * Fixed a slow down regression in QGraphicsItem::ItemCoordinateCache. + +- QGraphicsGridLayout + * [242472] Fixed a bug where the calculation of the maximum width of a + column was incorrect. --QGraphicsView - * [245766] Rubber Band drag mode not updated correctly when scrolling +- QGraphicsScene + * [243707] Fixed a crash when adding child before parent to scene. + +- QGraphicsView + * [245766] Rubber Band drag mode does not update correctly when + scrolling. + +- QGraphicsWidget + * [246215] Fixed a regression where we could cache the wrong size hint + because we called the virtual sizeHint() from the constructor. - QHttp - * [208445] cancel request upon receiving unknown authentication method + * [208445] Cancel request upon receiving unknown authentication method. + * Compile fixes for QT_BEGIN_NAMESPACE being in the wrong place in + some private headers. + +- QHostAddress + * [247330] Fixed compilation on MinGW by adding a missing QPair include. + +- QLocalSocket + * Fixed a bug that would cause QLocalSocket to disconnect 30 seconds + after a succesful delayed connection on UNIX. - QMacStyle - * [248769] Fix regression where QMacStyle would only draw tabs when passed a QStyleOptionTabV3. - * Adjust the opacity value for popups. + * [248769] Fixed a regression where QMacStyle would only draw tabs when + passed a QStyleOptionTabV3. + * Adjusted the opacity value for popups. - QMainWindow * [248048] Fix a regression that would cause tooltips to disappear when using the unified toolbar. +- QMetaType + * [248890] Detailed description of QMetaType no longer contradicts + documentation of QMetaType::type() + +- QMutex + * Fix performance regression for contended mutexes as reported on + the qt4-preview-feedback list. + - QPainter * [247492] Fix rendering bug in raster paint engine causing one-pixel offset when drawing premultiplied ARGB32 images on RGB16 images. @@ -95,11 +173,17 @@ Third party components * [247505] Fix missing fills of rectangles with negative width/height in raster paint engine. * [249628] Fix crash in OpenGL paint engine when filling using Qt::NoBrush. + * Compile fixes for OpenGL paint engine on OpenGL/ES 1.1 CommonLite + and OpenGL/ES 1.0. - QPixmap * [249175] Fix QPixmap::fromImage() of monochrome images to result in black/white pixels and not transparent/white pixels. +- QProcess + * [247865] Fix a crash when calling QProcess::start() and + startDetached() with an empty program string. + - QScrollBar * [247985] Stylesheet: added ability to style scrollbar menus. @@ -115,6 +199,9 @@ Third party components * [245668] set also protocol, verifyMode and verifyDepth in setSslConfiguration() +- QString + * [249517] Fixed regression in replace(int, int, QChar) when string is empty + - QStyleSheetStyle * Improved support for setting background and foreground roles in styles such as the text color in a combo box popup on Mac and Cleanlooks, or @@ -123,14 +210,30 @@ Third party components * Fixed crash while styling the title bar of a QMdiArea. * [246542] Fixed QToolButton::hover{ color:.... } +- QThread + * [249997] Add documentation indicating that the priority set by + the programmer may be ignored, for example on Linux. + - QTreeView * Fixed crash that may occurs when event are processed just after QSortFilterProxyModel has been invalidated * [246025] Fixed auto-expand that occurs while quicly collapsing an item after clicking on a child - * [248805] Calling programatically QTreeView::sortByColumn was not working if manual + * [248805] Calling programatically QTreeView::sortByColumn was not working if manual sorting is disabled * [248163] Fixed possible crash in the paintEvent when spans are used. +- QWidget + * [250388] Fixed potential crash in QWidget::scroll() when using the raster + graphics system. + +- QWidget + * [246852] Better handling WindowMaximizeButtonHint for widget with + layouts. + +-QLocale + * String-to-number conversion functions are now ignore trailing and + leading whitespaces in all locales as it is documented. + - QWizard * [248107] Fixed bug on Vista causing Back button to connect twice to the back() signal. @@ -146,10 +249,28 @@ Third party components * Fixed path fill styles (Zack Rusin) * Fixed pre-edit text handling with input methods. +- QSqlTableModel + * [189093] QSqlTableModel did not handle updates when one of the fields + had a NULL value. + * Made setTable() try and use the db's casing of the passed tablename. + **************************************************************************** * Database Drivers * **************************************************************************** + * Fixed DB2 driver returning double field as empty + * Fixed memory leak in DB2 driver + * [249059] Fixed QPSQL datetime/time fields with negative timezone offsets + not being handled correctly. + * Fixed DB2 not enquoting table/field names properly. + * Fixed an issue with ODBC & FreeTDS not accepting quotes in statements. + * Fixed sqlite2 driver not returning false on failing to exec a statement. + * PrecisionPolicy now works in the oracle driver. + * Fixed ODBC driver returning a list of tables when requested. + * Fixed Interbase retrieving scale/precision information on numeric/decimal fields. + * Stopped drivers doing quoting again when escapeIdentifier called twice. + * Fixed sqlite2 driver not quoting fields correctly. + * [232769] Fixed memory overflow issue on bound out strings in ODBC Driver **************************************************************************** * Platform Specific Changes * @@ -158,6 +279,37 @@ Third party components Qt for Linux/X11 ---------------- + * Proper resetting input contexts when switching between multiple + input context plugins. + + * [244337] Improved input method handling when the widgets native + window id is recreated. + + * Input methods preedit strings are properly reset when user + switches focus without commiting a string. + + * [244607] Current focus widget is properly set and input method is + properly initialized when showing a toplevel that accepts + keyboard input. + + * Unicode conversion functions will handle Latin-1 character set + only if they are used before QCoreApplication/QApplication is + constructed. + + * Improved handling of failed unicode conversion. + + * [232632] Fixed reparenting widgets to a difference X11 screen. + + * [241888] The background of the drag-n-drop cursor is respected + according to the stylesheet. + + * Fixed clipboard handling when the user manually creates an + instance of the QDesktopWidget. + + * [226048] Fixed emitting a QDesktopWidget::resized() signal when + new screen appears or screen geometry is changed without + affecting the whole desktop geometry. + - Phonon/GStreamer * [244259] Fixed a problem where the backend would fail to indicate an error when streaming fails. @@ -169,13 +321,13 @@ Qt for Linux/X11 CD playback. - QGtkStyle - * The system palette is no longer strictly forced. Also behavior related + * The system palette is no longer strictly forced. Also behavior related to system theme changes have been improved. * [249363] QFrame is now styled as a GtkScrolledWindow. * [247653] Fixed a compilation issue on solaris. - * Fixed palette and styling issues with the background color of + * Fixed palette and styling issues with the background color of combo box popups. - * [239829] Disabled alt-key navigation for QGtkStyle to follow + * [239829] Disabled alt-key navigation for QGtkStyle to follow GTK+ behavior. * [238196] Allow middle click to set scrollbar position to follow GTK+ behavior. @@ -195,10 +347,17 @@ Qt for Linux/X11 * Event posted to a thread before it is started are not processed until others events are posted. +- QWidget + * [213512] Fixed a bug that would cause wrong clipping when using the + Qt::WA_PaintOutsidePaintEvent attribute. + Qt for Windows -------------- + * [243583] Improved drag-and-drop handling when switching mouse + buttons fast. + - QCoreApplication * [247401] Fixed a bug that would cause a restarted timer to fire too early, causing Javascript in QtWebKit to consume 100% CPU on @@ -207,6 +366,10 @@ Qt for Windows * [248036] Fixed an issue where tool buttons would incorrectly hover when disabled. +- QWidget + * [248391] Fixed a bug that made it impossible to dynamically switch + from QPainter based graphics to native graphics API and back. + - [249576] Fixed a crash when using a combobox with Qt::NoFocus. - [244875] System menu will now be shown for a fullscreen window. - [240891] Corrected the focus behavior of native file dialogs, when application has multiple toplevels. @@ -232,14 +395,43 @@ Qt for Mac OS X * Modify the colliding mice example to work better with coalesced updates. * Fixed a bug where the drag cursor was not updated when modifier keys are used. * [247947] Fixed a crash in drag and drop. + * The command + h shortcut is now enabled. (Hides the current window.) + * [239043] Fixed a bug that would cause QGraphicsProxyWidget to shrink when moving it. -- Fix a crash when showing a widget that is window modal but has no parent. -- [248803] Showing two dialogs at the same time don't get shared activation. -- Added QSysInfo::MV_10_6 as an enum to test against. -- Various compile fixes for Snow Leopard (preliminary support). +- QDesktopWidget + * [244004] Support multiple screens that have different sizes properly. + +- QDialog + * [239155] QDialog(foo, Qt::Sheet) with QComboBox have none native behavior. + * [218980] Modeless dialogs should be stacked above normal windows. + * [195904] Parent dialog is displayed on top of its modal child. +- QFileDialog + * [219844] QFileDialog::getOpenFileName() search buttons lead to crash (native version). + * [225705] QFileDialog::getSaveFileName()'s filter does not display correctly. + +- QMenu + * [228017] QMenu should close when expanding a system menu. + +- Event system + * [210912] ShowEvent not sendt when reshowing a window after it was minimized. + +- macdeployqt + * The binary packages now includes the macdeployqt tool. + * macdeployqt now runs 'strip' on the deployed binaries. + * Fixed issue preventing the QtSvg from being deployed. +- configure script + * Now supports "-arch i386" as an alias for "-arch x86". + * Detects invalid arch arguemnts and exits. + +- Fix a crash when showing a widget that is window modal but has no parent. +- [248803] Showing two dialogs at the same time don't get shared activation. +- Added QSysInfo::MV_10_6 as an enum to test against. +- Various compile fixes for Snow Leopard (preliminary support). - The uninstall-qt.py script included in the binary package no longer complains about removing itself multiple times. +- [223525] Macmainwindow Demo Application (crashfix). + - Document a bit clearer how qt_mac_set_dock_menu() works. @@ -252,10 +444,13 @@ Qt for Embedded Linux --------------------- - Various improvements to the Qt DirectFB plugin. +- Fix recreation of temporary EGL surfaces in PowerVR gfxdriver. +- Document some necessary #define's for building the PowerVR gfxdriver. Qt for Windows CE ----------------- + * [246619] Fixed tap and hold bug for QCheckbox. **************************************************************************** * Compiler Specific Changes * @@ -282,17 +477,29 @@ Qt for Windows CE * [245503] Fixed redundant backslashes in string property in property browser. - Linguist + - Linguist GUI - - lupdate + * [248076] Fixed crash upon opening files for which we have no plural rules + * [249519] Fixed crash upon dropping text into non-focused lineedit - - lrelease + - Entire Linguist toolchain + + * [244035] Fixed endless loop in PO writer + * [247738] Improved handling of duplicated messages + * [248849] Fixed encoding in XLIFF writer + * [249022] Fixed TS' and QM's handling of messages which appear in multiple encodings + + - lupdate + * [248724] Fixed encoding of messages from .ui files if CODECFORTR is not utf8 + * [249633] Fixed processing of C++ backslash line continuations - rcc - moc + * [240368] moc parsing issue with "unsigned" subphrase - uic * [244998] Fixed include file generation for phonon widgets. @@ -306,6 +513,9 @@ Qt for Windows CE - qmake * [248806] Ensure that the Xcode generator includes the right path to frameworks. + * [201495] Comment processing in qmake prevented file from being moc'ed + * On Mac OS, properly escape file names in QMAKE_BUNDLE_DATA + * Fixed moc and uic features to make shadow builds work even if a non-shadow build is present - configure diff --git a/doc/src/examples/qxmlstreambookmarks.qdoc b/doc/src/examples/qxmlstreambookmarks.qdoc index 7059043..fb3a1c1 100644 --- a/doc/src/examples/qxmlstreambookmarks.qdoc +++ b/doc/src/examples/qxmlstreambookmarks.qdoc @@ -103,8 +103,9 @@ The \c read() function accepts a QIODevice and sets it using \l{QXmlStreamReader::setDevice()}{setDevice()}. The actual process - of reading only takes place in event the file is a valid XBEL 1.0 - file. Otherwise, the \l{QXmlStreamReader::raiseError()} + of reading only takes place if the file is a valid XBEL 1.0 file. + Note that the XML input needs to be well-formed to be accepted by + QXmlStreamReader. Otherwise, the \l{QXmlStreamReader::raiseError()} {raiseError()} function is used to display an error message. \snippet examples/xml/streambookmarks/xbelreader.cpp 1 diff --git a/doc/src/qnamespace.qdoc b/doc/src/qnamespace.qdoc index e6a1a36..d9f001e 100644 --- a/doc/src/qnamespace.qdoc +++ b/doc/src/qnamespace.qdoc @@ -142,7 +142,7 @@ QAction::iconVisibleInMenu property. Menus that are currently open or menus already created in the native - Mac OS X menubar MAY NOT pick up a change in this attribute. Changes + Mac OS X menubar \e{may not} pick up a change in this attribute. Changes in the QAction::iconVisibleInMenu property will always be picked up. \value AA_NativeWindows Ensures that widgets have native windows. diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc index cd66c10..5d83ef2 100644 --- a/doc/src/qt4-intro.qdoc +++ b/doc/src/qt4-intro.qdoc @@ -161,9 +161,9 @@ \o Support for OLE verbs and MIME data handling in \l{ActiveQt}. \endlist - For more information about improvements in the current release, see - the \l{http://www.qtsoftware.com/developer/changes/changes-4.1.4/} - {detailed list of changes}. + For more information about improvements in each Qt release, see + the \l{http://www.qtsoftware.com/developer/changes/} + {detailed lists of changes}. \section1 Significant Improvements @@ -447,11 +447,10 @@ \l{http://www.qtsoftware.com/developer/changes/changes-4.5.0}{available online}. A \l{Known Issues in %VERSION%}{list of known issues} for this release is also available. - \omit + Changes between this release and the previous release are provided in the \c{changes-%VERSION%} file (also \l{http://www.qtsoftware.com/developer/changes/changes-%VERSION%}{available online}). - \endomit A list of other Qt 4 features can be found on the \bold{\l{What's New in Qt 4}} page. diff --git a/doc/src/snippets/alphachannel.cpp b/doc/src/snippets/alphachannel.cpp index 7783271..ad0885a 100644 --- a/doc/src/snippets/alphachannel.cpp +++ b/doc/src/snippets/alphachannel.cpp @@ -47,11 +47,8 @@ #include <qfile.h> #include <qdir.h> #include <qfileinfo.h> - -#if (QT_VERSION) >= 0x040000 #include <QtGui> #include <QtCore> -#endif class MyClass : public QWidget { @@ -95,12 +92,10 @@ protected: //! [0] } - QPixmap channelImage, pixmap; + QPixmap channelImage, pixmap; QSize sizeHint() const { return QSize(500, 500); } }; - - int main(int argc, char **argv) { QApplication app(argc, argv); diff --git a/examples/dialogs/standarddialogs/dialog.cpp b/examples/dialogs/standarddialogs/dialog.cpp index 0fe1f7e..1f7c5ef 100644 --- a/examples/dialogs/standarddialogs/dialog.cpp +++ b/examples/dialogs/standarddialogs/dialog.cpp @@ -59,7 +59,7 @@ Dialog::Dialog(QWidget *parent) integerLabel = new QLabel; integerLabel->setFrameStyle(frameStyle); QPushButton *integerButton = - new QPushButton(tr("QInputDialog::get&Integer()")); + new QPushButton(tr("QInputDialog::get&Int()")); doubleLabel = new QLabel; doubleLabel->setFrameStyle(frameStyle); @@ -198,8 +198,8 @@ void Dialog::setInteger() { //! [0] bool ok; - int i = QInputDialog::getInteger(this, tr("QInputDialog::getInteger()"), - tr("Percentage:"), 25, 0, 100, 1, &ok); + int i = QInputDialog::getInt(this, tr("QInputDialog::getInteger()"), + tr("Percentage:"), 25, 0, 100, 1, &ok); if (ok) integerLabel->setText(tr("%1%").arg(i)); //! [0] diff --git a/examples/layouts/flowlayout/flowlayout.cpp b/examples/layouts/flowlayout/flowlayout.cpp index d1e857d..c4032d0 100644 --- a/examples/layouts/flowlayout/flowlayout.cpp +++ b/examples/layouts/flowlayout/flowlayout.cpp @@ -43,16 +43,16 @@ #include "flowlayout.h" -FlowLayout::FlowLayout(QWidget *parent, int margin, int spacing) - : QLayout(parent) +FlowLayout::FlowLayout(QWidget *parent, int margin, int hSpacing, int vSpacing) + : QLayout(parent), m_hSpace(hSpacing), m_vSpace(vSpacing) { - setMargin(margin); - setSpacing(spacing); + setContentsMargins(margin, margin, margin, margin); } -FlowLayout::FlowLayout(int spacing) +FlowLayout::FlowLayout(int margin, int hSpacing, int vSpacing) + : m_hSpace(hSpacing), m_vSpace(vSpacing) { - setSpacing(spacing); + setContentsMargins(margin, margin, margin, margin); } FlowLayout::~FlowLayout() @@ -67,6 +67,24 @@ void FlowLayout::addItem(QLayoutItem *item) itemList.append(item); } +int FlowLayout::horizontalSpacing() const +{ + if (m_hSpace >= 0) { + return m_hSpace; + } else { + return smartSpacing(QStyle::PM_LayoutHorizontalSpacing); + } +} + +int FlowLayout::verticalSpacing() const +{ + if (m_vSpace >= 0) { + return m_vSpace; + } else { + return smartSpacing(QStyle::PM_LayoutVerticalSpacing); + } +} + int FlowLayout::count() const { return itemList.size(); @@ -125,20 +143,27 @@ QSize FlowLayout::minimumSize() const int FlowLayout::doLayout(const QRect &rect, bool testOnly) const { - int x = rect.x(); - int y = rect.y(); + int left, top, right, bottom; + getContentsMargins(&left, &top, &right, &bottom); + QRect effectiveRect = rect.adjusted(+left, +top, -right, -bottom); + int x = effectiveRect.x(); + int y = effectiveRect.y(); int lineHeight = 0; QLayoutItem *item; foreach (item, itemList) { QWidget *wid = item->widget(); - int spaceX = spacing() + wid->style()->layoutSpacing( + int spaceX = horizontalSpacing(); + if (spaceX == -1) + spaceX = wid->style()->layoutSpacing( QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Horizontal); - int spaceY = spacing() + wid->style()->layoutSpacing( + int spaceY = verticalSpacing(); + if (spaceY == -1) + spaceY = wid->style()->layoutSpacing( QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Vertical); int nextX = x + item->sizeHint().width() + spaceX; - if (nextX - spaceX > rect.right() && lineHeight > 0) { - x = rect.x(); + if (nextX - spaceX > effectiveRect.right() && lineHeight > 0) { + x = effectiveRect.x(); y = y + lineHeight + spaceY; nextX = x + item->sizeHint().width() + spaceX; lineHeight = 0; @@ -150,5 +175,19 @@ int FlowLayout::doLayout(const QRect &rect, bool testOnly) const x = nextX; lineHeight = qMax(lineHeight, item->sizeHint().height()); } - return y + lineHeight - rect.y(); + return y + lineHeight - rect.y() + bottom; +} + +int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const +{ + QObject *parent = this->parent(); + if (!parent) { + return -1; + } else if (parent->isWidgetType()) { + QWidget *pw = static_cast<QWidget *>(parent); + return pw->style()->pixelMetric(pm, 0, pw); + } else { + return static_cast<QLayout *>(parent)->spacing(); + } } + diff --git a/examples/layouts/flowlayout/flowlayout.h b/examples/layouts/flowlayout/flowlayout.h index f864d8e..9940e55 100644 --- a/examples/layouts/flowlayout/flowlayout.h +++ b/examples/layouts/flowlayout/flowlayout.h @@ -49,11 +49,13 @@ class FlowLayout : public QLayout { public: - FlowLayout(QWidget *parent, int margin = -1, int spacing = 0); - FlowLayout(int spacing = 0); + FlowLayout(QWidget *parent, int margin = -1, int hSpacing = -1, int vSpacing = -1); + FlowLayout(int margin = -1, int hSpacing = -1, int vSpacing = -1); ~FlowLayout(); void addItem(QLayoutItem *item); + int horizontalSpacing() const; + int verticalSpacing() const; Qt::Orientations expandingDirections() const; bool hasHeightForWidth() const; int heightForWidth(int) const; @@ -66,8 +68,11 @@ public: private: int doLayout(const QRect &rect, bool testOnly) const; + int smartSpacing(QStyle::PixelMetric pm) const; QList<QLayoutItem *> itemList; + int m_hSpace; + int m_vSpace; }; #endif diff --git a/examples/tutorials/addressbook/README b/examples/tutorials/addressbook/README index 2d528b5..9b7f908 100644 --- a/examples/tutorials/addressbook/README +++ b/examples/tutorials/addressbook/README @@ -4,7 +4,7 @@ Qt documentation, which can be viewed using Qt Assistant or a Web browser. The tutorial is also available online at -http://doc.trolltech.com/4.4/tutorial.html +http://doc.trolltech.com/tutorial.html All programs corresponding to the chapters in the tutorial should automatically be built when Qt is compiled, or will be provided as diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index 9decb66..1762ecd 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -8,4 +8,4 @@ The commit imported was from the and has the sha1 checksum - f72c14123c593dc9d649d25b7186334bba0026b5 + e446518445c51c56471e41b1697e2a9e9f3adf36 diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog index d0382f2..3774ea5 100644 --- a/src/3rdparty/webkit/WebCore/ChangeLog +++ b/src/3rdparty/webkit/WebCore/ChangeLog @@ -1,3 +1,51 @@ +2009-02-03 Dirk Schulze <krit@webkit.org> + + Reviewed by Sam Weinig. + + This is a follow up of r40546. Call toImage() once speeds up ImageBuffer::getImageData() + + * platform/graphics/qt/ImageBufferQt.cpp: + (WebCore::ImageBuffer::getImageData): + +2009-02-03 Dirk Schulze <krit@webkit.org> + + Reviewed by Sam Weinig and Oliver Hunt. + + Added getImageData() support for QtWebKit. + + [QT] lacks getImageData / putImageData support in Canvas + https://bugs.webkit.org/show_bug.cgi?id=22186 + + * platform/graphics/qt/ImageBufferQt.cpp: + (WebCore::ImageBuffer::getImageData): + +2009-04-14 Benjamin C Meyer <benjamin.meyer@torchmobile.com> + + Reviewed by George Staikos. + + https://bugs.webkit.org/show_bug.cgi?id=25099 + + When creating a QNetworkRequest make sure to populate the + CacheLoadControlAttribute with the value set by the ResourceRequest::cachePolicy() so that the cache will be used as WebKit expects. + + * WebKit/qt/tests/qwebpage/tst_qwebpage.cpp: + (tst_QWebPage::requestCache): + + * platform/network/qt/ResourceRequestQt.cpp: + (WebCore::ResourceRequest::toNetworkRequest): + +2009-04-07 Brady Eidson <beidson@apple.com> + + Reviewed by Darin Adler + + While working on <rdar://problem/5968249>, noticed some glaring problems with LocalStorage. + + * page/DOMWindow.cpp: + (WebCore::DOMWindow::localStorage): Return the cached m_localStorage object if it exists to + avoid creating multiple representations for the same underlying StorageArea. + * page/DOMWindow.h: + (WebCore::DOMWindow::optionalLocalStorage): Return m_localStorage, not m_sessionStorage. + 2009-04-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> Reviewed by Simon Hausmann. diff --git a/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp b/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp index ca4ea5a..25313ac 100644 --- a/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp +++ b/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.2 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -a -L ANSI-C -E -C -c -o -t --key-positions='*' -NfindProp -Hhash_prop -Wwordlist_prop -D -s 2 CSSPropertyNames.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -217,6 +217,9 @@ hash_prop (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct props * findProp (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c b/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c index d0433e0..5ff0858 100644 --- a/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c +++ b/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.2 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -L ANSI-C -E -C -n -o -t --key-positions='*' -NfindValue -Hhash_val -Wwordlist_value -D CSSValueKeywords.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -179,6 +179,9 @@ hash_val (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct css_value * findValue (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/ColorData.c b/src/3rdparty/webkit/WebCore/generated/ColorData.c index 18d9926..478566c 100644 --- a/src/3rdparty/webkit/WebCore/generated/ColorData.c +++ b/src/3rdparty/webkit/WebCore/generated/ColorData.c @@ -1,5 +1,5 @@ #include <string.h>// bogus -/* ANSI-C code produced by gperf version 3.0.2 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -CDEot -L ANSI-C --key-positions='*' -N findColor -D -s 2 */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -141,6 +141,9 @@ hash (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct NamedColor * findColor (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp b/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp index ad63b9e..686629c 100644 --- a/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp +++ b/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp @@ -1,5 +1,5 @@ #include <string.h>// bogus -/* ANSI-C code produced by gperf version 3.0.2 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -CEot -L ANSI-C --key-positions='*' -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -331,6 +331,9 @@ hash (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct PubIDInfo * findDoctypeEntry (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c b/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c index 470c4cd..993e106 100644 --- a/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c +++ b/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.2 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -a -L ANSI-C -C -G -c -o -t --key-positions='*' -N findEntity -D -s 2 */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -520,6 +520,9 @@ static const short lookup[] = #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct Entity * findEntity (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp b/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp index 1da1a0b..8462f51 100644 --- a/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp +++ b/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp @@ -78,42 +78,42 @@ static yyconst flex_int16_t yy_accept[479] = { 0, 0, 0, 0, 0, 0, 0, 69, 67, 2, 2, 67, 67, 67, 67, 67, 67, 67, 67, 67, 56, - 67, 67, 67, 67, 15, 15, 15, 67, 67, 66, + 67, 67, 15, 15, 15, 67, 67, 67, 67, 66, 15, 15, 15, 65, 15, 2, 0, 0, 0, 14, - 0, 0, 0, 0, 18, 18, 8, 0, 0, 9, - 0, 0, 0, 15, 15, 15, 57, 0, 55, 0, - 0, 56, 0, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 16, 54, 54, 51, 54, 0, 0, - 0, 35, 35, 35, 35, 35, 35, 35, 15, 15, - 7, 62, 15, 0, 0, 15, 15, 0, 15, 6, + 0, 0, 0, 18, 18, 0, 8, 0, 0, 9, + 0, 0, 15, 15, 15, 0, 57, 0, 55, 0, + 0, 56, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 16, 54, 54, 51, 54, 0, 54, 0, 0, + 35, 35, 35, 35, 35, 35, 35, 0, 62, 15, + 0, 0, 15, 15, 0, 15, 15, 15, 7, 6, 5, 15, 15, 15, 15, 0, 0, 0, 14, 0, - 0, 0, 18, 18, 18, 0, 18, 0, 0, 14, - 0, 0, 4, 16, 15, 0, 0, 54, 54, 54, - 0, 54, 41, 54, 37, 39, 54, 52, 43, 54, - 42, 50, 54, 45, 44, 40, 54, 54, 0, 35, - 35, 35, 35, 0, 35, 35, 35, 35, 35, 35, - 15, 15, 15, 16, 15, 15, 63, 63, 15, 12, - 10, 15, 13, 0, 0, 0, 17, 18, 18, 18, - 17, 0, 0, 15, 0, 1, 54, 54, 54, 54, - 46, 54, 53, 16, 47, 54, 3, 35, 35, 35, - - 35, 35, 35, 35, 35, 35, 35, 15, 15, 58, - 0, 63, 63, 63, 62, 11, 0, 0, 0, 18, - 18, 18, 0, 15, 0, 0, 54, 54, 54, 48, - 49, 35, 35, 35, 35, 35, 35, 35, 35, 20, - 15, 15, 64, 63, 63, 63, 63, 0, 0, 0, - 0, 60, 0, 0, 0, 0, 18, 18, 18, 0, - 15, 54, 54, 38, 35, 35, 35, 35, 35, 35, - 21, 35, 15, 15, 64, 63, 63, 63, 63, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, - 0, 0, 0, 0, 17, 18, 18, 17, 0, 15, - - 54, 54, 35, 35, 35, 35, 35, 19, 35, 15, - 15, 64, 63, 63, 63, 63, 63, 63, 0, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 18, 0, 15, 54, 54, 35, - 35, 35, 23, 35, 35, 15, 64, 63, 63, 63, + 0, 0, 18, 18, 0, 18, 18, 0, 0, 14, + 0, 0, 4, 16, 15, 0, 0, 54, 0, 41, + 54, 37, 39, 54, 52, 43, 54, 42, 50, 54, + 45, 44, 40, 54, 54, 54, 54, 54, 0, 35, + 35, 0, 35, 35, 35, 35, 35, 35, 35, 35, + 15, 15, 16, 15, 15, 63, 63, 15, 15, 12, + 10, 15, 13, 0, 0, 0, 17, 17, 18, 18, + 18, 0, 0, 15, 0, 1, 54, 54, 46, 54, + 53, 16, 47, 54, 54, 54, 3, 35, 35, 35, + + 35, 35, 35, 35, 35, 35, 35, 15, 58, 0, + 63, 63, 63, 62, 15, 11, 0, 0, 0, 18, + 18, 18, 0, 15, 0, 0, 54, 48, 49, 54, + 54, 35, 35, 35, 35, 35, 35, 35, 20, 35, + 15, 64, 63, 63, 63, 63, 0, 0, 0, 0, + 60, 0, 15, 0, 0, 0, 18, 18, 18, 0, + 15, 54, 54, 38, 35, 35, 35, 35, 35, 21, + 35, 35, 15, 64, 63, 63, 63, 63, 63, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, + 0, 15, 0, 0, 17, 17, 18, 18, 0, 15, + + 54, 54, 35, 35, 35, 35, 19, 35, 35, 15, + 64, 63, 63, 63, 63, 63, 63, 0, 59, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 18, 18, 0, 15, 54, 54, 35, + 35, 23, 35, 35, 35, 15, 64, 63, 63, 63, 63, 63, 63, 63, 0, 59, 0, 0, 0, 59, 0, 0, 0, 0, 18, 15, 54, 35, 35, 35, 35, 64, 0, 0, 0, 36, 15, 35, 35, 35, @@ -122,7 +122,7 @@ static yyconst flex_int16_t yy_accept[479] = 35, 35, 35, 35, 35, 35, 35, 35, 0, 0, 0, 0, 0, 0, 35, 35, 35, 35, 25, 35, - 35, 35, 0, 0, 0, 61, 0, 0, 26, 35, + 35, 35, 0, 61, 0, 0, 0, 0, 26, 35, 35, 35, 35, 27, 35, 0, 0, 0, 0, 31, 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, 35, 0, 0, 35, 35, 29, 35, 0, 0, 35, @@ -138,437 +138,909 @@ static yyconst flex_int32_t yy_ec[256] = 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 12, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 12, 22, 23, - 24, 25, 26, 27, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 12, 28, 12, 29, 30, 12, 31, 32, 33, 34, - - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 12, 59, 1, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60 + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 12, 54, 12, 55, 56, 12, 57, 58, 59, 60, + + 61, 62, 63, 64, 65, 37, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 12, 84, 1, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85 } ; -static yyconst flex_int32_t yy_meta[61] = +static yyconst flex_int32_t yy_meta[86] = { 0, - 1, 2, 3, 3, 3, 4, 5, 5, 5, 5, - 5, 5, 5, 6, 7, 5, 5, 8, 5, 5, - 9, 5, 5, 5, 5, 10, 5, 11, 5, 11, - 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 5, 5, 5, 11 + 1, 2, 3, 4, 4, 5, 6, 7, 6, 6, + 6, 6, 7, 8, 9, 6, 6, 10, 6, 6, + 11, 6, 6, 6, 6, 12, 6, 13, 13, 13, + 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 6, 14, 13, 13, 13, 13, + 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 6, 6, 6, 14 } ; -static yyconst flex_int16_t yy_base[517] = +static yyconst flex_int16_t yy_base[550] = { 0, - 0, 0, 39, 41, 1573, 1566, 1594, 2399, 62, 71, - 76, 61, 69, 1560, 78, 1559, 89, 1561, 1565, 132, - 1573, 91, 123, 1555, 80, 104, 97, 1554, 1551, 2399, - 85, 176, 175, 2399, 177, 193, 204, 1531, 84, 2399, - 242, 110, 180, 196, 1545, 205, 2399, 113, 277, 2399, - 1547, 72, 221, 133, 206, 234, 181, 1555, 1548, 1530, - 1528, 0, 268, 118, 1515, 221, 60, 240, 92, 230, - 95, 223, 244, 267, 238, 286, 1512, 268, 1521, 279, - 294, 1510, 278, 190, 290, 232, 292, 293, 308, 335, - 2399, 2399, 317, 326, 1516, 351, 336, 356, 366, 2399, - - 2399, 320, 367, 369, 370, 1478, 393, 327, 345, 420, - 455, 398, 1495, 490, 1481, 446, 481, 372, 365, 386, - 525, 560, 2399, 325, 388, 1491, 387, 1477, 595, 1476, - 516, 399, 1475, 34, 1472, 1461, 378, 1438, 1430, 318, - 1429, 1426, 323, 1424, 1423, 1422, 231, 387, 1430, 377, - 1411, 630, 1396, 551, 382, 108, 415, 408, 419, 412, - 586, 436, 665, 1400, 624, 456, 419, 1382, 457, 490, - 491, 625, 492, 1362, 526, 656, 672, 681, 1378, 716, - 707, 527, 723, 561, 1374, 2399, 732, 1346, 767, 437, - 1322, 410, 1312, 445, 1311, 546, 2399, 469, 758, 1303, - - 802, 576, 482, 580, 470, 440, 472, 793, 809, 2399, - 818, 515, 1288, 1273, 853, 552, 1205, 839, 855, 861, - 877, 883, 899, 645, 1227, 483, 905, 921, 612, 1183, - 1168, 609, 927, 943, 626, 517, 628, 508, 629, 1167, - 949, 965, 971, 550, 1167, 1157, 1123, 1006, 1020, 666, - 682, 2399, 1047, 1091, 1006, 1038, 1055, 1063, 1071, 1079, - 632, 1087, 1095, 1105, 539, 1103, 1111, 542, 543, 681, - 1097, 683, 1119, 1127, 1135, 585, 1091, 1083, 1067, 1039, - 721, 752, 772, 1170, 717, 1205, 1184, 1217, 1244, 1258, - 1285, 1320, 984, 1244, 2399, 1276, 1311, 917, 1328, 767, - - 1336, 1344, 733, 1352, 1360, 734, 578, 899, 582, 1395, - 1381, 1397, 623, 853, 822, 794, 793, 760, 807, 2399, - 875, 788, 1432, 1459, 1494, 818, 769, 1440, 1529, 1564, - 1438, 702, 1485, 919, 1520, 1555, 849, 963, 1572, 587, - 1299, 1580, 706, 441, 614, 1615, 1601, 715, 2399, 2399, - 2399, 2399, 2399, 2399, 1473, 839, 856, 1617, 1652, 804, - 852, 1638, 1654, 633, 1480, 871, 1508, 1650, 1542, 644, - 834, 1673, 1679, 1695, 1701, 2399, 1015, 872, 915, 916, - 877, 959, 704, 616, 586, 2399, 1717, 1723, 1739, 1002, - 1148, 514, 961, 989, 990, 1016, 1745, 1761, 1767, 1802, - - 1137, 1008, 1018, 1017, 985, 1129, 878, 1038, 1790, 1806, - 1829, 1211, 1827, 1849, 944, 1057, 1152, 787, 584, 615, - 1196, 918, 1863, 1890, 1279, 2399, 1869, 1867, 516, 1199, - 1154, 943, 1242, 515, 653, 1904, 1906, 1941, 1968, 480, - 945, 1200, 1149, 1214, 1927, 1949, 1947, 1239, 1301, 1207, - 1302, 1974, 1990, 1392, 1267, 411, 1354, 1996, 2012, 1310, - 376, 1241, 1039, 2018, 2034, 1338, 348, 1377, 2040, 1216, - 1391, 1421, 1394, 324, 1226, 1376, 263, 2399, 2075, 2080, - 2091, 2096, 2101, 2110, 2117, 2128, 2137, 2142, 2153, 2165, - 2167, 2176, 2181, 2190, 2195, 2204, 2213, 2225, 2234, 2243, - - 2248, 2260, 2265, 2276, 2281, 2292, 2303, 2314, 2319, 2330, - 2341, 2346, 2357, 2366, 2377, 2386 + 0, 0, 64, 66, 54, 56, 1407, 6578, 93, 98, + 107, 83, 155, 1376, 77, 1350, 99, 1345, 1328, 207, + 1334, 275, 100, 108, 125, 326, 1315, 1313, 1312, 6578, + 141, 110, 151, 6578, 105, 197, 295, 89, 107, 6578, + 387, 120, 0, 429, 1281, 471, 6578, 117, 532, 6578, + 1283, 269, 137, 176, 281, 574, 283, 1289, 1292, 1246, + 1257, 0, 1221, 249, 135, 282, 276, 153, 91, 169, + 299, 308, 318, 266, 1219, 320, 616, 102, 1246, 348, + 1209, 316, 127, 359, 346, 347, 375, 658, 6578, 208, + 700, 1241, 400, 409, 1220, 397, 327, 761, 6578, 6578, + + 6578, 411, 419, 414, 424, 248, 368, 355, 356, 822, + 883, 0, 1191, 925, 967, 1190, 1028, 381, 421, 464, + 1089, 1150, 6578, 214, 456, 1225, 312, 1151, 1192, 1142, + 442, 1139, 1134, 452, 1131, 1104, 458, 1082, 1060, 358, + 1046, 1028, 1027, 462, 453, 1000, 1253, 469, 1023, 463, + 986, 1295, 492, 486, 500, 484, 502, 513, 969, 1356, + 425, 1417, 1001, 545, 494, 193, 993, 543, 1459, 544, + 554, 558, 555, 508, 398, 1520, 0, 1562, 956, 1623, + 1684, 570, 1745, 563, 993, 6578, 948, 1806, 935, 520, + 921, 498, 914, 546, 1848, 564, 6578, 585, 913, 1909, + + 568, 576, 586, 606, 631, 640, 1951, 2012, 6578, 0, + 203, 924, 907, 694, 2054, 565, 543, 2115, 0, 2157, + 2218, 2279, 2340, 669, 912, 505, 2401, 856, 840, 2443, + 612, 615, 2504, 608, 557, 639, 682, 668, 839, 2546, + 2607, 0, 288, 863, 841, 819, 741, 794, 573, 418, + 6578, 2668, 2710, 620, 2771, 0, 2813, 2874, 2935, 2996, + 3057, 3131, 3173, 3234, 670, 3295, 718, 719, 729, 763, + 684, 3337, 3398, 0, 456, 782, 777, 760, 742, 829, + 649, 834, 3459, 572, 3520, 854, 894, 915, 920, 3581, + 3642, 3684, 593, 3745, 6578, 697, 3806, 3867, 3928, 3989, + + 4050, 4111, 730, 4172, 731, 683, 672, 759, 4214, 4275, + 0, 762, 682, 429, 417, 414, 411, 859, 6578, 650, + 838, 957, 4336, 4397, 607, 926, 988, 4458, 4519, 4580, + 1002, 672, 1010, 4622, 4664, 1042, 752, 4706, 4767, 756, + 4828, 376, 812, 847, 1069, 1033, 0, 387, 6578, 6578, + 6578, 6578, 6578, 6578, 1122, 924, 963, 4870, 1162, 1049, + 1050, 4912, 4973, 678, 1063, 850, 1074, 5005, 1103, 841, + 989, 0, 5062, 5104, 5146, 6578, 1066, 1080, 1081, 1084, + 1108, 1137, 877, 328, 273, 6578, 5188, 5230, 5272, 641, + 1140, 884, 916, 836, 1105, 1161, 5314, 5356, 1233, 1286, + + 1147, 1138, 919, 1206, 1165, 1186, 1141, 1207, 1291, 1263, + 1316, 1345, 1327, 5398, 1086, 1029, 1225, 1133, 258, 1247, + 1248, 1310, 1388, 6578, 1427, 5440, 1449, 5501, 242, 1311, + 1341, 1324, 1326, 173, 1317, 1454, 5562, 1480, 5604, 170, + 1061, 1328, 1355, 1372, 1552, 5646, 5688, 1351, 1374, 1389, + 1409, 5730, 5772, 1419, 1456, 154, 1453, 5814, 5856, 1457, + 112, 897, 793, 5898, 1557, 1418, 109, 1348, 1582, 1550, + 1477, 1481, 1485, 90, 1564, 1458, 39, 6578, 5959, 5964, + 5977, 5982, 5987, 5994, 6004, 6017, 296, 6022, 6032, 6045, + 6059, 651, 6064, 6074, 6079, 6089, 6099, 6103, 571, 6112, + + 6125, 6138, 6152, 6166, 6176, 6186, 6191, 6203, 657, 6217, + 758, 6222, 6234, 6247, 801, 6261, 859, 6266, 6278, 6291, + 6304, 6317, 6330, 1086, 6335, 6348, 1120, 6353, 6365, 6378, + 6391, 6404, 6417, 6430, 6435, 6448, 1216, 6453, 6465, 6478, + 6491, 6504, 6517, 1219, 1220, 6530, 6543, 6553, 6563 } ; -static yyconst flex_int16_t yy_def[517] = +static yyconst flex_int16_t yy_def[550] = { 0, 478, 1, 1, 1, 1, 1, 478, 478, 478, 478, 478, 479, 480, 478, 481, 478, 482, 478, 478, 478, - 478, 483, 484, 478, 485, 485, 485, 478, 478, 478, - 485, 485, 485, 478, 485, 478, 478, 478, 479, 478, - 486, 480, 478, 487, 488, 488, 478, 481, 489, 478, - 478, 478, 484, 485, 485, 485, 20, 490, 478, 491, - 478, 20, 492, 493, 493, 493, 493, 493, 493, 493, - 493, 493, 493, 493, 493, 493, 493, 493, 478, 483, - 494, 495, 495, 495, 495, 495, 495, 495, 485, 485, - 478, 478, 485, 496, 478, 485, 485, 478, 485, 478, - - 478, 485, 485, 485, 485, 478, 479, 479, 479, 479, - 486, 478, 488, 46, 488, 497, 46, 481, 481, 481, - 481, 489, 478, 478, 485, 490, 498, 493, 493, 493, - 499, 493, 493, 493, 493, 493, 493, 493, 493, 493, + 478, 483, 484, 484, 484, 485, 478, 478, 478, 478, + 484, 484, 484, 478, 484, 478, 478, 478, 479, 478, + 486, 480, 487, 488, 488, 489, 478, 481, 490, 478, + 478, 478, 484, 484, 484, 485, 20, 491, 478, 492, + 478, 20, 493, 493, 493, 493, 493, 493, 493, 493, + 493, 493, 493, 493, 493, 493, 494, 493, 478, 483, + 495, 495, 495, 495, 495, 495, 495, 496, 478, 484, + 497, 478, 484, 484, 498, 484, 484, 484, 478, 478, + + 478, 484, 484, 484, 484, 478, 479, 479, 479, 479, + 486, 499, 488, 488, 500, 488, 114, 501, 501, 501, + 501, 502, 478, 478, 484, 503, 504, 493, 505, 493, + 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 478, 495, - 495, 495, 495, 500, 495, 495, 495, 495, 495, 495, - 90, 485, 90, 478, 485, 485, 501, 478, 485, 485, - 485, 485, 485, 478, 479, 110, 478, 114, 488, 114, - 46, 481, 121, 485, 502, 478, 129, 493, 129, 493, - 493, 493, 493, 493, 493, 493, 478, 495, 152, 495, - - 152, 495, 495, 495, 495, 495, 495, 90, 163, 478, - 478, 503, 478, 478, 504, 485, 478, 110, 478, 114, - 180, 46, 121, 485, 502, 498, 129, 189, 493, 493, - 493, 495, 152, 201, 495, 495, 495, 495, 495, 495, - 90, 163, 478, 505, 478, 478, 478, 504, 504, 506, - 507, 478, 508, 478, 110, 478, 114, 180, 46, 121, - 485, 129, 189, 493, 495, 152, 201, 495, 495, 495, - 495, 495, 90, 163, 478, 509, 478, 478, 478, 478, - 478, 506, 478, 510, 507, 511, 504, 504, 504, 504, - 504, 508, 478, 110, 478, 114, 180, 488, 121, 485, - - 129, 189, 495, 152, 201, 495, 495, 495, 495, 485, - 163, 478, 512, 478, 478, 478, 478, 478, 478, 478, - 506, 506, 506, 506, 510, 507, 507, 507, 507, 511, - 291, 478, 110, 488, 180, 121, 485, 493, 189, 495, - 495, 201, 495, 495, 495, 485, 478, 478, 478, 478, - 478, 478, 478, 478, 506, 506, 506, 324, 507, 507, - 507, 329, 291, 478, 488, 485, 493, 495, 495, 495, - 495, 478, 324, 329, 291, 478, 485, 495, 495, 495, - 495, 495, 495, 495, 495, 478, 324, 329, 291, 485, - 495, 495, 495, 495, 495, 495, 324, 329, 291, 513, - - 495, 495, 495, 495, 495, 495, 495, 495, 324, 329, - 513, 411, 514, 515, 495, 495, 495, 495, 495, 495, - 495, 495, 515, 515, 478, 478, 515, 516, 495, 495, - 495, 495, 495, 495, 495, 515, 424, 515, 424, 495, - 495, 495, 495, 495, 424, 515, 439, 495, 495, 495, - 495, 424, 439, 495, 495, 495, 495, 424, 439, 495, - 495, 495, 495, 424, 439, 495, 495, 495, 439, 495, + 495, 506, 495, 495, 495, 495, 495, 495, 495, 495, + 484, 98, 478, 484, 484, 507, 478, 484, 98, 484, + 484, 484, 484, 478, 508, 508, 509, 114, 488, 114, + 114, 501, 501, 484, 510, 478, 493, 147, 493, 493, + 493, 493, 493, 493, 147, 493, 478, 495, 495, 160, + + 495, 495, 495, 495, 495, 495, 160, 98, 478, 511, + 512, 478, 478, 513, 98, 484, 478, 514, 515, 114, + 114, 114, 501, 484, 510, 516, 147, 493, 493, 147, + 493, 495, 160, 495, 495, 495, 495, 495, 495, 160, + 98, 517, 518, 478, 478, 478, 519, 519, 520, 521, + 478, 522, 98, 478, 523, 524, 525, 525, 258, 526, + 98, 147, 147, 147, 495, 160, 495, 495, 495, 495, + 495, 160, 98, 527, 528, 478, 478, 478, 478, 478, + 520, 478, 529, 530, 531, 532, 532, 532, 532, 532, + 533, 98, 478, 534, 478, 535, 535, 297, 536, 98, + + 147, 301, 495, 160, 495, 495, 495, 495, 160, 98, + 537, 538, 478, 478, 478, 478, 478, 478, 478, 539, + 539, 539, 539, 540, 541, 541, 541, 541, 542, 543, + 300, 478, 534, 297, 298, 536, 300, 301, 301, 495, + 160, 495, 495, 495, 495, 300, 544, 478, 478, 478, + 478, 478, 478, 478, 539, 539, 539, 323, 541, 541, + 541, 328, 543, 478, 335, 300, 339, 495, 495, 495, + 495, 545, 323, 328, 363, 478, 300, 495, 495, 495, + 495, 495, 495, 495, 495, 478, 323, 328, 363, 300, + 495, 495, 495, 495, 495, 495, 323, 328, 543, 546, + + 495, 495, 495, 495, 495, 495, 495, 495, 539, 541, + 546, 546, 547, 548, 495, 495, 495, 495, 495, 495, + 495, 495, 478, 478, 547, 549, 547, 547, 495, 495, + 495, 495, 495, 495, 495, 547, 428, 547, 428, 495, + 495, 495, 495, 495, 547, 437, 428, 495, 495, 495, + 495, 437, 428, 495, 495, 495, 495, 437, 428, 495, + 495, 495, 495, 437, 547, 495, 495, 495, 547, 495, 495, 495, 495, 495, 495, 495, 495, 0, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, - 478, 478, 478, 478, 478, 478 + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478 } ; -static yyconst flex_int16_t yy_nxt[2460] = +static yyconst flex_int16_t yy_nxt[6664] = { 0, 8, 9, 10, 9, 9, 9, 11, 12, 13, 14, 8, 8, 15, 8, 8, 16, 8, 17, 18, 19, - 20, 8, 21, 8, 8, 8, 22, 23, 24, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, - 27, 25, 25, 25, 25, 25, 8, 28, 29, 25, - 30, 131, 30, 36, 36, 36, 36, 36, 40, 31, - 191, 31, 36, 36, 36, 36, 36, 37, 37, 37, - 37, 37, 32, 33, 32, 33, 42, 131, 41, 43, - 40, 40, 52, 92, 134, 34, 44, 34, 92, 46, - - 46, 46, 46, 46, 46, 49, 51, 94, 80, 52, - 92, 41, 94, 98, 38, 124, 53, 92, 81, 131, - 95, 96, 131, 83, 94, 40, 84, 478, 102, 85, - 478, 94, 55, 86, 87, 154, 88, 44, 139, 137, - 49, 56, 59, 90, 99, 131, 92, 132, 97, 60, - 61, 203, 62, 90, 90, 90, 90, 90, 90, 63, - 94, 64, 65, 65, 66, 67, 68, 65, 69, 70, - 71, 65, 72, 65, 73, 74, 65, 75, 65, 76, - 77, 78, 65, 65, 65, 65, 65, 65, 92, 92, - 92, 65, 95, 96, 36, 36, 36, 36, 36, 478, - - 112, 57, 94, 94, 94, 37, 37, 37, 37, 37, - 112, 112, 112, 112, 112, 112, 114, 154, 104, 92, - 103, 105, 95, 96, 65, 117, 114, 114, 114, 114, - 114, 114, 116, 94, 156, 117, 117, 117, 117, 117, - 117, 90, 38, 39, 39, 39, 107, 92, 131, 109, - 131, 90, 90, 90, 90, 90, 90, 131, 131, 154, - 140, 94, 110, 133, 195, 131, 158, 131, 125, 111, - 144, 131, 110, 110, 110, 110, 110, 110, 48, 48, - 48, 118, 135, 95, 143, 138, 141, 145, 129, 120, - 154, 146, 142, 136, 131, 131, 478, 121, 129, 129, - - 129, 129, 129, 129, 122, 154, 81, 121, 121, 121, - 121, 121, 121, 131, 152, 155, 147, 154, 148, 154, - 154, 92, 159, 160, 152, 152, 152, 152, 152, 152, - 92, 150, 157, 92, 40, 94, 89, 89, 89, 89, - 89, 95, 95, 194, 94, 131, 163, 94, 92, 92, - 131, 154, 40, 170, 41, 161, 163, 163, 163, 163, - 163, 163, 94, 94, 92, 161, 161, 161, 161, 161, - 161, 165, 41, 193, 48, 154, 167, 40, 94, 92, - 92, 168, 92, 92, 40, 166, 167, 167, 167, 167, - 167, 167, 49, 94, 94, 39, 94, 94, 40, 49, - - 40, 92, 127, 154, 154, 131, 186, 169, 192, 154, - 172, 198, 202, 49, 131, 94, 171, 173, 177, 184, - 41, 108, 175, 175, 175, 108, 131, 40, 177, 177, - 177, 177, 177, 177, 196, 154, 211, 131, 154, 154, - 176, 205, 154, 230, 213, 190, 154, 41, 207, 92, - 176, 176, 176, 176, 176, 176, 39, 39, 39, 107, - 204, 206, 109, 94, 131, 194, 180, 154, 154, 210, - 215, 229, 131, 370, 239, 110, 180, 180, 180, 180, - 180, 180, 111, 94, 94, 110, 110, 110, 110, 110, - 110, 113, 113, 113, 113, 113, 154, 154, 226, 154, - - 232, 181, 186, 92, 210, 92, 240, 154, 238, 154, - 178, 181, 181, 181, 181, 181, 181, 94, 94, 94, - 178, 178, 178, 178, 178, 178, 119, 182, 182, 182, - 119, 236, 211, 40, 269, 154, 189, 40, 271, 40, - 245, 154, 154, 154, 154, 183, 189, 189, 189, 189, - 189, 189, 49, 41, 49, 183, 183, 183, 183, 183, - 183, 48, 48, 48, 118, 92, 154, 211, 403, 154, - 154, 201, 120, 131, 92, 277, 306, 303, 307, 94, - 121, 201, 201, 201, 201, 201, 201, 122, 94, 231, - 121, 121, 121, 121, 121, 121, 128, 128, 128, 128, - - 128, 224, 211, 154, 368, 154, 208, 154, 344, 154, - 314, 154, 345, 154, 154, 187, 208, 208, 208, 208, - 208, 208, 131, 235, 237, 187, 187, 187, 187, 187, - 187, 151, 151, 151, 151, 151, 154, 92, 92, 131, - 211, 154, 154, 154, 165, 92, 371, 433, 349, 265, - 199, 94, 94, 154, 264, 154, 154, 154, 92, 94, - 199, 199, 199, 199, 199, 199, 162, 162, 162, 162, - 162, 154, 94, 283, 268, 270, 218, 272, 384, 216, - 154, 300, 376, 261, 444, 209, 218, 218, 218, 218, - 218, 218, 219, 284, 283, 209, 209, 209, 209, 209, - - 209, 220, 219, 219, 219, 219, 219, 219, 154, 286, - 154, 220, 220, 220, 220, 220, 220, 179, 179, 179, - 179, 179, 281, 281, 281, 281, 281, 222, 309, 283, - 308, 154, 211, 154, 396, 252, 221, 222, 222, 222, - 222, 222, 222, 223, 286, 364, 221, 221, 221, 221, - 221, 221, 227, 223, 223, 223, 223, 223, 223, 283, - 154, 154, 227, 227, 227, 227, 227, 227, 188, 188, - 188, 188, 188, 319, 319, 319, 319, 319, 233, 284, - 92, 283, 340, 343, 337, 354, 320, 228, 233, 233, - 233, 233, 233, 233, 94, 283, 286, 228, 228, 228, - - 228, 228, 228, 200, 200, 200, 200, 200, 319, 319, - 319, 319, 319, 241, 154, 284, 283, 432, 353, 352, - 285, 320, 234, 241, 241, 241, 241, 241, 241, 242, - 283, 286, 234, 234, 234, 234, 234, 234, 243, 242, - 242, 242, 242, 242, 242, 286, 283, 351, 243, 243, - 243, 243, 243, 243, 248, 248, 248, 248, 248, 255, - 250, 154, 92, 283, 283, 251, 284, 252, 385, 255, - 255, 255, 255, 255, 255, 256, 94, 282, 350, 286, - 253, 257, 283, 284, 92, 256, 256, 256, 256, 256, - 256, 257, 257, 257, 257, 257, 257, 258, 94, 154, - - 366, 377, 284, 259, 154, 154, 391, 258, 258, 258, - 258, 258, 258, 259, 259, 259, 259, 259, 259, 260, - 113, 113, 113, 113, 113, 262, 154, 394, 421, 260, - 260, 260, 260, 260, 260, 262, 262, 262, 262, 262, - 262, 263, 154, 154, 116, 154, 116, 266, 435, 392, - 393, 263, 263, 263, 263, 263, 263, 266, 266, 266, - 266, 266, 266, 267, 128, 128, 128, 128, 128, 273, - 154, 154, 154, 267, 267, 267, 267, 267, 267, 273, - 273, 273, 273, 273, 273, 274, 154, 448, 154, 442, - 131, 275, 429, 395, 404, 274, 274, 274, 274, 274, - - 274, 275, 275, 275, 275, 275, 275, 248, 248, 248, - 248, 248, 154, 250, 332, 400, 154, 154, 251, 419, - 252, 281, 281, 281, 281, 281, 294, 478, 92, 94, - 405, 406, 478, 253, 252, 154, 294, 294, 294, 294, - 294, 294, 94, 154, 154, 154, 416, 253, 281, 281, - 281, 281, 287, 417, 289, 418, 468, 407, 295, 289, - 289, 290, 390, 408, 318, 154, 154, 291, 295, 295, - 295, 295, 295, 295, 292, 296, 422, 291, 291, 291, - 291, 291, 291, 297, 154, 296, 296, 296, 296, 296, - 296, 298, 317, 297, 297, 297, 297, 297, 297, 299, - - 430, 298, 298, 298, 298, 298, 298, 301, 316, 299, - 299, 299, 299, 299, 299, 302, 315, 301, 301, 301, - 301, 301, 301, 304, 154, 302, 302, 302, 302, 302, - 302, 305, 131, 304, 304, 304, 304, 304, 304, 310, - 293, 305, 305, 305, 305, 305, 305, 311, 280, 310, - 310, 310, 310, 310, 310, 312, 154, 311, 311, 311, - 311, 311, 311, 420, 154, 312, 312, 312, 312, 312, - 312, 282, 282, 282, 321, 154, 154, 323, 415, 154, - 401, 154, 279, 402, 441, 281, 281, 281, 281, 281, - 324, 478, 278, 450, 154, 131, 478, 325, 252, 431, - - 324, 324, 324, 324, 324, 324, 285, 285, 285, 326, - 131, 253, 478, 478, 478, 478, 478, 328, 281, 281, - 281, 281, 281, 154, 478, 329, 154, 154, 478, 478, - 434, 252, 330, 440, 154, 329, 329, 329, 329, 329, - 329, 154, 226, 154, 253, 281, 281, 281, 281, 281, - 449, 478, 254, 154, 456, 451, 478, 472, 252, 281, - 281, 281, 281, 281, 333, 478, 154, 476, 154, 154, - 478, 253, 252, 454, 333, 333, 333, 333, 333, 333, - 425, 425, 425, 425, 425, 253, 287, 287, 287, 287, - 287, 443, 478, 426, 154, 467, 334, 478, 247, 252, - - 151, 151, 151, 151, 151, 331, 334, 334, 334, 334, - 334, 334, 253, 246, 462, 331, 331, 331, 331, 331, - 331, 281, 281, 281, 281, 287, 154, 289, 154, 154, - 154, 335, 289, 289, 290, 455, 457, 154, 131, 131, - 291, 335, 335, 335, 335, 335, 335, 292, 336, 131, - 291, 291, 291, 291, 291, 291, 338, 466, 336, 336, - 336, 336, 336, 336, 339, 154, 338, 338, 338, 338, - 338, 338, 341, 131, 339, 339, 339, 339, 339, 339, - 342, 154, 341, 341, 341, 341, 341, 341, 470, 226, - 342, 342, 342, 342, 342, 342, 89, 89, 89, 89, - - 89, 346, 463, 154, 154, 116, 217, 214, 92, 460, - 471, 346, 346, 346, 346, 346, 346, 347, 154, 154, - 164, 154, 94, 154, 477, 473, 475, 347, 347, 347, - 347, 347, 347, 355, 319, 319, 319, 355, 154, 283, - 461, 359, 319, 319, 319, 359, 356, 197, 154, 131, - 131, 131, 283, 131, 360, 474, 131, 131, 363, 284, - 322, 357, 357, 357, 322, 131, 283, 286, 363, 363, - 363, 363, 363, 363, 355, 319, 319, 319, 355, 358, - 283, 179, 179, 179, 179, 179, 284, 356, 131, 358, - 358, 358, 358, 358, 358, 282, 282, 282, 321, 131, - - 284, 323, 131, 131, 131, 39, 127, 116, 116, 188, - 188, 188, 188, 188, 324, 39, 39, 39, 39, 39, - 39, 325, 116, 174, 324, 324, 324, 324, 324, 324, - 327, 361, 361, 361, 327, 131, 164, 154, 149, 131, - 365, 283, 131, 200, 200, 200, 200, 200, 57, 362, - 365, 365, 365, 365, 365, 365, 286, 63, 59, 362, - 362, 362, 362, 362, 362, 285, 285, 285, 326, 154, - 127, 123, 116, 106, 101, 48, 328, 100, 91, 79, - 58, 57, 50, 47, 329, 48, 48, 48, 48, 48, - 48, 330, 367, 478, 329, 329, 329, 329, 329, 329, - - 369, 35, 367, 367, 367, 367, 367, 367, 35, 478, - 369, 369, 369, 369, 369, 369, 162, 162, 162, 162, - 162, 372, 478, 478, 478, 478, 478, 478, 92, 478, - 478, 372, 372, 372, 372, 372, 372, 373, 478, 478, - 478, 478, 94, 478, 478, 478, 478, 373, 373, 373, - 373, 373, 373, 359, 319, 319, 319, 359, 374, 478, - 478, 478, 478, 478, 283, 478, 360, 478, 374, 374, - 374, 374, 374, 374, 375, 478, 478, 154, 478, 286, - 478, 478, 478, 378, 375, 375, 375, 375, 375, 375, - 379, 478, 380, 386, 478, 478, 478, 381, 382, 387, - - 478, 383, 478, 386, 386, 386, 386, 386, 386, 387, - 387, 387, 387, 387, 387, 388, 478, 478, 478, 478, - 478, 389, 478, 478, 478, 388, 388, 388, 388, 388, - 388, 389, 389, 389, 389, 389, 389, 397, 478, 478, - 478, 478, 478, 398, 478, 478, 478, 397, 397, 397, - 397, 397, 397, 398, 398, 398, 398, 398, 398, 399, - 478, 478, 478, 478, 478, 409, 478, 478, 478, 399, - 399, 399, 399, 399, 399, 409, 409, 409, 409, 409, - 409, 410, 478, 478, 478, 478, 478, 249, 478, 478, - 478, 410, 410, 410, 410, 410, 410, 249, 249, 249, - - 249, 249, 249, 411, 411, 411, 411, 411, 478, 478, - 282, 478, 478, 478, 478, 478, 478, 478, 478, 412, - 282, 282, 282, 282, 282, 282, 285, 478, 478, 413, - 411, 411, 411, 411, 411, 478, 285, 285, 285, 285, - 285, 285, 478, 478, 478, 478, 412, 424, 478, 478, - 425, 425, 425, 425, 425, 478, 413, 424, 424, 424, - 424, 424, 424, 426, 425, 425, 425, 425, 425, 478, - 425, 425, 425, 425, 425, 478, 428, 426, 478, 478, - 478, 478, 478, 426, 478, 478, 478, 439, 478, 478, - 428, 436, 436, 436, 436, 436, 428, 439, 439, 439, - - 439, 439, 439, 478, 426, 425, 425, 425, 425, 425, - 437, 478, 478, 478, 478, 478, 478, 428, 426, 478, - 437, 437, 437, 437, 437, 437, 445, 478, 478, 478, - 478, 428, 478, 478, 478, 478, 445, 445, 445, 445, - 445, 445, 425, 425, 425, 425, 425, 452, 478, 478, - 425, 425, 425, 425, 425, 426, 478, 452, 452, 452, - 452, 452, 452, 426, 478, 478, 478, 453, 428, 446, - 446, 446, 446, 446, 478, 478, 428, 453, 453, 453, - 453, 453, 453, 478, 478, 478, 478, 478, 447, 478, - 478, 478, 478, 478, 458, 478, 478, 478, 447, 447, - - 447, 447, 447, 447, 458, 458, 458, 458, 458, 458, - 459, 478, 478, 478, 478, 478, 464, 478, 478, 478, - 459, 459, 459, 459, 459, 459, 464, 464, 464, 464, - 464, 464, 465, 478, 478, 478, 478, 478, 427, 478, - 478, 478, 465, 465, 465, 465, 465, 465, 427, 427, - 427, 427, 427, 427, 469, 478, 478, 478, 478, 478, - 427, 478, 478, 478, 469, 469, 469, 469, 469, 469, - 427, 427, 427, 427, 427, 427, 39, 478, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 45, 45, 478, - 45, 45, 48, 478, 48, 48, 48, 48, 48, 48, - - 48, 48, 48, 54, 54, 478, 54, 54, 82, 478, - 478, 82, 82, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 93, 478, 93, 93, 478, 93, 93, 108, + 20, 8, 21, 8, 8, 8, 22, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 24, 23, 23, 23, 23, 23, 23, 25, 23, 23, + 23, 23, 23, 26, 27, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 24, 23, + 23, 23, 23, 23, 23, 25, 23, 23, 23, 23, + 23, 8, 28, 29, 23, 30, 35, 30, 35, 40, + 40, 31, 152, 31, 36, 36, 36, 36, 36, 36, + + 36, 36, 36, 36, 32, 33, 32, 33, 37, 37, + 37, 37, 37, 89, 40, 35, 51, 35, 89, 52, + 31, 89, 31, 89, 92, 93, 92, 93, 106, 40, + 49, 136, 32, 33, 32, 33, 41, 478, 89, 54, + 478, 95, 38, 152, 129, 34, 105, 34, 55, 94, + 89, 103, 56, 91, 89, 129, 106, 148, 91, 136, + 41, 91, 152, 91, 89, 152, 131, 54, 154, 96, + 49, 38, 42, 46, 105, 43, 55, 94, 91, 103, + 152, 102, 44, 44, 44, 44, 44, 44, 129, 89, + 91, 104, 92, 93, 91, 131, 154, 96, 36, 36, + + 36, 36, 36, 137, 91, 135, 129, 152, 46, 102, + 210, 44, 44, 44, 44, 44, 44, 59, 212, 104, + 210, 89, 129, 152, 60, 61, 152, 62, 244, 91, + 92, 92, 137, 135, 63, 63, 64, 65, 66, 63, + 67, 68, 69, 63, 70, 63, 71, 72, 63, 73, + 63, 74, 75, 76, 63, 63, 63, 63, 63, 63, + 77, 91, 78, 63, 63, 64, 65, 66, 63, 67, + 68, 69, 70, 63, 71, 72, 63, 73, 63, 74, + 75, 76, 63, 63, 63, 63, 63, 63, 130, 52, + 174, 63, 80, 144, 89, 152, 37, 37, 37, 37, + + 37, 478, 129, 57, 82, 210, 112, 83, 112, 124, + 84, 152, 125, 276, 85, 86, 130, 87, 174, 129, + 134, 132, 144, 63, 92, 140, 152, 127, 88, 129, + 38, 186, 133, 82, 91, 129, 83, 124, 138, 84, + 89, 125, 85, 86, 139, 87, 98, 141, 134, 132, + 153, 63, 129, 98, 98, 98, 98, 98, 98, 38, + 133, 129, 40, 40, 142, 478, 138, 145, 143, 152, + 39, 129, 139, 129, 157, 40, 141, 156, 192, 153, + 91, 152, 98, 98, 98, 98, 98, 98, 39, 39, + 39, 107, 142, 40, 109, 145, 143, 150, 155, 152, + + 152, 88, 158, 157, 210, 40, 156, 110, 41, 41, + 89, 129, 152, 89, 110, 110, 110, 110, 110, 110, + 164, 41, 89, 478, 89, 150, 155, 89, 152, 152, + 282, 158, 89, 40, 49, 168, 354, 89, 89, 353, + 111, 170, 352, 110, 110, 110, 110, 110, 110, 114, + 91, 41, 172, 91, 351, 165, 114, 114, 114, 114, + 114, 114, 91, 168, 91, 171, 478, 91, 173, 89, + 170, 285, 91, 210, 49, 189, 40, 91, 91, 190, + 172, 313, 115, 165, 184, 114, 114, 114, 114, 114, + 114, 117, 193, 171, 198, 129, 173, 194, 117, 117, + + 117, 117, 117, 117, 189, 129, 129, 209, 190, 91, + 191, 129, 196, 184, 204, 129, 152, 49, 192, 201, + 226, 193, 129, 198, 186, 194, 202, 117, 117, 117, + 117, 117, 117, 48, 48, 48, 118, 152, 191, 152, + 196, 205, 203, 204, 120, 152, 206, 91, 201, 217, + 228, 129, 121, 152, 202, 152, 214, 89, 89, 121, + 121, 121, 121, 121, 121, 164, 152, 209, 89, 205, + 203, 89, 478, 129, 268, 206, 89, 217, 89, 228, + 282, 177, 40, 177, 282, 122, 229, 254, 121, 121, + 121, 121, 121, 121, 98, 231, 91, 91, 91, 129, + + 224, 98, 98, 98, 98, 98, 98, 91, 91, 216, + 152, 91, 234, 232, 229, 254, 91, 129, 91, 282, + 332, 152, 235, 49, 231, 285, 283, 236, 224, 152, + 98, 98, 98, 98, 98, 98, 147, 216, 152, 152, + 234, 237, 232, 147, 147, 147, 147, 147, 147, 332, + 235, 264, 265, 267, 400, 236, 282, 282, 90, 152, + 285, 152, 238, 63, 63, 129, 293, 219, 152, 219, + 237, 239, 147, 147, 147, 147, 147, 147, 160, 264, + 265, 267, 89, 269, 152, 160, 160, 160, 160, 160, + 160, 238, 152, 152, 293, 247, 247, 247, 247, 247, + + 239, 249, 283, 283, 261, 303, 250, 350, 251, 270, + 343, 269, 364, 271, 160, 160, 160, 160, 160, 160, + 162, 152, 91, 152, 376, 152, 308, 162, 162, 162, + 162, 162, 162, 261, 303, 152, 152, 152, 270, 343, + 364, 271, 247, 247, 247, 247, 247, 252, 249, 305, + 115, 306, 376, 250, 308, 251, 162, 162, 162, 162, + 162, 162, 97, 97, 97, 97, 97, 317, 242, 90, + 242, 152, 152, 368, 89, 307, 340, 342, 305, 210, + 306, 169, 152, 152, 152, 316, 344, 349, 169, 169, + 169, 169, 169, 169, 252, 280, 280, 280, 280, 280, + + 366, 478, 315, 307, 340, 342, 478, 314, 251, 152, + 468, 256, 152, 256, 91, 344, 152, 169, 169, 169, + 169, 169, 169, 108, 175, 175, 175, 108, 366, 40, + 280, 280, 280, 280, 280, 318, 318, 318, 318, 318, + 478, 370, 176, 251, 279, 282, 152, 252, 319, 176, + 176, 176, 176, 176, 176, 280, 280, 280, 280, 280, + 318, 318, 318, 318, 318, 152, 278, 90, 251, 274, + 370, 274, 384, 319, 405, 41, 371, 377, 176, 176, + 176, 176, 176, 176, 39, 39, 39, 107, 277, 152, + 109, 283, 152, 129, 152, 280, 280, 280, 280, 280, + + 152, 384, 405, 110, 396, 371, 377, 252, 251, 129, + 110, 110, 110, 110, 110, 110, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 478, 226, 478, 251, + 152, 282, 246, 396, 251, 403, 111, 152, 282, 110, + 110, 110, 110, 110, 110, 178, 404, 252, 467, 245, + 152, 417, 178, 178, 178, 178, 178, 178, 355, 318, + 318, 318, 355, 403, 282, 478, 152, 129, 252, 152, + 282, 356, 152, 252, 129, 404, 467, 283, 115, 285, + 417, 178, 178, 178, 178, 178, 178, 180, 129, 359, + 318, 318, 318, 359, 180, 180, 180, 180, 180, 180, + + 282, 129, 360, 97, 97, 97, 97, 97, 226, 115, + 283, 108, 175, 175, 175, 108, 283, 40, 213, 90, + 385, 163, 152, 180, 180, 180, 180, 180, 180, 116, + 116, 116, 116, 116, 161, 161, 161, 161, 161, 152, + 197, 285, 152, 119, 182, 182, 182, 119, 181, 385, + 90, 478, 478, 129, 40, 181, 181, 181, 181, 181, + 181, 282, 282, 41, 179, 179, 179, 179, 179, 430, + 159, 159, 159, 159, 159, 187, 187, 187, 187, 187, + 129, 129, 152, 90, 181, 181, 181, 181, 181, 181, + 119, 182, 182, 182, 119, 49, 295, 430, 295, 129, + + 448, 40, 285, 285, 199, 199, 199, 199, 199, 183, + 390, 391, 392, 129, 152, 393, 183, 183, 183, 183, + 183, 183, 152, 355, 318, 318, 318, 355, 448, 282, + 311, 429, 311, 152, 152, 129, 356, 152, 390, 152, + 391, 392, 49, 406, 393, 183, 183, 183, 183, 183, + 183, 48, 48, 48, 118, 394, 152, 129, 152, 429, + 432, 152, 120, 359, 318, 318, 318, 359, 395, 401, + 121, 406, 402, 416, 282, 283, 360, 121, 121, 121, + 121, 121, 121, 394, 129, 415, 152, 129, 421, 432, + 152, 152, 129, 152, 152, 129, 419, 395, 401, 407, + + 152, 402, 416, 122, 129, 408, 121, 121, 121, 121, + 121, 121, 188, 415, 152, 285, 421, 420, 152, 188, + 188, 188, 188, 188, 188, 419, 347, 407, 347, 372, + 386, 372, 386, 408, 286, 286, 286, 286, 286, 152, + 127, 418, 422, 115, 115, 167, 420, 251, 188, 188, + 188, 188, 188, 188, 146, 146, 146, 146, 146, 152, + 152, 163, 152, 149, 326, 361, 361, 361, 326, 431, + 418, 422, 129, 195, 129, 282, 433, 57, 152, 434, + 195, 195, 195, 195, 195, 195, 252, 411, 411, 411, + 411, 411, 321, 357, 357, 357, 321, 431, 282, 77, + + 152, 152, 59, 412, 127, 433, 129, 123, 434, 195, + 195, 195, 195, 195, 195, 200, 285, 411, 411, 411, + 411, 411, 200, 200, 200, 200, 200, 200, 423, 423, + 423, 423, 423, 412, 115, 101, 100, 435, 99, 414, + 79, 424, 440, 58, 283, 444, 478, 478, 478, 478, + 478, 200, 200, 200, 200, 200, 200, 159, 159, 159, + 159, 159, 478, 152, 152, 57, 435, 442, 441, 414, + 152, 440, 443, 50, 444, 449, 207, 152, 471, 152, + 426, 152, 454, 207, 207, 207, 207, 207, 207, 423, + 423, 423, 423, 423, 152, 442, 450, 441, 414, 47, + + 443, 152, 424, 449, 152, 455, 478, 471, 152, 152, + 451, 454, 207, 207, 207, 207, 207, 207, 161, 161, + 161, 161, 161, 478, 450, 152, 478, 152, 423, 423, + 423, 423, 423, 456, 455, 478, 460, 208, 451, 478, + 457, 424, 152, 478, 208, 208, 208, 208, 208, 208, + 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, + 478, 456, 152, 424, 461, 470, 478, 478, 424, 457, + 478, 152, 152, 208, 208, 208, 208, 208, 208, 215, + 426, 423, 423, 423, 423, 423, 215, 215, 215, 215, + 215, 215, 461, 470, 424, 478, 478, 478, 463, 478, + + 462, 466, 426, 477, 478, 478, 152, 426, 473, 152, + 152, 152, 474, 478, 475, 215, 215, 215, 215, 215, + 215, 108, 175, 175, 175, 108, 463, 40, 462, 466, + 152, 477, 478, 426, 152, 478, 478, 473, 152, 478, + 218, 474, 478, 475, 478, 478, 478, 218, 218, 218, + 218, 218, 218, 423, 423, 423, 423, 423, 438, 438, + 438, 438, 438, 478, 478, 478, 424, 478, 478, 478, + 478, 424, 478, 41, 478, 478, 218, 218, 218, 218, + 218, 218, 220, 445, 445, 445, 445, 445, 472, 220, + 220, 220, 220, 220, 220, 478, 424, 478, 478, 478, + + 478, 478, 476, 152, 478, 426, 478, 478, 478, 478, + 426, 478, 478, 478, 478, 478, 472, 152, 220, 220, + 220, 220, 220, 220, 179, 179, 179, 179, 179, 478, + 476, 478, 478, 478, 478, 426, 478, 478, 478, 478, + 478, 478, 478, 221, 478, 478, 478, 478, 478, 478, + 221, 221, 221, 221, 221, 221, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 221, + 221, 221, 221, 221, 221, 116, 116, 116, 116, 116, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 222, 478, 478, 478, 478, 478, + 478, 222, 222, 222, 222, 222, 222, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 222, 222, 222, 222, 222, 222, 119, 182, 182, 182, + 119, 478, 478, 478, 478, 478, 478, 40, 478, 478, + 478, 478, 478, 478, 478, 223, 478, 478, 478, 478, + 478, 478, 223, 223, 223, 223, 223, 223, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 49, 478, + + 478, 223, 223, 223, 223, 223, 223, 187, 187, 187, + 187, 187, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 227, 478, 478, 478, + 478, 478, 478, 227, 227, 227, 227, 227, 227, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 227, 227, 227, 227, 227, 227, 230, 478, + 478, 478, 478, 478, 478, 230, 230, 230, 230, 230, + 230, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 230, 230, 230, 230, 230, 230, + 199, 199, 199, 199, 199, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 233, + 478, 478, 478, 478, 478, 478, 233, 233, 233, 233, + 233, 233, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 233, 233, 233, 233, 233, + 233, 240, 478, 478, 478, 478, 478, 478, 240, 240, + 240, 240, 240, 240, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 478, 240, 240, 240, + 240, 240, 240, 161, 161, 161, 161, 161, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 241, 478, 478, 478, 478, 478, 478, 241, + 241, 241, 241, 241, 241, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 241, 241, + 241, 241, 241, 241, 253, 478, 478, 478, 478, 478, + 478, 253, 253, 253, 253, 253, 253, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 253, 253, 253, 253, 253, 253, 108, 175, 175, 175, + 108, 478, 40, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 255, 478, 478, 478, 478, + 478, 478, 255, 255, 255, 255, 255, 255, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 41, 478, + 478, 255, 255, 255, 255, 255, 255, 257, 478, 478, + 478, 478, 478, 478, 257, 257, 257, 257, 257, 257, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 257, 257, 257, 257, 257, 257, 179, + 179, 179, 179, 179, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 258, 478, + 478, 478, 478, 478, 478, 258, 258, 258, 258, 258, + 258, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 258, 258, 258, 258, 258, 258, + 116, 116, 116, 116, 116, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 259, + + 478, 478, 478, 478, 478, 478, 259, 259, 259, 259, + 259, 259, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 259, 259, 259, 259, 259, + 259, 119, 182, 182, 182, 119, 478, 478, 478, 478, + 478, 478, 40, 478, 478, 478, 478, 478, 478, 478, + 260, 478, 478, 478, 478, 478, 478, 260, 260, 260, + 260, 260, 260, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 49, 478, 478, 260, 260, 260, 260, + + 260, 260, 187, 187, 187, 187, 187, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 262, 478, 478, 478, 478, 478, 478, 262, 262, + 262, 262, 262, 262, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 262, 262, 262, + 262, 262, 262, 263, 478, 478, 478, 478, 478, 478, + 263, 263, 263, 263, 263, 263, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 263, + + 263, 263, 263, 263, 263, 199, 199, 199, 199, 199, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 266, 478, 478, 478, 478, 478, + 478, 266, 266, 266, 266, 266, 266, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 266, 266, 266, 266, 266, 266, 272, 478, 478, 478, + 478, 478, 478, 272, 272, 272, 272, 272, 272, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 272, 272, 272, 272, 272, 272, 161, 161, + 161, 161, 161, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 273, 478, 478, + 478, 478, 478, 478, 273, 273, 273, 273, 273, 273, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 273, 273, 273, 273, 273, 273, 280, + 280, 280, 280, 286, 478, 288, 478, 478, 478, 478, + 288, 288, 289, 478, 478, 478, 478, 478, 290, 478, + 478, 478, 478, 478, 478, 290, 290, 290, 290, 290, + + 290, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 291, 478, 478, 290, 290, 290, 290, 290, 290, + 292, 478, 478, 478, 478, 478, 478, 292, 292, 292, + 292, 292, 292, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 292, 292, 292, 292, + 292, 292, 108, 175, 175, 175, 108, 478, 40, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 294, 478, 478, 478, 478, 478, 478, 294, 294, + + 294, 294, 294, 294, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 41, 478, 478, 294, 294, 294, + 294, 294, 294, 296, 478, 478, 478, 478, 478, 478, + 296, 296, 296, 296, 296, 296, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 115, 478, 478, 296, + 296, 296, 296, 296, 296, 179, 179, 179, 179, 179, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 297, 478, 478, 478, 478, 478, + + 478, 297, 297, 297, 297, 297, 297, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 115, 478, 478, + 297, 297, 297, 297, 297, 297, 116, 116, 116, 116, + 116, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 298, 478, 478, 478, 478, + 478, 478, 298, 298, 298, 298, 298, 298, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 298, 298, 298, 298, 298, 298, 119, 182, 182, + + 182, 119, 478, 478, 478, 478, 478, 478, 40, 478, + 478, 478, 478, 478, 478, 478, 299, 478, 478, 478, + 478, 478, 478, 299, 299, 299, 299, 299, 299, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 49, + 478, 478, 299, 299, 299, 299, 299, 299, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 90, 478, 478, + 478, 478, 478, 478, 90, 90, 90, 90, 90, 90, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 300, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 90, 90, 90, 90, 90, 90, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 300, 187, 187, 187, 187, 187, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 301, 478, 478, 478, 478, 478, 478, 301, 301, + 301, 301, 301, 301, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 301, 301, 301, + 301, 301, 301, 302, 478, 478, 478, 478, 478, 478, + + 302, 302, 302, 302, 302, 302, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 302, + 302, 302, 302, 302, 302, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 128, 478, 478, 478, 478, 478, + 478, 128, 128, 128, 128, 128, 128, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 128, 128, 128, 128, 128, 128, 199, 199, 199, 199, + + 199, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 304, 478, 478, 478, 478, + 478, 478, 304, 304, 304, 304, 304, 304, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 304, 304, 304, 304, 304, 304, 309, 478, 478, + 478, 478, 478, 478, 309, 309, 309, 309, 309, 309, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 309, 309, 309, 309, 309, 309, 161, + + 161, 161, 161, 161, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 310, 478, + 478, 478, 478, 478, 478, 310, 310, 310, 310, 310, + 310, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 310, 310, 310, 310, 310, 310, + 281, 281, 281, 320, 478, 478, 322, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 323, + 478, 478, 478, 478, 478, 478, 323, 323, 323, 323, + 323, 323, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 324, 478, 478, 323, 323, 323, 323, 323, + 323, 284, 284, 284, 325, 478, 478, 478, 478, 478, + 478, 478, 327, 478, 478, 478, 478, 478, 478, 478, + 328, 478, 478, 478, 478, 478, 478, 328, 328, 328, + 328, 328, 328, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 329, 478, 478, 328, 328, 328, 328, + 328, 328, 286, 286, 286, 286, 286, 478, 478, 478, + 478, 478, 478, 478, 478, 251, 478, 478, 478, 478, + + 478, 330, 478, 478, 478, 478, 478, 478, 330, 330, + 330, 330, 330, 330, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 252, 478, 478, 330, 330, 330, + 330, 330, 330, 280, 280, 280, 280, 286, 478, 288, + 478, 478, 478, 478, 288, 288, 289, 478, 478, 478, + 478, 478, 290, 478, 478, 478, 478, 478, 478, 290, + 290, 290, 290, 290, 290, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 291, 478, 478, 290, 290, + + 290, 290, 290, 290, 331, 478, 478, 478, 478, 478, + 478, 331, 331, 331, 331, 331, 331, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 331, 331, 331, 331, 331, 331, 108, 175, 175, 175, + 108, 478, 40, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 333, 478, 478, 478, 478, + 478, 478, 333, 333, 333, 333, 333, 333, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 41, 478, + + 478, 333, 333, 333, 333, 333, 333, 179, 179, 179, + 179, 179, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 334, 478, 478, 478, + 478, 478, 478, 334, 334, 334, 334, 334, 334, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 115, + 478, 478, 334, 334, 334, 334, 334, 334, 116, 116, + 116, 116, 116, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 335, 478, 478, + 478, 478, 478, 478, 335, 335, 335, 335, 335, 335, + + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 335, 335, 335, 335, 335, 335, 119, + 182, 182, 182, 119, 478, 478, 478, 478, 478, 478, + 40, 478, 478, 478, 478, 478, 478, 478, 336, 478, + 478, 478, 478, 478, 478, 336, 336, 336, 336, 336, + 336, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 49, 478, 478, 336, 336, 336, 336, 336, 336, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 337, 478, 478, 90, + 478, 478, 478, 478, 478, 478, 90, 90, 90, 90, + 90, 90, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 90, 90, 90, 90, 90, + 90, 187, 187, 187, 187, 187, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 338, 478, 478, 478, 478, 478, 478, 338, 338, 338, + 338, 338, 338, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 338, 338, 338, 338, + 338, 338, 146, 146, 146, 146, 146, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 339, 478, 478, 478, 478, 478, 478, 339, 339, + 339, 339, 339, 339, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 339, 339, 339, + 339, 339, 339, 199, 199, 199, 199, 199, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 341, 478, 478, 478, 478, 478, 478, 341, + + 341, 341, 341, 341, 341, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 341, 341, + 341, 341, 341, 341, 345, 478, 478, 478, 478, 478, + 478, 345, 345, 345, 345, 345, 345, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 345, 345, 345, 345, 345, 345, 161, 161, 161, 161, + 161, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 346, 478, 478, 478, 478, + + 478, 478, 346, 346, 346, 346, 346, 346, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 346, 346, 346, 346, 346, 346, 321, 357, 357, + 357, 321, 478, 282, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 358, 478, 478, 478, + 478, 478, 478, 358, 358, 358, 358, 358, 358, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 283, + 478, 478, 358, 358, 358, 358, 358, 358, 281, 281, + + 281, 320, 478, 478, 322, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 323, 478, 478, + 478, 478, 478, 478, 323, 323, 323, 323, 323, 323, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 324, 478, 478, 323, 323, 323, 323, 323, 323, 326, + 361, 361, 361, 326, 478, 478, 478, 478, 478, 478, + 282, 478, 478, 478, 478, 478, 478, 478, 362, 478, + 478, 478, 478, 478, 478, 362, 362, 362, 362, 362, + 362, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 285, 478, 478, 362, 362, 362, 362, 362, 362, + 284, 284, 284, 325, 478, 478, 478, 478, 478, 478, + 478, 327, 478, 478, 478, 478, 478, 478, 478, 328, + 478, 478, 478, 478, 478, 478, 328, 328, 328, 328, + 328, 328, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 329, 478, 478, 328, 328, 328, 328, 328, + 328, 286, 286, 286, 286, 286, 478, 478, 478, 478, + 478, 478, 478, 478, 251, 478, 478, 478, 478, 478, + + 363, 478, 478, 478, 478, 478, 478, 363, 363, 363, + 363, 363, 363, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 252, 478, 478, 363, 363, 363, 363, + 363, 363, 365, 478, 478, 478, 478, 478, 478, 365, + 365, 365, 365, 365, 365, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 365, 365, + 365, 365, 365, 365, 113, 478, 478, 478, 478, 478, + 478, 113, 113, 113, 113, 113, 113, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 113, 113, 113, 113, 113, 113, 367, 478, 478, 478, + 478, 478, 478, 367, 367, 367, 367, 367, 367, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 367, 367, 367, 367, 367, 367, 146, 146, + 146, 146, 146, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 128, 478, 478, + 478, 478, 478, 478, 128, 128, 128, 128, 128, 128, + + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 128, 128, 128, 128, 128, 128, 199, + 199, 199, 199, 199, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 369, 478, + 478, 478, 478, 478, 478, 369, 369, 369, 369, 369, + 369, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 369, 369, 369, 369, 369, 369, + 373, 478, 478, 478, 478, 478, 478, 373, 373, 373, + + 373, 373, 373, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 373, 373, 373, 373, + 373, 373, 374, 478, 478, 478, 478, 478, 478, 374, + 374, 374, 374, 374, 374, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 374, 374, + 374, 374, 374, 374, 286, 286, 286, 286, 286, 478, + 478, 478, 478, 478, 478, 478, 478, 251, 478, 478, + 478, 478, 478, 375, 478, 478, 478, 478, 478, 478, + + 375, 375, 375, 375, 375, 375, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 252, 478, 478, 375, + 375, 375, 375, 375, 375, 378, 478, 478, 478, 478, + 478, 478, 379, 478, 380, 478, 478, 478, 478, 381, + 382, 478, 478, 383, 478, 478, 478, 478, 152, 478, + 478, 478, 478, 478, 378, 478, 478, 478, 478, 478, + 379, 478, 380, 478, 478, 478, 478, 381, 382, 478, + 478, 383, 387, 478, 478, 478, 478, 478, 478, 387, + 387, 387, 387, 387, 387, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 387, 387, + 387, 387, 387, 387, 388, 478, 478, 478, 478, 478, + 478, 388, 388, 388, 388, 388, 388, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 388, 388, 388, 388, 388, 388, 389, 478, 478, 478, + 478, 478, 478, 389, 389, 389, 389, 389, 389, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 389, 389, 389, 389, 389, 389, 397, 478, + 478, 478, 478, 478, 478, 397, 397, 397, 397, 397, + 397, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 397, 397, 397, 397, 397, 397, + 398, 478, 478, 478, 478, 478, 478, 398, 398, 398, + 398, 398, 398, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 398, 398, 398, 398, + 398, 398, 399, 478, 478, 478, 478, 478, 478, 399, + + 399, 399, 399, 399, 399, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 399, 399, + 399, 399, 399, 399, 409, 478, 478, 478, 478, 478, + 478, 409, 409, 409, 409, 409, 409, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 409, 409, 409, 409, 409, 409, 410, 478, 478, 478, + 478, 478, 478, 410, 410, 410, 410, 410, 410, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 410, 410, 410, 410, 410, 410, 428, 478, + 478, 478, 478, 478, 478, 428, 428, 428, 428, 428, + 428, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 428, 428, 428, 428, 428, 428, + 437, 478, 478, 478, 478, 478, 478, 437, 437, 437, + 437, 437, 437, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 437, 437, 437, 437, + + 437, 437, 438, 438, 438, 438, 438, 478, 478, 478, + 478, 478, 478, 478, 478, 424, 478, 478, 478, 478, + 478, 439, 478, 478, 478, 478, 478, 478, 439, 439, + 439, 439, 439, 439, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 426, 478, 478, 439, 439, 439, + 439, 439, 439, 445, 445, 445, 445, 445, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 446, 478, 478, 478, 478, 478, 478, 446, + 446, 446, 446, 446, 446, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 446, 446, + 446, 446, 446, 446, 447, 478, 478, 478, 478, 478, + 478, 447, 447, 447, 447, 447, 447, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 447, 447, 447, 447, 447, 447, 452, 478, 478, 478, + 478, 478, 478, 452, 452, 452, 452, 452, 452, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 452, 452, 452, 452, 452, 452, 453, 478, + 478, 478, 478, 478, 478, 453, 453, 453, 453, 453, + 453, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 453, 453, 453, 453, 453, 453, + 458, 478, 478, 478, 478, 478, 478, 458, 458, 458, + 458, 458, 458, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 458, 458, 458, 458, + 458, 458, 459, 478, 478, 478, 478, 478, 478, 459, + + 459, 459, 459, 459, 459, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 459, 459, + 459, 459, 459, 459, 464, 478, 478, 478, 478, 478, + 478, 464, 464, 464, 464, 464, 464, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 464, 464, 464, 464, 464, 464, 465, 478, 478, 478, + 478, 478, 478, 465, 465, 465, 465, 465, 465, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 465, 465, 465, 465, 465, 465, 469, 478, + 478, 478, 478, 478, 478, 469, 469, 469, 469, 469, + 469, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 469, 469, 469, 469, 469, 469, + 39, 478, 478, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 45, 45, 478, 45, 45, 48, 478, + 478, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 53, 53, 478, 53, 53, 81, 478, 478, 81, + + 81, 90, 478, 90, 90, 478, 90, 90, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 115, - 115, 478, 115, 115, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 65, 65, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 130, 130, - 478, 130, 130, 151, 151, 151, 151, 151, 151, 151, - - 151, 151, 153, 153, 478, 153, 153, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 212, 212, 212, 478, 212, + 108, 113, 113, 478, 113, 113, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 128, 128, 478, 128, 128, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 151, 151, + 478, 151, 151, 159, 159, 159, 159, 159, 159, 159, + + 159, 159, 159, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 166, 166, 166, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 48, 48, 478, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + + 211, 211, 211, 211, 39, 478, 478, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 244, 244, 244, 478, 244, 249, 249, 249, - 249, 478, 249, 249, 249, 249, 249, 249, 276, 276, - 276, 478, 276, 282, 478, 282, 282, 282, 282, 282, - - 282, 282, 282, 282, 285, 478, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 313, 313, 313, 478, - 313, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 348, 348, 348, 478, 348, 414, 414, - 414, 478, 478, 478, 414, 478, 478, 414, 414, 423, - 423, 423, 423, 423, 423, 423, 423, 423, 427, 427, - 427, 478, 478, 427, 427, 427, 478, 427, 427, 438, - 438, 438, 438, 438, 438, 438, 438, 438, 7, 478, + 225, 243, 243, 243, 243, 248, 248, 248, 248, 248, + 248, 478, 248, 248, 248, 248, 248, 248, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 275, 275, 275, 275, 248, + 248, 248, 248, 248, 248, 478, 248, 248, 248, 248, + 248, 248, 281, 478, 478, 281, 281, 281, 281, 281, + + 281, 281, 281, 281, 281, 284, 478, 478, 284, 284, + 284, 284, 284, 284, 284, 284, 284, 284, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 113, 113, 478, 113, 113, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 312, 312, 312, 312, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 284, + 478, 478, 284, 284, 284, 284, 284, 284, 284, 284, + 284, 284, 326, 326, 326, 326, 326, 326, 326, 326, + + 326, 326, 326, 326, 326, 248, 248, 248, 248, 248, + 478, 478, 248, 248, 248, 248, 248, 248, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 113, 113, 478, 113, 113, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 348, 348, 348, 348, 281, 281, 478, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 281, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 284, 284, 478, 284, 284, 284, 284, 284, + + 284, 284, 284, 284, 284, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 248, 248, + 248, 248, 248, 478, 478, 248, 248, 248, 248, 248, + 248, 413, 413, 413, 413, 478, 478, 478, 478, 413, + 478, 478, 413, 413, 425, 425, 425, 425, 478, 478, + 478, 425, 425, 425, 478, 425, 425, 427, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 436, 436, 436, + 436, 436, 436, 436, 436, 436, 436, 7, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, - 478, 478, 478, 478, 478, 478, 478, 478, 478 + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478 } ; -static yyconst flex_int16_t yy_chk[2460] = +static yyconst flex_int16_t yy_chk[6664] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -576,270 +1048,733 @@ static yyconst flex_int16_t yy_chk[2460] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 134, 4, 9, 9, 9, 9, 9, 12, 3, - 134, 4, 10, 10, 10, 10, 10, 11, 11, 11, - 11, 11, 3, 3, 4, 4, 13, 67, 12, 13, - 15, 39, 52, 25, 67, 3, 13, 4, 31, 13, - - 13, 13, 13, 13, 13, 15, 17, 25, 22, 17, - 27, 39, 31, 27, 11, 52, 17, 26, 22, 69, - 26, 26, 71, 22, 27, 48, 22, 42, 31, 22, - 42, 26, 17, 22, 22, 156, 22, 42, 71, 69, - 48, 17, 20, 23, 27, 64, 54, 64, 26, 20, - 20, 156, 20, 23, 23, 23, 23, 23, 23, 20, - 54, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 5, 4, 6, 15, + 12, 3, 477, 4, 9, 9, 9, 9, 9, 10, + + 10, 10, 10, 10, 3, 3, 4, 4, 11, 11, + 11, 11, 11, 23, 39, 5, 17, 6, 35, 17, + 3, 24, 4, 32, 24, 24, 32, 32, 38, 48, + 15, 69, 3, 3, 4, 4, 12, 42, 25, 17, + 42, 25, 11, 474, 69, 3, 35, 4, 17, 24, + 53, 32, 17, 23, 31, 78, 38, 78, 35, 69, + 39, 24, 467, 32, 33, 461, 65, 17, 83, 25, + 48, 11, 13, 42, 35, 13, 17, 24, 25, 32, + 83, 31, 13, 13, 13, 13, 13, 13, 65, 54, + 53, 33, 54, 54, 31, 65, 83, 25, 36, 36, + + 36, 36, 36, 70, 33, 68, 68, 456, 13, 31, + 166, 13, 13, 13, 13, 13, 13, 20, 166, 33, + 211, 90, 70, 440, 20, 20, 434, 20, 211, 54, + 124, 124, 70, 68, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 33, 32, - 35, 20, 32, 32, 36, 36, 36, 36, 36, 57, - - 43, 57, 33, 32, 35, 37, 37, 37, 37, 37, - 43, 43, 43, 43, 43, 43, 44, 84, 33, 55, - 32, 35, 55, 55, 57, 46, 44, 44, 44, 44, - 44, 44, 46, 55, 84, 46, 46, 46, 46, 46, - 46, 53, 37, 41, 41, 41, 41, 56, 66, 41, - 72, 53, 53, 53, 53, 53, 53, 70, 147, 86, - 72, 56, 41, 66, 147, 75, 86, 68, 56, 41, - 75, 73, 41, 41, 41, 41, 41, 41, 49, 49, - 49, 49, 68, 74, 74, 70, 73, 75, 63, 49, - 477, 75, 73, 68, 74, 78, 80, 49, 63, 63, - - 63, 63, 63, 63, 49, 83, 80, 49, 49, 49, - 49, 49, 49, 76, 81, 83, 76, 85, 78, 87, - 88, 89, 87, 88, 81, 81, 81, 81, 81, 81, - 93, 80, 85, 102, 108, 89, 90, 90, 90, 90, - 90, 124, 124, 143, 93, 140, 94, 102, 90, 97, - 143, 474, 109, 102, 108, 90, 94, 94, 94, 94, - 94, 94, 90, 97, 96, 90, 90, 90, 90, 90, - 90, 96, 109, 140, 118, 467, 98, 119, 96, 99, - 103, 98, 104, 105, 118, 97, 98, 98, 98, 98, - 98, 98, 119, 99, 103, 107, 104, 105, 120, 118, - - 107, 125, 127, 461, 150, 137, 127, 99, 137, 155, - 104, 150, 155, 120, 148, 125, 103, 105, 112, 125, - 107, 110, 110, 110, 110, 110, 132, 110, 112, 112, - 112, 112, 112, 112, 148, 158, 167, 192, 456, 160, - 110, 158, 157, 192, 167, 132, 159, 110, 160, 162, - 110, 110, 110, 110, 110, 110, 111, 111, 111, 111, - 157, 159, 111, 162, 190, 194, 116, 206, 344, 166, - 169, 190, 194, 344, 206, 111, 116, 116, 116, 116, - 116, 116, 111, 166, 169, 111, 111, 111, 111, 111, - 111, 114, 114, 114, 114, 114, 198, 205, 226, 207, - - 198, 117, 226, 170, 171, 173, 207, 440, 205, 203, - 114, 117, 117, 117, 117, 117, 117, 170, 171, 173, - 114, 114, 114, 114, 114, 114, 121, 121, 121, 121, - 121, 203, 212, 175, 236, 238, 131, 121, 238, 182, - 212, 392, 434, 429, 236, 121, 131, 131, 131, 131, - 131, 131, 121, 175, 182, 121, 121, 121, 121, 121, - 121, 122, 122, 122, 122, 216, 265, 244, 392, 268, - 269, 154, 122, 196, 184, 244, 268, 265, 269, 216, - 122, 154, 154, 154, 154, 154, 154, 122, 184, 196, - 122, 122, 122, 122, 122, 122, 129, 129, 129, 129, - - 129, 184, 276, 202, 340, 307, 161, 204, 307, 309, - 276, 419, 309, 385, 340, 129, 161, 161, 161, 161, - 161, 161, 129, 202, 204, 129, 129, 129, 129, 129, - 129, 152, 152, 152, 152, 152, 232, 165, 172, 229, - 313, 345, 420, 384, 165, 261, 345, 420, 313, 232, - 152, 165, 172, 235, 229, 237, 239, 152, 224, 261, - 152, 152, 152, 152, 152, 152, 163, 163, 163, 163, - 163, 370, 224, 250, 235, 237, 176, 239, 370, 172, - 435, 261, 364, 224, 435, 163, 176, 176, 176, 176, - 176, 176, 177, 250, 251, 163, 163, 163, 163, 163, - - 163, 178, 177, 177, 177, 177, 177, 177, 270, 251, - 272, 178, 178, 178, 178, 178, 178, 180, 180, 180, - 180, 180, 281, 281, 281, 281, 281, 181, 272, 285, - 270, 383, 348, 343, 383, 281, 180, 181, 181, 181, - 181, 181, 181, 183, 285, 332, 180, 180, 180, 180, - 180, 180, 187, 183, 183, 183, 183, 183, 183, 282, - 303, 306, 187, 187, 187, 187, 187, 187, 189, 189, - 189, 189, 189, 283, 283, 283, 283, 283, 199, 282, - 300, 327, 303, 306, 300, 318, 283, 189, 199, 199, - 199, 199, 199, 199, 300, 322, 327, 189, 189, 189, - - 189, 189, 189, 201, 201, 201, 201, 201, 319, 319, - 319, 319, 319, 208, 418, 322, 360, 418, 317, 316, - 326, 319, 201, 208, 208, 208, 208, 208, 208, 209, - 326, 360, 201, 201, 201, 201, 201, 201, 211, 209, - 209, 209, 209, 209, 209, 326, 356, 315, 211, 211, - 211, 211, 211, 211, 215, 215, 215, 215, 215, 218, - 215, 371, 337, 357, 361, 215, 356, 215, 371, 218, - 218, 218, 218, 218, 218, 219, 337, 321, 314, 361, - 215, 220, 321, 357, 366, 219, 219, 219, 219, 219, - 219, 220, 220, 220, 220, 220, 220, 221, 366, 378, - - 337, 366, 321, 222, 381, 407, 378, 221, 221, 221, - 221, 221, 221, 222, 222, 222, 222, 222, 222, 223, - 334, 334, 334, 334, 334, 227, 308, 381, 407, 223, - 223, 223, 223, 223, 223, 227, 227, 227, 227, 227, - 227, 228, 379, 380, 298, 422, 334, 233, 422, 379, - 380, 228, 228, 228, 228, 228, 228, 233, 233, 233, - 233, 233, 233, 234, 338, 338, 338, 338, 338, 241, - 432, 415, 441, 234, 234, 234, 234, 234, 234, 241, - 241, 241, 241, 241, 241, 242, 382, 441, 393, 432, - 338, 243, 415, 382, 393, 242, 242, 242, 242, 242, - - 242, 243, 243, 243, 243, 243, 243, 248, 248, 248, - 248, 248, 405, 248, 293, 390, 394, 395, 248, 405, - 248, 249, 249, 249, 249, 249, 255, 249, 377, 390, - 394, 395, 249, 248, 249, 402, 255, 255, 255, 255, - 255, 255, 377, 396, 404, 403, 402, 249, 253, 253, - 253, 253, 253, 403, 253, 404, 463, 396, 256, 253, - 253, 253, 377, 396, 280, 408, 463, 253, 256, 256, - 256, 256, 256, 256, 253, 257, 408, 253, 253, 253, - 253, 253, 253, 258, 416, 257, 257, 257, 257, 257, - 257, 259, 279, 258, 258, 258, 258, 258, 258, 260, - - 416, 259, 259, 259, 259, 259, 259, 262, 278, 260, - 260, 260, 260, 260, 260, 263, 277, 262, 262, 262, - 262, 262, 262, 266, 271, 263, 263, 263, 263, 263, - 263, 267, 264, 266, 266, 266, 266, 266, 266, 273, - 254, 267, 267, 267, 267, 267, 267, 274, 247, 273, - 273, 273, 273, 273, 273, 275, 406, 274, 274, 274, - 274, 274, 274, 406, 401, 275, 275, 275, 275, 275, - 275, 284, 284, 284, 284, 391, 443, 284, 401, 417, - 391, 431, 246, 391, 431, 287, 287, 287, 287, 287, - 284, 287, 245, 443, 240, 231, 287, 284, 287, 417, - - 284, 284, 284, 284, 284, 284, 286, 286, 286, 286, - 230, 287, 412, 412, 412, 412, 412, 286, 288, 288, - 288, 288, 288, 421, 288, 286, 430, 442, 412, 288, - 421, 288, 286, 430, 450, 286, 286, 286, 286, 286, - 286, 444, 225, 470, 288, 289, 289, 289, 289, 289, - 442, 289, 217, 475, 450, 444, 289, 470, 289, 290, - 290, 290, 290, 290, 294, 290, 448, 475, 462, 433, - 290, 289, 290, 448, 294, 294, 294, 294, 294, 294, - 425, 425, 425, 425, 425, 290, 291, 291, 291, 291, - 291, 433, 291, 425, 455, 462, 296, 291, 214, 291, - - 341, 341, 341, 341, 341, 291, 296, 296, 296, 296, - 296, 296, 291, 213, 455, 291, 291, 291, 291, 291, - 291, 292, 292, 292, 292, 292, 341, 292, 449, 451, - 200, 297, 292, 292, 292, 449, 451, 460, 195, 193, - 292, 297, 297, 297, 297, 297, 297, 292, 299, 191, - 292, 292, 292, 292, 292, 292, 301, 460, 299, 299, - 299, 299, 299, 299, 302, 466, 301, 301, 301, 301, - 301, 301, 304, 188, 302, 302, 302, 302, 302, 302, - 305, 457, 304, 304, 304, 304, 304, 304, 466, 185, - 305, 305, 305, 305, 305, 305, 310, 310, 310, 310, - - 310, 311, 457, 476, 468, 179, 174, 168, 310, 454, - 468, 311, 311, 311, 311, 311, 311, 312, 471, 454, - 164, 473, 310, 153, 476, 471, 473, 312, 312, 312, - 312, 312, 312, 323, 323, 323, 323, 323, 151, 323, - 454, 328, 328, 328, 328, 328, 323, 149, 472, 146, - 145, 144, 328, 142, 328, 472, 141, 139, 331, 323, - 324, 324, 324, 324, 324, 138, 324, 328, 331, 331, - 331, 331, 331, 331, 355, 355, 355, 355, 355, 324, - 355, 365, 365, 365, 365, 365, 324, 355, 136, 324, - 324, 324, 324, 324, 324, 325, 325, 325, 325, 135, - - 355, 325, 133, 130, 128, 333, 126, 365, 115, 367, - 367, 367, 367, 367, 325, 333, 333, 333, 333, 333, - 333, 325, 113, 106, 325, 325, 325, 325, 325, 325, - 329, 329, 329, 329, 329, 367, 95, 82, 79, 77, - 335, 329, 65, 369, 369, 369, 369, 369, 61, 329, - 335, 335, 335, 335, 335, 335, 329, 60, 59, 329, - 329, 329, 329, 329, 329, 330, 330, 330, 330, 369, - 58, 51, 45, 38, 29, 336, 330, 28, 24, 21, - 19, 18, 16, 14, 330, 336, 336, 336, 336, 336, - 336, 330, 339, 7, 330, 330, 330, 330, 330, 330, - - 342, 6, 339, 339, 339, 339, 339, 339, 5, 0, - 342, 342, 342, 342, 342, 342, 346, 346, 346, 346, - 346, 347, 0, 0, 0, 0, 0, 0, 346, 0, - 0, 347, 347, 347, 347, 347, 347, 358, 0, 0, - 0, 0, 346, 0, 0, 0, 0, 358, 358, 358, - 358, 358, 358, 359, 359, 359, 359, 359, 362, 0, - 0, 0, 0, 0, 359, 0, 359, 0, 362, 362, - 362, 362, 362, 362, 363, 0, 0, 368, 0, 359, - 0, 0, 0, 368, 363, 363, 363, 363, 363, 363, - 368, 0, 368, 372, 0, 0, 0, 368, 368, 373, - - 0, 368, 0, 372, 372, 372, 372, 372, 372, 373, - 373, 373, 373, 373, 373, 374, 0, 0, 0, 0, - 0, 375, 0, 0, 0, 374, 374, 374, 374, 374, - 374, 375, 375, 375, 375, 375, 375, 387, 0, 0, - 0, 0, 0, 388, 0, 0, 0, 387, 387, 387, - 387, 387, 387, 388, 388, 388, 388, 388, 388, 389, - 0, 0, 0, 0, 0, 397, 0, 0, 0, 389, - 389, 389, 389, 389, 389, 397, 397, 397, 397, 397, - 397, 398, 0, 0, 0, 0, 0, 399, 0, 0, - 0, 398, 398, 398, 398, 398, 398, 399, 399, 399, - - 399, 399, 399, 400, 400, 400, 400, 400, 0, 0, - 409, 0, 0, 0, 0, 0, 0, 0, 0, 400, - 409, 409, 409, 409, 409, 409, 410, 0, 0, 400, - 411, 411, 411, 411, 411, 0, 410, 410, 410, 410, - 410, 410, 0, 0, 0, 0, 411, 413, 0, 0, - 414, 414, 414, 414, 414, 0, 411, 413, 413, 413, - 413, 413, 413, 414, 423, 423, 423, 423, 423, 0, - 427, 427, 427, 427, 427, 0, 414, 423, 0, 0, - 0, 0, 0, 427, 0, 0, 0, 428, 0, 0, - 423, 424, 424, 424, 424, 424, 427, 428, 428, 428, - - 428, 428, 428, 0, 424, 436, 436, 436, 436, 436, - 424, 0, 0, 0, 0, 0, 0, 424, 436, 0, - 424, 424, 424, 424, 424, 424, 437, 0, 0, 0, - 0, 436, 0, 0, 0, 0, 437, 437, 437, 437, - 437, 437, 438, 438, 438, 438, 438, 445, 0, 0, - 446, 446, 446, 446, 446, 438, 0, 445, 445, 445, - 445, 445, 445, 446, 0, 0, 0, 447, 438, 439, - 439, 439, 439, 439, 0, 0, 446, 447, 447, 447, - 447, 447, 447, 0, 0, 0, 0, 0, 439, 0, - 0, 0, 0, 0, 452, 0, 0, 0, 439, 439, - - 439, 439, 439, 439, 452, 452, 452, 452, 452, 452, - 453, 0, 0, 0, 0, 0, 458, 0, 0, 0, - 453, 453, 453, 453, 453, 453, 458, 458, 458, 458, - 458, 458, 459, 0, 0, 0, 0, 0, 464, 0, - 0, 0, 459, 459, 459, 459, 459, 459, 464, 464, - 464, 464, 464, 464, 465, 0, 0, 0, 0, 0, - 469, 0, 0, 0, 465, 465, 465, 465, 465, 465, - 469, 469, 469, 469, 469, 469, 479, 0, 479, 479, - 479, 479, 479, 479, 479, 479, 479, 480, 480, 0, - 480, 480, 481, 0, 481, 481, 481, 481, 481, 481, - - 481, 481, 481, 482, 482, 0, 482, 482, 483, 0, - 0, 483, 483, 484, 484, 484, 484, 484, 484, 484, - 484, 484, 485, 0, 485, 485, 0, 485, 485, 486, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 90, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 64, 52, + 106, 20, 22, 74, 55, 429, 37, 37, 37, 37, + + 37, 57, 64, 57, 22, 243, 487, 22, 487, 52, + 22, 419, 55, 243, 22, 22, 64, 22, 106, 74, + 67, 66, 74, 57, 72, 72, 385, 127, 22, 67, + 37, 127, 66, 22, 55, 66, 22, 52, 71, 22, + 97, 55, 22, 22, 71, 22, 26, 73, 67, 66, + 82, 57, 71, 26, 26, 26, 26, 26, 26, 37, + 66, 72, 108, 109, 73, 80, 71, 76, 73, 82, + 107, 73, 71, 76, 86, 107, 73, 85, 140, 82, + 97, 384, 26, 26, 26, 26, 26, 26, 41, 41, + 41, 41, 73, 118, 41, 76, 73, 80, 84, 85, + + 86, 80, 87, 86, 348, 175, 85, 41, 108, 109, + 96, 140, 84, 93, 41, 41, 41, 41, 41, 41, + 93, 107, 94, 119, 102, 80, 84, 104, 87, 342, + 250, 87, 103, 119, 118, 96, 317, 105, 161, 316, + 41, 102, 315, 41, 41, 41, 41, 41, 41, 44, + 96, 175, 104, 93, 314, 94, 44, 44, 44, 44, + 44, 44, 94, 96, 102, 103, 120, 104, 105, 125, + 102, 250, 103, 275, 119, 131, 120, 105, 161, 134, + 104, 275, 44, 94, 125, 44, 44, 44, 44, 44, + 44, 46, 144, 103, 150, 131, 105, 145, 46, 46, + + 46, 46, 46, 46, 131, 134, 145, 165, 134, 125, + 137, 137, 148, 125, 156, 144, 150, 120, 192, 153, + 226, 144, 148, 150, 226, 145, 154, 46, 46, 46, + 46, 46, 46, 49, 49, 49, 49, 156, 137, 154, + 148, 157, 155, 156, 49, 153, 158, 165, 153, 174, + 190, 192, 49, 155, 154, 157, 168, 170, 164, 49, + 49, 49, 49, 49, 49, 164, 158, 171, 173, 157, + 155, 172, 182, 190, 235, 158, 184, 174, 216, 190, + 249, 499, 182, 499, 284, 49, 194, 217, 49, 49, + 49, 49, 49, 49, 56, 196, 168, 170, 164, 194, + + 184, 56, 56, 56, 56, 56, 56, 171, 173, 172, + 235, 172, 201, 198, 194, 217, 184, 196, 216, 325, + 293, 201, 202, 182, 196, 284, 249, 203, 184, 202, + 56, 56, 56, 56, 56, 56, 77, 172, 198, 203, + 201, 204, 198, 77, 77, 77, 77, 77, 77, 293, + 202, 231, 232, 234, 390, 203, 281, 320, 390, 204, + 325, 234, 205, 492, 492, 231, 254, 509, 232, 509, + 204, 206, 77, 77, 77, 77, 77, 77, 88, 231, + 232, 234, 224, 236, 205, 88, 88, 88, 88, 88, + 88, 205, 236, 206, 254, 214, 214, 214, 214, 214, + + 206, 214, 281, 320, 224, 265, 214, 313, 214, 237, + 306, 236, 332, 238, 88, 88, 88, 88, 88, 88, + 91, 238, 224, 265, 364, 307, 271, 91, 91, 91, + 91, 91, 91, 224, 265, 237, 306, 271, 237, 306, + 332, 238, 247, 247, 247, 247, 247, 214, 247, 267, + 296, 268, 364, 247, 271, 247, 91, 91, 91, 91, + 91, 91, 98, 98, 98, 98, 98, 279, 511, 337, + 511, 267, 268, 340, 98, 269, 303, 305, 267, 312, + 268, 98, 269, 303, 305, 278, 308, 312, 98, 98, + 98, 98, 98, 98, 247, 248, 248, 248, 248, 248, + + 337, 248, 277, 269, 303, 305, 248, 276, 248, 340, + 463, 515, 308, 515, 98, 308, 270, 98, 98, 98, + 98, 98, 98, 110, 110, 110, 110, 110, 337, 110, + 280, 280, 280, 280, 280, 282, 282, 282, 282, 282, + 321, 343, 110, 280, 246, 321, 463, 248, 282, 110, + 110, 110, 110, 110, 110, 286, 286, 286, 286, 286, + 318, 318, 318, 318, 318, 343, 245, 366, 286, 517, + 343, 517, 370, 318, 394, 110, 344, 366, 110, 110, + 110, 110, 110, 110, 111, 111, 111, 111, 244, 394, + 111, 321, 239, 229, 370, 287, 287, 287, 287, 287, + + 344, 370, 394, 111, 383, 344, 366, 286, 287, 228, + 111, 111, 111, 111, 111, 111, 288, 288, 288, 288, + 288, 289, 289, 289, 289, 289, 356, 225, 326, 288, + 383, 356, 213, 383, 289, 392, 111, 392, 326, 111, + 111, 111, 111, 111, 111, 114, 393, 287, 462, 212, + 462, 403, 114, 114, 114, 114, 114, 114, 322, 322, + 322, 322, 322, 392, 322, 357, 199, 193, 288, 393, + 357, 322, 403, 289, 191, 393, 462, 356, 114, 326, + 403, 114, 114, 114, 114, 114, 114, 115, 189, 327, + 327, 327, 327, 327, 115, 115, 115, 115, 115, 115, + + 327, 187, 327, 331, 331, 331, 331, 331, 185, 179, + 322, 333, 333, 333, 333, 333, 357, 333, 167, 331, + 371, 163, 159, 115, 115, 115, 115, 115, 115, 117, + 117, 117, 117, 117, 346, 346, 346, 346, 346, 151, + 149, 327, 371, 336, 336, 336, 336, 336, 117, 371, + 346, 360, 361, 146, 336, 117, 117, 117, 117, 117, + 117, 360, 361, 333, 365, 365, 365, 365, 365, 416, + 345, 345, 345, 345, 345, 367, 367, 367, 367, 367, + 143, 142, 416, 377, 117, 117, 117, 117, 117, 117, + 121, 121, 121, 121, 121, 336, 524, 416, 524, 141, + + 441, 121, 360, 361, 369, 369, 369, 369, 369, 121, + 377, 378, 379, 139, 441, 380, 121, 121, 121, 121, + 121, 121, 345, 355, 355, 355, 355, 355, 441, 355, + 527, 415, 527, 378, 379, 138, 355, 380, 377, 415, + 378, 379, 121, 395, 380, 121, 121, 121, 121, 121, + 121, 122, 122, 122, 122, 381, 369, 136, 395, 415, + 418, 381, 122, 359, 359, 359, 359, 359, 382, 391, + 122, 395, 391, 402, 359, 355, 359, 122, 122, 122, + 122, 122, 122, 381, 135, 401, 418, 133, 407, 418, + 382, 402, 132, 391, 407, 130, 405, 382, 391, 396, + + 401, 391, 402, 122, 128, 396, 122, 122, 122, 122, + 122, 122, 129, 401, 396, 359, 407, 406, 405, 129, + 129, 129, 129, 129, 129, 405, 537, 396, 537, 544, + 545, 544, 545, 396, 399, 399, 399, 399, 399, 406, + 126, 404, 408, 116, 113, 95, 406, 399, 129, 129, + 129, 129, 129, 129, 147, 147, 147, 147, 147, 404, + 408, 92, 81, 79, 410, 410, 410, 410, 410, 417, + 404, 408, 75, 147, 63, 410, 420, 61, 417, 421, + 147, 147, 147, 147, 147, 147, 399, 400, 400, 400, + 400, 400, 409, 409, 409, 409, 409, 417, 409, 60, + + 420, 421, 59, 400, 58, 420, 147, 51, 421, 147, + 147, 147, 147, 147, 147, 152, 410, 411, 411, 411, + 411, 411, 152, 152, 152, 152, 152, 152, 413, 413, + 413, 413, 413, 411, 45, 29, 28, 422, 27, 400, + 21, 413, 430, 19, 409, 435, 412, 412, 412, 412, + 412, 152, 152, 152, 152, 152, 152, 160, 160, 160, + 160, 160, 412, 422, 430, 18, 422, 432, 431, 411, + 435, 430, 433, 16, 435, 442, 160, 432, 468, 433, + 413, 442, 448, 160, 160, 160, 160, 160, 160, 423, + 423, 423, 423, 423, 431, 432, 443, 431, 412, 14, + + 433, 468, 423, 442, 448, 449, 7, 468, 443, 160, + 444, 448, 160, 160, 160, 160, 160, 160, 162, 162, + 162, 162, 162, 0, 443, 444, 0, 449, 425, 425, + 425, 425, 425, 450, 449, 0, 454, 162, 444, 0, + 451, 425, 450, 0, 162, 162, 162, 162, 162, 162, + 427, 427, 427, 427, 427, 436, 436, 436, 436, 436, + 0, 450, 451, 427, 454, 466, 0, 0, 436, 451, + 0, 466, 454, 162, 162, 162, 162, 162, 162, 169, + 425, 438, 438, 438, 438, 438, 169, 169, 169, 169, + 169, 169, 454, 466, 438, 0, 0, 0, 457, 0, + + 455, 460, 427, 476, 0, 0, 457, 436, 471, 455, + 460, 476, 472, 0, 473, 169, 169, 169, 169, 169, + 169, 176, 176, 176, 176, 176, 457, 176, 455, 460, + 471, 476, 0, 438, 472, 0, 0, 471, 473, 0, + 176, 472, 0, 473, 0, 0, 0, 176, 176, 176, + 176, 176, 176, 445, 445, 445, 445, 445, 465, 465, + 465, 465, 465, 0, 0, 0, 445, 0, 0, 0, + 0, 465, 0, 176, 0, 0, 176, 176, 176, 176, + 176, 176, 178, 469, 469, 469, 469, 469, 470, 178, + 178, 178, 178, 178, 178, 0, 469, 0, 0, 0, + + 0, 0, 475, 470, 0, 445, 0, 0, 0, 0, + 465, 0, 0, 0, 0, 0, 470, 475, 178, 178, + 178, 178, 178, 178, 180, 180, 180, 180, 180, 0, + 475, 0, 0, 0, 0, 469, 0, 0, 0, 0, + 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, + 180, 180, 180, 180, 180, 180, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, + 180, 180, 180, 180, 180, 181, 181, 181, 181, 181, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, + 0, 181, 181, 181, 181, 181, 181, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 181, 181, 181, 181, 181, 181, 183, 183, 183, 183, + 183, 0, 0, 0, 0, 0, 0, 183, 0, 0, + 0, 0, 0, 0, 0, 183, 0, 0, 0, 0, + 0, 0, 183, 183, 183, 183, 183, 183, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 183, 0, + + 0, 183, 183, 183, 183, 183, 183, 188, 188, 188, + 188, 188, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, + 0, 0, 0, 188, 188, 188, 188, 188, 188, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 188, 188, 188, 188, 188, 188, 195, 0, + 0, 0, 0, 0, 0, 195, 195, 195, 195, 195, + 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 195, 195, 195, 195, 195, 195, + 200, 200, 200, 200, 200, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, + 0, 0, 0, 0, 0, 0, 200, 200, 200, 200, + 200, 200, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 200, 200, 200, 200, 200, + 200, 207, 0, 0, 0, 0, 0, 0, 207, 207, + 207, 207, 207, 207, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 207, 207, 207, + 207, 207, 207, 208, 208, 208, 208, 208, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 208, 0, 0, 0, 0, 0, 0, 208, + 208, 208, 208, 208, 208, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 208, 208, + 208, 208, 208, 208, 215, 0, 0, 0, 0, 0, + 0, 215, 215, 215, 215, 215, 215, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 215, 215, 215, 215, 215, 215, 218, 218, 218, 218, + 218, 0, 218, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 218, 0, 0, 0, 0, + 0, 0, 218, 218, 218, 218, 218, 218, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 218, 0, + 0, 218, 218, 218, 218, 218, 218, 220, 0, 0, + 0, 0, 0, 0, 220, 220, 220, 220, 220, 220, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 220, 220, 220, 220, 220, 220, 221, + 221, 221, 221, 221, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 221, 0, + 0, 0, 0, 0, 0, 221, 221, 221, 221, 221, + 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 221, 221, 221, 221, 221, 221, + 222, 222, 222, 222, 222, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, + + 0, 0, 0, 0, 0, 0, 222, 222, 222, 222, + 222, 222, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 222, 222, 222, 222, 222, + 222, 223, 223, 223, 223, 223, 0, 0, 0, 0, + 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, + 223, 0, 0, 0, 0, 0, 0, 223, 223, 223, + 223, 223, 223, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 223, 0, 0, 223, 223, 223, 223, + + 223, 223, 227, 227, 227, 227, 227, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 227, 0, 0, 0, 0, 0, 0, 227, 227, + 227, 227, 227, 227, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 227, 227, 227, + 227, 227, 227, 230, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, + + 230, 230, 230, 230, 230, 233, 233, 233, 233, 233, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 233, 233, 233, 233, 233, 233, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 233, 233, 233, 233, 233, 233, 240, 0, 0, 0, + 0, 0, 0, 240, 240, 240, 240, 240, 240, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 240, 240, 240, 240, 240, 240, 241, 241, + 241, 241, 241, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 0, 241, 241, 241, 241, 241, 241, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 241, 241, 241, 241, 241, 241, 252, + 252, 252, 252, 252, 0, 252, 0, 0, 0, 0, + 252, 252, 252, 0, 0, 0, 0, 0, 252, 0, + 0, 0, 0, 0, 0, 252, 252, 252, 252, 252, + + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 252, 0, 0, 252, 252, 252, 252, 252, 252, + 253, 0, 0, 0, 0, 0, 0, 253, 253, 253, + 253, 253, 253, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 253, 253, 253, 253, + 253, 253, 255, 255, 255, 255, 255, 0, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 0, 0, 0, 0, 0, 0, 255, 255, + + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 257, 0, 0, 0, 0, 0, 0, + 257, 257, 257, 257, 257, 257, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 0, 0, 257, + 257, 257, 257, 257, 257, 258, 258, 258, 258, 258, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, + + 0, 258, 258, 258, 258, 258, 258, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 258, 0, 0, + 258, 258, 258, 258, 258, 258, 259, 259, 259, 259, + 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 259, 0, 0, 0, 0, + 0, 0, 259, 259, 259, 259, 259, 259, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 259, 259, 259, 259, 259, 259, 260, 260, 260, + + 260, 260, 0, 0, 0, 0, 0, 0, 260, 0, + 0, 0, 0, 0, 0, 0, 260, 0, 0, 0, + 0, 0, 0, 260, 260, 260, 260, 260, 260, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 260, + 0, 0, 260, 260, 260, 260, 260, 260, 261, 261, + 261, 261, 261, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 261, 0, 0, + 0, 0, 0, 0, 261, 261, 261, 261, 261, 261, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 261, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 261, 261, 261, 261, 261, 261, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 261, 262, 262, 262, 262, 262, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 0, 0, 0, 0, 0, 262, 262, + 262, 262, 262, 262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 262, 262, + 262, 262, 262, 263, 0, 0, 0, 0, 0, 0, + + 263, 263, 263, 263, 263, 263, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, + 263, 263, 263, 263, 263, 264, 264, 264, 264, 264, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 264, 0, 0, 0, 0, 0, + 0, 264, 264, 264, 264, 264, 264, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 264, 264, 264, 264, 264, 264, 266, 266, 266, 266, + + 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 266, 0, 0, 0, 0, + 0, 0, 266, 266, 266, 266, 266, 266, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 266, 266, 266, 266, 266, 266, 272, 0, 0, + 0, 0, 0, 0, 272, 272, 272, 272, 272, 272, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 272, 272, 272, 272, 272, 272, 273, + + 273, 273, 273, 273, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 273, 0, + 0, 0, 0, 0, 0, 273, 273, 273, 273, 273, + 273, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 273, 273, 273, 273, 273, 273, + 283, 283, 283, 283, 0, 0, 283, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 0, 0, 0, 0, 0, 0, 283, 283, 283, 283, + 283, 283, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 283, 0, 0, 283, 283, 283, 283, 283, + 283, 285, 285, 285, 285, 0, 0, 0, 0, 0, + 0, 0, 285, 0, 0, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 0, 0, 0, 285, 285, 285, + 285, 285, 285, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 285, 0, 0, 285, 285, 285, 285, + 285, 285, 290, 290, 290, 290, 290, 0, 0, 0, + 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, + + 0, 290, 0, 0, 0, 0, 0, 0, 290, 290, + 290, 290, 290, 290, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 290, 290, 290, + 290, 290, 290, 291, 291, 291, 291, 291, 0, 291, + 0, 0, 0, 0, 291, 291, 291, 0, 0, 0, + 0, 0, 291, 0, 0, 0, 0, 0, 0, 291, + 291, 291, 291, 291, 291, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 291, 0, 0, 291, 291, + + 291, 291, 291, 291, 292, 0, 0, 0, 0, 0, + 0, 292, 292, 292, 292, 292, 292, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 292, 292, 292, 292, 292, 292, 294, 294, 294, 294, + 294, 0, 294, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, + 0, 0, 294, 294, 294, 294, 294, 294, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, + + 0, 294, 294, 294, 294, 294, 294, 297, 297, 297, + 297, 297, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 297, 0, 0, 0, + 0, 0, 0, 297, 297, 297, 297, 297, 297, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 297, + 0, 0, 297, 297, 297, 297, 297, 297, 298, 298, + 298, 298, 298, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 298, 0, 0, + 0, 0, 0, 0, 298, 298, 298, 298, 298, 298, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 298, 298, 298, 298, 298, 298, 299, + 299, 299, 299, 299, 0, 0, 0, 0, 0, 0, + 299, 0, 0, 0, 0, 0, 0, 0, 299, 0, + 0, 0, 0, 0, 0, 299, 299, 299, 299, 299, + 299, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 299, 0, 0, 299, 299, 299, 299, 299, 299, + 300, 300, 300, 300, 300, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 300, 0, 0, 300, + 0, 0, 0, 0, 0, 0, 300, 300, 300, 300, + 300, 300, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 300, 300, 300, 300, 300, + 300, 301, 301, 301, 301, 301, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 301, 0, 0, 0, 0, 0, 0, 301, 301, 301, + 301, 301, 301, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 301, 301, 301, 301, + 301, 301, 302, 302, 302, 302, 302, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 302, 0, 0, 0, 0, 0, 0, 302, 302, + 302, 302, 302, 302, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 302, 302, 302, + 302, 302, 302, 304, 304, 304, 304, 304, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 304, + + 304, 304, 304, 304, 304, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 304, 304, + 304, 304, 304, 304, 309, 0, 0, 0, 0, 0, + 0, 309, 309, 309, 309, 309, 309, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 309, 309, 309, 309, 309, 309, 310, 310, 310, 310, + 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 310, 0, 0, 0, 0, + + 0, 0, 310, 310, 310, 310, 310, 310, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 310, 310, 310, 310, 310, 310, 323, 323, 323, + 323, 323, 0, 323, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 323, 0, 0, 0, + 0, 0, 0, 323, 323, 323, 323, 323, 323, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 323, + 0, 0, 323, 323, 323, 323, 323, 323, 324, 324, + + 324, 324, 0, 0, 324, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, + 0, 0, 0, 0, 324, 324, 324, 324, 324, 324, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 324, 0, 0, 324, 324, 324, 324, 324, 324, 328, + 328, 328, 328, 328, 0, 0, 0, 0, 0, 0, + 328, 0, 0, 0, 0, 0, 0, 0, 328, 0, + 0, 0, 0, 0, 0, 328, 328, 328, 328, 328, + 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 328, 0, 0, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 0, 0, 0, 0, 0, 0, + 0, 329, 0, 0, 0, 0, 0, 0, 0, 329, + 0, 0, 0, 0, 0, 0, 329, 329, 329, 329, + 329, 329, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 329, 0, 0, 329, 329, 329, 329, 329, + 329, 330, 330, 330, 330, 330, 0, 0, 0, 0, + 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, + + 330, 0, 0, 0, 0, 0, 0, 330, 330, 330, + 330, 330, 330, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 330, 0, 0, 330, 330, 330, 330, + 330, 330, 334, 0, 0, 0, 0, 0, 0, 334, + 334, 334, 334, 334, 334, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 334, 334, + 334, 334, 334, 334, 335, 0, 0, 0, 0, 0, + 0, 335, 335, 335, 335, 335, 335, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 335, 335, 335, 335, 335, 335, 338, 0, 0, 0, + 0, 0, 0, 338, 338, 338, 338, 338, 338, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 338, 338, 338, 338, 338, 338, 339, 339, + 339, 339, 339, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 339, 0, 0, + 0, 0, 0, 0, 339, 339, 339, 339, 339, 339, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 339, 339, 339, 339, 339, 341, + 341, 341, 341, 341, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 341, 0, + 0, 0, 0, 0, 0, 341, 341, 341, 341, 341, + 341, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 341, 341, 341, 341, 341, 341, + 358, 0, 0, 0, 0, 0, 0, 358, 358, 358, + + 358, 358, 358, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 358, 358, 358, 358, + 358, 358, 362, 0, 0, 0, 0, 0, 0, 362, + 362, 362, 362, 362, 362, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 362, 362, + 362, 362, 362, 362, 363, 363, 363, 363, 363, 0, + 0, 0, 0, 0, 0, 0, 0, 363, 0, 0, + 0, 0, 0, 363, 0, 0, 0, 0, 0, 0, + + 363, 363, 363, 363, 363, 363, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 363, 0, 0, 363, + 363, 363, 363, 363, 363, 368, 0, 0, 0, 0, + 0, 0, 368, 0, 368, 0, 0, 0, 0, 368, + 368, 0, 0, 368, 0, 0, 0, 0, 368, 0, + 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, + 368, 0, 368, 0, 0, 0, 0, 368, 368, 0, + 0, 368, 373, 0, 0, 0, 0, 0, 0, 373, + 373, 373, 373, 373, 373, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 373, 373, + 373, 373, 373, 373, 374, 0, 0, 0, 0, 0, + 0, 374, 374, 374, 374, 374, 374, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 374, 374, 374, 374, 374, 374, 375, 0, 0, 0, + 0, 0, 0, 375, 375, 375, 375, 375, 375, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 375, 375, 375, 375, 375, 375, 387, 0, + 0, 0, 0, 0, 0, 387, 387, 387, 387, 387, + 387, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 387, 387, 387, 387, 387, 387, + 388, 0, 0, 0, 0, 0, 0, 388, 388, 388, + 388, 388, 388, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 388, 388, 388, 388, + 388, 388, 389, 0, 0, 0, 0, 0, 0, 389, + + 389, 389, 389, 389, 389, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 389, 389, + 389, 389, 389, 389, 397, 0, 0, 0, 0, 0, + 0, 397, 397, 397, 397, 397, 397, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 397, 397, 397, 397, 397, 397, 398, 0, 0, 0, + 0, 0, 0, 398, 398, 398, 398, 398, 398, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 398, 398, 398, 398, 398, 398, 414, 0, + 0, 0, 0, 0, 0, 414, 414, 414, 414, 414, + 414, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 414, 414, 414, 414, 414, 414, + 426, 0, 0, 0, 0, 0, 0, 426, 426, 426, + 426, 426, 426, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 426, 426, 426, 426, + + 426, 426, 428, 428, 428, 428, 428, 0, 0, 0, + 0, 0, 0, 0, 0, 428, 0, 0, 0, 0, + 0, 428, 0, 0, 0, 0, 0, 0, 428, 428, + 428, 428, 428, 428, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 428, 0, 0, 428, 428, 428, + 428, 428, 428, 437, 437, 437, 437, 437, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 437, 0, 0, 0, 0, 0, 0, 437, + 437, 437, 437, 437, 437, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 437, 437, + 437, 437, 437, 437, 439, 0, 0, 0, 0, 0, + 0, 439, 439, 439, 439, 439, 439, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 439, 439, 439, 439, 439, 439, 446, 0, 0, 0, + 0, 0, 0, 446, 446, 446, 446, 446, 446, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 446, 446, 446, 446, 446, 446, 447, 0, + 0, 0, 0, 0, 0, 447, 447, 447, 447, 447, + 447, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 447, 447, 447, 447, 447, 447, + 452, 0, 0, 0, 0, 0, 0, 452, 452, 452, + 452, 452, 452, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 452, 452, 452, 452, + 452, 452, 453, 0, 0, 0, 0, 0, 0, 453, + + 453, 453, 453, 453, 453, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 453, 453, + 453, 453, 453, 453, 458, 0, 0, 0, 0, 0, + 0, 458, 458, 458, 458, 458, 458, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 458, 458, 458, 458, 458, 458, 459, 0, 0, 0, + 0, 0, 0, 459, 459, 459, 459, 459, 459, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 459, 459, 459, 459, 459, 459, 464, 0, + 0, 0, 0, 0, 0, 464, 464, 464, 464, 464, + 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 464, 464, 464, 464, 464, 464, + 479, 0, 0, 479, 479, 479, 479, 479, 479, 479, + 479, 479, 479, 480, 480, 0, 480, 480, 481, 0, + 0, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 482, 482, 0, 482, 482, 483, 0, 0, 483, + + 483, 484, 0, 484, 484, 0, 484, 484, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, - 487, 487, 487, 487, 487, 487, 487, 487, 487, 488, - 488, 0, 488, 488, 489, 489, 489, 489, 489, 489, - 489, 489, 489, 489, 489, 490, 490, 490, 490, 490, - 490, 490, 490, 490, 490, 490, 490, 491, 491, 492, - 492, 492, 492, 492, 492, 492, 492, 492, 493, 493, - 0, 493, 493, 494, 494, 494, 494, 494, 494, 494, - - 494, 494, 495, 495, 0, 495, 495, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 497, 497, 497, 497, - 497, 497, 497, 497, 497, 498, 498, 498, 498, 498, - 498, 498, 498, 498, 498, 498, 498, 499, 499, 499, - 499, 499, 499, 499, 499, 499, 500, 500, 500, 500, - 500, 500, 500, 500, 500, 501, 501, 501, 0, 501, + 486, 488, 488, 0, 488, 488, 489, 489, 489, 489, + 489, 489, 489, 489, 489, 489, 490, 490, 490, 490, + 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 493, 493, 0, 493, 493, 494, 494, + 494, 494, 494, 494, 494, 494, 494, 494, 495, 495, + 0, 495, 495, 496, 496, 496, 496, 496, 496, 496, + + 496, 496, 496, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 498, 498, 498, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 501, 501, 0, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, - 502, 502, 503, 503, 503, 0, 503, 504, 504, 504, - 504, 0, 504, 504, 504, 504, 504, 504, 505, 505, - 505, 0, 505, 506, 0, 506, 506, 506, 506, 506, - - 506, 506, 506, 506, 507, 0, 507, 507, 507, 507, - 507, 507, 507, 507, 507, 508, 508, 508, 508, 508, - 508, 508, 508, 508, 508, 508, 509, 509, 509, 0, - 509, 510, 510, 510, 510, 510, 510, 510, 510, 510, - 510, 510, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 512, 512, 512, 0, 512, 513, 513, - 513, 0, 0, 0, 513, 0, 0, 513, 513, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 515, 515, - 515, 0, 0, 515, 515, 515, 0, 515, 515, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 478, 478, + 502, 502, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + + 507, 507, 507, 507, 508, 0, 0, 508, 508, 508, + 508, 508, 508, 508, 508, 508, 508, 510, 510, 510, + 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, + 510, 512, 512, 512, 512, 513, 513, 513, 513, 513, + 513, 0, 513, 513, 513, 513, 513, 513, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 518, 518, 518, 518, 519, + 519, 519, 519, 519, 519, 0, 519, 519, 519, 519, + 519, 519, 520, 0, 0, 520, 520, 520, 520, 520, + + 520, 520, 520, 520, 520, 521, 0, 0, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 522, 522, + 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, + 522, 523, 523, 523, 523, 523, 523, 523, 523, 523, + 523, 523, 523, 523, 525, 525, 0, 525, 525, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 528, 528, 528, 528, 529, 529, 529, 529, + 529, 529, 529, 529, 529, 529, 529, 529, 529, 530, + 0, 0, 530, 530, 530, 530, 530, 530, 530, 530, + 530, 530, 531, 531, 531, 531, 531, 531, 531, 531, + + 531, 531, 531, 531, 531, 532, 532, 532, 532, 532, + 0, 0, 532, 532, 532, 532, 532, 532, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, + 534, 534, 534, 534, 535, 535, 0, 535, 535, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 538, 538, 538, 538, 539, 539, 0, 539, + 539, 539, 539, 539, 539, 539, 539, 539, 539, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 541, 541, 0, 541, 541, 541, 541, 541, + + 541, 541, 541, 541, 541, 542, 542, 542, 542, 542, + 542, 542, 542, 542, 542, 542, 542, 542, 543, 543, + 543, 543, 543, 0, 0, 543, 543, 543, 543, 543, + 543, 546, 546, 546, 546, 0, 0, 0, 0, 546, + 0, 0, 546, 546, 547, 547, 547, 547, 0, 0, + 0, 547, 547, 547, 0, 547, 547, 548, 548, 548, + 548, 548, 548, 548, 548, 548, 548, 549, 549, 549, + 549, 549, 549, 549, 549, 549, 549, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, - 478, 478, 478, 478, 478, 478, 478, 478, 478 + 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478 } ; #line 1 "<stdin>" @@ -878,7 +1813,7 @@ YY_DECL yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 2399 ); + while ( yy_base[yy_current_state] != 6578 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1250,7 +2185,7 @@ YY_RULE_SETUP #line 110 "<stdin>" ECHO; YY_BREAK -#line 1761 "<stdout>" +#line 2738 "<stdout>" case YY_STATE_EOF(INITIAL): case YY_END_OF_BUFFER: case YY_STATE_EOF(mediaquery): diff --git a/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp b/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp index 42d2e90..dd14fb9 100644 --- a/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp +++ b/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp @@ -333,6 +333,9 @@ Storage* DOMWindow::sessionStorage() const Storage* DOMWindow::localStorage() const { + if (m_localStorage) + return m_localStorage.get(); + Document* document = this->document(); if (!document) return 0; diff --git a/src/3rdparty/webkit/WebCore/page/DOMWindow.h b/src/3rdparty/webkit/WebCore/page/DOMWindow.h index 0277441..e7fab18 100644 --- a/src/3rdparty/webkit/WebCore/page/DOMWindow.h +++ b/src/3rdparty/webkit/WebCore/page/DOMWindow.h @@ -265,7 +265,7 @@ namespace WebCore { Location* optionalLocation() const { return m_location.get(); } #if ENABLE(DOM_STORAGE) Storage* optionalSessionStorage() const { return m_sessionStorage.get(); } - Storage* optionalLocalStorage() const { return m_sessionStorage.get(); } + Storage* optionalLocalStorage() const { return m_localStorage.get(); } #endif #if ENABLE(OFFLINE_WEB_APPLICATIONS) DOMApplicationCache* optionalApplicationCache() const { return m_applicationCache.get(); } diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp index d4ab59f..cea255e 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp @@ -35,6 +35,8 @@ #include "StillImageQt.h" #include <QBuffer> +#include <QColor> +#include <QImage> #include <QImageWriter> #include <QPainter> #include <QPixmap> @@ -79,10 +81,57 @@ Image* ImageBuffer::image() const return m_image.get(); } -PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect&) const +PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect& rect) const { - notImplemented(); - return 0; + PassRefPtr<ImageData> result = ImageData::create(rect.width(), rect.height()); + unsigned char* data = result->data()->data(); + + if (rect.x() < 0 || rect.y() < 0 || (rect.x() + rect.width()) > m_size.width() || (rect.y() + rect.height()) > m_size.height()) + memset(data, 0, result->data()->length()); + + int originx = rect.x(); + int destx = 0; + if (originx < 0) { + destx = -originx; + originx = 0; + } + int endx = rect.x() + rect.width(); + if (endx > m_size.width()) + endx = m_size.width(); + int numColumns = endx - originx; + + int originy = rect.y(); + int desty = 0; + if (originy < 0) { + desty = -originy; + originy = 0; + } + int endy = rect.y() + rect.height(); + if (endy > m_size.height()) + endy = m_size.height(); + int numRows = endy - originy; + + QImage image = m_data.m_pixmap.toImage(); + if (image.format() != QImage::Format_ARGB32) + image = image.convertToFormat(QImage::Format_ARGB32); + ASSERT(image); + + unsigned destBytesPerRow = 4 * rect.width(); + unsigned char* destRows = data + desty * destBytesPerRow + destx * 4; + for (int y = 0; y < numRows; ++y) { + for (int x = 0; x < numColumns; x++) { + QRgb value = image.pixel(x + originx, y + originy); + int basex = x * 4; + + destRows[basex] = qRed(value); + destRows[basex + 1] = qGreen(value); + destRows[basex + 2] = qBlue(value); + destRows[basex + 3] = qAlpha(value); + } + destRows += destBytesPerRow; + } + + return result; } void ImageBuffer::putImageData(ImageData*, const IntRect&, const IntPoint&) diff --git a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp index 9308878..c8f6ad5 100644 --- a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp @@ -41,6 +41,22 @@ QNetworkRequest ResourceRequest::toNetworkRequest() const request.setRawHeader(name, value); } + switch (cachePolicy()) { + case ReloadIgnoringCacheData: + request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork); + break; + case ReturnCacheDataElseLoad: + request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); + break; + case ReturnCacheDataDontLoad: + request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache); + break; + case UseProtocolCachePolicy: + // QNetworkRequest::PreferNetwork + default: + break; + } + return request; } diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp index d85e880..fe74fac 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp @@ -106,6 +106,8 @@ private slots: void textSelection(); void textEditing(); + void requestCache(); + private: @@ -989,6 +991,32 @@ void tst_QWebPage::textEditing() delete page; } +void tst_QWebPage::requestCache() +{ + TestPage page; + QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool))); + + page.mainFrame()->setUrl(QString("data:text/html,<a href=\"data:text/html,Reached\" target=\"_blank\">Click me</a>")); + QTRY_COMPARE(loadSpy.count(), 1); + QTRY_COMPARE(page.navigations.count(), 1); + + page.mainFrame()->setUrl(QString("data:text/html,<a href=\"data:text/html,Reached\" target=\"_blank\">Click me2</a>")); + QTRY_COMPARE(loadSpy.count(), 2); + QTRY_COMPARE(page.navigations.count(), 2); + + page.triggerAction(QWebPage::Stop); + QVERIFY(page.history()->canGoBack()); + page.triggerAction(QWebPage::Back); + + QTRY_COMPARE(loadSpy.count(), 3); + QTRY_COMPARE(page.navigations.count(), 3); + QCOMPARE(page.navigations.at(0).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(), + (int)QNetworkRequest::PreferNetwork); + QCOMPARE(page.navigations.at(1).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(), + (int)QNetworkRequest::PreferNetwork); + QCOMPARE(page.navigations.at(2).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(), + (int)QNetworkRequest::PreferCache); +} QTEST_MAIN(tst_QWebPage) #include "tst_qwebpage.moc" diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp index 4445e3c..fa44531 100644 --- a/src/corelib/io/qfilesystemwatcher_inotify.cpp +++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp @@ -316,7 +316,7 @@ void QInotifyFileSystemWatcherEngine::readFromInotify() // qDebug() << "QInotifyFileSystemWatcherEngine::readFromInotify"; int buffSize = 0; - ioctl(inotifyFd, FIONREAD, &buffSize); + ioctl(inotifyFd, FIONREAD, (char *) &buffSize); QVarLengthArray<char, 4096> buffer(buffSize); buffSize = read(inotifyFd, buffer.data(), buffSize); const char *at = buffer.data(); diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index 37173c8..33d4a47 100644 --- a/src/corelib/io/qprocess_unix.cpp +++ b/src/corelib/io/qprocess_unix.cpp @@ -850,10 +850,10 @@ bool QProcessPrivate::processStarted() qint64 QProcessPrivate::bytesAvailableFromStdout() const { - size_t nbytes = 0; + int nbytes = 0; qint64 available = 0; if (::ioctl(stdoutChannel.pipe[0], FIONREAD, (char *) &nbytes) >= 0) - available = (qint64) *((int *) &nbytes); + available = (qint64) nbytes; #if defined (QPROCESS_DEBUG) qDebug("QProcessPrivate::bytesAvailableFromStdout() == %lld", available); #endif @@ -862,10 +862,10 @@ qint64 QProcessPrivate::bytesAvailableFromStdout() const qint64 QProcessPrivate::bytesAvailableFromStderr() const { - size_t nbytes = 0; + int nbytes = 0; qint64 available = 0; if (::ioctl(stderrChannel.pipe[0], FIONREAD, (char *) &nbytes) >= 0) - available = (qint64) *((int *) &nbytes); + available = (qint64) nbytes; #if defined (QPROCESS_DEBUG) qDebug("QProcessPrivate::bytesAvailableFromStderr() == %lld", available); #endif diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index 62b4ed5..484e79a 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -2330,6 +2330,10 @@ void QConfFileSettingsPrivate::ensureSectionParsed(QConfFile *confFile, \o \c{HKEY_LOCAL_MACHINE\Software\MySoft} \endlist + \note On Windows, for 32-bit programs running in WOW64 mode, settings are + stored in the following registry path: + \c{HKEY_LOCAL_MACHINE\Software\WOW6432node}. + If the file format is IniFormat, the following files are used on Unix and Mac OS X: diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp index 3cfce83..6a7b067 100644 --- a/src/corelib/io/qtemporaryfile.cpp +++ b/src/corelib/io/qtemporaryfile.cpp @@ -268,11 +268,13 @@ static int _gettemp(char *path, int *doopen, int domkdir, int slen) /*NOTREACHED*/ } +#ifndef Q_WS_WIN static int qt_mkstemps(char *path, int slen) { int fd = 0; return (_gettemp(path, &fd, 0, slen) ? fd : -1); } +#endif //************* QTemporaryFileEngine class QTemporaryFileEngine : public QFSFileEngine diff --git a/src/corelib/kernel/qcoreevent.h b/src/corelib/kernel/qcoreevent.h index 5487703..fa472e6 100644 --- a/src/corelib/kernel/qcoreevent.h +++ b/src/corelib/kernel/qcoreevent.h @@ -264,6 +264,7 @@ public: GrabKeyboard = 188, UngrabKeyboard = 189, CocoaRequestModal = 190, // Internal for requesting an application modal Cocoa Window + MacGLClearDrawable = 191, // Internal Cocoa, the window has changed, so we must clear // 512 reserved for Qt Jambi's MetaCall event // 513 reserved for Qt Jambi's DeleteOnMainThread event diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 9c637ac..375d672 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -579,7 +579,7 @@ const QString::Null QString::null = { }; '\\0' character for a null string (\e not a null pointer), and QString() compares equal to QString(""). We recommend that you always use the isEmpty() function and avoid isNull(). - + \section1 Argument Formats In member functions where an argument \e format can be specified @@ -1433,7 +1433,7 @@ QString &QString::append(QChar ch) truncated at the specified \a position. \snippet doc/src/snippets/qstring/main.cpp 37 - + \sa insert(), replace() */ QString &QString::remove(int pos, int len) @@ -1552,7 +1552,7 @@ QString &QString::replace(int pos, int len, const QChar *unicode, int size) return *this; if (pos + len > d->size) len = d->size - pos; - + uint index = pos; replace_helper(&index, 1, len, unicode, size); return *this; @@ -1561,15 +1561,13 @@ QString &QString::replace(int pos, int len, const QChar *unicode, int size) /*! \fn QString &QString::replace(int position, int n, QChar after) \overload replace() - + Replaces \a n characters beginning at index \a position with the character \a after and returns a reference to this string. */ QString &QString::replace(int pos, int len, QChar after) { - uint index = pos; - replace_helper(&index, 1, len, &after, 1); - return *this; + return replace(pos, len, &after, 1); } /*! @@ -1602,7 +1600,7 @@ void QString::replace_helper(uint *indices, int nIndices, int blen, const QChar { if (blen == alen) { detach(); - for (int i = 0; i < nIndices; ++i) + for (int i = 0; i < nIndices; ++i) memcpy(d->data + indices[i], after, alen * sizeof(QChar)); } else if (alen < blen) { detach(); @@ -1633,7 +1631,7 @@ void QString::replace_helper(uint *indices, int nIndices, int blen, const QChar int newLen = d->size + adjust; int moveend = d->size; resize(newLen); - + while (nIndices) { --nIndices; int movestart = indices[nIndices] + blen; @@ -1685,7 +1683,7 @@ QString &QString::replace(const QChar *before, int blen, memcpy(copy, before, blen*sizeof(QChar)); b = copy; } - + QStringMatcher matcher(b, blen, cs); int index = 0; @@ -1712,7 +1710,7 @@ QString &QString::replace(const QChar *before, int blen, // index has to be adjusted in case we get back into the loop above. index += pos*(alen-blen); } - + if (a != after) ::free((QChar *)a); if (b != before) @@ -2250,7 +2248,7 @@ int QString::indexOf(const QLatin1String &str, int from, Qt::CaseSensitivity cs) QVarLengthArray<ushort> s(len); for (int i = 0; i < len; ++i) s[i] = str.latin1()[i]; - + return qFindString(unicode(), length(), from, (const QChar *)s.data(), len, cs); } @@ -2346,7 +2344,7 @@ static int lastIndexOfHelper(const ushort *haystack, int from, const ushort *nee /* See indexOf() for explanations. */ - + const ushort *end = haystack; haystack += from; const int sl_minus_1 = sl-1; @@ -2408,7 +2406,7 @@ int QString::lastIndexOf(const QString &str, int from, Qt::CaseSensitivity cs) c const int sl = str.d->size; if (sl == 1) return lastIndexOf(QChar(str.d->data[0]), from, cs); - + const int l = d->size; if (from < 0) from += l; @@ -2446,7 +2444,7 @@ int QString::lastIndexOf(const QLatin1String &str, int from, Qt::CaseSensitivity const int sl = qstrlen(str.latin1()); if (sl == 1) return lastIndexOf(QLatin1Char(str.latin1()[0]), from, cs); - + const int l = d->size; if (from < 0) from += l; @@ -5995,7 +5993,7 @@ QString QString::normalized(QString::NormalizationForm mode, QChar::UnicodeVersi } if (simple) return *this; - + QString s = *this; if (version != CURRENT_VERSION) { for (int i = 0; i < NumNormalizationCorrections; ++i) { @@ -6207,7 +6205,7 @@ static QString replaceArgEscapes(const QString &s, const ArgEscapeData &d, int f /*! Returns a copy of this string with the lowest numbered place marker replaced by string \a a, i.e., \c %1, \c %2, ..., \c %99. - + \a fieldWidth specifies the minimum amount of space that argument \a a shall occupy. If \a a requires less space than \a fieldWidth, it is padded to \a fieldWidth with character \a fillChar. A positive @@ -6819,7 +6817,7 @@ void QString::updateProperties() const Appends the given \a ch character onto the end of this string. */ -/*! +/*! \fn std::string QString::toStdString() const Returns a std::string object with the data contained in this diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h index 6bea03b..3fd52ee 100644 --- a/src/corelib/tools/qvector.h +++ b/src/corelib/tools/qvector.h @@ -98,6 +98,8 @@ struct QVectorTypedData T array[1]; }; +class QRegion; + template <typename T> class QVector { diff --git a/src/gui/accessible/qaccessiblewidget.cpp b/src/gui/accessible/qaccessiblewidget.cpp index 4b2b2ab..753ac57 100644 --- a/src/gui/accessible/qaccessiblewidget.cpp +++ b/src/gui/accessible/qaccessiblewidget.cpp @@ -131,9 +131,16 @@ QString Q_GUI_EXPORT qt_accHotKey(const QString &text) int fa = 0; QChar ac; while ((fa = text.indexOf(QLatin1Char('&'), fa)) != -1) { - if (fa == text.length() - 1 || text.at(fa+1) != QLatin1Char('&')) { - ac = text.at(fa+1); - break; + ++fa; + if (fa < text.length()) { + // ignore "&&" + if (text.at(fa) == QLatin1Char('&')) { + ++fa; + continue; + } else { + ac = text.at(fa); + break; + } } } if (ac.isNull()) diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index 5131271..f70669c 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -957,25 +957,29 @@ void QFileDialog::setNameFilters(const QStringList &filters) { Q_D(QFileDialog); d->defaultFileTypes = (filters == QStringList(QFileDialog::tr("All Files (*)"))); - d->nameFilters = filters; + QStringList cleanedFilters; + for (int i = 0; i < filters.count(); ++i) { + cleanedFilters << filters[i].simplified(); + } + d->nameFilters = cleanedFilters; if (d->nativeDialogInUse){ - d->setNameFilters_sys(filters); + d->setNameFilters_sys(cleanedFilters); return; } d->qFileDialogUi->fileTypeCombo->clear(); - if (filters.isEmpty()) + if (cleanedFilters.isEmpty()) return; if (testOption(HideNameFilterDetails)) { QStringList strippedFilters; - for (int i = 0; i < filters.count(); ++i) { - strippedFilters.append(filters[i].mid(0, filters[i].indexOf(QLatin1String(" (")))); + for (int i = 0; i < cleanedFilters.count(); ++i) { + strippedFilters.append(cleanedFilters[i].mid(0, cleanedFilters[i].indexOf(QLatin1String(" (")))); } d->qFileDialogUi->fileTypeCombo->addItems(strippedFilters); } else { - d->qFileDialogUi->fileTypeCombo->addItems(filters); + d->qFileDialogUi->fileTypeCombo->addItems(cleanedFilters); } d->_q_useNameFilter(0); } @@ -1589,7 +1593,12 @@ QString QFileDialog::getOpenFileName(QWidget *parent, args.parent = parent; args.caption = caption; args.directory = QFileDialogPrivate::workingDirectory(dir); - args.selection = QFileDialogPrivate::initialSelection(dir); + //If workingDirectory returned a different path than the initial one, + //it means that the initial path was invalid. There is no point to try select a file + if (args.directory != QFileInfo(dir).path()) + args.selection = QString(); + else + args.selection = QFileDialogPrivate::initialSelection(dir); args.filter = filter; args.mode = ExistingFile; args.options = options; @@ -1674,7 +1683,12 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, args.parent = parent; args.caption = caption; args.directory = QFileDialogPrivate::workingDirectory(dir); - args.selection = QFileDialogPrivate::initialSelection(dir); + //If workingDirectory returned a different path than the initial one, + //it means that the initial path was invalid. There is no point to try select a file + if (args.directory != QFileInfo(dir).path()) + args.selection = QString(); + else + args.selection = QFileDialogPrivate::initialSelection(dir); args.filter = filter; args.mode = ExistingFiles; args.options = options; @@ -1760,7 +1774,12 @@ QString QFileDialog::getSaveFileName(QWidget *parent, args.parent = parent; args.caption = caption; args.directory = QFileDialogPrivate::workingDirectory(dir); - args.selection = QFileDialogPrivate::initialSelection(dir); + //If workingDirectory returned a different path than the initial one, + //it means that the initial path was invalid. There is no point to try select a file + if (args.directory != QFileInfo(dir).path()) + args.selection = QString(); + else + args.selection = QFileDialogPrivate::initialSelection(dir); args.filter = filter; args.mode = AnyFile; args.options = options; diff --git a/src/gui/dialogs/qinputdialog.cpp b/src/gui/dialogs/qinputdialog.cpp index b63c8ee..78d99e3 100644 --- a/src/gui/dialogs/qinputdialog.cpp +++ b/src/gui/dialogs/qinputdialog.cpp @@ -424,26 +424,27 @@ void QInputDialogPrivate::_q_currentRowChanged(const QModelIndex &newIndex, /*! \class QInputDialog - \brief The QInputDialog class provides a simple convenience dialog to get a single value from the user. + \brief The QInputDialog class provides a simple convenience dialog to get a + single value from the user. \ingroup dialogs \mainclass - The input value can be a string, a number or an item from a list. A - label must be set to tell the user what they should enter. + The input value can be a string, a number or an item from a list. A label + must be set to tell the user what they should enter. - Four static convenience functions are provided: - getText(), getInt(), getDouble(), and getItem(). All the - functions can be used in a similar way, for example: + Four static convenience functions are provided: getText(), getInt(), + getDouble(), and getItem(). All the functions can be used in a similar way, + for example: \snippet examples/dialogs/standarddialogs/dialog.cpp 3 - The \c ok variable is set to true if the user clicks \gui OK; - otherwise it is set to false. + The \c ok variable is set to true if the user clicks \gui OK; otherwise it + is set to false. \img inputdialogs.png Input Dialogs - The \l{dialogs/standarddialogs}{Standard Dialogs} example shows - how to use QInputDialog as well as other built-in Qt dialogs. + The \l{dialogs/standarddialogs}{Standard Dialogs} example shows how to use + QInputDialog as well as other built-in Qt dialogs. \sa QMessageBox, {Standard Dialogs Example} */ @@ -452,11 +453,13 @@ void QInputDialogPrivate::_q_currentRowChanged(const QModelIndex &newIndex, \enum QInputDialog::InputMode \since 4.5 - This enum describes the different modes of input that can be selected for the dialog. + This enum describes the different modes of input that can be selected for + the dialog. \value TextInput Used to input text strings. \value IntInput Used to input integers. - \value DoubleInput Used to input floating point numbers with double precision accuracy. + \value DoubleInput Used to input floating point numbers with double + precision accuracy. \sa inputMode */ @@ -487,7 +490,8 @@ QInputDialog::~QInputDialog() \brief the mode used for input - This property help determines which widget is used for entering input into the dialog. + This property help determines which widget is used for entering input into + the dialog. */ void QInputDialog::setInputMode(InputMode mode) { @@ -1104,15 +1108,18 @@ void QInputDialog::done(int result) } /*! - Static convenience function to get a string from the user. \a - title is the text which is displayed in the title bar of the - dialog. \a label is the text which is shown to the user (it should - say what should be entered). \a text is the default text which is - placed in the line edit. The \a mode is the echo mode the line - edit will use. If \a ok is nonnull \e *\a ok will be set to true - if the user pressed \gui OK and to false if the user pressed - \gui Cancel. The dialog's parent is \a parent. The dialog will be - modal and uses the specified widget \a flags. + Static convenience function to get a string from the user. + + \a title is the text which is displayed in the title bar of the dialog. + \a label is the text which is shown to the user (it should say what should + be entered). + \a text is the default text which is placed in the line edit. + \a mode is the echo mode the line edit will use. + + If \a ok is nonnull \e *\a ok will be set to true if the user pressed + \gui OK and to false if the user pressed \gui Cancel. The dialog's parent + is \a parent. The dialog will be modal and uses the specified widget + \a flags. This function returns the text which has been entered in the line edit. It will not return an empty string. @@ -1121,11 +1128,11 @@ void QInputDialog::done(int result) \snippet examples/dialogs/standarddialogs/dialog.cpp 3 - \warning Do not delete \a parent during the execution of the dialog. - If you want to do this, you should create the dialog - yourself using one of the QInputDialog constructors. + \warning Do not delete \a parent during the execution of the dialog. If you + want to do this, you should create the dialog yourself using one of the + QInputDialog constructors. - \sa getInteger(), getDouble(), getItem() + \sa getInt(), getDouble(), getItem() */ QString QInputDialog::getText(QWidget *parent, const QString &title, const QString &label, @@ -1149,30 +1156,32 @@ QString QInputDialog::getText(QWidget *parent, const QString &title, const QStri } /*! - Static convenience function to get an integer input from the - user. \a title is the text which is displayed in the title bar - of the dialog. \a label is the text which is shown to the user - (it should say what should be entered). \a value is the default - integer which the spinbox will be set to. \a min and \a - max are the minimum and maximum values the user may choose, - and \a step is the amount by which the values change as the user - presses the arrow buttons to increment or decrement the value. - - If \a ok is nonnull *\a ok will be set to true if the user - pressed \gui OK and to false if the user pressed \gui Cancel. The - dialog's parent is \a parent. The dialog will be modal and uses - the widget \a flags. - - On success, this function returns the integer which has been - entered by the user; on failure, it returns the initial \a value. + \since 4.5 + + Static convenience function to get an integer input from the user. + + \a title is the text which is displayed in the title bar of the dialog. + \a label is the text which is shown to the user (it should say what should + be entered). + \a value is the default integer which the spinbox will be set to. + \a min and \a max are the minimum and maximum values the user may choose. + \a step is the amount by which the values change as the user presses the + arrow buttons to increment or decrement the value. + + If \a ok is nonnull *\a ok will be set to true if the user pressed \gui OK + and to false if the user pressed \gui Cancel. The dialog's parent is + \a parent. The dialog will be modal and uses the widget \a flags. + + On success, this function returns the integer which has been entered by the + user; on failure, it returns the initial \a value. Use this static function like this: \snippet examples/dialogs/standarddialogs/dialog.cpp 0 - \warning Do not delete \a parent during the execution of the dialog. - If you want to do this, you should create the dialog - yourself using one of the QInputDialog constructors. + \warning Do not delete \a parent during the execution of the dialog. If you + want to do this, you should create the dialog yourself using one of the + QInputDialog constructors. \sa getText(), getDouble(), getItem() */ @@ -1198,32 +1207,32 @@ int QInputDialog::getInt(QWidget *parent, const QString &title, const QString &l } /*! - Static convenience function to get a floating point number from - the user. \a title is the text which is displayed in the title - bar of the dialog. \a label is the text which is shown to the user - (it should say what should be entered). \a value is the default - floating point number that the line edit will be set to. \a - min and \a max are the minimum and maximum values the - user may choose, and \a decimals is the maximum number of decimal - places the number may have. - - If \a ok is nonnull, *\a ok will be set to true if the user - pressed \gui OK and to false if the user pressed \gui Cancel. The - dialog's parent is \a parent. The dialog will be modal and uses - the widget \a flags. - - This function returns the floating point number which has been - entered by the user. + Static convenience function to get a floating point number from the user. + + \a title is the text which is displayed in the title bar of the dialog. + \a label is the text which is shown to the user (it should say what should + be entered). + \a value is the default floating point number that the line edit will be + set to. + \a min and \a max are the minimum and maximum values the user may choose. + \a decimals is the maximum number of decimal places the number may have. + + If \a ok is nonnull, *\a ok will be set to true if the user pressed \gui OK + and to false if the user pressed \gui Cancel. The dialog's parent is + \a parent. The dialog will be modal and uses the widget \a flags. + + This function returns the floating point number which has been entered by + the user. Use this static function like this: \snippet examples/dialogs/standarddialogs/dialog.cpp 1 - \warning Do not delete \a parent during the execution of the dialog. - If you want to do this, you should create the dialog - yourself using one of the QInputDialog constructors. + \warning Do not delete \a parent during the execution of the dialog. If you + want to do this, you should create the dialog yourself using one of the + QInputDialog constructors. - \sa getText(), getInteger(), getItem() + \sa getText(), getInt(), getItem() */ double QInputDialog::getDouble(QWidget *parent, const QString &title, const QString &label, @@ -1248,32 +1257,34 @@ double QInputDialog::getDouble(QWidget *parent, const QString &title, const QStr } /*! - Static convenience function to let the user select an item from a - string list. \a title is the text which is displayed in the title - bar of the dialog. \a label is the text which is shown to the user (it - should say what should be entered). \a items is the - string list which is inserted into the combobox, and \a current is the number - of the item which should be the current item. If \a editable is true - the user can enter their own text; if \a editable is false the user - may only select one of the existing items. - - If \a ok is nonnull \e *\a ok will be set to true if the user - pressed \gui OK and to false if the user pressed \gui Cancel. The - dialog's parent is \a parent. The dialog will be modal and uses - the widget \a flags. - - This function returns the text of the current item, or if \a - editable is true, the current text of the combobox. + Static convenience function to let the user select an item from a string + list. + + \a title is the text which is displayed in the title bar of the dialog. + \a label is the text which is shown to the user (it should say what should + be entered). + \a items is the string list which is inserted into the combobox. + \a current is the number of the item which should be the current item. + + If \a editable is true the user can enter their own text; otherwise the + user may only select one of the existing items. + + If \a ok is nonnull \e *\a ok will be set to true if the user pressed + \gui OK and to false if the user pressed \gui Cancel. The dialog's parent + is \a parent. The dialog will be modal and uses the widget \a flags. + + This function returns the text of the current item, or if \a editable is + true, the current text of the combobox. Use this static function like this: \snippet examples/dialogs/standarddialogs/dialog.cpp 2 - \warning Do not delete \a parent during the execution of the dialog. - If you want to do this, you should create the dialog - yourself using one of the QInputDialog constructors. + \warning Do not delete \a parent during the execution of the dialog. If you + want to do this, you should create the dialog yourself using one of the + QInputDialog constructors. - \sa getText(), getInteger(), getDouble() + \sa getText(), getInt(), getDouble() */ QString QInputDialog::getItem(QWidget *parent, const QString &title, const QString &label, diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index b520a3f..d1b8393 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -4223,9 +4223,9 @@ QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect */ QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const { - if (!d_ptr->hasTransform) - return QPolygonF(rect.translated(d_ptr->pos)); - return transform().map(rect.translated(d_ptr->pos)); + QPolygonF p = !d_ptr->hasTransform ? rect : transform().map(rect); + p.translate(d_ptr->pos); + return p; } /*! @@ -4292,8 +4292,8 @@ QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, const QRectF &rec */ QRectF QGraphicsItem::mapRectToParent(const QRectF &rect) const { - QRectF r = rect.translated(d_ptr->pos.x(), d_ptr->pos.y()); - return !d_ptr->hasTransform ? r : transform().mapRect(r); + QRectF r = !d_ptr->hasTransform ? rect : transform().mapRect(rect); + return r.translated(d_ptr->pos); } /*! @@ -4424,9 +4424,9 @@ QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &p */ QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const { - QPolygonF p = polygon; + QPolygonF p = !d_ptr->hasTransform ? polygon : transform().map(polygon); p.translate(d_ptr->pos); - return d_ptr->hasTransform ? transform().map(p) : p; + return p; } /*! @@ -4468,7 +4468,10 @@ QPainterPath QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPainterP */ QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const { - return d_ptr->parent ? itemTransform(d_ptr->parent).map(path) : mapToScene(path); + QTransform x = QTransform::fromTranslate(d_ptr->pos.x(), d_ptr->pos.y()); + if (d_ptr->hasTransform) + x = transform() * x; + return x.map(path); } /*! @@ -5697,12 +5700,11 @@ void QGraphicsItem::removeFromIndex() */ void QGraphicsItem::prepareGeometryChange() { - if (!d_ptr->scene) - return; - - d_ptr->updateHelper(QRectF(), false, /*maybeDirtyClipPath=*/!d_ptr->inSetPosHelper); - QGraphicsScenePrivate *scenePrivate = d_ptr->scene->d_func(); - scenePrivate->removeFromIndex(this); + if (d_ptr->scene) { + d_ptr->updateHelper(QRectF(), false, /*maybeDirtyClipPath=*/!d_ptr->inSetPosHelper); + QGraphicsScenePrivate *scenePrivate = d_ptr->scene->d_func(); + scenePrivate->removeFromIndex(this); + } if (d_ptr->inSetPosHelper) return; @@ -8487,6 +8489,7 @@ void QGraphicsSimpleTextItem::setText(const QString &text) return; d->text = text; d->updateBoundingRect(); + update(); } /*! diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp index 10bcb9a..91431c4 100644 --- a/src/gui/itemviews/qsortfilterproxymodel.cpp +++ b/src/gui/itemviews/qsortfilterproxymodel.cpp @@ -1032,9 +1032,21 @@ void QSortFilterProxyModelPrivate::_q_sourceDataChanged(const QModelIndex &sourc } } - if (!source_rows_remove.isEmpty()) + if (!source_rows_remove.isEmpty()) { remove_source_items(m->proxy_rows, m->source_rows, source_rows_remove, source_parent, Qt::Vertical); + QSet<int> source_rows_remove_set = source_rows_remove.toList().toSet(); + QVector<QModelIndex>::iterator it = m->mapped_children.begin(); + while (it != m->mapped_children.end()) { + const QModelIndex source_child_index = *it; + if (source_rows_remove_set.contains(source_child_index.row())) { + it = m->mapped_children.erase(it); + remove_from_mapping(source_child_index); + } else { + ++it; + } + } + } if (!source_rows_resort.isEmpty()) { // Re-sort the rows @@ -1569,6 +1581,10 @@ bool QSortFilterProxyModel::hasChildren(const QModelIndex &parent) const return false; if (!d->model->hasChildren(source_parent)) return false; + + if (d->model->canFetchMore(source_parent)) + return true; //we assume we might have children that can be fetched + QSortFilterProxyModelPrivate::Mapping *m = d->create_mapping(source_parent).value(); return m->source_rows.count() != 0 && m->source_columns.count() != 0; } diff --git a/src/gui/kernel/qcocoapanel_mac.mm b/src/gui/kernel/qcocoapanel_mac.mm index 95e20af..c69826f 100644 --- a/src/gui/kernel/qcocoapanel_mac.mm +++ b/src/gui/kernel/qcocoapanel_mac.mm @@ -49,8 +49,10 @@ #include <QtGui/QWidget> +QT_FORWARD_DECLARE_CLASS(QWidget); +QT_BEGIN_NAMESPACE extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.mm - +QT_END_NAMESPACE QT_USE_NAMESPACE @implementation QT_MANGLE_NAMESPACE(QCocoaPanel) @@ -108,7 +110,7 @@ QT_USE_NAMESPACE [self retain]; QWidget *widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self]; - QCocoaView *view = static_cast<QCocoaView *>(qt_mac_nativeview_for(widget)); + QT_MANGLE_NAMESPACE(QCocoaView) *view = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(qt_mac_nativeview_for(widget)); Qt::MouseButton mouseButton = cocoaButton2QtButton([event buttonNumber]); // sometimes need to redirect mouse events to the popup. @@ -172,7 +174,7 @@ QT_USE_NAMESPACE + (Class)frameViewClassForStyleMask:(NSUInteger)styleMask { if (styleMask & QtMacCustomizeWindow) - return [QCocoaWindowCustomThemeFrame class]; + return [QT_MANGLE_NAMESPACE(QCocoaWindowCustomThemeFrame) class]; return [super frameViewClassForStyleMask:styleMask]; } diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm index bcbd1bf..e84af90 100644 --- a/src/gui/kernel/qcocoaview_mac.mm +++ b/src/gui/kernel/qcocoaview_mac.mm @@ -630,7 +630,7 @@ extern "C" { for (NSView *lookView in viewsToLookAt) { NSPoint tmpPoint = [lookView convertPoint:windowPoint fromView:nil]; for (NSView *view in [lookView subviews]) { - if (view == mouseView) + if (view == mouseView || [view isHidden]) continue; NSRect frameRect = [view frame]; if (NSMouseInRect(tmpPoint, [view frame], [view isFlipped])) @@ -649,7 +649,7 @@ extern "C" { NSPoint tmpPoint = [viewForDescent convertPoint:windowPoint fromView:nil]; // Apply same rule as above wrt z-order. for (NSView *view in [viewForDescent subviews]) { - if (NSMouseInRect(tmpPoint, [view frame], [view isFlipped])) + if (![view isHidden] && NSMouseInRect(tmpPoint, [view frame], [view isFlipped])) lowerView = view; } if (!lowerView) // Low as we can be at this point. @@ -944,6 +944,27 @@ extern "C" { } } +- (void)viewWillMoveToWindow:(NSWindow *)window +{ + if (qwidget->windowFlags() & Qt::MSWindowsOwnDC + && (window != [self window])) { // OpenGL Widget + // Create a stupid ClearDrawable Event + QEvent event(QEvent::MacGLClearDrawable); + qApp->sendEvent(qwidget, &event); + } +} + +- (void)viewDidMoveToWindow +{ + if (qwidget->windowFlags() & Qt::MSWindowsOwnDC && [self window]) { + // call update paint event + qwidgetprivate->needWindowChange = true; + QEvent event(QEvent::MacGLWindowChange); + qApp->sendEvent(qwidget, &event); + } +} + + // NSTextInput Protocol implementation - (void) insertText:(id)aString diff --git a/src/gui/kernel/qcocoawindow_mac.mm b/src/gui/kernel/qcocoawindow_mac.mm index 972e477..89f481f 100644 --- a/src/gui/kernel/qcocoawindow_mac.mm +++ b/src/gui/kernel/qcocoawindow_mac.mm @@ -53,9 +53,10 @@ #include <QtGui/QWidget> QT_FORWARD_DECLARE_CLASS(QWidget); -QT_USE_NAMESPACE - +QT_BEGIN_NAMESPACE extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.mm +QT_END_NAMESPACE +QT_USE_NAMESPACE @implementation NSWindow (QT_MANGLE_NAMESPACE(QWidgetIntegration)) @@ -130,7 +131,7 @@ extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview. [self retain]; QWidget *widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self]; - QCocoaView *view = static_cast<QCocoaView *>(qt_mac_nativeview_for(widget)); + QT_MANGLE_NAMESPACE(QCocoaView) *view = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(qt_mac_nativeview_for(widget)); Qt::MouseButton mouseButton = cocoaButton2QtButton([event buttonNumber]); // sometimes need to redirect mouse events to the popup. diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index 827e098..2c3f7f1 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -465,7 +465,18 @@ Q_GUI_EXPORT OSWindowRef qt_mac_window_for(const QWidget *w) if (hiview){ OSWindowRef window = qt_mac_window_for(hiview); if (!window && qt_isGenuineQWidget(hiview)) { - w->window()->d_func()->createWindow_sys(); + QWidget *myWindow = w->window(); + // This is a workaround for NSToolbar. When a widget is hidden + // by clicking the toolbar button, Cocoa reparents the widgets + // to another window (but Qt doesn't know about it). + // When we start showing them, it reparents back, + // but at this point it's window is nil, but the window it's being brought + // into (the Qt one) is for sure created. + // This stops the hierarchy moving under our feet. + if (myWindow != w && qt_mac_window_for(qt_mac_nativeview_for(myWindow))) + return qt_mac_window_for(qt_mac_nativeview_for(myWindow)); + + myWindow->d_func()->createWindow_sys(); // Reget the hiview since the "create window could potentially move the view (I guess). hiview = qt_mac_nativeview_for(w); window = qt_mac_window_for(hiview); @@ -2847,10 +2858,10 @@ void QWidgetPrivate::updateSystemBackground() void QWidgetPrivate::setCursor_sys(const QCursor &) { - Q_Q(QWidget); #ifndef QT_MAC_USE_COCOA qt_mac_update_cursor(); #else + Q_Q(QWidget); if (q->testAttribute(Qt::WA_WState_Created)) { [qt_mac_window_for(q) invalidateCursorRectsForView:qt_mac_nativeview_for(q)]; } @@ -2859,10 +2870,10 @@ void QWidgetPrivate::setCursor_sys(const QCursor &) void QWidgetPrivate::unsetCursor_sys() { - Q_Q(QWidget); #ifndef QT_MAC_USE_COCOA qt_mac_update_cursor(); #else + Q_Q(QWidget); if (q->testAttribute(Qt::WA_WState_Created)) { [qt_mac_window_for(q) invalidateCursorRectsForView:qt_mac_nativeview_for(q)]; } diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp index ea8af93..76734d4 100644 --- a/src/gui/kernel/qwidget_x11.cpp +++ b/src/gui/kernel/qwidget_x11.cpp @@ -1750,8 +1750,8 @@ void QWidgetPrivate::show_sys() mwmhints.functions &= ~MWM_FUNC_RESIZE; } - mwmhints.flags |= MWM_HINTS_DECORATIONS; if (mwmhints.decorations == MWM_DECOR_ALL) { + mwmhints.flags |= MWM_HINTS_DECORATIONS; mwmhints.decorations = (MWM_DECOR_BORDER | MWM_DECOR_TITLE | MWM_DECOR_MENU); @@ -1760,10 +1760,12 @@ void QWidgetPrivate::show_sys() } if (q->windowFlags() & Qt::WindowMinimizeButtonHint) { + mwmhints.flags |= MWM_HINTS_DECORATIONS; mwmhints.decorations |= MWM_DECOR_MINIMIZE; mwmhints.functions |= MWM_FUNC_MINIMIZE; } if (q->windowFlags() & Qt::WindowMaximizeButtonHint) { + mwmhints.flags |= MWM_HINTS_DECORATIONS; mwmhints.decorations |= MWM_DECOR_MAXIMIZE; mwmhints.functions |= MWM_FUNC_MAXIMIZE; } diff --git a/src/gui/kernel/qx11embed_x11.cpp b/src/gui/kernel/qx11embed_x11.cpp index e49c4d6..6329135 100644 --- a/src/gui/kernel/qx11embed_x11.cpp +++ b/src/gui/kernel/qx11embed_x11.cpp @@ -481,7 +481,7 @@ QX11EmbedWidget::QX11EmbedWidget(QWidget *parent) | ExposureMask | StructureNotifyMask | SubstructureNotifyMask | PropertyChangeMask); - unsigned int data[] = {XEMBED_VERSION, XEMBED_MAPPED}; + long data[] = {XEMBED_VERSION, XEMBED_MAPPED}; XChangeProperty(x11Info().display(), internalWinId(), ATOM(_XEMBED_INFO), ATOM(_XEMBED_INFO), 32, PropModeReplace, (unsigned char*) data, 2); @@ -1571,7 +1571,7 @@ void QX11EmbedContainer::showEvent(QShowEvent *) { Q_D(QX11EmbedContainer); if (d->client) { - unsigned int data[] = {XEMBED_VERSION, XEMBED_MAPPED}; + long data[] = {XEMBED_VERSION, XEMBED_MAPPED}; XChangeProperty(x11Info().display(), d->client, ATOM(_XEMBED_INFO), ATOM(_XEMBED_INFO), 32, PropModeReplace, (unsigned char *) data, 2); } @@ -1587,8 +1587,7 @@ void QX11EmbedContainer::hideEvent(QHideEvent *) { Q_D(QX11EmbedContainer); if (d->client) { - unsigned int data[] = {XEMBED_VERSION, XEMBED_MAPPED}; - + long data[] = {XEMBED_VERSION, XEMBED_MAPPED}; XChangeProperty(x11Info().display(), d->client, ATOM(_XEMBED_INFO), ATOM(_XEMBED_INFO), 32, PropModeReplace, (unsigned char *) data, 2); } diff --git a/src/gui/painting/qprintengine_mac.mm b/src/gui/painting/qprintengine_mac.mm index 7a77e47..b1216b7 100644 --- a/src/gui/painting/qprintengine_mac.mm +++ b/src/gui/painting/qprintengine_mac.mm @@ -62,6 +62,10 @@ bool QMacPrintEngine::begin(QPaintDevice *dev) { Q_D(QMacPrintEngine); + Q_ASSERT(dev && dev->devType() == QInternal::Printer); + if (!static_cast<QPrinter *>(dev)->isValid()) + return false; + if (d->state == QPrinter::Idle && !d->isPrintSessionInitialized()) // Need to reinitialize d->initialize(); @@ -121,24 +125,8 @@ bool QMacPrintEngine::end() if(d->paintEngine->type() == QPaintEngine::CoreGraphics) static_cast<QCoreGraphicsPaintEngine*>(d->paintEngine)->d_func()->hd = 0; d->paintEngine->end(); - if (d->state != QPrinter::Idle) { -#ifndef QT_MAC_USE_COCOA - if (d->shouldSuppressStatus()) { - PMSessionEndPageNoDialog(d->session); - PMSessionEndDocumentNoDialog(d->session); - } else { - PMSessionEndPage(d->session); - PMSessionEndDocument(d->session); - } - PMRelease(d->session); -#else - PMSessionEndPageNoDialog(d->session); - PMSessionEndDocumentNoDialog(d->session); - [d->printInfo release]; -#endif - d->printInfo = 0; - d->session = 0; - } + if (d->state != QPrinter::Idle) + d->releaseSession(); d->state = QPrinter::Idle; return true; } @@ -509,6 +497,26 @@ void QMacPrintEnginePrivate::initialize() } } +void QMacPrintEnginePrivate::releaseSession() +{ +#ifndef QT_MAC_USE_COCOA + if (shouldSuppressStatus()) { + PMSessionEndPageNoDialog(session); + PMSessionEndDocumentNoDialog(session); + } else { + PMSessionEndPage(session); + PMSessionEndDocument(session); + } + PMRelease(session); +#else + PMSessionEndPageNoDialog(session); + PMSessionEndDocumentNoDialog(session); + [printInfo release]; +#endif + printInfo = 0; + session = 0; +} + bool QMacPrintEnginePrivate::newPage_helper() { Q_Q(QMacPrintEngine); @@ -737,6 +745,7 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va d->setPaperSize(QPrinter::PaperSize(value.toInt())); break; case PPK_PrinterName: { + bool printerNameSet = false; OSStatus status = noErr; QCFType<CFArrayRef> printerList; status = PMServerCreatePrinterList(kPMServerLocal, &printerList); @@ -747,12 +756,18 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va QString name = QCFString::toQString(PMPrinterGetName(printer)); if (name == value.toString()) { status = PMSessionSetCurrentPMPrinter(d->session, printer); + printerNameSet = true; break; } } } if (status != noErr) qWarning("QMacPrintEngine::setPrinterName: Error setting printer: %ld", long(status)); + if (!printerNameSet) { + qWarning("QMacPrintEngine::setPrinterName: Failed to set printer named '%s'.", qPrintable(value.toString())); + d->releaseSession(); + d->state = QPrinter::Idle; + } break; } case PPK_SuppressSystemPrintStatus: d->suppressStatus = value.toBool(); @@ -876,17 +891,12 @@ QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const ret = r; break; } case PPK_PrinterName: { - CFIndex currIndex; - PMPrinter unused; - QCFType<CFArrayRef> printerList; - OSStatus status = PMSessionCreatePrinterList(d->session, &printerList, &currIndex, &unused); + PMPrinter printer; + OSStatus status = PMSessionGetCurrentPrinter(d->session, &printer); if (status != noErr) - qWarning("QMacPrintEngine::printerName: Problem getting list of printers: %ld", long(status)); - if (currIndex != -1 && printerList && currIndex < CFArrayGetCount(printerList)) { - const CFStringRef name = static_cast<CFStringRef>(CFArrayGetValueAtIndex(printerList, currIndex)); - if (name) - ret = QCFString::toQString(name); - } + qWarning("QMacPrintEngine::printerName: Failed getting current PMPrinter: %ld", long(status)); + if (printer) + ret = QCFString::toQString(PMPrinterGetName(printer)); break; } case PPK_Resolution: { ret = d->resolution.hRes; diff --git a/src/gui/painting/qprintengine_mac_p.h b/src/gui/painting/qprintengine_mac_p.h index 5e18845..bc917e7 100644 --- a/src/gui/painting/qprintengine_mac_p.h +++ b/src/gui/painting/qprintengine_mac_p.h @@ -143,6 +143,7 @@ public: hasCustomPaperSize(false), hasCustomPageMargins(false) {} ~QMacPrintEnginePrivate(); void initialize(); + void releaseSession(); bool newPage_helper(); void setPaperSize(QPrinter::PaperSize ps); QPrinter::PaperSize paperSize() const; diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp index fa808d0..39e429d 100644 --- a/src/gui/painting/qtransform.cpp +++ b/src/gui/painting/qtransform.cpp @@ -1715,13 +1715,12 @@ QRect QTransform::mapRect(const QRect &rect) const return QRect(x, y, w, h); } else if (t < TxProject) { // see mapToPolygon for explanations of the algorithm. - qreal x0 = 0, y0 = 0; - qreal x, y; - MAP(rect.left(), rect.top(), x0, y0); - qreal xmin = x0; - qreal ymin = y0; - qreal xmax = x0; - qreal ymax = y0; + qreal x = 0, y = 0; + MAP(rect.left(), rect.top(), x, y); + qreal xmin = x; + qreal ymin = y; + qreal xmax = x; + qreal ymax = y; MAP(rect.right() + 1, rect.top(), x, y); xmin = qMin(xmin, x); ymin = qMin(ymin, y); @@ -1782,13 +1781,12 @@ QRectF QTransform::mapRect(const QRectF &rect) const } return QRectF(x, y, w, h); } else if (t < TxProject) { - qreal x0 = 0, y0 = 0; - qreal x, y; - MAP(rect.x(), rect.y(), x0, y0); - qreal xmin = x0; - qreal ymin = y0; - qreal xmax = x0; - qreal ymax = y0; + qreal x = 0, y = 0; + MAP(rect.x(), rect.y(), x, y); + qreal xmin = x; + qreal ymin = y; + qreal xmax = x; + qreal ymax = y; MAP(rect.x() + rect.width(), rect.y(), x, y); xmin = qMin(xmin, x); ymin = qMin(ymin, y); diff --git a/src/gui/painting/qwindowsurface.cpp b/src/gui/painting/qwindowsurface.cpp index bcb0380..d941a24 100644 --- a/src/gui/painting/qwindowsurface.cpp +++ b/src/gui/painting/qwindowsurface.cpp @@ -310,10 +310,13 @@ void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset) int lineskip = img.bytesPerLine(); int depth = img.depth() >> 3; - - const QRect r = rect & QRect(0, 0, img.width(), img.height()); + const QRect imageRect(0, 0, img.width(), img.height()); + const QRect r = rect & imageRect & imageRect.translated(-offset); const QPoint p = rect.topLeft() + offset; + if (r.isEmpty()) + return; + const uchar *src; uchar *dest; diff --git a/src/gui/styles/gtksymbols.cpp b/src/gui/styles/gtksymbols.cpp index f7af8f8..acb8437 100644 --- a/src/gui/styles/gtksymbols.cpp +++ b/src/gui/styles/gtksymbols.cpp @@ -549,6 +549,7 @@ void QGtkStyleUpdateScheduler::updateTheme() QPalette newPalette = qApp->style()->standardPalette(); QApplicationPrivate::setSystemPalette(newPalette); QApplication::setPalette(newPalette); + QGtk::initGtkWidgets(); QGtk::applyCustomPaletteHash(); QList<QWidget*> widgets = QApplication::allWidgets(); // Notify all widgets that size metrics might have changed diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp index 519fed7..b7fa575 100644 --- a/src/gui/styles/qgtkstyle.cpp +++ b/src/gui/styles/qgtkstyle.cpp @@ -977,7 +977,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, if (widget && widget->testAttribute(Qt::WA_SetPalette) && resolve_mask & (1 << QPalette::Base)) // Palette overridden by user - painter->fillRect(textRect, option->palette.base().color()); + painter->fillRect(textRect, option->palette.base()); else gtkPainter.paintFlatBox( gtkEntry, "entry_bg", textRect, option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE, GTK_SHADOW_NONE, gtkEntry->style); @@ -2760,10 +2760,13 @@ void QGtkStyle::drawControl(ControlElement element, if (tab->state & State_Selected) state = GTK_STATE_NORMAL; - bool first = tab->position == QStyleOptionTab::Beginning || tab->position == QStyleOptionTab::OnlyOneTab; - bool last = tab->position == QStyleOptionTab::End || tab->position == QStyleOptionTab::OnlyOneTab; bool selected = (tab->state & State_Selected); - if (option->direction == Qt::RightToLeft) { + bool first = false, last = false; + if (widget) { + // This is most accurate and avoids resizing tabs while moving + first = tab->rect.left() == widget->rect().left(); + last = tab->rect.right() == widget->rect().right(); + } else if (option->direction == Qt::RightToLeft) { bool tmp = first; first = last; last = tmp; diff --git a/src/gui/widgets/qcocoamenu_mac.mm b/src/gui/widgets/qcocoamenu_mac.mm index c5fee66..6434289 100644 --- a/src/gui/widgets/qcocoamenu_mac.mm +++ b/src/gui/widgets/qcocoamenu_mac.mm @@ -55,11 +55,17 @@ QT_FORWARD_DECLARE_CLASS(QAction) QT_FORWARD_DECLARE_CLASS(QWidget) QT_FORWARD_DECLARE_CLASS(QApplication) +QT_FORWARD_DECLARE_CLASS(QCoreApplication) +QT_FORWARD_DECLARE_CLASS(QApplicationPrivate) +QT_FORWARD_DECLARE_CLASS(QKeyEvent) +QT_FORWARD_DECLARE_CLASS(QEvent) QT_BEGIN_NAMESPACE extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); //qapplication.cpp QT_END_NAMESPACE +QT_USE_NAMESPACE + @implementation QT_MANGLE_NAMESPACE(QCocoaMenu) - (id)initWithQMenu:(QMenu*)menu diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp index ed3e338..7396a9d 100644 --- a/src/gui/widgets/qmenu.cpp +++ b/src/gui/widgets/qmenu.cpp @@ -2889,8 +2889,8 @@ void QMenu::internalDelayedPopup() int subMenuOffset = style()->pixelMetric(QStyle::PM_SubMenuOverlap, 0, this); const QRect actionRect(d->actionRect(d->currentAction)); const QSize menuSize(d->activeMenu->sizeHint()); - const QPoint rightPos(mapToGlobal(QPoint(rect().right() + subMenuOffset + 1, actionRect.top()))); - const QPoint leftPos(mapToGlobal(QPoint(rect().left() - subMenuOffset - menuSize.width(), actionRect.top()))); + const QPoint rightPos(mapToGlobal(QPoint(actionRect.right() + subMenuOffset + 1, actionRect.top()))); + const QPoint leftPos(mapToGlobal(QPoint(actionRect.left() - subMenuOffset - menuSize.width(), actionRect.top()))); QPoint pos(rightPos); QMenu *caused = qobject_cast<QMenu*>(d->activeMenu->d_func()->causedPopup.widget); diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp index 7d970ad..b6e6b6d 100644 --- a/src/gui/widgets/qtabbar.cpp +++ b/src/gui/widgets/qtabbar.cpp @@ -131,7 +131,7 @@ void QTabBar::initStyleOption(QStyleOptionTab *option, int tabIndex) const option->state &= ~QStyle::State_Enabled; if (isActiveWindow()) option->state |= QStyle::State_Active; - if (option->rect == d->hoverRect) + if (!d->dragInProgress && option->rect == d->hoverRect) option->state |= QStyle::State_MouseOver; option->shape = d->shape; option->text = tab.text; @@ -454,9 +454,6 @@ void QTabBarPrivate::layoutTabs() maxExtent = maxWidth; } - if (pressedIndex != -1 && movable) - grabCache(0, tabList.count(), true); - Q_ASSERT(tabChainIndex == tabChain.count() - 1); // add an assert just to make sure. // Mirror our front item. tabChain[tabChainIndex].init(); @@ -1484,6 +1481,8 @@ void QTabBar::paintEvent(QPaintEvent *) bool vertical = verticalTabs(d->shape); QStyleOptionTab cutTab; selected = d->currentIndex; + if (d->dragInProgress) + selected = d->pressedIndex; for (int i = 0; i < d->tabList.count(); ++i) optTabBase.tabBarRect |= tabRect(i); @@ -1522,11 +1521,7 @@ void QTabBar::paintEvent(QPaintEvent *) if (i == selected) continue; - if (!d->tabList[i].animatingCache.isNull() && d->paintWithOffsets) { - p.drawPixmap(tab.rect, d->tabList[i].animatingCache); - } else { - p.drawControl(QStyle::CE_TabBarTab, tab); - } + p.drawControl(QStyle::CE_TabBarTab, tab); } // Draw the selected tab last to get it "on top" @@ -1539,7 +1534,11 @@ void QTabBar::paintEvent(QPaintEvent *) else tab.rect.moveLeft(tab.rect.x() + d->tabList[selected].dragOffset); } - p.drawControl(QStyle::CE_TabBarTab, tab); + if (!d->dragInProgress) + p.drawControl(QStyle::CE_TabBarTab, tab); + else + d->movingTab->setGeometry(tab.rect); + } // Only draw the tear indicator if necessary. Most of the time we don't need too. @@ -1680,6 +1679,7 @@ void QTabBarPrivate::_q_moveTab(int offset) if (!validIndex(index)) return; tabList[index].dragOffset = offset; + layoutTab(index); // Make buttons follow tab q->update(); } } @@ -1727,8 +1727,7 @@ void QTabBar::mouseMoveEvent(QMouseEvent *event) if (!d->dragInProgress && d->pressedIndex != -1) { if ((event->pos() - d->dragStartPosition).manhattanLength() > QApplication::startDragDistance()) { d->dragInProgress = true; - if (d->animations.isEmpty()) - d->grabCache(0, d->tabList.count(), false); + d->setupMovableTab(); } } @@ -1773,7 +1772,6 @@ void QTabBar::mouseMoveEvent(QMouseEvent *event) if (dragDistance > needsToBeOver) d->slide(i + offset, d->pressedIndex); } - } // Buttons needs to follow the dragged tab d->layoutTab(d->pressedIndex); @@ -1801,32 +1799,41 @@ void QTabBarPrivate::_q_moveTabFinished() } } -void QTabBarPrivate::grabCache(int start, int end, bool unhide) +void QTabBarPrivate::setupMovableTab() { Q_Q(QTabBar); - paintWithOffsets = false; - bool showButtonsAgain = rightB->isVisible(); - rightB->hide(); - leftB->hide(); - - QWidget *topLevel = q->window(); - QPoint topLevelOffset(q->mapTo(topLevel, QPoint())); - for (int i = start; i < end; ++i) { - QRect tabRect = q->tabRect(i); - tabRect.translate(topLevelOffset); - if (unhide) { - tabList[i].unHideWidgets(); - layoutWidgets(i); - } - tabList[i].animatingCache = QPixmap::grabWidget(topLevel, tabRect); - if (i != pressedIndex) - tabList[i].hideWidgets(); - } - if (showButtonsAgain) { - rightB->show(); - leftB->show(); - } - paintWithOffsets = true; + if (!movingTab) + movingTab = new QWidget(q); + + QRect grabRect = q->tabRect(pressedIndex); + + QPixmap grabImage(grabRect.size()); + grabImage.fill(Qt::transparent); + QStylePainter p(&grabImage, q); + + QStyleOptionTabV3 tab; + q->initStyleOption(&tab, pressedIndex); + tab.rect.moveTopLeft(QPoint(0, 0)); + p.drawControl(QStyle::CE_TabBarTab, tab); + p.end(); + + QPalette pal; + pal.setBrush(QPalette::All, QPalette::Window, grabImage); + movingTab->setPalette(pal); + movingTab->setGeometry(grabRect); + movingTab->setAutoFillBackground(true); + movingTab->raise(); + + // Re-arrange widget order to avoid overlaps + if (tabList[pressedIndex].leftWidget) + tabList[pressedIndex].leftWidget->raise(); + if (tabList[pressedIndex].rightWidget) + tabList[pressedIndex].rightWidget->raise(); + if (leftB) + leftB->raise(); + if (rightB) + rightB->raise(); + movingTab->setVisible(true); } void QTabBarPrivate::_q_moveTabFinished(int index) @@ -1834,10 +1841,9 @@ void QTabBarPrivate::_q_moveTabFinished(int index) Q_Q(QTabBar); bool cleanup = (pressedIndex == index) || (pressedIndex == -1) || !validIndex(index); if (animations.isEmpty() && cleanup) { + movingTab->setVisible(false); // We might not get a mouse release for (int i = 0; i < tabList.count(); ++i) { tabList[i].dragOffset = 0; - tabList[i].unHideWidgets(); - tabList[i].animatingCache = QPixmap(); } if (pressedIndex != -1 && movable) { pressedIndex = -1; @@ -1881,6 +1887,7 @@ void QTabBar::mouseReleaseEvent(QMouseEvent *event) d->_q_moveTabFinished(d->pressedIndex); } d->dragInProgress = false; + d->movingTab->setVisible(false); d->dragStartPosition = QPoint(); } @@ -2203,19 +2210,16 @@ void QTabBar::setTabButton(int index, ButtonPosition position, QWidget *widget) widget->setParent(this); // make sure our left and right widgets stay on top widget->lower(); + widget->show(); } if (position == LeftSide) { if (d->tabList[index].leftWidget) d->tabList[index].leftWidget->hide(); d->tabList[index].leftWidget = widget; - if(!d->tabList[index].hidLeft && widget) - widget->show(); } else { if (d->tabList[index].rightWidget) d->tabList[index].rightWidget->hide(); d->tabList[index].rightWidget = widget; - if(!d->tabList[index].hidRight && widget) - widget->show(); } d->layoutTabs(); update(); diff --git a/src/gui/widgets/qtabbar_p.h b/src/gui/widgets/qtabbar_p.h index a117aa3..cb1a15b 100644 --- a/src/gui/widgets/qtabbar_p.h +++ b/src/gui/widgets/qtabbar_p.h @@ -70,7 +70,6 @@ QT_BEGIN_NAMESPACE - class QTabBarPrivate : public QWidgetPrivate { Q_DECLARE_PUBLIC(QTabBar) @@ -78,7 +77,7 @@ public: QTabBarPrivate() :currentIndex(-1), pressedIndex(-1), shape(QTabBar::RoundedNorth), - layoutDirty(false), drawBase(true), scrollOffset(0), expanding(true), closeButtonOnTabs(false), selectionBehaviorOnRemove(QTabBar::SelectRightTab), paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false) {} + layoutDirty(false), drawBase(true), scrollOffset(0), expanding(true), closeButtonOnTabs(false), selectionBehaviorOnRemove(QTabBar::SelectRightTab), paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false), movingTab(0) {} int currentIndex; int pressedIndex; @@ -98,8 +97,6 @@ public: , lastTab(-1) , timeLine(0) , dragOffset(0) - , hidLeft(false) - , hidRight(false) {} bool enabled; int shortcutId; @@ -123,9 +120,6 @@ public: QTimeLine *timeLine; int dragOffset; - QPixmap animatingCache; - bool hidLeft; - bool hidRight; void makeTimeLine(QWidget *q) { if (timeLine) @@ -135,27 +129,6 @@ public: q->connect(timeLine, SIGNAL(finished()), q, SLOT(_q_moveTabFinished())); } - void hideWidgets() { - if (!hidRight && rightWidget) { - hidRight = rightWidget->isVisible(); - rightWidget->hide(); - } - - if (!hidLeft && leftWidget) { - hidLeft = leftWidget->isVisible(); - leftWidget->hide(); - } - } - - void unHideWidgets() { - if (leftWidget && hidLeft) - leftWidget->show(); - hidLeft = false; - if (rightWidget && hidRight) - rightWidget->show(); - hidRight = false; - } - }; QList<Tab> tabList; QHash<QTimeLine*, int> animations; @@ -184,12 +157,12 @@ public: void _q_moveTabFinished(int offset); QRect hoverRect; - void grabCache(int start, int end, bool unhide); void refresh(); void layoutTabs(); void layoutWidgets(int index = -1); void layoutTab(int index); void updateMacBorderMetrics(); + void setupMovableTab(); void makeVisible(int index); QSize iconSize; @@ -206,6 +179,8 @@ public: bool dragInProgress; bool documentMode; + QWidget *movingTab; + // shared by tabwidget and qtabbar static void initStyleBaseOption(QStyleOptionTabBarBaseV2 *optTabBase, QTabBar *tabbar, QSize size) { diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 910e30a..f9750f2 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -1263,7 +1263,7 @@ void QAbstractSocket::connectToHostImplementation(const QString &hostName, quint (int) openMode); #endif - if (d->state == ConnectedState || d->state == ConnectingState) { + if (d->state == ConnectedState || d->state == ConnectingState || d->state == ClosingState) { qWarning("QAbstractSocket::connectToHost() called when already connecting/connected to \"%s\"", qPrintable(hostName)); return; } @@ -2279,7 +2279,7 @@ void QAbstractSocket::disconnectFromHostImplementation() emit delayedCloseFinished(); // compat signal #endif // only emit disconnected if we were connected before - if (previousState == ConnectedState || ClosingState) + if (previousState == ConnectedState || previousState == ClosingState) emit disconnected(); d->localPort = 0; diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp index 73f6f84..cc372a6 100644 --- a/src/network/socket/qnativesocketengine_unix.cpp +++ b/src/network/socket/qnativesocketengine_unix.cpp @@ -506,26 +506,11 @@ int QNativeSocketEnginePrivate::nativeAccept() qint64 QNativeSocketEnginePrivate::nativeBytesAvailable() const { - /* - Apparently, there is not consistency among different operating - systems on how to use FIONREAD. - - FreeBSD, Linux and Solaris all expect the 3rd argument to - ioctl() to be an int, which is normally 32-bit even on 64-bit - machines. - - IRIX, on the other hand, expects a size_t, which is 64-bit on - 64-bit machines. - - So, the solution is to use size_t initialized to zero to make - sure all bits are set to zero, preventing underflow with the - FreeBSD/Linux/Solaris ioctls. - */ - size_t nbytes = 0; + int nbytes = 0; // gives shorter than true amounts on Unix domain sockets. qint64 available = 0; if (::ioctl(socketDescriptor, FIONREAD, (char *) &nbytes) >= 0) - available = (qint64) *((int *) &nbytes); + available = (qint64) nbytes; #if defined (QNATIVESOCKETENGINE_DEBUG) qDebug("QNativeSocketEnginePrivate::nativeBytesAvailable() == %lli", available); diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro index 48d7caf..78aaddb 100644 --- a/src/opengl/opengl.pro +++ b/src/opengl/opengl.pro @@ -25,18 +25,16 @@ HEADERS += qgl.h \ qglcolormap.h \ qglpixelbuffer.h \ qglframebufferobject.h \ - qglpixmapfilter_p.h SOURCES += qgl.cpp \ qglcolormap.cpp \ qglpixelbuffer.cpp \ qglframebufferobject.cpp \ qglextensions.cpp \ - qglpixmapfilter.cpp !contains(QT_CONFIG, opengles2) { - HEADERS += qpaintengine_opengl_p.h - SOURCES += qpaintengine_opengl.cpp + HEADERS += qpaintengine_opengl_p.h qglpixmapfilter_p.h + SOURCES += qpaintengine_opengl.cpp qglpixmapfilter.cpp } contains(QT_CONFIG, opengles2) { @@ -130,6 +128,10 @@ wince*: { contains(QT_CONFIG,opengles1cl) { QMAKE_LIBS += "libGLES_CL.lib" } + contains(QT_CONFIG,opengles2) { + QMAKE_LIBS += "libGLESv2.lib" + } + } else { QMAKE_LIBS += $$QMAKE_LIBS_OPENGL } diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index 6d75d02..b4a0e5c 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -3234,6 +3234,10 @@ bool QGLWidget::event(QEvent *e) update(); } return true; +# if defined(QT_MAC_USE_COCOA) + } else if (e->type() == QEvent::MacGLClearDrawable) { + d->glcx->d_ptr->clearDrawable(); +# endif } #endif diff --git a/src/opengl/qgl_mac.mm b/src/opengl/qgl_mac.mm index 314c659..1319396 100644 --- a/src/opengl/qgl_mac.mm +++ b/src/opengl/qgl_mac.mm @@ -87,29 +87,6 @@ QT_FORWARD_DECLARE_CLASS(QWidget) QT_FORWARD_DECLARE_CLASS(QWidgetPrivate) QT_FORWARD_DECLARE_CLASS(QGLWidgetPrivate) -@interface QT_MANGLE_NAMESPACE(QCocoaOpenGLView) : QT_MANGLE_NAMESPACE(QCocoaView) -{ -} -- (id)initWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate; -@end - -@implementation QT_MANGLE_NAMESPACE(QCocoaOpenGLView) -- (id)initWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate -{ - self = [super initWithQWidget:widget widgetPrivate:widgetprivate]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(_surfaceNeedsUpdate:) - name:NSViewGlobalFrameDidChangeNotification - object:self]; - return self; -} - -- (void) _surfaceNeedsUpdate:(NSNotification*)notification -{ - Q_UNUSED(notification); - static_cast<QGLWidgetPrivate *>(qwidgetprivate)->glcx->updatePaintDevice(); -} -@end QT_BEGIN_NAMESPACE void *qt_current_nsopengl_context() @@ -435,6 +412,11 @@ void *QGLContextPrivate::tryFormat(const QGLFormat &format) #endif } +void QGLContextPrivate::clearDrawable() +{ + [static_cast<NSOpenGLContext *>(cx) clearDrawable]; +} + /*! \bold{Mac OS X only:} This virtual function tries to find a visual that matches the format, reducing the demands if the original request @@ -647,7 +629,7 @@ void QGLContext::updatePaintDevice() // ideally we would use QWidget::isVisible(), but we get "invalid drawable" errors if (![(NSWindow *)qt_mac_window_for(w) isVisible]) return; - if ([static_cast<NSOpenGLContext *>(d->cx) view] != view) + if ([static_cast<NSOpenGLContext *>(d->cx) view] != view && ![view isHidden]) [static_cast<NSOpenGLContext *>(d->cx) setView:view]; } else if (d->paintDevice->devType() == QInternal::Pixmap) { const QPixmap *pm = static_cast<const QPixmap *>(d->paintDevice); diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index b8bbeaf..16aaa96 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -234,6 +234,7 @@ public: #if defined(Q_WS_MAC) bool update; void *tryFormat(const QGLFormat &format); + void clearDrawable(); #endif QGLFormat glFormat; QGLFormat reqFormat; diff --git a/src/scripttools/debugging/qscriptbreakpointswidget.cpp b/src/scripttools/debugging/qscriptbreakpointswidget.cpp index aea1fe7..efb3047 100644 --- a/src/scripttools/debugging/qscriptbreakpointswidget.cpp +++ b/src/scripttools/debugging/qscriptbreakpointswidget.cpp @@ -225,7 +225,6 @@ public: bool eventFilter(QObject *editor, QEvent *event) { -#if QT_VERSION >= 0x040500 if (QLineEdit *le = qobject_cast<QLineEdit*>(editor)) { if (event->type() == QEvent::KeyPress) { int key = static_cast<QKeyEvent*>(event)->key(); @@ -237,21 +236,18 @@ public: } } } -#endif return QStyledItemDelegate::eventFilter(editor, event); } void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { -#if QT_VERSION >= 0x040500 if (index.column() == 2) { // check that the syntax is OK QString condition = qobject_cast<QLineEdit*>(editor)->text(); if (QScriptEngine::checkSyntax(condition).state() != QScriptSyntaxCheckResult::Valid) return; } -#endif QStyledItemDelegate::setModelData(editor, model, index); } @@ -261,11 +257,7 @@ private Q_SLOTS: QWidget *editor = qobject_cast<QWidget*>(sender()); QPalette pal = editor->palette(); QColor col; -#if QT_VERSION >= 0x040500 bool ok = (QScriptEngine::checkSyntax(text).state() == QScriptSyntaxCheckResult::Valid); -#else - bool ok = true; -#endif if (ok) { col = Qt::white; } else { diff --git a/src/scripttools/debugging/qscriptcompletiontask.cpp b/src/scripttools/debugging/qscriptcompletiontask.cpp index 3767505..119b96a 100644 --- a/src/scripttools/debugging/qscriptcompletiontask.cpp +++ b/src/scripttools/debugging/qscriptcompletiontask.cpp @@ -162,11 +162,7 @@ void QScriptCompletionTaskPrivate::completeScriptExpression() obj = ctx->thisObject(); } else { QScriptValueList scopeChain; -#if QT_VERSION >= 0x040500 scopeChain = ctx->scopeChain(); -#else - scopeChain.append(ctx->activationObject()); -#endif for (int i = 0; i < scopeChain.size(); ++i) { QScriptValue oo = scopeChain.at(i).property(topLevelIdent); if (oo.isObject()) { @@ -180,11 +176,7 @@ void QScriptCompletionTaskPrivate::completeScriptExpression() if (obj.isValid()) objects.append(obj); } else { -#if QT_VERSION >= 0x040500 objects << ctx->scopeChain(); -#else - objects.append(ctx->activationObject()); -#endif QStringList keywords; keywords.append(QString::fromLatin1("this")); keywords.append(QString::fromLatin1("true")); diff --git a/src/scripttools/debugging/qscriptdebugger.cpp b/src/scripttools/debugging/qscriptdebugger.cpp index 5a356ae..ce43572 100644 --- a/src/scripttools/debugging/qscriptdebugger.cpp +++ b/src/scripttools/debugging/qscriptdebugger.cpp @@ -663,11 +663,7 @@ QString QScriptDebuggerPrivate::toolTip(int frameIndex, int lineNumber, objects.append(ctx->thisObject()); ++pathIndex; } else { -#if QT_VERSION >= 0x040500 objects << ctx->scopeChain(); -#else - objects.append(ctx->activationObject()); -#endif } for (int i = 0; i < objects.size(); ++i) { QScriptValue val = objects.at(i); @@ -991,13 +987,11 @@ public: qint64 scriptId = m_added.at(m_index); m_debugger->scriptsModel->addScript(scriptId, data); -#if QT_VERSION >= 0x040500 // ### could be slow, might want to do this in a separate thread QString xml = qt_scriptToXml(data.contents(), data.baseLineNumber()); QScriptXmlParser::Result extraInfo = QScriptXmlParser::parse(xml); m_debugger->scriptsModel->addExtraScriptInfo( scriptId, extraInfo.functionsInfo, extraInfo.executableLineNumbers); -#endif if (++m_index < m_added.size()) frontend.scheduleGetScriptData(m_added.at(m_index)); diff --git a/src/scripttools/debugging/qscriptdebuggeragent.cpp b/src/scripttools/debugging/qscriptdebuggeragent.cpp index fcba033..0ea9c99 100644 --- a/src/scripttools/debugging/qscriptdebuggeragent.cpp +++ b/src/scripttools/debugging/qscriptdebuggeragent.cpp @@ -88,16 +88,9 @@ QScriptDebuggerAgentPrivate *QScriptDebuggerAgentPrivate::get( */ QScriptDebuggerAgent::QScriptDebuggerAgent( QScriptDebuggerBackendPrivate *backend, QScriptEngine *engine) -#if QT_VERSION >= 0x040500 : QScriptEngineAgent(*new QScriptDebuggerAgentPrivate, engine) -#else - : QScriptEngineAgent(engine), d_ptr(new QScriptDebuggerAgentPrivate) -#endif { Q_D(QScriptDebuggerAgent); -#if QT_VERSION < 0x040500 - d_ptr->q_ptr = this; -#endif d->backend = backend; QScriptContext *ctx = engine->currentContext(); @@ -117,9 +110,6 @@ QScriptDebuggerAgent::~QScriptDebuggerAgent() Q_D(QScriptDebuggerAgent); if (d->backend) d->backend->agentDestroyed(this); -#if QT_VERSION < 0x040500 - delete d_ptr; -#endif } /*! @@ -712,12 +702,7 @@ void QScriptDebuggerAgent::exceptionCatch(qint64 scriptId, */ bool QScriptDebuggerAgent::supportsExtension(Extension extension) const { -#if QT_VERSION >= 0x040500 return (extension == DebuggerInvocationRequest); -#else - Q_UNUSED(extension); - return false; -#endif } /*! @@ -727,7 +712,6 @@ QVariant QScriptDebuggerAgent::extension(Extension extension, const QVariant &argument) { Q_UNUSED(extension); -#if QT_VERSION >= 0x040500 Q_D(QScriptDebuggerAgent); Q_ASSERT(extension == DebuggerInvocationRequest); QVariantList lst = argument.toList(); @@ -739,9 +723,6 @@ QVariant QScriptDebuggerAgent::extension(Extension extension, d->backend->debuggerInvocationRequest( scriptId, lineNumber, columnNumber); } -#else - Q_UNUSED(argument); -#endif return QVariant(); } diff --git a/src/scripttools/debugging/qscriptdebuggeragent_p.h b/src/scripttools/debugging/qscriptdebuggeragent_p.h index 556b17b..28ec46a 100644 --- a/src/scripttools/debugging/qscriptdebuggeragent_p.h +++ b/src/scripttools/debugging/qscriptdebuggeragent_p.h @@ -125,9 +125,6 @@ public: const QVariant &argument = QVariant()); private: -#if QT_VERSION < 0x040500 - QScriptDebuggerAgentPrivate *d_ptr; -#endif Q_DECLARE_PRIVATE(QScriptDebuggerAgent) Q_DISABLE_COPY(QScriptDebuggerAgent) }; diff --git a/src/scripttools/debugging/qscriptdebuggeragent_p_p.h b/src/scripttools/debugging/qscriptdebuggeragent_p_p.h index cf6fd1a..313b1c0 100644 --- a/src/scripttools/debugging/qscriptdebuggeragent_p_p.h +++ b/src/scripttools/debugging/qscriptdebuggeragent_p_p.h @@ -68,9 +68,7 @@ QT_BEGIN_NAMESPACE class QScriptDebuggerAgent; class QScriptDebuggerAgentPrivate -#if QT_VERSION >= 0x040500 : public QScriptEngineAgentPrivate -#endif { Q_DECLARE_PUBLIC(QScriptDebuggerAgent) public: @@ -125,10 +123,6 @@ public: int statementCounter; QScriptDebuggerBackendPrivate *backend; - -#if QT_VERSION < 0x040500 - QScriptDebuggerAgent *q_ptr; -#endif }; QT_END_NAMESPACE diff --git a/src/scripttools/debugging/qscriptdebuggerbackend.cpp b/src/scripttools/debugging/qscriptdebuggerbackend.cpp index 24a3847..3c29130 100644 --- a/src/scripttools/debugging/qscriptdebuggerbackend.cpp +++ b/src/scripttools/debugging/qscriptdebuggerbackend.cpp @@ -615,13 +615,11 @@ void QScriptDebuggerBackend::doPendingEvaluate(bool postEvent) // push a new context and initialize its scope chain etc. { QScriptContext *evalContext = engine()->pushContext(); -#if QT_VERSION >= 0x040500 QScriptValueList scopeChain = ctx->scopeChain(); if (scopeChain.isEmpty()) scopeChain.append(engine()->globalObject()); while (!scopeChain.isEmpty()) evalContext->pushScope(scopeChain.takeLast()); -#endif evalContext->setActivationObject(ctx->activationObject()); evalContext->setThisObject(ctx->thisObject()); } diff --git a/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp b/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp index e36386d..1be8c5f 100644 --- a/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp +++ b/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp @@ -287,13 +287,9 @@ QScriptDebuggerResponse QScriptDebuggerCommandExecutor::execute( QScriptContext *ctx = backend->context(command.contextIndex()); if (ctx) { QScriptDebuggerValueList dest; -#if QT_VERSION >= 0x040500 QScriptValueList src = ctx->scopeChain(); for (int i = 0; i < src.size(); ++i) dest.append(src.at(i)); -#else - dest.append(ctx->activationObject()); -#endif response.setResult(dest); } else { response.setError(QScriptDebuggerResponse::InvalidContextIndex); diff --git a/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp b/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp index 0018b92..f923508 100644 --- a/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp +++ b/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp @@ -448,12 +448,7 @@ QStringList QScriptDebuggerConsoleGlobalObject::getCommandCompletions(const QStr bool QScriptDebuggerConsoleGlobalObject::checkSyntax(const QString &program) { -#if QT_VERSION >= 0x040500 return (QScriptEngine::checkSyntax(program).state() == QScriptSyntaxCheckResult::Valid); -#else - Q_UNUSED(program); - return true; -#endif } void QScriptDebuggerConsoleGlobalObject::setEvaluateAction(int action) diff --git a/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp b/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp index a4919be..60fe48d 100644 --- a/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp +++ b/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp @@ -206,11 +206,7 @@ private Q_SLOTS: QWidget *editor = qobject_cast<QWidget*>(sender()); QPalette pal = editor->palette(); QColor col; -#if QT_VERSION >= 0x040500 bool ok = (QScriptEngine::checkSyntax(text).state() == QScriptSyntaxCheckResult::Valid); -#else - bool ok = true; -#endif if (ok) { col = Qt::white; } else { @@ -277,12 +273,10 @@ bool QScriptDebuggerLocalsItemDelegate::eventFilter(QObject *watched, QEvent *ev return QStyledItemDelegate::eventFilter(watched, event); QKeyEvent *ke = static_cast<QKeyEvent*>(event); if ((ke->key() == Qt::Key_Enter) || (ke->key() == Qt::Key_Return)) { -#if QT_VERSION >= 0x040500 if (QScriptEngine::checkSyntax(le->text()).state() != QScriptSyntaxCheckResult::Valid) { // ignore when script contains syntax error return true; } -#endif } if (ke->key() != Qt::Key_Tab) return QStyledItemDelegate::eventFilter(watched, event); @@ -296,14 +290,12 @@ void QScriptDebuggerLocalsItemDelegate::setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { -#if QT_VERSION >= 0x040500 if (index.column() == 1) { // check that the syntax is OK QString expression = qobject_cast<QLineEdit*>(editor)->text(); if (QScriptEngine::checkSyntax(expression).state() != QScriptSyntaxCheckResult::Valid) return; } -#endif QStyledItemDelegate::setModelData(editor, model, index); } diff --git a/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp b/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp index 20350f6..fa30d84 100644 --- a/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp +++ b/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp @@ -410,11 +410,7 @@ void QScriptDebuggerScriptedConsoleCommandJob::start() for (int i = 0; i < d->arguments.size(); ++i) args.append(QScriptValue(engine, d->arguments.at(i))); QScriptDebuggerConsoleGlobalObject *global; -#if QT_VERSION >= 0x040500 global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().toQObject()); -#else - global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().scope().toQObject()); -#endif Q_ASSERT(global != 0); global->setScheduler(this); global->setResponseHandler(this); @@ -444,11 +440,7 @@ void QScriptDebuggerScriptedConsoleCommandJob::handleResponse( args.append(qScriptValueFromValue(engine, response)); args.append(QScriptValue(engine, commandId)); QScriptDebuggerConsoleGlobalObject *global; -#if QT_VERSION >= 0x040500 global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().toQObject()); -#else - global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().scope().toQObject()); -#endif Q_ASSERT(global != 0); global->setScheduler(this); global->setResponseHandler(this); @@ -566,12 +558,7 @@ QScriptDebuggerScriptedConsoleCommand *QScriptDebuggerScriptedConsoleCommand::pa QScriptDebuggerConsoleGlobalObject *cppGlobal = new QScriptDebuggerConsoleGlobalObject(); QScriptValue global = engine->newQObject(cppGlobal, QScriptEngine::ScriptOwnership, -#if QT_VERSION >= 0x040500 QScriptEngine::ExcludeSuperClassContents); -#else - QScriptEngine::ExcludeSuperClassMethods - | QScriptEngine::ExcludeSuperClassProperties); -#endif { QScriptValueIterator it(engine->globalObject()); while (it.hasNext()) { @@ -579,12 +566,7 @@ QScriptDebuggerScriptedConsoleCommand *QScriptDebuggerScriptedConsoleCommand::pa global.setProperty(it.scriptName(), it.value(), it.flags()); } } -#if QT_VERSION >= 0x040500 engine->setGlobalObject(global); -#else - engine->globalObject().setScope(global); - global = engine->globalObject(); -#endif cppGlobal->setMessageHandler(messageHandler); QScriptValue ret = engine->evaluate(program, fileName); diff --git a/src/scripttools/debugging/qscriptedit.cpp b/src/scripttools/debugging/qscriptedit.cpp index 2bc0a40..7c2a72c 100644 --- a/src/scripttools/debugging/qscriptedit.cpp +++ b/src/scripttools/debugging/qscriptedit.cpp @@ -342,11 +342,9 @@ void QScriptEdit::extraAreaPaintEvent(QPaintEvent *e) icon.paint(&painter, r, Qt::AlignCenter); } -#if QT_VERSION >= 0x040500 if (!m_executableLineNumbers.contains(lineNumber)) painter.setPen(pal.color(QPalette::Mid)); else -#endif painter.setPen(QColor(Qt::darkCyan)); QString number = QString::number(lineNumber); painter.drawText(rect.x() + markWidth, (int)top, rect.x() + extraAreaWidth - markWidth - 4, @@ -370,10 +368,8 @@ void QScriptEdit::extraAreaMouseEvent(QMouseEvent *e) if (e->type() == QEvent::MouseMove && e->buttons() == 0) { // mouse tracking bool hand = (e->pos().x() <= markWidth); -#if QT_VERSION >= 0x040500 int lineNumber = cursor.blockNumber() + m_baseLineNumber; hand = hand && m_executableLineNumbers.contains(lineNumber); -#endif #ifndef QT_NO_CURSOR if (hand != (m_extraArea->cursor().shape() == Qt::PointingHandCursor)) m_extraArea->setCursor(hand ? Qt::PointingHandCursor : Qt::ArrowCursor); @@ -382,12 +378,8 @@ void QScriptEdit::extraAreaMouseEvent(QMouseEvent *e) if (e->type() == QEvent::MouseButtonPress) { if (e->button() == Qt::LeftButton) { -#if QT_VERSION >= 0x040500 int lineNumber = cursor.blockNumber() + m_baseLineNumber; bool executable = m_executableLineNumbers.contains(lineNumber); -#else - bool executable = true; -#endif if ((e->pos().x() <= markWidth) && executable) m_extraAreaToggleBlockNumber = cursor.blockNumber(); else @@ -402,10 +394,8 @@ void QScriptEdit::extraAreaMouseEvent(QMouseEvent *e) } } else if (e->button() == Qt::RightButton) { int lineNumber = cursor.blockNumber() + m_baseLineNumber; -#if QT_VERSION >= 0x040500 if (!m_executableLineNumbers.contains(lineNumber)) return; -#endif bool has = m_breakpoints.contains(lineNumber); QMenu *popup = new QMenu(); QAction *toggleAct = new QAction(QObject::tr("Toggle Breakpoint"), popup); diff --git a/src/scripttools/debugging/qscriptenginedebugger.h b/src/scripttools/debugging/qscriptenginedebugger.h index d5e127f..a4853f0 100644 --- a/src/scripttools/debugging/qscriptenginedebugger.h +++ b/src/scripttools/debugging/qscriptenginedebugger.h @@ -48,11 +48,7 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -#if QT_VERSION >= 0x040500 QT_MODULE(ScriptTools) -#else -# define Q_SCRIPTTOOLS_EXPORT -#endif class QAction; class QScriptEngine; diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index d6423ae..2a83fe6 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -355,7 +355,7 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni } else { fieldVal += QString::fromAscii(buf, rSize); } - if (fieldVal.size() + lengthIndicator >= colSize) { + if (lengthIndicator - fieldVal.size() <= 0) { // workaround for Drivermanagers that don't return SQL_NO_DATA break; } diff --git a/tests/arthur/common/paintcommands.cpp b/tests/arthur/common/paintcommands.cpp index a72e689..6ab71f8 100644 --- a/tests/arthur/common/paintcommands.cpp +++ b/tests/arthur/common/paintcommands.cpp @@ -1886,7 +1886,6 @@ void PaintCommands::command_setBrushOrigin(QRegExp re) /***************************************************************************************************/ void PaintCommands::command_brushTranslate(QRegExp re) { -#if QT_VERSION > 0x040200 QStringList caps = re.capturedTexts(); double dx = convertToDouble(caps.at(1)); double dy = convertToDouble(caps.at(2)); @@ -1899,13 +1898,11 @@ void PaintCommands::command_brushTranslate(QRegExp re) brush_matrix.translate(dx, dy); new_brush.setTransform(brush_matrix); m_painter->setBrush(new_brush); -#endif } /***************************************************************************************************/ void PaintCommands::command_brushScale(QRegExp re) { -#if QT_VERSION > 0x040200 QStringList caps = re.capturedTexts(); double sx = convertToDouble(caps.at(1)); double sy = convertToDouble(caps.at(2)); @@ -1918,13 +1915,11 @@ void PaintCommands::command_brushScale(QRegExp re) brush_matrix.scale(sx, sy); new_brush.setTransform(brush_matrix); m_painter->setBrush(new_brush); -#endif } /***************************************************************************************************/ void PaintCommands::command_brushRotate(QRegExp re) { -#if QT_VERSION > 0x040200 QStringList caps = re.capturedTexts(); double rot = convertToDouble(caps.at(1)); @@ -1936,13 +1931,11 @@ void PaintCommands::command_brushRotate(QRegExp re) brush_matrix.rotate(rot); new_brush.setTransform(brush_matrix); m_painter->setBrush(new_brush); -#endif } /***************************************************************************************************/ void PaintCommands::command_brushShear(QRegExp re) { -#if QT_VERSION > 0x040200 QStringList caps = re.capturedTexts(); double sx = convertToDouble(caps.at(1)); double sy = convertToDouble(caps.at(2)); @@ -1955,7 +1948,6 @@ void PaintCommands::command_brushShear(QRegExp re) brush_matrix.shear(sx, sy); new_brush.setTransform(brush_matrix); m_painter->setBrush(new_brush); -#endif } /***************************************************************************************************/ @@ -2326,10 +2318,8 @@ void PaintCommands::command_gradient_setLinear(QRegExp re) lg.setSpread(m_gradientSpread); lg.setCoordinateMode(m_gradientCoordinate); QBrush brush(lg); -#if QT_VERSION > 0x040200 QTransform brush_matrix = m_painter->brush().transform(); brush.setTransform(brush_matrix); -#endif m_painter->setBrush(brush); } @@ -2375,10 +2365,8 @@ void PaintCommands::command_gradient_setRadial(QRegExp re) rg.setSpread(m_gradientSpread); rg.setCoordinateMode(m_gradientCoordinate); QBrush brush(rg); -#if QT_VERSION > 0x040200 QTransform brush_matrix = m_painter->brush().transform(); brush.setTransform(brush_matrix); -#endif m_painter->setBrush(brush); } @@ -2400,10 +2388,8 @@ void PaintCommands::command_gradient_setConical(QRegExp re) cg.setSpread(m_gradientSpread); cg.setCoordinateMode(m_gradientCoordinate); QBrush brush(cg); -#if QT_VERSION > 0x040200 QTransform brush_matrix = m_painter->brush().transform(); brush.setTransform(brush_matrix); -#endif m_painter->setBrush(brush); } @@ -2448,7 +2434,6 @@ void PaintCommands::command_surface_begin(QRegExp re) m_surface_painter = m_painter; -#if QT_VERSION > 0x040200 if (m_type == OpenGLType || m_type == OpenGLPBufferType) { #ifndef QT_NO_OPENGL m_surface_pbuffer = new QGLPixelBuffer(qRound(w), qRound(h)); @@ -2461,9 +2446,7 @@ void PaintCommands::command_surface_begin(QRegExp re) m_surface_pixmap.fill(Qt::transparent); m_painter = new QPainter(&m_surface_pixmap); #endif - } else -#endif - { + } else { m_surface_image = QImage(qRound(w), qRound(h), QImage::Format_ARGB32_Premultiplied); m_surface_image.fill(0); m_painter = new QPainter(&m_surface_image); diff --git a/tests/arthur/common/qengines.cpp b/tests/arthur/common/qengines.cpp index 46f4e6b..9cd2389 100644 --- a/tests/arthur/common/qengines.cpp +++ b/tests/arthur/common/qengines.cpp @@ -243,11 +243,7 @@ void GLEngine::prepare(const QSize &_size, const QColor &color) size = _size; fillColor = color; if (usePixelBuffers) { -#if (QT_VERSION < 0x040200) && defined(Q_WS_MAC) - pbuffer = new QGLPixelBuffer(QSize(512, 512), QGLFormat(QGL::SampleBuffers)); -#else pbuffer = new QGLPixelBuffer(size, QGLFormat(QGL::SampleBuffers)); -#endif } else { widget = new QGLWidget(QGLFormat(QGL::SampleBuffers)); widget->setAutoFillBackground(false); diff --git a/tests/auto/bic/tst_bic.cpp b/tests/auto/bic/tst_bic.cpp index e0f42f0..181c275 100644 --- a/tests/auto/bic/tst_bic.cpp +++ b/tests/auto/bic/tst_bic.cpp @@ -195,29 +195,10 @@ void tst_Bic::sizesAndVTables_data() && archFileName420.isEmpty()) QSKIP("No reference files found for this platform", SkipAll); -#if QT_VERSION >= 0x040100 bool isPatchRelease400 = false; -#else - bool isPatchRelease400 = true; -#endif - -#if QT_VERSION >= 0x040200 bool isPatchRelease410 = false; -#else - bool isPatchRelease410 = true; -#endif - -#if QT_VERSION >= 0x040300 bool isPatchRelease420 = false; -#else - bool isPatchRelease420 = true; -#endif - -#if QT_VERSION >= 0x040400 bool isPatchRelease430 = false; -#else - bool isPatchRelease430 = true; -#endif QTest::addColumn<QString>("oldLib"); QTest::addColumn<bool>("isPatchRelease"); diff --git a/tests/auto/collections/tst_collections.cpp b/tests/auto/collections/tst_collections.cpp index 6d3d1df..c05d8da 100644 --- a/tests/auto/collections/tst_collections.cpp +++ b/tests/auto/collections/tst_collections.cpp @@ -161,9 +161,7 @@ private slots: void q_init(); void pointersize(); void containerInstantiation(); -#if QT_VERSION >= 0x040101 void qtimerList(); -#endif void containerTypedefs(); void forwardDeclared(); }; @@ -1907,11 +1905,9 @@ void tst_Collections::map() i.toFront(); while(i.hasNext()) { sum += i.next().value(); -#if QT_VERSION >= 0x040100 i.setValue(10); i.value() += 22; QVERIFY(i.value() == 32); -#endif } QVERIFY(sum == 11); } @@ -2870,10 +2866,8 @@ void tst_Collections::javaStyleIterators() while (i.hasPrevious()) { i.previous(); QVERIFY(i.value().isEmpty()); -#if QT_VERSION >= 0x040100 i.value() = "x"; QCOMPARE(i.value(), QString("x")); -#endif } } @@ -3355,7 +3349,6 @@ void tst_Collections::containerInstantiation() instantiateRandomAccess<Stack, EqualsComparable>(); } -#if QT_VERSION >= 0x040101 void tst_Collections::qtimerList() { QList<double> foo; @@ -3378,7 +3371,6 @@ void tst_Collections::qtimerList() } QFAIL("QList preallocates too much memory"); } -#endif template <typename Container> void testContainerTypedefs(Container container) @@ -3387,11 +3379,11 @@ void testContainerTypedefs(Container container) { typedef typename Container::value_type Foo; } { typedef typename Container::iterator Foo; } { typedef typename Container::const_iterator Foo; } - { typedef typename Container::reference Foo; } - { typedef typename Container::const_reference Foo; } - { typedef typename Container::pointer Foo; } - { typedef typename Container::difference_type Foo; } - { typedef typename Container::size_type Foo; } + { typedef typename Container::reference Foo; } + { typedef typename Container::const_reference Foo; } + { typedef typename Container::pointer Foo; } + { typedef typename Container::difference_type Foo; } + { typedef typename Container::size_type Foo; } } template <typename Container> @@ -3403,11 +3395,11 @@ void testPairAssociativeContainerTypedefs(Container container) // { typedef typename Container::value_type Foo; } // { typedef typename Container::const_iterator Foo; } // { typedef typename Container::reference Foo; } -// { typedef typename Container::const_reference Foo; } -// { typedef typename Container::pointer Foo; } +// { typedef typename Container::const_reference Foo; } +// { typedef typename Container::pointer Foo; } - { typedef typename Container::difference_type Foo; } - { typedef typename Container::size_type Foo; } + { typedef typename Container::difference_type Foo; } + { typedef typename Container::size_type Foo; } { typedef typename Container::iterator Foo; } { typedef typename Container::key_type Foo; } { typedef typename Container::mapped_type Foo; } @@ -3422,11 +3414,11 @@ void testSetContainerTypedefs(Container container) Q_UNUSED(container) { typedef typename Container::iterator Foo; } { typedef typename Container::const_iterator Foo; } - { typedef typename Container::reference Foo; } - { typedef typename Container::const_reference Foo; } - { typedef typename Container::pointer Foo; } - { typedef typename Container::difference_type Foo; } - { typedef typename Container::size_type Foo; } + { typedef typename Container::reference Foo; } + { typedef typename Container::const_reference Foo; } + { typedef typename Container::pointer Foo; } + { typedef typename Container::difference_type Foo; } + { typedef typename Container::size_type Foo; } { typedef typename Container::key_type Foo; } } @@ -3450,7 +3442,7 @@ void tst_Collections::containerTypedefs() } #if defined(Q_CC_MSVC) && !defined(Q_CC_MSVC_NET) -class Key1 +class Key1 {}; class T1 {}; diff --git a/tests/auto/compilerwarnings/tst_compilerwarnings.cpp b/tests/auto/compilerwarnings/tst_compilerwarnings.cpp index 232af55..1f5f479 100644 --- a/tests/auto/compilerwarnings/tst_compilerwarnings.cpp +++ b/tests/auto/compilerwarnings/tst_compilerwarnings.cpp @@ -173,9 +173,7 @@ void tst_CompilerWarnings::warnings() << "-Wno-long-long" << "-Wshadow" << "-Wpacked" << "-Wunreachable-code" << "-Wundef" << "-Wchar-subscripts" << "-Wformat-nonliteral" << "-Wformat-security" << "-Wcast-align" -#if QT_VERSION >= 0x040100 << "-Wfloat-equal" -#endif << "-o" << tmpFile << tmpSourceFile; #elif defined(Q_CC_XLC) diff --git a/tests/auto/mediaobject/tst_mediaobject.cpp b/tests/auto/mediaobject/tst_mediaobject.cpp index e0275de..1b113b2 100644 --- a/tests/auto/mediaobject/tst_mediaobject.cpp +++ b/tests/auto/mediaobject/tst_mediaobject.cpp @@ -349,6 +349,18 @@ void tst_MediaObject::_pausePlayback() void tst_MediaObject::initTestCase() { QCoreApplication::setApplicationName("tst_MediaObject"); + m_stateChangedSignalSpy = 0; + m_media = 0; + +#ifdef Q_OS_WINCE + QString pluginsPath = QLibraryInfo::location(QLibraryInfo::PluginsPath); +#ifdef DEBUG + QVERIFY(QFile::exists(pluginsPath + "/phonon_backend/phonon_waveoutd4.dll") || QFile::exists(pluginsPath + "/phonon_backend/phonon_phonon_ds9d4.dll")); +#else + QVERIFY(QFile::exists(pluginsPath + "/phonon_backend/phonon_waveout4.dll") || QFile::exists(pluginsPath + "/phonon_backend/phonon_phonon_ds94.dll")); +#endif +#endif + m_url = qgetenv("PHONON_TESTURL"); m_media = new MediaObject(this); @@ -856,8 +868,10 @@ void tst_MediaObject::testPlayBeforeFinish() void tst_MediaObject::cleanupTestCase() { - delete m_stateChangedSignalSpy; - delete m_media; + if (m_stateChangedSignalSpy) + delete m_stateChangedSignalSpy; + if (m_media) + delete m_media; #ifdef Q_OS_WINCE QTest::qWait(200); #endif diff --git a/tests/auto/moc/tst_moc.cpp b/tests/auto/moc/tst_moc.cpp index 4e4f6e7..afb31f6 100644 --- a/tests/auto/moc/tst_moc.cpp +++ b/tests/auto/moc/tst_moc.cpp @@ -151,7 +151,6 @@ public slots: Q_DECLARE_METATYPE(MyStruct) Q_DECLARE_METATYPE(MyStruct*) -#if QT_VERSION >= 0x040200 namespace myNS { struct Points { @@ -161,7 +160,6 @@ namespace myNS { } Q_DECLARE_METATYPE(myNS::Points) -#endif class TestClassinfoWithEscapes: public QObject { @@ -195,10 +193,7 @@ class TestClass : public MyNamespace::TestSuperClass, public DONT_CONFUSE_MOC(My public DONT_CONFUSE_MOC_EVEN_MORE(MyStruct2, dummy, ignored) { Q_OBJECT -#if QT_VERSION >= 0x040101 Q_CLASSINFO("help", QT_TR_NOOP("Opening this will let you configure something")) -#endif -#if QT_VERSION >= 0x040102 Q_PROPERTY(short int shortIntProperty READ shortIntProperty) Q_PROPERTY(unsigned short int unsignedShortIntProperty READ unsignedShortIntProperty) Q_PROPERTY(signed short int signedShortIntProperty READ signedShortIntProperty) @@ -206,10 +201,7 @@ class TestClass : public MyNamespace::TestSuperClass, public DONT_CONFUSE_MOC(My Q_PROPERTY(unsigned long int unsignedLongIntProperty READ unsignedLongIntProperty) Q_PROPERTY(signed long int signedLongIntProperty READ signedLongIntProperty) Q_PROPERTY(long double longDoubleProperty READ longDoubleProperty) -#endif -#if QT_VERSION >= 0x040200 Q_PROPERTY(myNS::Points points READ points WRITE setPoints) -#endif Q_CLASSINFO("Multi" "line", @@ -294,9 +286,7 @@ private slots: #ifndef NOLONGLONG void slotWithULongLong(unsigned long long) {} -#if QT_VERSION >= 0x040101 void slotWithULongLongP(unsigned long long*) {} -#endif void slotWithULong(unsigned long) {} void slotWithLongLong(long long) {} void slotWithLong(long) {} @@ -304,9 +294,7 @@ private slots: void slotWithColonColonType(::Int::Type) {} -#if QT_VERSION >= 0x040101 TestClass &slotWithReferenceReturnType() { return *this; } -#endif #if (0 && 1) || 1 void expressionEvaluationShortcut1() {} @@ -321,7 +309,6 @@ public slots: void slotWithNamedArray(const double namedArray[3]) {} void slotWithMultiArray(const double[3][4]) {} -#if QT_VERSION >= 0x040102 short int shortIntProperty() { return 0; } unsigned short int unsignedShortIntProperty() { return 0; } signed short int signedShortIntProperty() { return 0; } @@ -329,12 +316,9 @@ public slots: unsigned long int unsignedLongIntProperty() { return 0; } signed long int signedLongIntProperty() { return 0; } long double longDoubleProperty() { return 0.0; } -#endif -#if QT_VERSION >= 0x040200 myNS::Points points() { return m_points; } void setPoints(myNS::Points points) { m_points = points; } -#endif signals: void signalWithArray(const double[3]); @@ -384,10 +368,8 @@ public: public slots: void slotWithVoidStar(void *) {} -#if QT_VERSION >= 0x040200 private: myNS::Points m_points; -#endif private slots: inline virtual void blub1() {} @@ -628,10 +610,8 @@ void tst_Moc::uLongLong() QVERIFY(idx != -1); idx = mobj->indexOfSlot("slotWithULongLong(unsigned long long)"); QVERIFY(idx != -1); -#if QT_VERSION >= 0x040101 idx = mobj->indexOfSlot("slotWithULongLongP(unsigned long long*)"); QVERIFY(idx != -1); -#endif idx = mobj->indexOfSlot("slotWithLong(long)"); QVERIFY(idx != -1); @@ -707,22 +687,14 @@ void tst_Moc::supportConstSignals() void tst_Moc::task87883() { -#if QT_VERSION >= 0x040101 QVERIFY(Task87883::staticMetaObject.className()); -#else - QSKIP("Fixed in >= 4.1.1", SkipAll); -#endif } #include "c-comments.h" void tst_Moc::multilineComments() { -#if QT_VERSION >= 0x040101 QVERIFY(IfdefedClass::staticMetaObject.className()); -#else - QSKIP("Fixed in >= 4.1.1", SkipAll); -#endif } void tst_Moc::classinfoWithEscapes() diff --git a/tests/auto/q3accel/tst_q3accel.cpp b/tests/auto/q3accel/tst_q3accel.cpp index c2ba9dd..7b1c8ae 100644 --- a/tests/auto/q3accel/tst_q3accel.cpp +++ b/tests/auto/q3accel/tst_q3accel.cpp @@ -142,10 +142,8 @@ void tst_Q3Accel::initTestCase() edit->setObjectName("test_edit"); connect( accel1, SIGNAL(activated(int)), this, SLOT(accelTrig1()) ); connect( accel2, SIGNAL(activated(int)), this, SLOT(accelTrig2()) ); -#if QT_VERSION >= 0x30100 connect( accel1, SIGNAL(activatedAmbiguously(int)), this, SLOT(ambig1()) ); connect( accel2, SIGNAL(activatedAmbiguously(int)), this, SLOT(ambig2()) ); -#endif mainW->setCentralWidget( edit ); connect( mainW->statusBar(), SIGNAL(messageChanged(const QString&)), this, SLOT(statusMessage(const QString&)) ); @@ -160,11 +158,9 @@ int tst_Q3Accel::toButtons( int key ) result |= Qt::ShiftModifier; if ( key & Qt::CTRL ) result |= Qt::ControlModifier; -#if QT_VERSION >= 0x30100 - if ( key & Qt::META ) + if ( key & Qt::META ) result |= Qt::MetaModifier; -#endif - if ( key & Qt::ALT ) + if ( key & Qt::ALT ) result |= Qt::AltModifier; return result; } @@ -185,7 +181,6 @@ void tst_Q3Accel::defElements() QTest::addColumn<int>("theResult"); } -#if QT_VERSION >= 0x30100 void tst_Q3Accel::number() { testElement(); @@ -369,34 +364,17 @@ void tst_Q3Accel::number_data() int(Qt::Key_Aring) UNICODE_ACCEL + int(Qt::Key_K) */ - /* The #ifdefs for Qt4 are there, because accelerators are always case insensitive in Qt4. - It was not wise to differentiate between ASCII (where accelerators where case insensitive) and all other - unicode chars in 3.x. - */ QTest::newRow( "N06 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("") << int(Qt::Key_aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult); -#if QT_VERSION < 0x040000 - QTest::newRow( "N07 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("") - << int(Qt::Key_Aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult); -#endif QTest::newRow( "N08 - sA2" ) << int(SetupAccel) << int(Accel1) << QString("") << int(Qt::UNICODE_ACCEL) + int(Qt::Key_K) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult); QTest::newRow( "N:int(Qt::Key_aring)" ) << int(TestAccel) << int(NoWidget) << QString("") << int(Qt::Key_aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered); -#if QT_VERSION < 0x040000 - QTest::newRow( "N:int(Qt::Key_Aring)" ) << int(TestAccel) << int(NoWidget) << QString("") - << int(Qt::Key_Aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered); -#endif QTest::newRow( "N:int(Qt::Key_aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("") << int(Qt::Key_unknown) << 0xE5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered); -#if QT_VERSION < 0x040000 - QTest::newRow( "N:int(Qt::Key_Aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("") - << int(Qt::Key_unknown) << 0xC5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered); -#else QTest::newRow( "N:int(Qt::Key_Aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("") << int(Qt::Key_unknown) << 0xC5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered); -#endif QTest::newRow( "N:UNICODE_ACCEL + int(Qt::Key_K)" ) << int(TestAccel) << int(NoWidget) << QString("") << int(Qt::UNICODE_ACCEL) + int(Qt::Key_K) << int('k') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered); @@ -615,28 +593,15 @@ void tst_Q3Accel::text_data() /* see comments above on the #ifdef'ery */ QTest::newRow( "T06 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("\x0E5") << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult); -#if QT_VERSION < 0x040000 - QTest::newRow( "T07 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("\x0C5") - << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult); -#endif QTest::newRow( "T08 - sA2" ) << int(SetupAccel) << int(Accel1) << QString("K") << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult); QTest::newRow( "T:int(Qt::Key_aring)" ) << int(TestAccel) << int(NoWidget) << QString("") << int(Qt::Key_aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered); -#if QT_VERSION < 0x040000 - QTest::newRow( "T:int(Qt::Key_Aring)" ) << int(TestAccel) << int(NoWidget) << QString("") - << int(Qt::Key_Aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered); -#endif QTest::newRow( "T:int(Qt::Key_aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("") << int(Qt::Key_unknown) << 0xE5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered); -#if QT_VERSION < 0x040000 - QTest::newRow( "T:int(Qt::Key_Aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("") - << int(Qt::Key_unknown) << 0xC5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered); -#else QTest::newRow( "T:int(Qt::Key_Aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("") << int(Qt::Key_unknown) << 0xC5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered); -#endif QTest::newRow( "T:UNICODE_ACCEL + int(Qt::Key_K)" ) << int(TestAccel) << int(NoWidget) << QString("") << int(Qt::UNICODE_ACCEL) + int(Qt::Key_K) << int('k') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered); @@ -986,11 +951,7 @@ void tst_Q3Accel::sendKeyEvents( int k1, QChar c1, int k2, QChar c2, int k3, QCh k2 &= ~Qt::MODIFIER_MASK; k3 &= ~Qt::MODIFIER_MASK; k4 &= ~Qt::MODIFIER_MASK; -#if QT_VERSION < 0x040000 - QKeyEvent ke( QEvent::Accel, k1, k1, b1, QString(c1) ); -#else QKeyEvent ke( QEvent::Accel, k1, (Qt::KeyboardModifiers)b1, QString(c1) ); -#endif QApplication::sendEvent( mainW, &ke ); if ( k2 ) { QKeyEvent ke( QEvent::Accel, k2, k2, b2, QString(c2) ); @@ -1006,48 +967,5 @@ void tst_Q3Accel::sendKeyEvents( int k1, QChar c1, int k2, QChar c2, int k3, QCh } } -// ---------------------------------------------------------------------------- -// ---------------------------------------------------------------------------- - -#else // For Qt < 3.1 -void tst_Q3Accel::number_data() -{ - QTest::addColumn<int>("bogus"); - QTest::newRow( "b01" ) << 0; -} - -void tst_Q3Accel::number() -{ - QSKIP( "Accel test for Qt < 3.1 not implemented", SkipAll); -} - -void tst_Q3Accel::text_data() -{ - QTest::addColumn<int>("bogus"); - QTest::newRow( "b02" ) << 0; -} - -void tst_Q3Accel::text() -{ - QSKIP( "Accel test for Qt < 3.1 not implemented", SkipAll); -} -void tst_Q3Accel::disabledItems() -{ - QSKIP( "Accel test for Qt < 3.1 not implemented", SkipAll); -} -void tst_Q3Accel::ambiguousItems() -{ - QSKIP( "Amibguous signals non-existant in Qt < 3.1", SkipAll); -} -void tst_Q3Accel::unicodeCompare() -{ - QSKIP( "Accel test for Qt < 3.1 not implemented", SkipAll); -} -void tst_Q3Accel::unicodeCompose() -{ - QSKIP( "Unicode composing non-existant in Qt < 3.1", SkipAll); -} -#endif // QT_VERSION >= 0x30100 - QTEST_MAIN(tst_Q3Accel) #include "tst_q3accel.moc" diff --git a/tests/auto/q3cstring/tst_q3cstring.cpp b/tests/auto/q3cstring/tst_q3cstring.cpp index f9bdf6b..60a66a9 100644 --- a/tests/auto/q3cstring/tst_q3cstring.cpp +++ b/tests/auto/q3cstring/tst_q3cstring.cpp @@ -69,8 +69,6 @@ private slots: void replace_uint_uint(); void replace_string_data(); void replace_string(); - void replace_regexp_data(); - void replace_regexp(); void remove_uint_uint_data(); void remove_uint_uint(); void prepend(); @@ -132,11 +130,6 @@ void tst_Q3CString::remove_string_data() replace_string_data(); } -void tst_Q3CString::remove_regexp_data() -{ - replace_regexp_data(); -} - void tst_Q3CString::length_data() { QTest::addColumn<Q3CString>("s1"); @@ -202,9 +195,6 @@ void tst_Q3CString::replace_string_data() QTest::newRow( "rem13" ) << Q3CString("") << Q3CString("A") << Q3CString(0) << Q3CString(""); QTest::newRow( "rem14" ) << Q3CString(0) << Q3CString("A") << Q3CString("") << Q3CString(0); QTest::newRow( "rem15" ) << Q3CString(0) << Q3CString("A") << Q3CString(0) << Q3CString(0); -#if QT_VERSION < 0x040000 - QTest::newRow( "rem16" ) << Q3CString(0) << Q3CString("") << Q3CString("A") << Q3CString(0); -#endif QTest::newRow( "rem17" ) << Q3CString(0) << Q3CString("") << Q3CString("") << Q3CString(0); // ### how should the one below behave in Q3CString???? // QTest::newRow( "rem18" ) << Q3CString("") << Q3CString(0) << Q3CString("A") << Q3CString("A"); @@ -216,7 +206,7 @@ void tst_Q3CString::replace_string_data() QTest::newRow( "rep03" ) << Q3CString("") << Q3CString("") << Q3CString("X") << Q3CString("X"); } -void tst_Q3CString::replace_regexp_data() +void tst_Q3CString::remove_regexp_data() { QTest::addColumn<Q3CString>("string"); QTest::addColumn<Q3CString>("regexp"); @@ -224,20 +214,16 @@ void tst_Q3CString::replace_regexp_data() QTest::addColumn<Q3CString>("result"); QTest::newRow( "rem00" ) << Q3CString("alpha") << Q3CString("a+") << Q3CString("") << Q3CString("lph"); -#if QT_VERSION >= 0x030100 QTest::newRow( "rem01" ) << Q3CString("banana") << Q3CString("^.a") << Q3CString("") << Q3CString("nana"); -#endif QTest::newRow( "rem02" ) << Q3CString("") << Q3CString("^.a") << Q3CString("") << Q3CString(""); QTest::newRow( "rem03" ) << Q3CString("") << Q3CString("^.a") << Q3CString(0) << Q3CString(""); QTest::newRow( "rem04" ) << Q3CString(0) << Q3CString("^.a") << Q3CString("") << Q3CString(0); QTest::newRow( "rem05" ) << Q3CString(0) << Q3CString("^.a") << Q3CString(0) << Q3CString(0); -#if QT_VERSION >= 0x030100 QTest::newRow( "rep00" ) << Q3CString("A <i>bon mot</i>.") << Q3CString("<i>([^<]*)</i>") << Q3CString("\\emph{\\1}") << Q3CString("A \\emph{bon mot}."); QTest::newRow( "rep01" ) << Q3CString("banana") << Q3CString("^.a()") << Q3CString("\\1") << Q3CString("nana"); QTest::newRow( "rep02" ) << Q3CString("banana") << Q3CString("(ba)") << Q3CString("\\1X\\1") << Q3CString("baXbanana"); QTest::newRow( "rep03" ) << Q3CString("banana") << Q3CString("(ba)(na)na") << Q3CString("\\2X\\1") << Q3CString("naXba"); -#endif } void tst_Q3CString::length() @@ -364,11 +350,7 @@ void tst_Q3CString::acc_01() QCOMPARE('X'+a,(Q3CString)"XABC"); a = (const char*)0; QVERIFY(a.isNull()); -#if QT_VERSION < 0x040000 - QVERIFY((const char*)a==0); -#else QVERIFY(*((const char *)a) == 0); -#endif { QFile f("COMPARE.txt"); @@ -420,11 +402,7 @@ void tst_Q3CString::constructor() QCOMPARE(a,ca); QVERIFY(a.isNull()); -#if QT_VERSION < 0x040000 - QVERIFY(a != (Q3CString)""); -#else QVERIFY(a == Q3CString("")); -#endif QCOMPARE(b,cb); QCOMPARE(c,cc); QCOMPARE(d,(Q3CString)"String D"); @@ -509,18 +487,6 @@ void tst_Q3CString::find() //QCOMPARE(a.find('G',-1),14); // -ve does what? Parameter should be uint? //QCOMPARE(a.find('G',-2),11); // -ve does what? Parameter should be uint? QCOMPARE(a.find('f'),10); -#if QT_VERSION < 0x040000 - // case sensitive find has been removed in 4.0 - QCOMPARE(a.find('f',0,FALSE),5); - QCOMPARE(a.find('g',0,TRUE),-1); - QCOMPARE(a.find("fgh",0,FALSE),5); - QCOMPARE(a.find("fgh",0,TRUE),-1); - QCOMPARE(a.find("EFG",5,TRUE),12); - QCOMPARE(a.find("EFG",5,FALSE),9); - QCOMPARE(a.find("EFG",4,TRUE),4); - QCOMPARE(a.find("EfG",4,FALSE),4); - QCOMPARE(a.find("EfG",4,TRUE),9); -#endif // QCOMPARE(a.find("efg",-1,FALSE),12); // -ve does what? Parameter should be uint? // QCOMPARE(a.find("efg",-2,FALSE),12); // -ve does what? Parameter should be uint? // QCOMPARE(a.find("efg",-3,FALSE),12); // -ve does what? Parameter should be uint? @@ -544,14 +510,6 @@ void tst_Q3CString::findRev() QCOMPARE(a.findRev('B'),1); QCOMPARE(a.findRev('B',1),1); QCOMPARE(a.findRev('B',0),-1); -#if QT_VERSION < 0x040000 - QCOMPARE(a.findRev("efg",99,FALSE),-1); -// QCOMPARE(a.findRev("efg",15,FALSE),-1); - QCOMPARE(a.findRev("efg",16,FALSE),-1); - QCOMPARE(a.findRev("efg",14,FALSE),12); - QCOMPARE(a.findRev("efg",12,FALSE),12); - QCOMPARE(a.findRev("efg",11,FALSE),9); -#endif // QCOMPARE(a.findRev(QRegExp("[EFG][EFG]"),14),13); // QCOMPARE(a.findRev(QRegExp("[EFG][EFG]"),11),11); } @@ -560,15 +518,6 @@ void tst_Q3CString::contains() { Q3CString a; a="ABCDEFGHIEfGEFG"; // 15 chars -#if QT_VERSION < 0x040000 - QCOMPARE(a.contains('A'),1); - QCOMPARE(a.contains('Z'),0); - QCOMPARE(a.contains('E'),3); - QCOMPARE(a.contains('F'),2); - QCOMPARE(a.contains('F',FALSE),3); - QCOMPARE(a.contains("FG"),2); - QCOMPARE(a.contains("FG",FALSE),3); -#else QVERIFY(a.contains('A')); QVERIFY(!a.contains('Z')); QVERIFY(a.contains('E')); @@ -579,7 +528,6 @@ void tst_Q3CString::contains() QCOMPARE(a.count('E'),3); QCOMPARE(a.count('F'),2); QCOMPARE(a.count("FG"),2); -#endif // QCOMPARE(a.contains(QRegExp("[FG][HI]")),1); // QCOMPARE(a.contains(QRegExp("[G][HE]")),2); } @@ -771,7 +719,6 @@ void tst_Q3CString::replace_uint_uint() void tst_Q3CString::replace_string() { -#if QT_VERSION >= 0x030100 QFETCH( Q3CString, string ); QFETCH( Q3CString, before ); QFETCH( Q3CString, after ); @@ -788,37 +735,6 @@ void tst_Q3CString::replace_string() Q3CString s3 = string; s3.replace( before, after ); QCOMPARE( s3, result ); - -#if QT_VERSION < 0x040000 - if ( !string.isNull() ) { - /* - I've changed the isNull() behavior in QString::replace() in - Qt 3.2, according to the philosophy that null and empty - should behave mostly the same. - */ - Q3CString s4 = string; - s4.replace( QRegExp(QRegExp::escape(before)), after ); - QVERIFY( s4 == result ); - } -#endif -#else - QSKIP( "Not tested with Qt versions < 3.1", SkipAll); -#endif -} - -void tst_Q3CString::replace_regexp() -{ -#if QT_VERSION >= 0x040000 - QSKIP("This functionality has been removed in Qt 4.", SkipAll); -#else - QFETCH( Q3CString, string ); - QFETCH( Q3CString, regexp ); - QFETCH( Q3CString, after ); - QFETCH( Q3CString, result ); - - string.replace( QRegExp(regexp), after ); - QVERIFY( string == result ); -#endif } void tst_Q3CString::remove_uint_uint() diff --git a/tests/auto/q3header/tst_q3header.cpp b/tests/auto/q3header/tst_q3header.cpp index f0ad9d4..fe290e8 100644 --- a/tests/auto/q3header/tst_q3header.cpp +++ b/tests/auto/q3header/tst_q3header.cpp @@ -59,9 +59,7 @@ public slots: void cleanupTestCase(); private slots: void bug_setOffset(); -#if QT_VERSION >= 0x040101 void nullStringLabel(); -#endif private: Q3Header *testW; @@ -108,7 +106,6 @@ void tst_Q3Header::bug_setOffset() QCOMPARE( testW->offset(), offs ); } -#if QT_VERSION >= 0x040101 // Task 95640 void tst_Q3Header::nullStringLabel() { @@ -123,7 +120,6 @@ void tst_Q3Header::nullStringLabel() QCOMPARE(testW->label(testW->addLabel(QString())), QString()); QCOMPARE(testW->label(testW->addLabel(QString(""))), QString("")); } -#endif QTEST_MAIN(tst_Q3Header) #include "tst_q3header.moc" diff --git a/tests/auto/q3ptrlist/tst_q3ptrlist.cpp b/tests/auto/q3ptrlist/tst_q3ptrlist.cpp index 49b5a3e..c3d8b16 100644 --- a/tests/auto/q3ptrlist/tst_q3ptrlist.cpp +++ b/tests/auto/q3ptrlist/tst_q3ptrlist.cpp @@ -92,7 +92,6 @@ void tst_Q3PtrList::cleanup() void tst_Q3PtrList::replace() { -#if QT_VERSION >= 0x030100 Q3PtrList<int> list; int foo = 4; list.setAutoDelete( TRUE ); @@ -110,15 +109,10 @@ void tst_Q3PtrList::replace() int *p = new int(7); QCOMPARE( list.insert(2, p), (bool)TRUE ); QCOMPARE( list.replace(2, p), (bool)TRUE ); - -#else - QSKIP( "Not tested with Qt versions < 3.1", SkipAll); -#endif } void tst_Q3PtrList::replaceStrDeep() { -#if QT_VERSION >= 0x030100 Q3StrList list; const char *str; @@ -137,14 +131,10 @@ void tst_Q3PtrList::replaceStrDeep() QCOMPARE( list.insert(2, str), (bool)TRUE ); QCOMPARE( list.replace(2, str), (bool)TRUE ); -#else - QSKIP( "Not tested with Qt versions < 3.1", SkipAll); -#endif } void tst_Q3PtrList::replaceStrShallow() { -#if QT_VERSION >= 0x030100 Q3StrList list( FALSE ); char str1[] = "This is string 1"; char str2[] = "This is string 2"; @@ -166,9 +156,6 @@ void tst_Q3PtrList::replaceStrShallow() QCOMPARE( list.insert(2, str), (bool)TRUE ); QCOMPARE( list.replace(2, str), (bool)TRUE ); -#else - QSKIP( "Not tested with Qt versions < 3.1", SkipAll); -#endif } void tst_Q3PtrList::take() diff --git a/tests/auto/q3table/tst_q3table.cpp b/tests/auto/q3table/tst_q3table.cpp index 2fab3eb..7db0a40 100644 --- a/tests/auto/q3table/tst_q3table.cpp +++ b/tests/auto/q3table/tst_q3table.cpp @@ -387,7 +387,6 @@ public: void tst_Q3Table::selectComboTableItem() { -// #if QT_VERSION >= 0x030100 #if 0 MyTable table(4,4,0,"subclassTestWidget"); // Test for task #25026 diff --git a/tests/auto/q3textedit/tst_q3textedit.cpp b/tests/auto/q3textedit/tst_q3textedit.cpp index 21bc8b5..1fcce7b 100644 --- a/tests/auto/q3textedit/tst_q3textedit.cpp +++ b/tests/auto/q3textedit/tst_q3textedit.cpp @@ -159,12 +159,10 @@ void tst_Q3TextEdit::getSetCheck() Q3TextDocument *var2 = new Q3TextDocument(0); obj1.setDocument(var2); QCOMPARE(obj1.document(), var2); -#if QT_VERSION >= 0x040200 // Should've done as QTextEdit, and created a new document, if you setDocument(0). // Unfortunately it doesn't, and we cannot change it. obj1.setDocument((Q3TextDocument *)0); QCOMPARE(obj1.document(), var2); -#endif // delete var2; // No delete, since Q3TextEdit takes ownership } diff --git a/tests/auto/q3textstream/tst_q3textstream.cpp b/tests/auto/q3textstream/tst_q3textstream.cpp index 7932b79..b13e83f 100644 --- a/tests/auto/q3textstream/tst_q3textstream.cpp +++ b/tests/auto/q3textstream/tst_q3textstream.cpp @@ -346,9 +346,6 @@ void tst_Q3TextStream::operator_shiftleft() QFETCH( QString, device ); QFETCH( QString, encoding ); QFETCH( QByteArray, encoded ); -#if QT_VERSION < 0x040000 - encoded.resize( encoded.size() - 1 ); -#endif if ( device == "file" ) { QFile outFile( "qtextstream.out" ); @@ -400,9 +397,6 @@ void tst_Q3TextStream::operator_shiftright() QFETCH( int, intVal ); QFETCH( QString, stringVal ); QFETCH( QByteArray, encoded ); -#if QT_VERSION < 0x040000 - encoded.resize( encoded.size() - 1 ); -#endif if ( device == "file" ) { QFile outFile( "qtextstream.out" ); @@ -1295,7 +1289,6 @@ void tst_Q3TextStream::write_Q3CString( Q3TextStream *s ) void tst_Q3TextStream::task28319() { /* -#if QT_VERSION >= 0x040000 // Specific test for task 28319 QFile f("28319.txt"); if (f.open(IO_WriteOnly)) { @@ -1324,9 +1317,6 @@ void tst_Q3TextStream::task28319() } else { QVERIFY(FALSE); } -#else - QSKIP( "A minor bug we don't want to fix in 3.2.", SkipAll); -#endif */ } diff --git a/tests/auto/q3timeedit/tst_q3timeedit.cpp b/tests/auto/q3timeedit/tst_q3timeedit.cpp index 967bb51..1cdd87c 100644 --- a/tests/auto/q3timeedit/tst_q3timeedit.cpp +++ b/tests/auto/q3timeedit/tst_q3timeedit.cpp @@ -130,10 +130,8 @@ void tst_Q3TimeEdit::init() QTime maximumTime(23, 59, 59); testWidget->setMinValue(minimumTime); testWidget->setMaxValue(maximumTime); -#if QT_VERSION >= 0x030100 // We don't want the locale impacting on the test testWidget->setDisplay(Q3TimeEdit::Hours | Q3TimeEdit::Minutes | Q3TimeEdit::Seconds); -#endif testWidget->setTime(QTime(11, 0, 0)); // make sure we start with the hour focused @@ -174,10 +172,8 @@ void tst_Q3TimeEdit::valueRange() QTime maximumTime(maximumHours, maximumMinutes, maximumSeconds); testWidget->setMinValue(minimumTime); testWidget->setMaxValue(maximumTime); -#if QT_VERSION >= 0x030100 // We don't want the locale impacting on the test testWidget->setDisplay(Q3TimeEdit::Hours | Q3TimeEdit::Minutes | Q3TimeEdit::Seconds); -#endif // When pressing Key_Up we want to check it goes to the minimum time testWidget->setTime(maximumTime); diff --git a/tests/auto/q3valuelist/tst_q3valuelist.cpp b/tests/auto/q3valuelist/tst_q3valuelist.cpp index 8abeee2..b10664a 100644 --- a/tests/auto/q3valuelist/tst_q3valuelist.cpp +++ b/tests/auto/q3valuelist/tst_q3valuelist.cpp @@ -296,7 +296,6 @@ void tst_Q3ValueList::beginEnd() QCOMPARE( *(cit1), 2 ); QCOMPARE( *(cit2), 200 ); -#if (QT_VERSION >= 0x030200) Q3ValueList<int> b; b.append( 1 ); Q3ValueList<int> b2 = b; @@ -305,7 +304,6 @@ void tst_Q3ValueList::beginEnd() b2.append( 2 ); QVERIFY( b.constBegin() != b2.constBegin() ); QVERIFY( b2.constBegin() == b2.constBegin() ); -#endif } void tst_Q3ValueList::pushing() @@ -593,11 +591,7 @@ void tst_Q3ValueList::opStreamOut() class ListVerifier : public Q3ValueList<int> { public: -#if QT_VERSION < 0x040000 - void* pointer() { return sh; } -#else const int* pointer() const { return &*begin(); } -#endif }; void tst_Q3ValueList::shared() { diff --git a/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp index b613b81..c0ffea0 100644 --- a/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp +++ b/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp @@ -346,14 +346,11 @@ void tst_QAbstractItemModel::match() QCOMPARE(res.count(), 2); res = model.match(start, Qt::DisplayRole, QVariant(".*O.*"), -1, Qt::MatchRegExp | Qt::MatchCaseSensitive); QCOMPARE(res.count(), 0); - // MatchFixedString seems new in 4.2 -#if QT_VERSION >= 0x040200 res = model.match(start, Qt::DisplayRole, QVariant("BOAR"), -1, Qt::MatchFixedString); QCOMPARE(res.count(), 1); res = model.match(start, Qt::DisplayRole, QVariant("bat"), -1, Qt::MatchFixedString | Qt::MatchCaseSensitive); QCOMPARE(res.count(), 1); -#endif } typedef QPair<int, int> Position; @@ -582,7 +579,6 @@ void tst_QAbstractItemModel::dropMimeData_data() << (qStringTableRow("" , "" , "A")) << (qStringTableRow("" , "" , "B"))); } -#if QT_VERSION >= 0x040200 { QTest::newRow("2x 1x2 dropped at [3, 2] (different rows)") << (STRINGTABLE // source table @@ -624,7 +620,6 @@ void tst_QAbstractItemModel::dropMimeData_data() << (qStringTableRow("" , "" , "B")) << (qStringTableRow("" , "" , "H"))); } -#endif } void tst_QAbstractItemModel::dropMimeData() diff --git a/tests/auto/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/qabstractitemview/tst_qabstractitemview.cpp index 086c551..3a845e1 100644 --- a/tests/auto/qabstractitemview/tst_qabstractitemview.cpp +++ b/tests/auto/qabstractitemview/tst_qabstractitemview.cpp @@ -234,11 +234,8 @@ void tst_QAbstractItemView::getSetCheck() MyAbstractItemDelegate *var1 = new MyAbstractItemDelegate; obj1->setItemDelegate(var1); QCOMPARE((QAbstractItemDelegate*)var1, obj1->itemDelegate()); -#if QT_VERSION >= 0x040200 - // Itemviews in Qt < 4.2 have asserts for this. Qt >= 4.2 should handle this gracefully obj1->setItemDelegate((QAbstractItemDelegate *)0); QCOMPARE((QAbstractItemDelegate *)0, obj1->itemDelegate()); -#endif delete var1; // EditTriggers QAbstractItemView::editTriggers() @@ -279,26 +276,6 @@ void tst_QAbstractItemView::getSetCheck() obj1->setAlternatingRowColors(true); QCOMPARE(true, obj1->alternatingRowColors()); -#if QT_VERSION < 0x040200 - // int QAbstractItemView::horizontalStepsPerItem() - // void QAbstractItemView::setHorizontalStepsPerItem(int) - obj1->tst_setHorizontalStepsPerItem(0); - QCOMPARE(0, obj1->tst_horizontalStepsPerItem()); - obj1->tst_setHorizontalStepsPerItem(INT_MIN); - QCOMPARE(INT_MIN, obj1->tst_horizontalStepsPerItem()); - obj1->tst_setHorizontalStepsPerItem(INT_MAX); - QCOMPARE(INT_MAX, obj1->tst_horizontalStepsPerItem()); - - // int QAbstractItemView::verticalStepsPerItem() - // void QAbstractItemView::setVerticalStepsPerItem(int) - obj1->tst_setVerticalStepsPerItem(0); - QCOMPARE(0, obj1->tst_verticalStepsPerItem()); - obj1->tst_setVerticalStepsPerItem(INT_MIN); - QCOMPARE(INT_MIN, obj1->tst_verticalStepsPerItem()); - obj1->tst_setVerticalStepsPerItem(INT_MAX); - QCOMPARE(INT_MAX, obj1->tst_verticalStepsPerItem()); -#endif - // State QAbstractItemView::state() // void QAbstractItemView::setState(State) obj1->tst_setState(TestView::tst_State(TestView::NoState)); @@ -314,13 +291,11 @@ void tst_QAbstractItemView::getSetCheck() obj1->tst_setState(TestView::tst_State(TestView::CollapsingState)); QCOMPARE(TestView::tst_State(TestView::CollapsingState), obj1->tst_state()); -#if QT_VERSION >= 0x040200 // QWidget QAbstractScrollArea::viewport() // void setViewport(QWidget*) QWidget *vp = new QWidget; obj1->setViewport(vp); QCOMPARE(vp, obj1->viewport()); -#endif QCOMPARE(16, obj1->autoScrollMargin()); obj1->setAutoScrollMargin(20); diff --git a/tests/auto/qabstractslider/tst_qabstractslider.cpp b/tests/auto/qabstractslider/tst_qabstractslider.cpp index 9e3acb8..dc1c866 100644 --- a/tests/auto/qabstractslider/tst_qabstractslider.cpp +++ b/tests/auto/qabstractslider/tst_qabstractslider.cpp @@ -864,11 +864,7 @@ void tst_QAbstractSlider::wheelEvent() QVERIFY(applicationInstance->sendEvent(slider,&event)); QCOMPARE(slider->sliderPosition(),expectedSliderPosition); int expectedSignalCount = (initialSliderPosition == expectedSliderPosition) ? 0 : 1; -#if QT_VERSION >= 0x040200 QCOMPARE(spy1.count(), expectedSignalCount); -#else - QCOMPARE(spy1.count(), 0); -#endif QCOMPARE(spy2.count(), expectedSignalCount); if (expectedSignalCount) QVERIFY(actionTriggeredTimeStamp < valueChangedTimeStamp); diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp index d023557..dc52416 100644 --- a/tests/auto/qaccessibility/tst_qaccessibility.cpp +++ b/tests/auto/qaccessibility/tst_qaccessibility.cpp @@ -218,8 +218,6 @@ public: tst_QAccessibility(); virtual ~tst_QAccessibility(); - - public slots: void initTestCase(); void cleanupTestCase(); @@ -275,6 +273,7 @@ private slots: void accessibleName(); void treeWidgetTest(); void labelTest(); + void accelerators(); private: QWidget *createGUI(); @@ -408,15 +407,15 @@ public: QtTestAccessibleWidgetIface(QtTestAccessibleWidget *w): QAccessibleWidget(w) {} QString text(Text t, int control) const { - if (t == Help) - return QString::fromLatin1("Help yourself"); - return QAccessibleWidget::text(t, control); + if (t == Help) + return QString::fromLatin1("Help yourself"); + return QAccessibleWidget::text(t, control); } static QAccessibleInterface *ifaceFactory(const QString &key, QObject *o) { - if (key == "QtTestAccessibleWidget") - return new QtTestAccessibleWidgetIface(static_cast<QtTestAccessibleWidget*>(o)); - return 0; + if (key == "QtTestAccessibleWidget") + return new QtTestAccessibleWidgetIface(static_cast<QtTestAccessibleWidget*>(o)); + return 0; } }; #endif @@ -454,15 +453,15 @@ void tst_QAccessibility::cleanup() #ifdef QTEST_ACCESSIBILITY const EventList list = QTestAccessibility::events(); if (!list.isEmpty()) { - qWarning("%d accessibility event(s) were not handled in testfunction '%s':", list.count(), - QString(QTest::currentTestFunction()).toAscii().constData()); - for (int i = 0; i < list.count(); ++i) - qWarning(" %d: Object: %p Event: '%s' (%d) Child: %d", i + 1, list.at(i).object, - eventName(list.at(i).event).toAscii().constData(), list.at(i).event, list.at(i).child); + qWarning("%d accessibility event(s) were not handled in testfunction '%s':", list.count(), + QString(QTest::currentTestFunction()).toAscii().constData()); + for (int i = 0; i < list.count(); ++i) + qWarning(" %d: Object: %p Event: '%s' (%d) Child: %d", i + 1, list.at(i).object, + eventName(list.at(i).event).toAscii().constData(), list.at(i).event, list.at(i).child); } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -485,7 +484,7 @@ void tst_QAccessibility::eventTest() delete button; #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -504,7 +503,7 @@ void tst_QAccessibility::customWidget() delete iface; delete widget; #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -522,7 +521,7 @@ void tst_QAccessibility::deletedWidget() QVERIFY(!iface->isValid()); delete iface; #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -541,52 +540,52 @@ QWidget *tst_QAccessibility::createGUI() topLeft->setSpacing(2); grid->addWidget(topLeft, 0, 0); - Q3VButtonGroup *group1 = new Q3VButtonGroup("Title1:", topLeft, "group1"); - /*QPushButton *pb1 = */ new QPushButton("Button&1", group1, "pb1"); - Q3VButtonGroup *group2 = new Q3VButtonGroup("Title2:", topLeft, "group2"); - /*QPushButton *pb2 = */ new QPushButton("Button2", group2, "pb2"); + Q3VButtonGroup *group1 = new Q3VButtonGroup("Title1:", topLeft, "group1"); + /*QPushButton *pb1 = */ new QPushButton("Button&1", group1, "pb1"); + Q3VButtonGroup *group2 = new Q3VButtonGroup("Title2:", topLeft, "group2"); + /*QPushButton *pb2 = */ new QPushButton("Button2", group2, "pb2"); - Q3WidgetStack *stack = new Q3WidgetStack(topLeft, "stack"); - QLabel *page1 = new QLabel("Page 1", stack, "page1"); - stack->addWidget(page1); - QLabel *page2 = new QLabel("Page 2", stack, "page2"); - stack->addWidget(page2); - QLabel *page3 = new QLabel("Page 3", stack, "page3"); - stack->addWidget(page3); + Q3WidgetStack *stack = new Q3WidgetStack(topLeft, "stack"); + QLabel *page1 = new QLabel("Page 1", stack, "page1"); + stack->addWidget(page1); + QLabel *page2 = new QLabel("Page 2", stack, "page2"); + stack->addWidget(page2); + QLabel *page3 = new QLabel("Page 3", stack, "page3"); + stack->addWidget(page3); // topRight - controlling Q3VBox *topRight= new Q3VBox(toplevel, "topRight"); grid->addWidget(topRight, 0, 1); - QPushButton *pbOk = new QPushButton("Ok", topRight, "pbOk" ); - pbOk->setDefault(TRUE); - QSlider *slider = new QSlider(Qt::Horizontal, topRight, "slider"); - QLCDNumber *sliderLcd = new QLCDNumber(topRight, "sliderLcd"); - QSpinBox *spinBox = new QSpinBox(topRight, "spinBox"); + QPushButton *pbOk = new QPushButton("Ok", topRight, "pbOk" ); + pbOk->setDefault(TRUE); + QSlider *slider = new QSlider(Qt::Horizontal, topRight, "slider"); + QLCDNumber *sliderLcd = new QLCDNumber(topRight, "sliderLcd"); + QSpinBox *spinBox = new QSpinBox(topRight, "spinBox"); - connect(pbOk, SIGNAL(clicked()), toplevel, SLOT(close()) ); - connect(slider, SIGNAL(valueChanged(int)), sliderLcd, SLOT(display(int))); - connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int))); + connect(pbOk, SIGNAL(clicked()), toplevel, SLOT(close()) ); + connect(slider, SIGNAL(valueChanged(int)), sliderLcd, SLOT(display(int))); + connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int))); - spinBox->setValue(50); + spinBox->setValue(50); // bottomLeft - labeling and controlling Q3HBox *bottomLeft = new Q3HBox(toplevel, "bottomLeft"); grid->addWidget(bottomLeft, 1, 0); - QLabel *label = new QLabel("This is a &lineedit:", bottomLeft, "label"); - QLineEdit *lineedit = new QLineEdit(bottomLeft, "lineedit"); - label->setBuddy(lineedit); - QLabel *label2 = new QLabel(bottomLeft, "label2"); + QLabel *label = new QLabel("This is a &lineedit:", bottomLeft, "label"); + QLineEdit *lineedit = new QLineEdit(bottomLeft, "lineedit"); + label->setBuddy(lineedit); + QLabel *label2 = new QLabel(bottomLeft, "label2"); - connect(lineedit, SIGNAL(textChanged(const QString&)), label2, SLOT(setText(const QString&))); + connect(lineedit, SIGNAL(textChanged(const QString&)), label2, SLOT(setText(const QString&))); - Q3VButtonGroup *radiogroup = new Q3VButtonGroup("Exclusive &choices:", bottomLeft, "radiogroup"); - QLineEdit *frequency = new QLineEdit(radiogroup, "frequency"); - frequency->setText("100 Mhz"); - QRadioButton *radioAM = new QRadioButton("&AM", radiogroup, "radioAM"); - /* QRadioButton *radioFM = */ new QRadioButton("&FM", radiogroup, "radioFM"); - /* QRadioButton *radioSW = */ new QRadioButton("&Shortwave", radiogroup, "radioSW"); + Q3VButtonGroup *radiogroup = new Q3VButtonGroup("Exclusive &choices:", bottomLeft, "radiogroup"); + QLineEdit *frequency = new QLineEdit(radiogroup, "frequency"); + frequency->setText("100 Mhz"); + QRadioButton *radioAM = new QRadioButton("&AM", radiogroup, "radioAM"); + /* QRadioButton *radioFM = */ new QRadioButton("&FM", radiogroup, "radioFM"); + /* QRadioButton *radioSW = */ new QRadioButton("&Shortwave", radiogroup, "radioSW"); // bottomRight - ### empty Q3HBox *bottomRight = new Q3HBox(toplevel, "bottomRight"); @@ -625,23 +624,23 @@ void tst_QAccessibility::childAt() QObjectList children = toplevel->queryList("QWidget", 0, 0, 0); for (int c = 1; c <= children.count(); ++c) { - QWidget *child = qobject_cast<QWidget*>(children.at(c-1)); - QAccessibleInterface *acc_child = QAccessible::queryAccessibleInterface(child); - QVERIFY(acc_child); - QCOMPARE(acc_child->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, QAccessible::Child); - - QPoint center(child->mapToGlobal(child->rect().center())); - QRect childRect(child->geometry()); - childRect.moveCenter(center); - - QCOMPARE(acc_child->rect(0), childRect); - QCOMPARE(acc_toplevel->childAt(childRect.center().x(), childRect.center().y()), c); - QCOMPARE(acc_toplevel->childAt(childRect.left(), childRect.top()), c); - QCOMPARE(acc_toplevel->childAt(childRect.left(), childRect.bottom()), c); - QCOMPARE(acc_toplevel->childAt(childRect.right(), childRect.top()), c); - QCOMPARE(acc_toplevel->childAt(childRect.right(), childRect.bottom()), c); - - QCOMPARE(acc_toplevel->indexOfChild(acc_child), c); + QWidget *child = qobject_cast<QWidget*>(children.at(c-1)); + QAccessibleInterface *acc_child = QAccessible::queryAccessibleInterface(child); + QVERIFY(acc_child); + QCOMPARE(acc_child->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, QAccessible::Child); + + QPoint center(child->mapToGlobal(child->rect().center())); + QRect childRect(child->geometry()); + childRect.moveCenter(center); + + QCOMPARE(acc_child->rect(0), childRect); + QCOMPARE(acc_toplevel->childAt(childRect.center().x(), childRect.center().y()), c); + QCOMPARE(acc_toplevel->childAt(childRect.left(), childRect.top()), c); + QCOMPARE(acc_toplevel->childAt(childRect.left(), childRect.bottom()), c); + QCOMPARE(acc_toplevel->childAt(childRect.right(), childRect.top()), c); + QCOMPARE(acc_toplevel->childAt(childRect.right(), childRect.bottom()), c); + + QCOMPARE(acc_toplevel->indexOfChild(acc_child), c); delete acc_child; } @@ -649,7 +648,7 @@ void tst_QAccessibility::childAt() delete toplevel; QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif #endif // !QT3_SUPPORT } @@ -693,7 +692,7 @@ void tst_QAccessibility::childCount() delete toplevel; QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif #endif // !QT3_SUPPORT } @@ -715,33 +714,33 @@ void tst_QAccessibility::relationTo() QAccessibleInterface *acc_toplevel = QAccessible::queryAccessibleInterface(toplevel); - QAccessibleInterface *acc_topLeft = QAccessible::queryAccessibleInterface(topLeft); - QAccessibleInterface *acc_group1 = QAccessible::queryAccessibleInterface(topLeft->child("group1")); - QVERIFY(topLeft->child("group1")); - QAccessibleInterface *acc_pb1 = QAccessible::queryAccessibleInterface(topLeft->child("group1")->child("pb1")); - QAccessibleInterface *acc_group2 = QAccessible::queryAccessibleInterface(topLeft->child("group2")); - QAccessibleInterface *acc_pb2 = 0; - QAccessibleInterface *acc_stack = QAccessible::queryAccessibleInterface(topLeft->child("stack")); - QAccessibleInterface *acc_page1 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page1")); - QAccessibleInterface *acc_page2 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page2")); - QAccessibleInterface *acc_page3 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page3")); - QAccessibleInterface *acc_topRight = QAccessible::queryAccessibleInterface(topRight); - QAccessibleInterface *acc_pbOk = QAccessible::queryAccessibleInterface(topRight->child("pbOk")); - QAccessibleInterface *acc_slider = QAccessible::queryAccessibleInterface(topRight->child("slider")); - QAccessibleInterface *acc_spinBox = QAccessible::queryAccessibleInterface(topRight->child("spinBox")); - QAccessibleInterface *acc_sliderLcd = QAccessible::queryAccessibleInterface(topRight->child("sliderLcd")); - - QAccessibleInterface *acc_bottomLeft = QAccessible::queryAccessibleInterface(bottomLeft); - QAccessibleInterface *acc_label = QAccessible::queryAccessibleInterface(bottomLeft->child("label")); - QAccessibleInterface *acc_lineedit = QAccessible::queryAccessibleInterface(bottomLeft->child("lineedit")); - QAccessibleInterface *acc_label2 = QAccessible::queryAccessibleInterface(bottomLeft->child("label2")); - QAccessibleInterface *acc_radiogroup = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")); - QAccessibleInterface *acc_radioAM = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioAM")); - QAccessibleInterface *acc_radioFM = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioFM")); - QAccessibleInterface *acc_radioSW = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioSW")); - QAccessibleInterface *acc_frequency = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("frequency")); - - QAccessibleInterface *acc_bottomRight = QAccessible::queryAccessibleInterface(bottomRight); + QAccessibleInterface *acc_topLeft = QAccessible::queryAccessibleInterface(topLeft); + QAccessibleInterface *acc_group1 = QAccessible::queryAccessibleInterface(topLeft->child("group1")); + QVERIFY(topLeft->child("group1")); + QAccessibleInterface *acc_pb1 = QAccessible::queryAccessibleInterface(topLeft->child("group1")->child("pb1")); + QAccessibleInterface *acc_group2 = QAccessible::queryAccessibleInterface(topLeft->child("group2")); + QAccessibleInterface *acc_pb2 = 0; + QAccessibleInterface *acc_stack = QAccessible::queryAccessibleInterface(topLeft->child("stack")); + QAccessibleInterface *acc_page1 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page1")); + QAccessibleInterface *acc_page2 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page2")); + QAccessibleInterface *acc_page3 = QAccessible::queryAccessibleInterface(topLeft->child("stack")->child("page3")); + QAccessibleInterface *acc_topRight = QAccessible::queryAccessibleInterface(topRight); + QAccessibleInterface *acc_pbOk = QAccessible::queryAccessibleInterface(topRight->child("pbOk")); + QAccessibleInterface *acc_slider = QAccessible::queryAccessibleInterface(topRight->child("slider")); + QAccessibleInterface *acc_spinBox = QAccessible::queryAccessibleInterface(topRight->child("spinBox")); + QAccessibleInterface *acc_sliderLcd = QAccessible::queryAccessibleInterface(topRight->child("sliderLcd")); + + QAccessibleInterface *acc_bottomLeft = QAccessible::queryAccessibleInterface(bottomLeft); + QAccessibleInterface *acc_label = QAccessible::queryAccessibleInterface(bottomLeft->child("label")); + QAccessibleInterface *acc_lineedit = QAccessible::queryAccessibleInterface(bottomLeft->child("lineedit")); + QAccessibleInterface *acc_label2 = QAccessible::queryAccessibleInterface(bottomLeft->child("label2")); + QAccessibleInterface *acc_radiogroup = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")); + QAccessibleInterface *acc_radioAM = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioAM")); + QAccessibleInterface *acc_radioFM = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioFM")); + QAccessibleInterface *acc_radioSW = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("radioSW")); + QAccessibleInterface *acc_frequency = QAccessible::queryAccessibleInterface(bottomLeft->child("radiogroup")->child("frequency")); + + QAccessibleInterface *acc_bottomRight = QAccessible::queryAccessibleInterface(bottomRight); QVERIFY(acc_toplevel); QVERIFY(acc_topLeft); @@ -768,49 +767,49 @@ void tst_QAccessibility::relationTo() // hierachy relations QCOMPARE(acc_toplevel->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, - QAccessible::Self); + QAccessible::Self); QCOMPARE(acc_toplevel->relationTo(1, acc_toplevel, 0) & QAccessible::HierarchyMask, - QAccessible::Child); + QAccessible::Child); QCOMPARE(acc_toplevel->relationTo(0, acc_toplevel, 1) & QAccessible::HierarchyMask, - QAccessible::Ancestor); + QAccessible::Ancestor); QCOMPARE(acc_toplevel->relationTo(0, acc_topLeft, 0) & QAccessible::HierarchyMask, - QAccessible::Ancestor); + QAccessible::Ancestor); QCOMPARE(acc_toplevel->relationTo(0, acc_topRight, 0) & QAccessible::HierarchyMask, - QAccessible::Ancestor); + QAccessible::Ancestor); QCOMPARE(acc_toplevel->relationTo(0, acc_bottomLeft, 0) & QAccessible::HierarchyMask, - QAccessible::Ancestor); + QAccessible::Ancestor); QCOMPARE(acc_toplevel->relationTo(0, acc_bottomRight, 0) & QAccessible::HierarchyMask, - QAccessible::Ancestor); + QAccessible::Ancestor); QCOMPARE(acc_toplevel->relationTo(0, acc_group1, 0) & QAccessible::HierarchyMask, - QAccessible::Ancestor); + QAccessible::Ancestor); QCOMPARE(acc_toplevel->relationTo(0, acc_page1, 0) & QAccessible::HierarchyMask, - QAccessible::Ancestor); + QAccessible::Ancestor); QCOMPARE(acc_group1->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, - QAccessible::Descendent); + QAccessible::Descendent); QCOMPARE(acc_stack->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, - QAccessible::Descendent); + QAccessible::Descendent); QCOMPARE(acc_page1->relationTo(0, acc_stack, 0) & QAccessible::HierarchyMask, - QAccessible::Child); + QAccessible::Child); QCOMPARE(acc_page1->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, - QAccessible::Descendent); + QAccessible::Descendent); QCOMPARE(acc_topLeft->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, - QAccessible::Child); + QAccessible::Child); QCOMPARE(acc_topRight->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, - QAccessible::Child); + QAccessible::Child); QCOMPARE(acc_bottomLeft->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, - QAccessible::Child); + QAccessible::Child); QCOMPARE(acc_bottomRight->relationTo(0, acc_toplevel, 0) & QAccessible::HierarchyMask, - QAccessible::Child); + QAccessible::Child); QCOMPARE(acc_topLeft->relationTo(0, acc_topRight, 0) & QAccessible::HierarchyMask, - QAccessible::Sibling); + QAccessible::Sibling); QCOMPARE(acc_topLeft->relationTo(0, acc_bottomLeft, 0) & QAccessible::HierarchyMask, - QAccessible::Sibling); + QAccessible::Sibling); QCOMPARE(acc_topLeft->relationTo(0, acc_bottomRight, 0) & QAccessible::HierarchyMask, - QAccessible::Sibling); + QAccessible::Sibling); QCOMPARE(acc_pb1->relationTo(0, acc_pb2, 0), QAccessible::Unrelated); @@ -835,25 +834,25 @@ void tst_QAccessibility::relationTo() // logical relations - focus QCOMPARE(acc_radioAM->relationTo(0, acc_radioFM, 0) & QAccessible::FocusChild, - QAccessible::Unrelated); + QAccessible::Unrelated); QCOMPARE(acc_radioAM->relationTo(0, acc_radiogroup, 0) & QAccessible::FocusChild, - QAccessible::FocusChild); + QAccessible::FocusChild); QCOMPARE(acc_radioAM->relationTo(0, acc_bottomLeft, 0) & QAccessible::FocusChild, - QAccessible::FocusChild); + QAccessible::FocusChild); QCOMPARE(acc_radioAM->relationTo(0, acc_topLeft, 0) & QAccessible::FocusChild, - QAccessible::Unrelated); + QAccessible::Unrelated); QCOMPARE(acc_radioAM->relationTo(0, acc_toplevel, 0) & QAccessible::FocusChild, - QAccessible::FocusChild); + QAccessible::FocusChild); // logical relations - labels QCOMPARE(acc_label->relationTo(0, acc_lineedit, 0) & QAccessible::LogicalMask, - QAccessible::Label); + QAccessible::Label); QCOMPARE(acc_lineedit->relationTo(0, acc_label, 0) & QAccessible::LogicalMask, - QAccessible::Labelled); + QAccessible::Labelled); QCOMPARE(acc_label->relationTo(0, acc_radiogroup, 0) & QAccessible::LogicalMask, - QAccessible::Unrelated); + QAccessible::Unrelated); QCOMPARE(acc_lineedit->relationTo(0, acc_lineedit, 0) & QAccessible::LogicalMask, - QAccessible::Unrelated); + QAccessible::Unrelated); QEXPECT_FAIL("", "Make me accessible", Continue); QCOMPARE(acc_radiogroup->relationTo(0, acc_radioAM, 0) & QAccessible::LogicalMask, @@ -865,21 +864,21 @@ void tst_QAccessibility::relationTo() QCOMPARE(acc_radiogroup->relationTo(0, acc_radioSW, 0) & QAccessible::LogicalMask, QAccessible::Label | QAccessible::Controlled); QCOMPARE(acc_radiogroup->relationTo(0, acc_frequency, 0) & QAccessible::LogicalMask, - QAccessible::Label); + QAccessible::Label); QCOMPARE(acc_frequency->relationTo(0, acc_radiogroup, 0) & QAccessible::LogicalMask, - QAccessible::Labelled); + QAccessible::Labelled); QCOMPARE(acc_radiogroup->relationTo(0, acc_lineedit, 0) & QAccessible::LogicalMask, - QAccessible::Unrelated); + QAccessible::Unrelated); // logical relations - controller QCOMPARE(acc_pbOk->relationTo(0, acc_toplevel, 0) & QAccessible::LogicalMask, - QAccessible::Controller); + QAccessible::Controller); QCOMPARE(acc_slider->relationTo(0, acc_sliderLcd, 0) & QAccessible::LogicalMask, - QAccessible::Controller); + QAccessible::Controller); QCOMPARE(acc_spinBox->relationTo(0, acc_slider, 0) & QAccessible::LogicalMask, - QAccessible::Controller); + QAccessible::Controller); QCOMPARE(acc_lineedit->relationTo(0, acc_label2, 0) & QAccessible::LogicalMask, - QAccessible::Controller); + QAccessible::Controller); delete acc_toplevel; delete acc_topLeft; @@ -910,7 +909,7 @@ void tst_QAccessibility::relationTo() QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif #endif // !QT3_SUPPORT } @@ -933,8 +932,8 @@ void tst_QAccessibility::navigateGeometric() QtTestAccessibleWidget *aw = 0; int i; for (i = 0; i < 360; i += skip) { - aw = new QtTestAccessibleWidget(w, QString::number(i).toLatin1()); - aw->move( int(200.0 + 100.0 * sin(step * (double)i)), int(200.0 + 100.0 * cos(step * (double)i)) ); + aw = new QtTestAccessibleWidget(w, QString::number(i).toLatin1()); + aw->move( int(200.0 + 100.0 * sin(step * (double)i)), int(200.0 + 100.0 * cos(step * (double)i)) ); } aw = new QtTestAccessibleWidget(w, "Earth"); @@ -949,25 +948,24 @@ void tst_QAccessibility::navigateGeometric() QTest::qWait(100); #endif - // let one widget rotate around center for (i = 0; i < 360; i+=skip) { - aw->move( int(200.0 + 75.0 * sin(step * (double)i)), int(200.0 + 75.0 * cos(step * (double)i)) ); - - if (i < 45 || i > 315) { - QCOMPARE(iface->navigate(QAccessible::Down, 0, &target), 0); - } else if ( i < 135 ) { - QCOMPARE(iface->navigate(QAccessible::Right, 0, &target), 0); - } else if ( i < 225 ) { - QCOMPARE(iface->navigate(QAccessible::Up, 0, &target), 0); - } else { - QCOMPARE(iface->navigate(QAccessible::Left, 0, &target), 0); + aw->move( int(200.0 + 75.0 * sin(step * (double)i)), int(200.0 + 75.0 * cos(step * (double)i)) ); + + if (i < 45 || i > 315) { + QCOMPARE(iface->navigate(QAccessible::Down, 0, &target), 0); + } else if ( i < 135 ) { + QCOMPARE(iface->navigate(QAccessible::Right, 0, &target), 0); + } else if ( i < 225 ) { + QCOMPARE(iface->navigate(QAccessible::Up, 0, &target), 0); + } else { + QCOMPARE(iface->navigate(QAccessible::Left, 0, &target), 0); } - QVERIFY(target); - QVERIFY(target->isValid()); - QVERIFY(target->object()); - QCOMPARE(target->object()->objectName(), aw->objectName()); + QVERIFY(target); + QVERIFY(target->isValid()); + QVERIFY(target->object()); + QCOMPARE(target->object()->objectName(), aw->objectName()); delete target; target = 0; } @@ -1015,7 +1013,7 @@ void tst_QAccessibility::navigateGeometric() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -1049,7 +1047,7 @@ void tst_QAccessibility::navigateSlider() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -1091,43 +1089,43 @@ void tst_QAccessibility::navigateCovered() QVERIFY(iface3 == 0); for (int loop = 0; loop < 2; ++loop) { - for (int x = 0; x < w->width(); ++x) { - for (int y = 0; y < w->height(); ++y) { - w1->move(x, y); - if (w1->geometry().intersects(w2->geometry())) { - QVERIFY(iface1->relationTo(0, iface2, 0) & QAccessible::Covers); - QVERIFY(iface2->relationTo(0, iface1, 0) & QAccessible::Covered); - QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), 0); - QVERIFY(iface3 != 0); - QVERIFY(iface3->isValid()); - QCOMPARE(iface3->object(), iface2->object()); + for (int x = 0; x < w->width(); ++x) { + for (int y = 0; y < w->height(); ++y) { + w1->move(x, y); + if (w1->geometry().intersects(w2->geometry())) { + QVERIFY(iface1->relationTo(0, iface2, 0) & QAccessible::Covers); + QVERIFY(iface2->relationTo(0, iface1, 0) & QAccessible::Covered); + QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), 0); + QVERIFY(iface3 != 0); + QVERIFY(iface3->isValid()); + QCOMPARE(iface3->object(), iface2->object()); delete iface3; iface3 = 0; - QCOMPARE(iface2->navigate(QAccessible::Covers, 1, &iface3), 0); - QVERIFY(iface3 != 0); - QVERIFY(iface3->isValid()); - QCOMPARE(iface3->object(), iface1->object()); + QCOMPARE(iface2->navigate(QAccessible::Covers, 1, &iface3), 0); + QVERIFY(iface3 != 0); + QVERIFY(iface3->isValid()); + QCOMPARE(iface3->object(), iface1->object()); delete iface3; iface3 = 0; - } else { - QVERIFY(!(iface1->relationTo(0, iface2, 0) & QAccessible::Covers)); - QVERIFY(!(iface2->relationTo(0, iface1, 0) & QAccessible::Covered)); - QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), -1); - QVERIFY(iface3 == 0); - QCOMPARE(iface1->navigate(QAccessible::Covers, 1, &iface3), -1); - QVERIFY(iface3 == 0); - QCOMPARE(iface2->navigate(QAccessible::Covered, 1, &iface3), -1); - QVERIFY(iface3 == 0); - QCOMPARE(iface2->navigate(QAccessible::Covers, 1, &iface3), -1); - QVERIFY(iface3 == 0); - } - } - } - if (!loop) { - // switch children for second loop - w2->raise(); - QAccessibleInterface *temp = iface1; - iface1 = iface2; - iface2 = temp; - } + } else { + QVERIFY(!(iface1->relationTo(0, iface2, 0) & QAccessible::Covers)); + QVERIFY(!(iface2->relationTo(0, iface1, 0) & QAccessible::Covered)); + QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), -1); + QVERIFY(iface3 == 0); + QCOMPARE(iface1->navigate(QAccessible::Covers, 1, &iface3), -1); + QVERIFY(iface3 == 0); + QCOMPARE(iface2->navigate(QAccessible::Covered, 1, &iface3), -1); + QVERIFY(iface3 == 0); + QCOMPARE(iface2->navigate(QAccessible::Covers, 1, &iface3), -1); + QVERIFY(iface3 == 0); + } + } + } + if (!loop) { + // switch children for second loop + w2->raise(); + QAccessibleInterface *temp = iface1; + iface1 = iface2; + iface2 = temp; + } } delete iface1; iface1 = 0; delete iface2; iface2 = 0; @@ -1159,7 +1157,7 @@ void tst_QAccessibility::navigateCovered() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -1262,7 +1260,7 @@ void tst_QAccessibility::navigateHierarchy() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -1277,11 +1275,11 @@ void tst_QAccessibility::navigateControllers() #ifdef QTEST_ACCESSIBILITY { Q3VBox vbox; - QSlider slider(&vbox); - QSpinBox spinBox(&vbox); - QLCDNumber lcd1(&vbox); - QLCDNumber lcd2(&vbox); - QLabel label(&vbox); + QSlider slider(&vbox); + QSpinBox spinBox(&vbox); + QLCDNumber lcd1(&vbox); + QLCDNumber lcd2(&vbox); + QLabel label(&vbox); vbox.show(); slider.setObjectName("slider"); @@ -1358,7 +1356,7 @@ void tst_QAccessibility::navigateControllers() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif #endif // !QT3_SUPPORT } @@ -1373,24 +1371,24 @@ void tst_QAccessibility::navigateLabels() Q3VBox vbox; Q3HBox hbox(&vbox); - QLabel label(&hbox); + QLabel label(&hbox); label.setText("This is a lineedit:"); - QLineEdit lineedit(&hbox); + QLineEdit lineedit(&hbox); label.setBuddy(&lineedit); Q3VButtonGroup groupbox(&vbox); groupbox.setTitle("Be my children!"); QRadioButton radio(&groupbox); - QLabel label2(&groupbox); + QLabel label2(&groupbox); label2.setText("Another lineedit:"); - QLineEdit lineedit2(&groupbox); + QLineEdit lineedit2(&groupbox); label2.setBuddy(&lineedit2); Q3GroupBox groupbox2(&groupbox); groupbox2.setTitle("Some grand-children"); - QLineEdit grandchild(&groupbox2); + QLineEdit grandchild(&groupbox2); Q3GroupBox border(&vbox); - QLineEdit lineedit3(&border); + QLineEdit lineedit3(&border); vbox.show(); QTestAccessibility::clearEvents(); @@ -1491,7 +1489,7 @@ void tst_QAccessibility::navigateLabels() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif #endif // !QT3_SUPPORT } @@ -1570,7 +1568,7 @@ void tst_QAccessibility::accessibleName() delete toplevel; QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -1677,7 +1675,7 @@ void tst_QAccessibility::text() QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif #endif // !QT3_SUPPORT } @@ -1713,7 +1711,7 @@ void tst_QAccessibility::setText() QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif #endif //QT3_SUPPORT } @@ -1748,7 +1746,7 @@ void tst_QAccessibility::hideShowTest() delete window; QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -1785,7 +1783,7 @@ void tst_QAccessibility::userActionCount() QCOMPARE(test->userActionCount(-1), 0); delete test; test = 0; #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -1810,7 +1808,7 @@ void tst_QAccessibility::actionText() delete test; test = 0; #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -1819,7 +1817,7 @@ void tst_QAccessibility::doAction() #ifdef QTEST_ACCESSIBILITY QSKIP("TODO: Implement me", SkipAll); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -2006,7 +2004,7 @@ void tst_QAccessibility::buttonTest() QTestAccessibility::clearEvents(); #else -// QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); +// QSKIP("Test needs accessibility support.", SkipAll); QSKIP("No action interface in Qt 4 yet.", SkipAll); #endif } @@ -2206,7 +2204,7 @@ void tst_QAccessibility::sliderTest() QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif #endif //!QT3_SUPPORT } @@ -2304,7 +2302,7 @@ void tst_QAccessibility::scrollBarTest() QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -2348,7 +2346,7 @@ void tst_QAccessibility::tabTest() delete interface; QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -2536,8 +2534,6 @@ void tst_QAccessibility::menuTest() } delete iface; - - // "New" item entry = interface->navigate(QAccessible::Child, 1, &iface); QCOMPARE(entry, 0); @@ -2568,11 +2564,6 @@ void tst_QAccessibility::menuTest() delete iface; - - -#if QT_VERSION < 0x040102 - QEXPECT_FAIL("", "Submenus don't open, task 99301", Continue); -#endif // move mouse pointer away, since that might influence the // subsequent tests QTest::mouseMove(&mw, QPoint(-1, -1)); @@ -2582,9 +2573,6 @@ void tst_QAccessibility::menuTest() interface->doAction(QAccessible::DefaultAction, 1); QTestEventLoop::instance().enterLoop(2); -#if defined (Q_OS_WIN) && QT_VERSION < 0x040300 && !defined(Q_OS_WINCE) - QEXPECT_FAIL("", "Don't expect the File menu to be visible in 4.2", Continue); -#endif QVERIFY(file->isVisible()); QVERIFY(fileNew->isVisible()); QVERIFY(!edit->isVisible()); @@ -2592,8 +2580,8 @@ void tst_QAccessibility::menuTest() QTestAccessibility::clearEvents(); mw.hide(); - - + + // Do not crash if the menu don't have a parent QMenu *menu = new QMenu; menu->addAction(QLatin1String("one")); @@ -2607,7 +2595,7 @@ void tst_QAccessibility::menuTest() delete iface2; delete iface; delete menu; - + } QTestAccessibility::clearEvents(); #else @@ -2638,7 +2626,7 @@ void tst_QAccessibility::spinBoxTest() delete spinBox; QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -2665,7 +2653,7 @@ void tst_QAccessibility::doubleSpinBoxTest() delete doubleSpinBox; QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -2687,7 +2675,7 @@ void tst_QAccessibility::textEditTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -2711,7 +2699,7 @@ void tst_QAccessibility::textBrowserTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -2784,7 +2772,7 @@ void tst_QAccessibility::listViewTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -2841,7 +2829,7 @@ void tst_QAccessibility::mdiAreaTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -2971,7 +2959,7 @@ void tst_QAccessibility::mdiSubWindowTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -3036,7 +3024,7 @@ void tst_QAccessibility::lineEditTest() delete toplevel; QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -3097,7 +3085,7 @@ void tst_QAccessibility::workspaceTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -3217,7 +3205,7 @@ void tst_QAccessibility::dialogButtonBoxTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -3266,7 +3254,7 @@ void tst_QAccessibility::dialTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -3280,7 +3268,7 @@ void tst_QAccessibility::rubberBandTest() delete interface; QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -3445,7 +3433,7 @@ void tst_QAccessibility::abstractScrollAreaTest() QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -3466,7 +3454,7 @@ void tst_QAccessibility::scrollAreaTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -3511,7 +3499,7 @@ void tst_QAccessibility::tableWidgetTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -3629,7 +3617,7 @@ void tst_QAccessibility::tableViewTest() QCOMPARE(client->role(0), QAccessible::Client); QRect globalRect = client->rect(0); QVERIFY(globalRect.isValid()); - // make sure we don't hit the vertical header ##### + // make sure we don't hit the vertical header ##### QPoint p = globalRect.topLeft() + QPoint(8, 8); p.ry() += 50 * (y - 1); p.rx() += 100 * (x - 1); @@ -3677,7 +3665,7 @@ void tst_QAccessibility::tableViewTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -3778,7 +3766,7 @@ void tst_QAccessibility::calendarWidgetTest() } QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif #endif // QT_NO_CALENDARWIDGET } @@ -3856,7 +3844,7 @@ void tst_QAccessibility::dockWidgetTest() delete mw; QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif #endif // QT_NO_DOCKWIDGET } @@ -3902,7 +3890,7 @@ void tst_QAccessibility::pushButtonTest() delete toplevel; QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif #endif //QT3_SUPPORT } @@ -3949,7 +3937,7 @@ void tst_QAccessibility::comboBoxTest() QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -3988,13 +3976,12 @@ void tst_QAccessibility::treeWidgetTest() QCOMPARE(entry, 0); QCOMPARE(accTreeItem2->text(QAccessible::Name, 0), QLatin1String("row: 1")); - - // test selected/focused state + // test selected/focused state QItemSelectionModel *selModel = tree->selectionModel(); QVERIFY(selModel); selModel->select(QItemSelection(tree->model()->index(0, 0), tree->model()->index(3, 0)), QItemSelectionModel::Select); selModel->setCurrentIndex(tree->model()->index(1, 0), QItemSelectionModel::Current); - + for (int i = 1; i < 10 ; ++i) { QAccessible::State expected; if (i <= 5 && i >= 2) @@ -4014,10 +4001,9 @@ void tst_QAccessibility::treeWidgetTest() delete acc; delete w; - QTestAccessibility::clearEvents(); #else - QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); + QSKIP("Test needs accessibility support.", SkipAll); #endif } @@ -4046,6 +4032,45 @@ void tst_QAccessibility::labelTest() #endif } +void tst_QAccessibility::accelerators() +{ +#ifdef QTEST_ACCESSIBILITY + QWidget *window = new QWidget; + QHBoxLayout *lay = new QHBoxLayout(window); + QLabel *label = new QLabel(tr("&Line edit"), window); + QLineEdit *le = new QLineEdit(window); + lay->addWidget(label); + lay->addWidget(le); + label->setBuddy(le); + + window->show(); + + QAccessibleInterface *accLineEdit = QAccessible::queryAccessibleInterface(le); + QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString(QKeySequence(Qt::ALT) + QLatin1String("L"))); + label->setText(tr("Q &")); + QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString()); + label->setText(tr("Q &&")); + QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString()); + label->setText(tr("Q && A")); + QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString()); + label->setText(tr("Q &&&A")); + QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString(QKeySequence(Qt::ALT) + QLatin1String("A"))); + label->setText(tr("Q &&A")); + QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString()); + label->setText(tr("Q &A&B")); + QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString(QKeySequence(Qt::ALT) + QLatin1String("A"))); + +#if defined(Q_WS_X11) + qt_x11_wait_for_window_manager(window); +#endif + QTest::qWait(100); + delete window; + QTestAccessibility::clearEvents(); +#else + QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll); +#endif +} + QTEST_MAIN(tst_QAccessibility) diff --git a/tests/auto/qalgorithms/tst_qalgorithms.cpp b/tests/auto/qalgorithms/tst_qalgorithms.cpp index 9c2fa50..423cf69 100644 --- a/tests/auto/qalgorithms/tst_qalgorithms.cpp +++ b/tests/auto/qalgorithms/tst_qalgorithms.cpp @@ -574,10 +574,8 @@ void tst_QAlgorithms::test_qLowerBound() QCOMPARE(qLowerBound(data.constBegin(), data.constEnd(), resultValue), data.constBegin() + resultIndex); QCOMPARE(qLowerBound(data.begin(), data.end(), resultValue), data.begin() + resultIndex); -#if QT_VERSION >= 0x040200 QCOMPARE(qLowerBound(data, resultValue), data.constBegin() + resultIndex); QCOMPARE(qLowerBound(data.constBegin(), data.constEnd(), resultValue, qLess<int>()), data.constBegin() + resultIndex); -#endif } void tst_QAlgorithms::test_qUpperBound_data() @@ -597,10 +595,8 @@ void tst_QAlgorithms::test_qUpperBound() QCOMPARE(qUpperBound(data.constBegin(), data.constEnd(), resultValue), data.constBegin() + resultIndex); QCOMPARE(qUpperBound(data.begin(), data.end(), resultValue), data.begin() + resultIndex); -#if QT_VERSION >= 0x040200 QCOMPARE(qUpperBound(data, resultValue), data.constBegin() + resultIndex); QCOMPARE(qUpperBound(data.constBegin(), data.constEnd(), resultValue, qLess<int>()), data.constBegin() + resultIndex); -#endif } void tst_QAlgorithms::test_qBinaryFind_data() @@ -618,10 +614,8 @@ void tst_QAlgorithms::test_qBinaryFind() QCOMPARE(*qBinaryFind(data.constBegin(), data.constEnd(), resultValue), resultValue); QCOMPARE(*qBinaryFind(data.begin(), data.end(), resultValue), resultValue); -#if QT_VERSION >= 0x040200 QCOMPARE(*qBinaryFind(data, resultValue), resultValue); QCOMPARE(*qBinaryFind(data.constBegin(), data.constEnd(), resultValue, qLess<int>()), resultValue); -#endif } void tst_QAlgorithms::qBinaryFindOneEntry() @@ -802,7 +796,6 @@ void tst_QAlgorithms::stableSortCorrectnessTest() void tst_QAlgorithms::convenienceAPI() { // Compile-test for QAlgorithm convenience functions. -#if QT_VERSION >= 0x040200 QList<int> list, list2; qCopy(list.begin(), list.end(), list2.begin()); @@ -844,7 +837,6 @@ void tst_QAlgorithms::convenienceAPI() QList<int *> pointerList; qDeleteAll(pointerList); qDeleteAll(pointerList.begin(), pointerList.end()); -#endif } template <typename DataType> diff --git a/tests/auto/qbitarray/tst_qbitarray.cpp b/tests/auto/qbitarray/tst_qbitarray.cpp index bbcb087..ecdffda 100644 --- a/tests/auto/qbitarray/tst_qbitarray.cpp +++ b/tests/auto/qbitarray/tst_qbitarray.cpp @@ -212,10 +212,8 @@ void tst_QBitArray::countBits() } QCOMPARE(bits.count(), numBits); -#if QT_VERSION >= 0x040100 QCOMPARE(bits.count(true), onBits); QCOMPARE(bits.count(false), numBits - onBits); -#endif } void tst_QBitArray::countBits2() @@ -314,7 +312,7 @@ void tst_QBitArray::toggleBit_data() } void tst_QBitArray::toggleBit() -{ +{ QFETCH(int,index); QFETCH(QBitArray, input); QFETCH(QBitArray, res); @@ -322,7 +320,6 @@ void tst_QBitArray::toggleBit() input.toggleBit(index); QCOMPARE(input, res); - } void tst_QBitArray::operator_andeq_data() @@ -331,33 +328,33 @@ void tst_QBitArray::operator_andeq_data() QTest::addColumn<QBitArray>("input2"); QTest::addColumn<QBitArray>("res"); - QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111")) - << QStringToQBitArray(QString("00101100")) + QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111")) + << QStringToQBitArray(QString("00101100")) << QStringToQBitArray(QString("00101100")); - QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011")) - << QStringToQBitArray(QString("00101100")) + QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011")) + << QStringToQBitArray(QString("00101100")) << QStringToQBitArray(QString("00001000")); - QTest::newRow( "data2" ) << QStringToQBitArray(QString("11011011111")) - << QStringToQBitArray(QString("00101100")) + QTest::newRow( "data2" ) << QStringToQBitArray(QString("11011011111")) + << QStringToQBitArray(QString("00101100")) << QStringToQBitArray(QString("00001000000")); - QTest::newRow( "data3" ) << QStringToQBitArray(QString("11011011")) - << QStringToQBitArray(QString("00101100111")) + QTest::newRow( "data3" ) << QStringToQBitArray(QString("11011011")) + << QStringToQBitArray(QString("00101100111")) << QStringToQBitArray(QString("00001000000")); - QTest::newRow( "data4" ) << QStringToQBitArray(QString()) - << QStringToQBitArray(QString("00101100111")) + QTest::newRow( "data4" ) << QStringToQBitArray(QString()) + << QStringToQBitArray(QString("00101100111")) << QStringToQBitArray(QString("00000000000")); - QTest::newRow( "data5" ) << QStringToQBitArray(QString("00101100111")) - << QStringToQBitArray(QString()) + QTest::newRow( "data5" ) << QStringToQBitArray(QString("00101100111")) + << QStringToQBitArray(QString()) << QStringToQBitArray(QString("00000000000")); - QTest::newRow( "data6" ) << QStringToQBitArray(QString()) - << QStringToQBitArray(QString()) + QTest::newRow( "data6" ) << QStringToQBitArray(QString()) + << QStringToQBitArray(QString()) << QStringToQBitArray(QString()); } @@ -370,7 +367,6 @@ void tst_QBitArray::operator_andeq() input1&=input2; QCOMPARE(input1, res); - } void tst_QBitArray::operator_oreq_data() @@ -379,37 +375,37 @@ void tst_QBitArray::operator_oreq_data() QTest::addColumn<QBitArray>("input2"); QTest::addColumn<QBitArray>("res"); - QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111")) - << QStringToQBitArray(QString("00101100")) + QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111")) + << QStringToQBitArray(QString("00101100")) << QStringToQBitArray(QString("11111111")); - QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011")) - << QStringToQBitArray(QString("00101100")) + QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011")) + << QStringToQBitArray(QString("00101100")) << QStringToQBitArray(QString("11111111")); - QTest::newRow( "data2" ) << QStringToQBitArray(QString("01000010")) - << QStringToQBitArray(QString("10100001")) + QTest::newRow( "data2" ) << QStringToQBitArray(QString("01000010")) + << QStringToQBitArray(QString("10100001")) << QStringToQBitArray(QString("11100011")); - QTest::newRow( "data3" ) << QStringToQBitArray(QString("11011011")) - << QStringToQBitArray(QString("00101100000")) + QTest::newRow( "data3" ) << QStringToQBitArray(QString("11011011")) + << QStringToQBitArray(QString("00101100000")) << QStringToQBitArray(QString("11111111000")); - QTest::newRow( "data4" ) << QStringToQBitArray(QString("11011011111")) - << QStringToQBitArray(QString("00101100")) + QTest::newRow( "data4" ) << QStringToQBitArray(QString("11011011111")) + << QStringToQBitArray(QString("00101100")) << QStringToQBitArray(QString("11111111111")); - QTest::newRow( "data5" ) << QStringToQBitArray(QString()) - << QStringToQBitArray(QString("00101100111")) + QTest::newRow( "data5" ) << QStringToQBitArray(QString()) + << QStringToQBitArray(QString("00101100111")) << QStringToQBitArray(QString("00101100111")); - QTest::newRow( "data6" ) << QStringToQBitArray(QString("00101100111")) - << QStringToQBitArray(QString()) + QTest::newRow( "data6" ) << QStringToQBitArray(QString("00101100111")) + << QStringToQBitArray(QString()) << QStringToQBitArray(QString("00101100111")); - - QTest::newRow( "data7" ) << QStringToQBitArray(QString()) - << QStringToQBitArray(QString()) + + QTest::newRow( "data7" ) << QStringToQBitArray(QString()) + << QStringToQBitArray(QString()) << QStringToQBitArray(QString()); } @@ -422,7 +418,6 @@ void tst_QBitArray::operator_oreq() input1|=input2; QCOMPARE(input1, res); - } void tst_QBitArray::operator_xoreq_data() @@ -430,36 +425,36 @@ void tst_QBitArray::operator_xoreq_data() QTest::addColumn<QBitArray>("input1"); QTest::addColumn<QBitArray>("input2"); QTest::addColumn<QBitArray>("res"); - QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111")) - << QStringToQBitArray(QString("00101100")) + QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111")) + << QStringToQBitArray(QString("00101100")) << QStringToQBitArray(QString("11010011")); - QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011")) - << QStringToQBitArray(QString("00101100")) + QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011")) + << QStringToQBitArray(QString("00101100")) << QStringToQBitArray(QString("11110111")); - QTest::newRow( "data2" ) << QStringToQBitArray(QString("01000010")) - << QStringToQBitArray(QString("10100001")) + QTest::newRow( "data2" ) << QStringToQBitArray(QString("01000010")) + << QStringToQBitArray(QString("10100001")) << QStringToQBitArray(QString("11100011")); - QTest::newRow( "data3" ) << QStringToQBitArray(QString("01000010")) - << QStringToQBitArray(QString("10100001101")) + QTest::newRow( "data3" ) << QStringToQBitArray(QString("01000010")) + << QStringToQBitArray(QString("10100001101")) << QStringToQBitArray(QString("11100011101")); - QTest::newRow( "data4" ) << QStringToQBitArray(QString("01000010111")) - << QStringToQBitArray(QString("101000011")) + QTest::newRow( "data4" ) << QStringToQBitArray(QString("01000010111")) + << QStringToQBitArray(QString("101000011")) << QStringToQBitArray(QString("11100011011")); - QTest::newRow( "data5" ) << QStringToQBitArray(QString()) - << QStringToQBitArray(QString("00101100111")) + QTest::newRow( "data5" ) << QStringToQBitArray(QString()) + << QStringToQBitArray(QString("00101100111")) << QStringToQBitArray(QString("00101100111")); - QTest::newRow( "data6" ) << QStringToQBitArray(QString("00101100111")) - << QStringToQBitArray(QString()) + QTest::newRow( "data6" ) << QStringToQBitArray(QString("00101100111")) + << QStringToQBitArray(QString()) << QStringToQBitArray(QString("00101100111")); - - QTest::newRow( "data7" ) << QStringToQBitArray(QString()) - << QStringToQBitArray(QString()) + + QTest::newRow( "data7" ) << QStringToQBitArray(QString()) + << QStringToQBitArray(QString()) << QStringToQBitArray(QString()); } @@ -472,7 +467,6 @@ void tst_QBitArray::operator_xoreq() input1^=input2; QCOMPARE(input1, res); - } @@ -481,37 +475,37 @@ void tst_QBitArray::operator_neg_data() QTest::addColumn<QBitArray>("input"); QTest::addColumn<QBitArray>("res"); - QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111")) + QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111")) << QStringToQBitArray(QString("00000000")); - QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011")) + QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011")) << QStringToQBitArray(QString("00100100")); - QTest::newRow( "data2" ) << QStringToQBitArray(QString("00000000")) + QTest::newRow( "data2" ) << QStringToQBitArray(QString("00000000")) << QStringToQBitArray(QString("11111111")); - QTest::newRow( "data3" ) << QStringToQBitArray(QString()) + QTest::newRow( "data3" ) << QStringToQBitArray(QString()) << QStringToQBitArray(QString()); - QTest::newRow( "data4" ) << QStringToQBitArray("1") + QTest::newRow( "data4" ) << QStringToQBitArray("1") << QStringToQBitArray("0"); - QTest::newRow( "data5" ) << QStringToQBitArray("0") + QTest::newRow( "data5" ) << QStringToQBitArray("0") << QStringToQBitArray("1"); - QTest::newRow( "data6" ) << QStringToQBitArray("01") + QTest::newRow( "data6" ) << QStringToQBitArray("01") << QStringToQBitArray("10"); - QTest::newRow( "data7" ) << QStringToQBitArray("1110101") + QTest::newRow( "data7" ) << QStringToQBitArray("1110101") << QStringToQBitArray("0001010"); - QTest::newRow( "data8" ) << QStringToQBitArray("01110101") + QTest::newRow( "data8" ) << QStringToQBitArray("01110101") << QStringToQBitArray("10001010"); - QTest::newRow( "data9" ) << QStringToQBitArray("011101010") + QTest::newRow( "data9" ) << QStringToQBitArray("011101010") << QStringToQBitArray("100010101"); - QTest::newRow( "data10" ) << QStringToQBitArray("0111010101111010") + QTest::newRow( "data10" ) << QStringToQBitArray("0111010101111010") << QStringToQBitArray("1000101010000101"); } @@ -521,9 +515,8 @@ void tst_QBitArray::operator_neg() QFETCH(QBitArray, res); input = ~input; - - QCOMPARE(input, res); + QCOMPARE(input, res); } void tst_QBitArray::datastream_data() @@ -554,7 +547,7 @@ void tst_QBitArray::datastream() QFETCH(QString, bitField); QFETCH(int, numBits); QFETCH(int, onBits); - + QBuffer buffer; QVERIFY(buffer.open(QBuffer::ReadWrite)); QDataStream stream(&buffer); @@ -566,11 +559,9 @@ void tst_QBitArray::datastream() } QCOMPARE(bits.count(), numBits); -#if QT_VERSION >= 0x040100 QCOMPARE(bits.count(true), onBits); QCOMPARE(bits.count(false), numBits - onBits); -#endif - + stream << bits << bits << bits; buffer.close(); @@ -583,10 +574,8 @@ void tst_QBitArray::datastream() stream2 >> array1 >> array2 >> array3; QCOMPARE(array1.count(), numBits); -#if QT_VERSION >= 0x040100 QCOMPARE(array1.count(true), onBits); QCOMPARE(array1.count(false), numBits - onBits); -#endif QCOMPARE(array1, bits); QCOMPARE(array2, bits); @@ -595,7 +584,7 @@ void tst_QBitArray::datastream() void tst_QBitArray::invertOnNull() const { - QBitArray a; + QBitArray a; QCOMPARE(a = ~a, QBitArray()); } @@ -605,28 +594,28 @@ void tst_QBitArray::operator_noteq_data() QTest::addColumn<QBitArray>("input2"); QTest::addColumn<bool>("res"); - QTest::newRow("data0") << QStringToQBitArray(QString("11111111")) - << QStringToQBitArray(QString("00101100")) + QTest::newRow("data0") << QStringToQBitArray(QString("11111111")) + << QStringToQBitArray(QString("00101100")) << true; - QTest::newRow("data1") << QStringToQBitArray(QString("11011011")) - << QStringToQBitArray(QString("11011011")) + QTest::newRow("data1") << QStringToQBitArray(QString("11011011")) + << QStringToQBitArray(QString("11011011")) << false; - QTest::newRow("data2") << QStringToQBitArray(QString()) - << QStringToQBitArray(QString("00101100111")) + QTest::newRow("data2") << QStringToQBitArray(QString()) + << QStringToQBitArray(QString("00101100111")) << true; - QTest::newRow("data3") << QStringToQBitArray(QString()) - << QStringToQBitArray(QString()) + QTest::newRow("data3") << QStringToQBitArray(QString()) + << QStringToQBitArray(QString()) << false; - QTest::newRow("data4") << QStringToQBitArray(QString("00101100")) - << QStringToQBitArray(QString("11111111")) + QTest::newRow("data4") << QStringToQBitArray(QString("00101100")) + << QStringToQBitArray(QString("11111111")) << true; - QTest::newRow("data5") << QStringToQBitArray(QString("00101100111")) - << QStringToQBitArray(QString()) + QTest::newRow("data5") << QStringToQBitArray(QString("00101100111")) + << QStringToQBitArray(QString()) << true; } diff --git a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp b/tests/auto/qbuttongroup/tst_qbuttongroup.cpp index c38fb66..15cca56 100644 --- a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp +++ b/tests/auto/qbuttongroup/tst_qbuttongroup.cpp @@ -95,10 +95,7 @@ private slots: void checkedButton(); - // fixed for Qt 4.2.0 -#if QT_VERSION >= 0x040200 void task106609(); -#endif void task209485_removeFromGroupInEventHandler_data(); void task209485_removeFromGroupInEventHandler(); @@ -211,7 +208,6 @@ void tst_QButtonGroup::arrowKeyNavigation() void tst_QButtonGroup::exclusiveWithActions() { -#if QT_VERSION > 0x040100 QDialog dlg(0); QHBoxLayout layout(&dlg); QAction *action1 = new QAction("Action 1", &dlg); @@ -235,7 +231,7 @@ void tst_QButtonGroup::exclusiveWithActions() buttonGroup->addButton(toolButton2, 2); buttonGroup->addButton(toolButton3, 3); dlg.show(); - + QTest::mouseClick(toolButton1, Qt::LeftButton); QVERIFY(toolButton1->isChecked()); QVERIFY(action1->isChecked()); @@ -251,7 +247,7 @@ void tst_QButtonGroup::exclusiveWithActions() QVERIFY(!toolButton3->isChecked()); QVERIFY(!action1->isChecked()); QVERIFY(!action3->isChecked()); - + QTest::mouseClick(toolButton3, Qt::LeftButton); QVERIFY(toolButton3->isChecked()); QVERIFY(action3->isChecked()); @@ -259,7 +255,7 @@ void tst_QButtonGroup::exclusiveWithActions() QVERIFY(!toolButton2->isChecked()); QVERIFY(!action1->isChecked()); QVERIFY(!action2->isChecked()); - + QTest::mouseClick(toolButton2, Qt::LeftButton); QVERIFY(toolButton2->isChecked()); QVERIFY(action2->isChecked()); @@ -267,7 +263,6 @@ void tst_QButtonGroup::exclusiveWithActions() QVERIFY(!toolButton3->isChecked()); QVERIFY(!action1->isChecked()); QVERIFY(!action3->isChecked()); -#endif } void tst_QButtonGroup::exclusive() @@ -289,7 +284,7 @@ void tst_QButtonGroup::exclusive() buttonGroup->addButton(pushButton2, 2); buttonGroup->addButton(pushButton3, 3); dlg.show(); - + QTest::mouseClick(pushButton1, Qt::LeftButton); QVERIFY(pushButton1->isChecked()); QVERIFY(!pushButton2->isChecked()); @@ -299,12 +294,12 @@ void tst_QButtonGroup::exclusive() QVERIFY(pushButton2->isChecked()); QVERIFY(!pushButton1->isChecked()); QVERIFY(!pushButton3->isChecked()); - + QTest::mouseClick(pushButton3, Qt::LeftButton); QVERIFY(pushButton3->isChecked()); QVERIFY(!pushButton1->isChecked()); QVERIFY(!pushButton2->isChecked()); - + QTest::mouseClick(pushButton2, Qt::LeftButton); QVERIFY(pushButton2->isChecked()); QVERIFY(!pushButton1->isChecked()); @@ -363,7 +358,6 @@ void tst_QButtonGroup::testSignals() QVERIFY(releasedIdSpy.takeFirst().at(0).toInt() == 23); } -#if QT_VERSION >= 0x040200 void tst_QButtonGroup::task106609() { // task is: @@ -403,7 +397,6 @@ void tst_QButtonGroup::task106609() QCOMPARE(spy2.count(), 2); QCOMPARE(spy1.count(), 2); } -#endif void tst_QButtonGroup::checkedButton() { diff --git a/tests/auto/qcache/tst_qcache.cpp b/tests/auto/qcache/tst_qcache.cpp index f0d0454..2b61467 100644 --- a/tests/auto/qcache/tst_qcache.cpp +++ b/tests/auto/qcache/tst_qcache.cpp @@ -39,10 +39,8 @@ ** ****************************************************************************/ - #include <QtTest/QtTest> - #include <qcache.h> //TESTED_CLASS= @@ -56,7 +54,6 @@ public: tst_QCache(); virtual ~tst_QCache(); - public slots: void initTestCase(); void cleanupTestCase(); @@ -344,7 +341,7 @@ void tst_QCache::remove() QCOMPARE(cache.totalCost(), 20); } - cache.setMaxCost(1); + cache.setMaxCost(1); QCOMPARE(cache.size(), 0); cache.remove("beta"); QCOMPARE(cache.size(), 0); @@ -377,7 +374,7 @@ void tst_QCache::take() QCOMPARE(cache.size(), 1); QCOMPARE(cache.totalCost(), 20); - cache.setMaxCost(1); + cache.setMaxCost(1); QCOMPARE(cache.size(), 0); QCOMPARE(cache.take("beta"), (Foo*)0); QCOMPARE(cache.size(), 0); @@ -389,15 +386,8 @@ struct KeyType KeyType(int x) : foo(x) {} - /* - Qt 4.0 and 4.1 require a default ctor and an operator=(). - */ -#if QT_VERSION < 0x040200 - KeyType() : foo(0) {} -#else private: KeyType &operator=(const KeyType &); -#endif }; struct ValueType diff --git a/tests/auto/qcheckbox/tst_qcheckbox.cpp b/tests/auto/qcheckbox/tst_qcheckbox.cpp index be1095a..9ffeb07 100644 --- a/tests/auto/qcheckbox/tst_qcheckbox.cpp +++ b/tests/auto/qcheckbox/tst_qcheckbox.cpp @@ -377,10 +377,8 @@ void tst_QCheckBox::onStateChanged( int state ) void tst_QCheckBox::stateChanged() { -#if QT_VERSION > 0x040101 QSignalSpy stateChangedSpy(testWidget, SIGNAL(stateChanged(int))); -#endif - connect(testWidget, SIGNAL(stateChanged(int)), this, SLOT(onStateChanged(int))); + connect(testWidget, SIGNAL(stateChanged(int)), this, SLOT(onStateChanged(int))); cur_state = -1; testWidget->setChecked( TRUE ); qApp->processEvents(); @@ -396,12 +394,10 @@ void tst_QCheckBox::stateChanged() qApp->processEvents(); QCOMPARE( cur_state, (int)1 ); -#if QT_VERSION > 0x040101 QCOMPARE(stateChangedSpy.count(), 3); testWidget->setCheckState(Qt::PartiallyChecked); qApp->processEvents(); QCOMPARE(stateChangedSpy.count(), 3); -#endif } void tst_QCheckBox::isToggleButton() diff --git a/tests/auto/qcombobox/tst_qcombobox.cpp b/tests/auto/qcombobox/tst_qcombobox.cpp index 70059f2..6a87e3c 100644 --- a/tests/auto/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/qcombobox/tst_qcombobox.cpp @@ -283,13 +283,9 @@ void tst_QComboBox::getSetCheck() QLineEdit *var8 = new QLineEdit(0); obj1.setLineEdit(var8); QCOMPARE(var8, obj1.lineEdit()); -#if QT_VERSION >= 0x040200 - // QComboBox in Qt < 4.2 have asserts for this, but handles the situation by ignoring it. - // Qt >= 4.2 should handle this gracefully (no asserts, but define behavior as keeping current) QTest::ignoreMessage(QtWarningMsg, "QComboBox::setLineEdit: cannot set a 0 line edit"); obj1.setLineEdit((QLineEdit *)0); QCOMPARE(var8, obj1.lineEdit()); -#endif // delete var8; // No delete, since QComboBox takes ownership // const QValidator * QComboBox::validator() @@ -306,13 +302,9 @@ void tst_QComboBox::getSetCheck() MyAbstractItemDelegate *var10 = new MyAbstractItemDelegate; obj1.setItemDelegate(var10); QCOMPARE(obj1.itemDelegate(), (QAbstractItemDelegate *)var10); -#if QT_VERSION >= 0x040200 - // QComboBox in Qt < 4.2 have asserts for this, but handles the situation by ignoring it. - // Qt >= 4.2 should handle this gracefully (no asserts, but define behavior as keeping current) QTest::ignoreMessage(QtWarningMsg, "QComboBox::setItemDelegate: cannot set a 0 delegate"); obj1.setItemDelegate((QAbstractItemDelegate *)0); QCOMPARE(obj1.itemDelegate(), (QAbstractItemDelegate *)var10); -#endif // delete var10; // No delete, since QComboBox takes ownership // QAbstractItemModel * QComboBox::model() @@ -320,13 +312,9 @@ void tst_QComboBox::getSetCheck() MyAbstractItemModel *var11 = new MyAbstractItemModel; obj1.setModel(var11); QCOMPARE(obj1.model(), (QAbstractItemModel *)var11); -#if QT_VERSION >= 0x040200 - // QComboBox in Qt < 4.2 have asserts for this, but handles the situation by ignoring it. - // Qt >= 4.2 should handle this gracefully (no asserts, but define behavior as keeping current) QTest::ignoreMessage(QtWarningMsg, "QComboBox::setModel: cannot set a 0 model"); obj1.setModel((QAbstractItemModel *)0); QCOMPARE(obj1.model(), (QAbstractItemModel *)var11); -#endif delete var11; obj1.model(); @@ -345,13 +333,9 @@ void tst_QComboBox::getSetCheck() MyAbstractItemView *var13 = new MyAbstractItemView; obj1.setView(var13); QCOMPARE(obj1.view(), (QAbstractItemView *)var13); -#if QT_VERSION >= 0x040200 - // QComboBox in Qt < 4.2 have asserts for this - // Qt >= 4.2 should handle this gracefully (no asserts, but define behavior as keeping current view) QTest::ignoreMessage(QtWarningMsg, "QComboBox::setView: cannot set a 0 view"); obj1.setView((QAbstractItemView *)0); QCOMPARE(obj1.view(), (QAbstractItemView *)var13); -#endif delete var13; // int QComboBox::currentIndex() @@ -512,13 +496,9 @@ void tst_QComboBox::sizeAdjustPolicy() testWidget->addItem("small"); QCOMPARE(testWidget->sizeHint(), content); testWidget->addItem("looooooooooooooooooooooong item"); -#if QT_VERSION >= 0x040200 // minimumContentsLength() > sizeof("looooooooooooooooooooooong item"), so the sizeHint() // stays the same QCOMPARE(testWidget->sizeHint(), content); -#else - QVERIFY(testWidget->sizeHint().width() > content.width()); -#endif // over 60 characters (cf. setMinimumContentsLength() call above) testWidget->addItem("loooooooooooooooooooooooooooooooooooooooooooooo" "ooooooooooooooooooooooooooooooooooooooooooooooo" @@ -535,10 +515,8 @@ void tst_QComboBox::sizeAdjustPolicy() content = testWidget->sizeHint(); while (testWidget->count()) testWidget->removeItem(0); -#if QT_VERSION >= 0x040200 QCOMPARE(testWidget->sizeHint(), content); testWidget->setMinimumContentsLength(0); -#endif QVERIFY(testWidget->sizeHint().width() < content.width()); } @@ -831,13 +809,9 @@ void tst_QComboBox::autoCompletionCaseSensitivity() QTest::keyClick(testWidget->lineEdit(), Qt::Key_B); qApp->processEvents(); -#if QT_VERSION < 0x040200 - // autocompletions are case-preserving in < 4.2 - QCOMPARE(testWidget->currentText(), QString("aBCDEF")); -#else // autocompletions preserve userkey-case from 4.2 QCOMPARE(testWidget->currentText(), QString("abCDEF")); -#endif + QTest::keyClick(testWidget->lineEdit(), Qt::Key_Enter); qApp->processEvents(); QCOMPARE(testWidget->currentText(), QString("aBCDEF")); // case restored to item's case diff --git a/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp b/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp index 5665e6e..45a4301 100644 --- a/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp +++ b/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp @@ -211,11 +211,7 @@ void tst_QCommandLinkButton::setAutoRepeat() QVERIFY( !testWidget->isCheckable() ); // verify autorepeat is off by default. -#if QT_VERSION < 0x040000 - QButton tmp( 0 ); -#else QCommandLinkButton tmp( 0 ); -#endif tmp.setObjectName("tmp"); QVERIFY( !tmp.autoRepeat() ); diff --git a/tests/auto/qcssparser/tst_cssparser.cpp b/tests/auto/qcssparser/tst_cssparser.cpp index 9a984c8..ab6bad6 100644 --- a/tests/auto/qcssparser/tst_cssparser.cpp +++ b/tests/auto/qcssparser/tst_cssparser.cpp @@ -44,7 +44,6 @@ //TESTED_CLASS=QCss //TESTED_FILES=gui/text/qcssparser.cpp gui/text/qcssparser_p.h -#if QT_VERSION >= 0x040200 #include "private/qcssparser_p.h" class tst_CssParser : public QObject @@ -1592,13 +1591,13 @@ void tst_CssParser::quotedAndUnquotedIdentifiers() QCss::Parser parser("foo { font-style: \"italic\"; font-weight: bold }"); QCss::StyleSheet sheet; QVERIFY(parser.parse(&sheet)); - + QCOMPARE(sheet.styleRules.count() + sheet.nameIndex.count(), 1); QCss::StyleRule rule = (!sheet.styleRules.isEmpty()) ? sheet.styleRules.at(0) : *sheet.nameIndex.begin(); const QVector<QCss::Declaration> decls = rule.declarations; QCOMPARE(decls.size(), 2); - + QCOMPARE(decls.at(0).d->values.first().type, QCss::Value::String); QCOMPARE(decls.at(0).d->property, QLatin1String("font-style")); QCOMPARE(decls.at(0).d->values.first().toString(), QLatin1String("italic")); @@ -1610,6 +1609,3 @@ void tst_CssParser::quotedAndUnquotedIdentifiers() QTEST_MAIN(tst_CssParser) #include "tst_cssparser.moc" -#else -QTEST_NOOP_MAIN -#endif diff --git a/tests/auto/qdatastream/tst_qdatastream.cpp b/tests/auto/qdatastream/tst_qdatastream.cpp index a112c10..d7ca7bc 100644 --- a/tests/auto/qdatastream/tst_qdatastream.cpp +++ b/tests/auto/qdatastream/tst_qdatastream.cpp @@ -163,10 +163,8 @@ private slots: void setVersion_data(); void setVersion(); -#if QT_VERSION >= 0x040100 void skipRawData_data(); void skipRawData(); -#endif void status_qint8_data(); void status_qint8(); @@ -2435,7 +2433,6 @@ private: int offset; }; -#if QT_VERSION >= 0x040100 void tst_QDataStream::skipRawData_data() { QTest::addColumn<QString>("deviceType"); @@ -2486,7 +2483,6 @@ void tst_QDataStream::skipRawData() delete dev; } -#endif #define TEST_qint(T, UT) \ void tst_QDataStream::status_##T() \ diff --git a/tests/auto/qdate/tst_qdate.cpp b/tests/auto/qdate/tst_qdate.cpp index 121167a..d4273d0 100644 --- a/tests/auto/qdate/tst_qdate.cpp +++ b/tests/auto/qdate/tst_qdate.cpp @@ -143,10 +143,8 @@ void tst_QDate::isValid_data() QTest::newRow("century leap") << 2100 << 2 << 29 << 0U << false; QTest::newRow("400-years leap") << 2000 << 2 << 29 << 2451604U << true; QTest::newRow("400-years leap 2") << 2400 << 2 << 29 << 2597701U << true; -#if QT_VERSION >= 0x040200 QTest::newRow("400-years leap 3") << 1600 << 2 << 29 << 2305507U << true; QTest::newRow("year 0") << 0 << 2 << 27 << 0U << false; -#endif // test the number of days in months: QTest::newRow("jan") << 2000 << 1 << 31 << 2451575U << true; @@ -177,7 +175,6 @@ void tst_QDate::isValid_data() QTest::newRow("idec") << 2000 << 12 << 32 << 0U << false; // the beginning of the Julian Day calendar: -#if QT_VERSION >= 0x040200 QTest::newRow("jd negative1") << -4714 << 1 << 1 << 0U << false; QTest::newRow("jd negative2") << -4713 << 1 << 1 << 0U << false; QTest::newRow("jd negative3") << -4713 << 1 << 2 << 1U << true; @@ -185,7 +182,6 @@ void tst_QDate::isValid_data() QTest::newRow("jd 0") << -4713 << 1 << 1 << 0U << false; QTest::newRow("jd 1") << -4713 << 1 << 2 << 1U << true; QTest::newRow("imminent overflow") << 11754508 << 12 << 13 << 4294967295U << true; -#endif } void tst_QDate::isValid() @@ -243,17 +239,12 @@ void tst_QDate::weekNumber_data() QTest::newRow( "data4" ) << 1 << 2001 << 2001 << 1 << 1; QTest::newRow( "data5" ) << 53 << 1998 << 1998 << 12 << 31; QTest::newRow( "data6" ) << 1 << 1985 << 1984 << 12 << 31; -#if QT_VERSION >= 0x030300 - // This is a bug that was fixed for 3.3 QTest::newRow( "data7" ) << 52 << 2006 << 2006 << 12 << 31; -#endif } void tst_QDate::weekNumber() { -#if QT_VERSION >= 0x030100 int yearNumber; -// int weekNumber; QFETCH( int, year ); QFETCH( int, month ); QFETCH( int, day ); @@ -262,9 +253,6 @@ void tst_QDate::weekNumber() QDate dt1( year, month, day ); QCOMPARE( dt1.weekNumber( &yearNumber ), expectedWeekNum ); QCOMPARE( yearNumber, expectedYearNum ); -#else - QSKIP( "Not tested with Qt versions < 3.1", SkipAll); -#endif } void tst_QDate::weekNumber_invalid_data() @@ -281,14 +269,9 @@ void tst_QDate::weekNumber_invalid_data() void tst_QDate::weekNumber_invalid() { -#if QT_VERSION >= 0x030100 QDate dt; int yearNumber; -// int weekNumber; QCOMPARE( dt.weekNumber( &yearNumber ), 0 ); -#else - QSKIP( "Not tested with Qt versions < 3.1", SkipAll); -#endif } void tst_QDate::addDays() @@ -616,14 +599,12 @@ void tst_QDate::fromString_data() QDate d( 1999, 11, 14 ); QTest::newRow( "data2" ) << d.toString( Qt::TextDate ) << d.toString( Qt::ISODate ) << d; -#if QT_VERSION >= 0x040200 QTest::newRow( "data3" ) << QString("xxx Jan 1 0999") << QString("0999-01-01") << QDate(999, 1, 1); QTest::newRow( "data3b" ) << QString("xxx Jan 1 999") << QString("0999-01-01") << QDate(999, 1, 1); QTest::newRow( "data4" ) << QString("xxx Jan 1 12345") << QString() << QDate(12345, 1, 1); QTest::newRow( "data5" ) << QString("xxx Jan 1 -0001") << QString() << QDate(-1, 1, 1); QTest::newRow( "data6" ) << QString("xxx Jan 1 -4712") << QString() << QDate(-4712, 1, 1); QTest::newRow( "data7" ) << QString("xxx Nov 25 -4713") << QString() << QDate(-4713, 11, 25); -#endif } void tst_QDate::fromString() @@ -647,9 +628,7 @@ void tst_QDate::toString_format_data() QTest::newRow( "data1" ) << QDate(2002,12,17) << QString("dd-MM-yyyy") << QString("17-12-2002"); QTest::newRow( "data2" ) << QDate(1995,5,20) << QString("M-yy") << QString("5-95"); QTest::newRow( "data3" ) << QDate(2002,12,17) << QString("dd") << QString("17"); -#if (QT_VERSION-0 >= 0x030200) QTest::newRow( "data4" ) << QDate() << QString("dd-mm-yyyy") << QString(); -#endif } void tst_QDate::toString_format() diff --git a/tests/auto/qdatetime/tst_qdatetime.cpp b/tests/auto/qdatetime/tst_qdatetime.cpp index 9e73d6d..69d8a62 100644 --- a/tests/auto/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/qdatetime/tst_qdatetime.cpp @@ -220,18 +220,10 @@ void tst_QDateTime::isNull() dt1.setDate(QDate(2004, 1, 2)); QVERIFY(!dt1.isNull()); -#if QT_VERSION < 0x040100 - dt1.setDate(QDate()); - QVERIFY(dt1.isNull()); -#endif dt1.setTime(QTime(12, 34, 56)); QVERIFY(!dt1.isNull()); dt1.setTime(QTime()); -#if QT_VERSION >= 0x040100 QVERIFY(!dt1.isNull()); -#else - QVERIFY(dt1.isNull()); -#endif } void tst_QDateTime::isValid() @@ -1010,15 +1002,10 @@ void tst_QDateTime::toString_strformat_data() void tst_QDateTime::toString_strformat() { -#if (QT_VERSION-0 >= 0x030200) QFETCH( QDateTime, dt ); QFETCH( QString, format ); QFETCH( QString, str ); QCOMPARE( dt.toString( format ), str ); -#else - QSKIP( "No test implemented for < 3.2 yet", SkipAll); -#endif - } void tst_QDateTime::fromStringTextDate_data() @@ -1068,7 +1055,6 @@ void tst_QDateTime::fromStringTextDate_data() << 28 << 6 << 2005 << 7 << 57 << 30 << 110 << int(Qt::LocalTime); -#if QT_VERSION >= 0x040200 QTest::newRow("Year 0999") << QString("Tue Jun 17 08:00:10 0999") << int(Qt::TextDate) << 17 << 6 << 999 << 8 << 0 << 10 << 0 @@ -1088,7 +1074,6 @@ void tst_QDateTime::fromStringTextDate_data() << int(Qt::TextDate) << 1 << 1 << -4712 << 0 << 01 << 02 << 0 << int(Qt::LocalTime); -#endif } void tst_QDateTime::fromStringTextDate() diff --git a/tests/auto/qdesktopservices/tst_qdesktopservices.cpp b/tests/auto/qdesktopservices/tst_qdesktopservices.cpp index 49f8922..81b35ac 100644 --- a/tests/auto/qdesktopservices/tst_qdesktopservices.cpp +++ b/tests/auto/qdesktopservices/tst_qdesktopservices.cpp @@ -41,9 +41,6 @@ #include <QtTest/QtTest> -#if QT_VERSION < 0x040200 -QTEST_NOOP_MAIN -#else #include <QStandardItemModel> #include <qdebug.h> #include <qdesktopservices.h> @@ -172,5 +169,3 @@ void tst_qdesktopservices::storageLocationDoesNotEndWithSlash() QTEST_MAIN(tst_qdesktopservices) #include "tst_qdesktopservices.moc" -#endif - diff --git a/tests/auto/qdialog/tst_qdialog.cpp b/tests/auto/qdialog/tst_qdialog.cpp index e77167e..a1cf1c1 100644 --- a/tests/auto/qdialog/tst_qdialog.cpp +++ b/tests/auto/qdialog/tst_qdialog.cpp @@ -375,14 +375,11 @@ void tst_QDialog::showAsTool() testWidget->activateWindow(); dialog.exec(); QTest::qWait(100); - if (testWidget->style()->styleHint(QStyle::SH_Widget_ShareActivation, 0, testWidget)) { -#if defined(Q_WS_QWS) && QT_VERSION < 0x040400 - QEXPECT_FAIL(0, "Qtopia Core has messed up WStyle_Tool (task 126435)", Continue); -#endif - QCOMPARE(dialog.wasActive(), true); - } else { - QCOMPARE(dialog.wasActive(), false); - } + if (testWidget->style()->styleHint(QStyle::SH_Widget_ShareActivation, 0, testWidget)) { + QCOMPARE(dialog.wasActive(), true); + } else { + QCOMPARE(dialog.wasActive(), false); + } } // Verify that pos() returns the same before and after show() @@ -392,10 +389,10 @@ void tst_QDialog::toolDialogPosition() #if defined(Q_OS_WINCE) QSKIP("No real support for Qt::Tool on WinCE", SkipAll); #endif - QDialog dialog(0, Qt::Tool); - dialog.move(QPoint(100,100)); + QDialog dialog(0, Qt::Tool); + dialog.move(QPoint(100,100)); const QPoint beforeShowPosition = dialog.pos(); - dialog.show(); + dialog.show(); const QPoint afterShowPosition = dialog.pos(); QCOMPARE(afterShowPosition, beforeShowPosition); } @@ -445,7 +442,7 @@ public slots: void tst_QDialog::throwInExec() { #ifdef Q_WS_MAC - QSKIP("Qt/Mac: Throwing exceptions in excec() is not supported.", SkipAll); + QSKIP("Qt/Mac: Throwing exceptions in exec() is not supported.", SkipAll); #endif int caughtExceptions = 0; try { diff --git a/tests/auto/qdir/tst_qdir.cpp b/tests/auto/qdir/tst_qdir.cpp index f680f46..91ce5b3 100644 --- a/tests/auto/qdir/tst_qdir.cpp +++ b/tests/auto/qdir/tst_qdir.cpp @@ -787,9 +787,7 @@ void tst_QDir::cd_data() #endif QTest::newRow("non existant") << "." << "../anonexistingdir" << false << QDir::currentPath(); QTest::newRow("self") << "." << (QString("../") + QFileInfo(QDir::currentPath()).fileName()) << true << QDir::currentPath(); -#if QT_VERSION > 0x040100 QTest::newRow("file") << "." << "qdir.pro" << false << ""; -#endif } void tst_QDir::cd() @@ -827,10 +825,8 @@ void tst_QDir::setNameFilters_data() << QString("foo. bar,foo.bar").split(","); QTest::newRow("files1") << appPath + "testdir/dir" << QString("*r.cpp *.pro").split(" ") << QString("qdir.pro,qrc_qdir.cpp,tst_qdir.cpp").split(","); -#if QT_VERSION >= 0x040000 QTest::newRow("resources1") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data") << QString("file1.data,file2.data,file3.data").split(','); -#endif } void tst_QDir::setNameFilters() diff --git a/tests/auto/qdirmodel/tst_qdirmodel.cpp b/tests/auto/qdirmodel/tst_qdirmodel.cpp index f6887da..2084535 100644 --- a/tests/auto/qdirmodel/tst_qdirmodel.cpp +++ b/tests/auto/qdirmodel/tst_qdirmodel.cpp @@ -614,7 +614,6 @@ void tst_QDirModel::task196768_sorting() QCOMPARE(index.data(), index2.data()); } -#if QT_VERSION >= 0x040102 void tst_QDirModel::filter() { QDirModel model; @@ -625,7 +624,6 @@ void tst_QDirModel::filter() Q_ASSERT(!index2.isValid()); Q_ASSERT(model.rowCount(index) == 0); } -#endif void tst_QDirModel::task244669_remove() { diff --git a/tests/auto/qfile/tst_qfile.cpp b/tests/auto/qfile/tst_qfile.cpp index 829e0b3..98e1859 100644 --- a/tests/auto/qfile/tst_qfile.cpp +++ b/tests/auto/qfile/tst_qfile.cpp @@ -76,10 +76,6 @@ #include "../network-settings.h" -#if QT_VERSION < 0x040200 -#define symLinkTarget readLink -#endif - Q_DECLARE_METATYPE(QFile::FileError) //TESTED_CLASS= @@ -990,12 +986,8 @@ void tst_QFile::link() #ifdef Q_OS_WIN // on windows links are always absolute QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath()); #else -#if QT_VERSION < 0x040101 - QCOMPARE(info2.symLinkTarget(), info1.filePath()); -#else QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath()); #endif -#endif #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) QString wd = getWorkingDirectoryForLink(info2.absoluteFilePath()); @@ -1061,19 +1053,12 @@ void tst_QFile::readBrokenLink() #ifdef Q_OS_WIN // on windows links are alway absolute QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath()); #else -#if QT_VERSION < 0x040101 - QCOMPARE(info2.symLinkTarget(), info1.filePath()); -#else QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath()); #endif -#endif QVERIFY(QFile::remove(info2.absoluteFilePath())); - -#if QT_VERSION >= 0x040101 QVERIFY(QFile::link("ole/..", "myLink2.lnk")); QCOMPARE(QFileInfo("myLink2.lnk").symLinkTarget(), QDir::currentPath()); -#endif } void tst_QFile::readTextFile_data() @@ -1281,10 +1266,6 @@ void tst_QFile::bufferedRead() QCOMPARE(file.pos(), qlonglong(2)); } -#if QT_VERSION <= 0x040100 - QCOMPARE(int(ftell(stdFile)), 2); -#endif - fclose(stdFile); } @@ -1604,12 +1585,7 @@ void tst_QFile::longFileName() } { QFile file(fileName); -#if QT_VERSION < 0x040100 -# ifdef Q_OS_WIN - QEXPECT_FAIL("244 chars", "Fixed in 4.1", Continue); - QEXPECT_FAIL("244 chars to absolutepath", "Fixed in 4.1", Continue); -# endif -#elif defined(Q_WS_WIN) +#if defined(Q_WS_WIN) #if !defined(Q_OS_WINCE) QT_WA({ if (false) ; }, { QEXPECT_FAIL("244 chars", "Full pathname must be less than 260 chars", Abort); @@ -1834,10 +1810,6 @@ void tst_QFile::removeOpenFile() void tst_QFile::fullDisk() { -#if QT_VERSION < 0x040102 - QSKIP("Fixed for 4.1.2", SkipAll); -#endif - QFile file("/dev/full"); if (!file.exists()) QSKIP("/dev/full doesn't exist on this system", SkipAll); @@ -1981,9 +1953,7 @@ void tst_QFile::virtualFile() // read all: data = f.readAll(); QVERIFY(f.pos() != 0); -#if QT_VERSION >= 0x040200 QVERIFY(!data.isEmpty()); -#endif // seeking QVERIFY(f.seek(1)); diff --git a/tests/auto/qfiledialog/tst_qfiledialog.cpp b/tests/auto/qfiledialog/tst_qfiledialog.cpp index bade586..695bfe7 100644 --- a/tests/auto/qfiledialog/tst_qfiledialog.cpp +++ b/tests/auto/qfiledialog/tst_qfiledialog.cpp @@ -681,6 +681,22 @@ void tst_QFiledialog::filters() for (int i = views.at(0)->currentIndex(); i < views.at(0)->count(); ++i) views.at(0)->setCurrentIndex(i); QCOMPARE(spyFilterSelected.count(), 0); + + //Let check if filters with whitespaces + QNonNativeFileDialog fd2; + QStringList expected; + expected << "C++ Source Files(*.cpp)"; + expected << "Any(*.*)"; + fd2.setFilter("C++ Source Files(*.cpp);;Any(*.*)"); + QCOMPARE(expected, fd2.filters()); + fd2.setFilter("C++ Source Files(*.cpp) ;;Any(*.*)"); + QCOMPARE(expected, fd2.filters()); + fd2.setFilter("C++ Source Files(*.cpp);; Any(*.*)"); + QCOMPARE(expected, fd2.filters()); + fd2.setFilter(" C++ Source Files(*.cpp);; Any(*.*)"); + QCOMPARE(expected, fd2.filters()); + fd2.setFilter("C++ Source Files(*.cpp) ;; Any(*.*)"); + QCOMPARE(expected, fd2.filters()); } void tst_QFiledialog::selectFilter() diff --git a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp index 87f9ba3..334acce 100644 --- a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp +++ b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp @@ -42,10 +42,6 @@ #include <QCoreApplication> -#if QT_VERSION < 0x040200 -QTEST_NOOP_MAIN -#else - #include <QFileSystemWatcher> #ifdef Q_OS_LINUX @@ -403,5 +399,3 @@ void tst_QFileSystemWatcher::removePaths() QTEST_MAIN(tst_QFileSystemWatcher) #include "tst_qfilesystemwatcher.moc" - -#endif diff --git a/tests/auto/qfont/tst_qfont.cpp b/tests/auto/qfont/tst_qfont.cpp index 58e837e..e3a5ffc 100644 --- a/tests/auto/qfont/tst_qfont.cpp +++ b/tests/auto/qfont/tst_qfont.cpp @@ -537,9 +537,6 @@ void tst_QFont::insertAndRemoveSubstitutions() QStringList moreFonts; moreFonts << "Bar" << "Baz"; QFont::insertSubstitutions("BogusFontFamily", moreFonts); -#if (QT_VERSION <= 0x040102) - QEXPECT_FAIL("", "Uppercase/Lowercase issues fixed in 4.1.3 and beyond", Abort); -#endif QCOMPARE(QFont::substitutes("BogusFontFamily").count(), 3); QCOMPARE(QFont::substitutes("bogusfontfamily").count(), 3); diff --git a/tests/auto/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/qfontdatabase/tst_qfontdatabase.cpp index 28f490a..9c42b49 100644 --- a/tests/auto/qfontdatabase/tst_qfontdatabase.cpp +++ b/tests/auto/qfontdatabase/tst_qfontdatabase.cpp @@ -149,9 +149,7 @@ void tst_QFontDatabase::fixedPitch() if (!fdb.families().contains(font)) QSKIP( "Font not installed", SkipSingle); -#if QT_VERSION >= 0x030200 QCOMPARE(fdb.isFixedPitch(font), fixedPitch); -#endif QFont qfont(font); QFontInfo fi(qfont); diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 5dd7e1e..5565aa6 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -42,10 +42,6 @@ #include <QtTest/QtTest> -#if QT_VERSION < 0x040200 -QTEST_NOOP_MAIN -#else - #include <private/qtextcontrol_p.h> #include <private/qgraphicsitem_p.h> #include <QAbstractTextDocumentLayout> @@ -162,6 +158,8 @@ private slots: void mapFromToParent(); void mapFromToScene(); void mapFromToItem(); + void mapRectFromToParent_data(); + void mapRectFromToParent(); void isAncestorOf(); void commonAncestorItem(); void data(); @@ -220,6 +218,7 @@ private slots: // task specific tests below me void task141694_textItemEnsureVisible(); void task128696_textItemEnsureMovable(); + void ensureUpdateOnTextItem(); void task177918_lineItemUndetected(); void task240400_clickOnTextItem_data(); void task240400_clickOnTextItem(); @@ -2515,6 +2514,87 @@ void tst_QGraphicsItem::mapFromToItem() delete item4; } +void tst_QGraphicsItem::mapRectFromToParent_data() +{ + QTest::addColumn<bool>("parent"); + QTest::addColumn<QPointF>("parentPos"); + QTest::addColumn<QTransform>("parentTransform"); + QTest::addColumn<QPointF>("pos"); + QTest::addColumn<QTransform>("transform"); + QTest::addColumn<QRectF>("inputRect"); + QTest::addColumn<QRectF>("outputRect"); + + QTest::newRow("nil") << false << QPointF() << QTransform() << QPointF() << QTransform() << QRectF() << QRectF(); + QTest::newRow("simple") << false << QPointF() << QTransform() << QPointF() << QTransform() + << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10); + QTest::newRow("simple w/parent") << true + << QPointF() << QTransform() + << QPointF() << QTransform() + << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10); + QTest::newRow("simple w/parent parentPos") << true + << QPointF(50, 50) << QTransform() + << QPointF() << QTransform() + << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10); + QTest::newRow("simple w/parent parentPos parentRotation") << true + << QPointF(50, 50) << QTransform().rotate(45) + << QPointF() << QTransform() + << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10); + QTest::newRow("pos w/parent") << true + << QPointF() << QTransform() + << QPointF(50, 50) << QTransform() + << QRectF(0, 0, 10, 10) << QRectF(50, 50, 10, 10); + QTest::newRow("rotation w/parent") << true + << QPointF() << QTransform() + << QPointF() << QTransform().rotate(90) + << QRectF(0, 0, 10, 10) << QRectF(-10, 0, 10, 10); + QTest::newRow("pos rotation w/parent") << true + << QPointF() << QTransform() + << QPointF(50, 50) << QTransform().rotate(90) + << QRectF(0, 0, 10, 10) << QRectF(40, 50, 10, 10); + QTest::newRow("pos rotation w/parent parentPos parentRotation") << true + << QPointF(-170, -190) << QTransform().rotate(90) + << QPointF(50, 50) << QTransform().rotate(90) + << QRectF(0, 0, 10, 10) << QRectF(40, 50, 10, 10); +} + +void tst_QGraphicsItem::mapRectFromToParent() +{ + QFETCH(bool, parent); + QFETCH(QPointF, parentPos); + QFETCH(QTransform, parentTransform); + QFETCH(QPointF, pos); + QFETCH(QTransform, transform); + QFETCH(QRectF, inputRect); + QFETCH(QRectF, outputRect); + + QGraphicsRectItem *rect = new QGraphicsRectItem; + rect->setPos(pos); + rect->setTransform(transform); + + if (parent) { + QGraphicsRectItem *rectParent = new QGraphicsRectItem; + rect->setParentItem(rectParent); + rectParent->setPos(parentPos); + rectParent->setTransform(parentTransform); + } + + // Make sure we use non-destructive transform operations (e.g., 90 degree + // rotations). + QCOMPARE(rect->mapRectToParent(inputRect), outputRect); + QCOMPARE(rect->mapRectFromParent(outputRect), inputRect); + QCOMPARE(rect->itemTransform(rect->parentItem()).mapRect(inputRect), outputRect); + QCOMPARE(rect->mapToParent(inputRect).boundingRect(), outputRect); + QCOMPARE(rect->mapToParent(QPolygonF(inputRect)).boundingRect(), outputRect); + QCOMPARE(rect->mapFromParent(outputRect).boundingRect(), inputRect); + QCOMPARE(rect->mapFromParent(QPolygonF(outputRect)).boundingRect(), inputRect); + QPainterPath inputPath; + inputPath.addRect(inputRect); + QPainterPath outputPath; + outputPath.addRect(outputRect); + QCOMPARE(rect->mapToParent(inputPath).boundingRect(), outputPath.boundingRect()); + QCOMPARE(rect->mapFromParent(outputPath).boundingRect(), inputPath.boundingRect()); +} + void tst_QGraphicsItem::isAncestorOf() { QGraphicsItem *grandPa = new QGraphicsRectItem; @@ -5189,6 +5269,39 @@ void tst_QGraphicsItem::task240400_clickOnTextItem() QCOMPARE(item->textCursor().columnNumber(), 0); } +class TextItem : public QGraphicsSimpleTextItem +{ +public: + TextItem(const QString& text) : QGraphicsSimpleTextItem(text) + { + updates = 0; + } + + void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget) + { + updates++; + QGraphicsSimpleTextItem::paint(painter, option, widget); + } + + int updates; +}; + +void tst_QGraphicsItem::ensureUpdateOnTextItem() +{ + QGraphicsScene scene; + TextItem *text1 = new TextItem(QLatin1String("123")); + scene.addItem(text1); + QGraphicsView view(&scene); + view.show(); + QTest::qWait(250); + QCOMPARE(text1->updates,1); + + //same bouding rect but we have to update + text1->setText(QLatin1String("321")); + QTest::qWait(250); + QCOMPARE(text1->updates,2); +} + void tst_QGraphicsItem::task243707_addChildBeforeParent() { // Task reports that adding the child before the parent leads to an @@ -5927,4 +6040,3 @@ void tst_QGraphicsItem::cacheMode() QTEST_MAIN(tst_QGraphicsItem) #include "tst_qgraphicsitem.moc" -#endif diff --git a/tests/auto/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp b/tests/auto/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp index d43d0ae..6d20716 100644 --- a/tests/auto/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp +++ b/tests/auto/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp @@ -42,12 +42,7 @@ #include <QtTest/QtTest> -#if QT_VERSION < 0x040200 -QTEST_NOOP_MAIN -#else - #include <qgraphicsitemanimation.h> - #include <QtCore/qtimeline.h> #include <QtGui/qmatrix.h> @@ -195,4 +190,3 @@ void tst_QGraphicsItemAnimation::setTimeLine() QTEST_MAIN(tst_QGraphicsItemAnimation) #include "tst_qgraphicsitemanimation.moc" -#endif diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp index 91ed851..da99c30 100644 --- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp +++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp @@ -45,10 +45,6 @@ #include <ceconfig.h> #endif -#if QT_VERSION < 0x040200 -QTEST_NOOP_MAIN -#else - #include <QtGui> #include <math.h> @@ -245,6 +241,7 @@ private slots: void task139782_containsItemBoundingRect(); void task176178_itemIndexMethodBreaksSceneRect(); void task160653_selectionChanged(); + void task250680_childClip(); }; void tst_QGraphicsScene::initTestCase() @@ -3384,6 +3381,31 @@ void tst_QGraphicsScene::task160653_selectionChanged() QCOMPARE(spy.count(), 1); } +void tst_QGraphicsScene::task250680_childClip() +{ + QGraphicsRectItem *clipper = new QGraphicsRectItem; + clipper->setFlag(QGraphicsItem::ItemClipsChildrenToShape); + clipper->setPen(QPen(Qt::green)); + clipper->setRect(200, 200, 640, 480); + + QGraphicsRectItem *rect = new QGraphicsRectItem(clipper); + rect->setPen(QPen(Qt::red)); + rect->setBrush(QBrush(QColor(255, 0, 0, 75))); + rect->setPos(320, 240); + rect->setRect(-25, -25, 50, 50); + + QGraphicsScene scene; + scene.addItem(clipper); + + QPainterPath path; + path.addRect(-25, -25, 50, 50); + QCOMPARE(rect->clipPath(), path); + + QCOMPARE(scene.items(QRectF(320, 240, 5, 5)).size(), 2); + rect->rotate(45); + QCOMPARE(scene.items(QRectF(320, 240, 5, 5)).size(), 2); +} + void tst_QGraphicsScene::sorting_data() { QTest::addColumn<bool>("cache"); @@ -3563,4 +3585,3 @@ void tst_QGraphicsScene::stickyFocus() QTEST_MAIN(tst_QGraphicsScene) #include "tst_qgraphicsscene.moc" -#endif diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp index 412c6c5..b5af115 100644 --- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp @@ -42,10 +42,6 @@ #include <QtTest/QtTest> -#if QT_VERSION < 0x040200 -QTEST_NOOP_MAIN -#else - #include <qgraphicsitem.h> #include <qgraphicsscene.h> #include <qgraphicssceneevent.h> @@ -3050,4 +3046,3 @@ void tst_QGraphicsView::centerOnDirtyItem() QTEST_MAIN(tst_QGraphicsView) #include "tst_qgraphicsview.moc" -#endif diff --git a/tests/auto/qhash/tst_qhash.cpp b/tests/auto/qhash/tst_qhash.cpp index 9343504..f300eec 100644 --- a/tests/auto/qhash/tst_qhash.cpp +++ b/tests/auto/qhash/tst_qhash.cpp @@ -39,16 +39,10 @@ ** ****************************************************************************/ - #include <QtTest/QtTest> - -#if QT_VERSION >= 0x040000 #include <qhash.h> #include <qmap.h> -#endif - - //TESTED_CLASS= //TESTED_FILES= @@ -65,7 +59,7 @@ private slots: void insert1(); void erase(); void key(); - + void count(); // copied from tst_QMap void clear(); // copied from tst_QMap void empty(); // copied from tst_QMap @@ -80,9 +74,7 @@ private slots: void qmultihash_specific(); void compare(); -#if QT_VERSION > 0x040100 void compare2(); -#endif // QT_VERSION void iterators(); // sligthly modified from tst_QMap void keys_values_uniqueKeys(); // slightly modified from tst_QMap void noNeedlessRehashes(); @@ -799,7 +791,6 @@ void tst_QHash::compare() QVERIFY(hash1 != hash2); } -#if QT_VERSION > 0x040100 void tst_QHash::compare2() { QHash<int, int> a; @@ -838,7 +829,6 @@ void tst_QHash::compare2() QVERIFY(!(a == b)); QVERIFY(!(b == a)); } -#endif // QT_VERSION //sligthly modified from tst_QMap void tst_QHash::iterators() @@ -996,9 +986,6 @@ void tst_QHash::rehash_isnt_quadratic() class Bar { public: -#if QT_VERSION < 0x040100 - Bar() : j(0) {} -#endif Bar(int i) : j(i) {} int j; @@ -1180,37 +1167,27 @@ QList<T> sorted(const QList<T> &list) void tst_QHash::keys_values_uniqueKeys() { QHash<QString, int> hash; -#if QT_VERSION >= 0x040200 QVERIFY(hash.uniqueKeys().isEmpty()); -#endif QVERIFY(hash.keys().isEmpty()); QVERIFY(hash.values().isEmpty()); hash.insertMulti("alpha", 1); QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha")); -#if QT_VERSION >= 0x040200 QVERIFY(hash.keys() == hash.uniqueKeys()); -#endif QVERIFY(hash.values() == (QList<int>() << 1)); hash.insertMulti("beta", -2); QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha" << "beta")); -#if QT_VERSION >= 0x040200 QVERIFY(hash.keys() == hash.uniqueKeys()); -#endif QVERIFY(sorted(hash.values()) == sorted(QList<int>() << 1 << -2)); hash.insertMulti("alpha", 2); -#if QT_VERSION >= 0x040200 QVERIFY(sorted(hash.uniqueKeys()) == (QList<QString>() << "alpha" << "beta")); -#endif QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha" << "alpha" << "beta")); QVERIFY(sorted(hash.values()) == sorted(QList<int>() << 2 << 1 << -2)); hash.insertMulti("beta", 4); -#if QT_VERSION >= 0x040200 QVERIFY(sorted(hash.uniqueKeys()) == (QList<QString>() << "alpha" << "beta")); -#endif QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha" << "alpha" << "beta" << "beta")); QVERIFY(sorted(hash.values()) == sorted(QList<int>() << 2 << 1 << 4 << -2)); } diff --git a/tests/auto/qhttp/tst_qhttp.cpp b/tests/auto/qhttp/tst_qhttp.cpp index e4a798e..46bd8cd 100644 --- a/tests/auto/qhttp/tst_qhttp.cpp +++ b/tests/auto/qhttp/tst_qhttp.cpp @@ -253,11 +253,9 @@ void tst_QHttp::constructing() } -#if QT_VERSION >= 0x040102 { QHttpResponseHeader header(200); } -#endif } void tst_QHttp::invalidRequests() diff --git a/tests/auto/qicoimageformat/tst_qticoimageformat.cpp b/tests/auto/qicoimageformat/tst_qticoimageformat.cpp index 9fca6df..7d7f4ac 100644 --- a/tests/auto/qicoimageformat/tst_qticoimageformat.cpp +++ b/tests/auto/qicoimageformat/tst_qticoimageformat.cpp @@ -264,42 +264,35 @@ void tst_QtIcoImageFormat::nextImageDelay_data() { QTest::addColumn<QString>("fileName"); QTest::addColumn<int>("count"); - QTest::addColumn<int>("delay"); - - QTest::newRow("floppy (16px,32px - 16 colors)") << "valid/35FLOPPY.ICO" << 2 << 0; - QTest::newRow("16px,32px,48px - 256,16M colors") << "valid/abcardWindow.ico" << 6 << 0; - QTest::newRow("16px - 16 colors") << "valid/App.ico" << 1 << 0; - QTest::newRow("16px,32px,48px - 16,256,16M colors") << "valid/Obj_N2_Internal_Mem.ico" << 9 << 0; - QTest::newRow("16px - 16,256,16M colors") << "valid/Status_Play.ico" << 3 << 0; - QTest::newRow("16px,32px - 16 colors") << "valid/TIMER01.ICO" << 2 << 0; - QTest::newRow("16px16c, 32px32c, 32px256c") << "valid/WORLD.ico" << 3 << 0; - QTest::newRow("16px16c, 32px32c, 32px256c") << "valid/WORLDH.ico" << 3 << 0; - QTest::newRow("invalid floppy (first 8 bytes = 0xff)") << "invalid/35floppy.ico" << -1 << -1; - QTest::newRow("includes 32BPP w/alpha") << "valid/semitransparent.ico" << 9 << 0; + + QTest::newRow("floppy (16px,32px - 16 colors)") << "valid/35FLOPPY.ICO" << 2; + QTest::newRow("16px,32px,48px - 256,16M colors") << "valid/abcardWindow.ico" << 6; + QTest::newRow("16px - 16 colors") << "valid/App.ico" << 1; + QTest::newRow("16px,32px,48px - 16,256,16M colors") << "valid/Obj_N2_Internal_Mem.ico" << 9; + QTest::newRow("16px - 16,256,16M colors") << "valid/Status_Play.ico" << 3; + QTest::newRow("16px,32px - 16 colors") << "valid/TIMER01.ICO" << 2; + QTest::newRow("16px16c, 32px32c, 32px256c") << "valid/WORLD.ico" << 3; + QTest::newRow("16px16c, 32px32c, 32px256c") << "valid/WORLDH.ico" << 3; + QTest::newRow("invalid floppy (first 8 bytes = 0xff)") << "invalid/35floppy.ico" << -1; + QTest::newRow("includes 32BPP w/alpha") << "valid/semitransparent.ico" << 9; } void tst_QtIcoImageFormat::nextImageDelay() { QFETCH(QString, fileName); QFETCH(int, count); - QFETCH(int, delay); - -#if QT_VERSION > 0x040001 - delay = 0; -#endif QImageReader reader(m_IconPath + "/" + fileName); if (count == -1) { - QCOMPARE(reader.nextImageDelay(), delay); - + QCOMPARE(reader.nextImageDelay(), 0); } else { int i; for (i = 0; i < count; i++) { - QVERIFY(reader.jumpToImage(i)); - QCOMPARE(reader.nextImageDelay(), delay); + QCOMPARE(reader.nextImageDelay(), 0); } } } + QTEST_MAIN(tst_QtIcoImageFormat) #include "tst_qticoimageformat.moc" diff --git a/tests/auto/qicon/tst_qicon.cpp b/tests/auto/qicon/tst_qicon.cpp index 7e515a5..4e9a880 100644 --- a/tests/auto/qicon/tst_qicon.cpp +++ b/tests/auto/qicon/tst_qicon.cpp @@ -186,10 +186,8 @@ void tst_QIcon::actualSize2() QFETCH(QSize, argument); QFETCH(QSize, result); -#if QT_VERSION >= 0x040200 QCOMPARE(icon.actualSize(argument), result); QCOMPARE(icon.pixmap(argument).size(), result); -#endif } void tst_QIcon::svgActualSize() diff --git a/tests/auto/qimage/tst_qimage.cpp b/tests/auto/qimage/tst_qimage.cpp index 132e373..ee4ece2 100644 --- a/tests/auto/qimage/tst_qimage.cpp +++ b/tests/auto/qimage/tst_qimage.cpp @@ -95,9 +95,8 @@ private slots: void rotate_data(); void rotate(); -#if QT_VERSION >= 0x040102 void copy(); -#endif + void setPixel_data(); void setPixel(); @@ -974,7 +973,6 @@ void tst_QImage::rotate() QCOMPARE(original, dest); } -#if QT_VERSION >= 0x040102 void tst_QImage::copy() { // Task 99250 @@ -983,7 +981,6 @@ void tst_QImage::copy() img.copy(QRect(1000,1,1,1)); } } -#endif void tst_QImage::setPixel_data() { diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp index e256227..3841111 100644 --- a/tests/auto/qimagereader/tst_qimagereader.cpp +++ b/tests/auto/qimagereader/tst_qimagereader.cpp @@ -128,30 +128,22 @@ private slots: void physicalDpi_data(); void physicalDpi(); -#if QT_VERSION > 0x040100 void sizeBeforeRead_data(); void sizeBeforeRead(); -#endif -#if QT_VERSION > 0x040400 void imageFormatBeforeRead_data(); void imageFormatBeforeRead(); -#endif #if defined QTEST_HAVE_GIF void gifHandlerBugs(); #endif -#if QT_VERSION >= 0x040200 void readCorruptImage_data(); void readCorruptImage(); -#endif void readCorruptBmp(); -#if QT_VERSION >= 0x040200 void supportsOption_data(); void supportsOption(); -#endif #if defined QTEST_HAVE_TIFF void tiffCompression_data(); @@ -210,9 +202,7 @@ void tst_QImageReader::readImage_data() QTest::newRow("BMP: 4bpp RLE") << QString("4bpp-rle.bmp") << true << QByteArray("bmp"); QTest::newRow("BMP: 4bpp uncompressed") << QString("tst7.bmp") << true << QByteArray("bmp"); QTest::newRow("BMP: 16bpp") << QString("16bpp.bmp") << true << QByteArray("bmp"); -#if QT_VERSION >= 0x040200 QTest::newRow("BMP: negative height") << QString("negativeheight.bmp") << true << QByteArray("bmp"); -#endif QTest::newRow("XPM: marble") << QString("marble.xpm") << true << QByteArray("xpm"); QTest::newRow("PNG: kollada") << QString("kollada.png") << true << QByteArray("png"); QTest::newRow("PPM: teapot") << QString("teapot.ppm") << true << QByteArray("ppm"); @@ -604,7 +594,6 @@ void tst_QImageReader::supportsAnimation() QCOMPARE(io.supportsAnimation(), success); } -#if QT_VERSION > 0x040100 void tst_QImageReader::sizeBeforeRead_data() { imageFormat_data(); @@ -627,9 +616,7 @@ void tst_QImageReader::sizeBeforeRead() QVERIFY(!image.isNull()); QCOMPARE(size, image.size()); } -#endif // QT_VERSION -#if QT_VERSION > 0x040400 void tst_QImageReader::imageFormatBeforeRead_data() { imageFormat_data(); @@ -649,7 +636,6 @@ void tst_QImageReader::imageFormatBeforeRead() QCOMPARE(image.format(), fileFormat); } } -#endif #if defined QTEST_HAVE_GIF void tst_QImageReader::gifHandlerBugs() @@ -662,7 +648,6 @@ void tst_QImageReader::gifHandlerBugs() QVERIFY(count == 34); } -#if QT_VERSION >= 0x040102 // Task 95166 { QImageReader io1("images/bat1.gif"); @@ -675,9 +660,7 @@ void tst_QImageReader::gifHandlerBugs() QVERIFY(!im2.isNull()); QCOMPARE(im1, im2); } -#endif -#if QT_VERSION >= 0x040104 // Task 9994 { QImageReader io1("images/noclearcode.gif"); @@ -687,7 +670,6 @@ void tst_QImageReader::gifHandlerBugs() QVERIFY(!im1.isNull()); QVERIFY(!im2.isNull()); QCOMPARE(im1.convertToFormat(QImage::Format_ARGB32), im2.convertToFormat(QImage::Format_ARGB32)); } -#endif } #endif @@ -872,11 +854,7 @@ void tst_QImageReader::readFromFileAfterJunk() QVERIFY(!imageData.isNull()); int iterations = 10; -#if QT_VERSION < 0x040200 - if (format == "ppm" || format == "pbm" || format == "pgm" || format == "xpm" || format == "jpeg") -#else if (format == "ppm" || format == "pbm" || format == "pgm") -#endif iterations = 1; if (format == "mng" || !QImageWriter::supportedImageFormats().contains(format)) { @@ -1175,7 +1153,6 @@ void tst_QImageReader::readFromResources() QCOMPARE(QImageReader(fileName).read(), QImageReader(":/" + fileName).read()); } -#if QT_VERSION >= 0x040200 void tst_QImageReader::readCorruptImage_data() { QTest::addColumn<QString>("fileName"); @@ -1203,6 +1180,7 @@ void tst_QImageReader::readCorruptImage_data() QTest::newRow("corrupt tiff") << QString("images/corrupt-data.tif") << true << QString(""); #endif } + void tst_QImageReader::readCorruptImage() { QFETCH(QString, fileName); @@ -1214,14 +1192,12 @@ void tst_QImageReader::readCorruptImage() QVERIFY(reader.canRead()); QCOMPARE(reader.read().isNull(), shouldFail); } -#endif // QT_VERSION void tst_QImageReader::readCorruptBmp() { QCOMPARE(QImage("images/tst7.bmp").convertToFormat(QImage::Format_ARGB32_Premultiplied), QImage("images/tst7.png").convertToFormat(QImage::Format_ARGB32_Premultiplied)); } -#if QT_VERSION >= 0x040200 void tst_QImageReader::supportsOption_data() { QTest::addColumn<QString>("fileName"); @@ -1264,7 +1240,6 @@ void tst_QImageReader::supportsOption() foreach (QImageIOHandler::ImageOption option, allOptions) QVERIFY(!reader.supportsOption(option)); } -#endif #if defined QTEST_HAVE_TIFF void tst_QImageReader::tiffCompression_data() diff --git a/tests/auto/qiodevice/tst_qiodevice.cpp b/tests/auto/qiodevice/tst_qiodevice.cpp index 6a8ff73..03a0665 100644 --- a/tests/auto/qiodevice/tst_qiodevice.cpp +++ b/tests/auto/qiodevice/tst_qiodevice.cpp @@ -67,9 +67,7 @@ private slots: void constructing_QFile(); void read_QByteArray(); void unget(); -#if QT_VERSION >= 0x040100 void peek(); -#endif // QT_VERSION void getch(); void putch(); @@ -310,7 +308,6 @@ void tst_QIODevice::unget() } //-------------------------------------------------------------------- -#if QT_VERSION >= 0x040100 void tst_QIODevice::peek() { QBuffer buffer; @@ -348,7 +345,6 @@ void tst_QIODevice::peek() } QFile::remove("peektestfile"); } -#endif // QT_VERSION void tst_QIODevice::getch() { @@ -441,7 +437,6 @@ void tst_QIODevice::readLine() result = buffer.readLine(line.data(), linelen + 1); QCOMPARE(result, linelen); -#if QT_VERSION >= 0x0402000 // try with a line length limit QVERIFY(buffer.seek(0)); line = buffer.readLine(linelen + 100); @@ -451,7 +446,6 @@ void tst_QIODevice::readLine() QVERIFY(buffer.seek(0)); line = buffer.readLine(); QCOMPARE(line.size(), linelen); -#endif } QTEST_MAIN(tst_QIODevice) diff --git a/tests/auto/qitemdelegate/tst_qitemdelegate.cpp b/tests/auto/qitemdelegate/tst_qitemdelegate.cpp index befe0eb..27741e0 100644 --- a/tests/auto/qitemdelegate/tst_qitemdelegate.cpp +++ b/tests/auto/qitemdelegate/tst_qitemdelegate.cpp @@ -777,6 +777,7 @@ void tst_QItemDelegate::dateTimeEditor() QCOMPARE(timeEditor->time(), time); widget.clearFocus(); + qApp->setActiveWindow(&widget); widget.setFocus(); widget.editItem(item2); diff --git a/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp b/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp index c12c583..aa6939d 100644 --- a/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp +++ b/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp @@ -61,9 +61,6 @@ void tst_QItemEditorFactory::createEditor() void tst_QItemEditorFactory::createCustomEditor() { -#if QT_VERSION < 0x040200 - QSKIP("Needs Qt >= 4.2", SkipAll); -#else QItemEditorFactory editorFactory; QItemEditorCreatorBase *creator = new QStandardItemEditorCreator<QDoubleSpinBox>(); @@ -76,7 +73,6 @@ void tst_QItemEditorFactory::createCustomEditor() QCOMPARE(w->metaObject()->userProperty().type(), QVariant::Double); delete creator; -#endif } QTEST_MAIN(tst_QItemEditorFactory) diff --git a/tests/auto/qitemmodel/modelstotest.cpp b/tests/auto/qitemmodel/modelstotest.cpp index 61fc480..2cd6048 100644 --- a/tests/auto/qitemmodel/modelstotest.cpp +++ b/tests/auto/qitemmodel/modelstotest.cpp @@ -117,13 +117,8 @@ ModelsToTest::ModelsToTest() tests.append(test("QTableModel", ReadWrite, HasData)); tests.append(test("QTableModelEmpty", ReadWrite, Empty)); -#if QT_VERSION >= 0x040200 -#define TABLEFEATURE ReadWrite -#else -#define TABLEFEATURE ReadOnly -#endif - tests.append(test("QTreeModel", TABLEFEATURE, HasData)); - tests.append(test("QTreeModelEmpty", TABLEFEATURE, Empty)); + tests.append(test("QTreeModel", ReadWrite, HasData)); + tests.append(test("QTreeModelEmpty", ReadWrite, Empty)); tests.append(test("QSqlQueryModel", ReadOnly, HasData)); tests.append(test("QSqlQueryModelEmpty", ReadOnly, Empty)); diff --git a/tests/auto/qitemview/tst_qitemview.cpp b/tests/auto/qitemview/tst_qitemview.cpp index b248aa8..748bd50 100644 --- a/tests/auto/qitemview/tst_qitemview.cpp +++ b/tests/auto/qitemview/tst_qitemview.cpp @@ -230,19 +230,15 @@ void tst_QItemView::setupWithNoTestData() ViewsToTest testViews; QTest::addColumn<QString>("viewType"); QTest::addColumn<bool>("displays"); -#if QT_VERSION >= 0x040200 QTest::addColumn<int>("vscroll"); QTest::addColumn<int>("hscroll"); -#endif for (int i = 0; i < testViews.tests.size(); ++i) { QString view = testViews.tests.at(i).viewType; QString test = view + " ScrollPerPixel"; bool displayIndexes = (testViews.tests.at(i).display == ViewsToTest::DisplayRoot); QTest::newRow(test.toLatin1().data()) << view << displayIndexes -#if QT_VERSION >= 0x040200 << (int)QAbstractItemView::ScrollPerPixel << (int)QAbstractItemView::ScrollPerPixel -#endif ; } for (int i = 0; i < testViews.tests.size(); ++i) { @@ -250,10 +246,8 @@ void tst_QItemView::setupWithNoTestData() QString test = view + " ScrollPerItem"; bool displayIndexes = (testViews.tests.at(i).display == ViewsToTest::DisplayRoot); QTest::newRow(test.toLatin1().data()) << view << displayIndexes -#if QT_VERSION >= 0x040200 << (int)QAbstractItemView::ScrollPerItem << (int)QAbstractItemView::ScrollPerItem -#endif ; } } @@ -296,19 +290,17 @@ void tst_QItemView::nonDestructiveBasicTest() #ifdef Q_OS_IRIX QSKIP("This test takes too long to execute on IRIX", SkipAll); #endif - + #ifdef Q_OS_WINCE QTest::qWait(400); #endif QFETCH(QString, viewType); view = testViews->createView(viewType); -#if QT_VERSION >= 0x040200 QFETCH(int, vscroll); QFETCH(int, hscroll); view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll); view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll); -#endif // setSelectionModel() will assert //view->setSelectionModel(0); @@ -461,12 +453,10 @@ void tst_QItemView::spider() #endif QFETCH(QString, viewType); view = testViews->createView(viewType); -#if QT_VERSION >= 0x040200 QFETCH(int, vscroll); QFETCH(int, hscroll); view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll); view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll); -#endif view->setModel(treeModel); view->show(); #if defined(Q_OS_WINCE) @@ -498,12 +488,10 @@ void tst_QItemView::resize() // doesn't really catch theproblem. QFETCH(QString, viewType); view = testViews->createView(viewType); -#if QT_VERSION >= 0x040200 QFETCH(int, vscroll); QFETCH(int, hscroll); view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll); view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll); -#endif view->setModel(treeModel); view->show(); @@ -528,12 +516,10 @@ void tst_QItemView::visualRect() #endif QFETCH(QString, viewType); view = testViews->createView(viewType); -#if QT_VERSION >= 0x040200 QFETCH(int, vscroll); QFETCH(int, hscroll); view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll); view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll); -#endif QCOMPARE(view->visualRect(QModelIndex()), QRect()); // Add model @@ -664,12 +650,10 @@ void tst_QItemView::indexAt() #endif QFETCH(QString, viewType); view = testViews->createView(viewType); -#if QT_VERSION >= 0x040200 QFETCH(int, vscroll); QFETCH(int, hscroll); view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll); view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll); -#endif view->show(); view->setModel(treeModel); #if 0 @@ -700,12 +684,10 @@ void tst_QItemView::scrollTo() #endif QFETCH(QString, viewType); view = testViews->createView(viewType); -#if QT_VERSION >= 0x040200 QFETCH(int, vscroll); QFETCH(int, hscroll); view->setVerticalScrollMode((QAbstractItemView::ScrollMode)vscroll); view->setHorizontalScrollMode((QAbstractItemView::ScrollMode)hscroll); -#endif view->setModel(treeModel); view->show(); diff --git a/tests/auto/qkeysequence/tst_qkeysequence.cpp b/tests/auto/qkeysequence/tst_qkeysequence.cpp index 33de82a..8fcee36 100644 --- a/tests/auto/qkeysequence/tst_qkeysequence.cpp +++ b/tests/auto/qkeysequence/tst_qkeysequence.cpp @@ -181,9 +181,7 @@ void tst_QKeySequence::operatorQString_data() #ifndef Q_WS_MAC QTest::newRow( "Ctrl+Left" ) << int(Qt::CTRL) << int(Qt::Key_Left) << QString( "Ctrl+Left" ); -#if QT_VERSION > 0x040100 QTest::newRow( "Ctrl+," ) << int(Qt::CTRL) << int(Qt::Key_Comma) << QString( "Ctrl+," ); -#endif QTest::newRow( "Alt+Left" ) << int(Qt::ALT) << int(Qt::Key_Left) << QString( "Alt+Left" ); QTest::newRow( "Alt+Shift+Left" ) << int(Qt::ALT | Qt::SHIFT) << int(Qt::Key_Left) << QString( "Alt+Shift+Left" ); QTest::newRow( "Ctrl" ) << int(Qt::CTRL) << int(Qt::Key_Aring | Qt::UNICODE_ACCEL) << QString( "Ctrl+\x0c5" ); @@ -192,9 +190,7 @@ void tst_QKeySequence::operatorQString_data() QTest::newRow( "Meta" ) << int(Qt::META) << int(Qt::Key_Aring | Qt::UNICODE_ACCEL) << QString( "Meta+\x0c5" ); #else QTest::newRow( "Ctrl+Left" ) << int(Qt::CTRL) << int(Qt::Key_Left) << MacCtrl + macSymbolForQtKey(Qt::Key_Left); -#if QT_VERSION > 0x040100 QTest::newRow( "Ctrl+," ) << int(Qt::CTRL) << int(Qt::Key_Comma) << MacCtrl + ","; -#endif QTest::newRow( "Alt+Left" ) << int(Qt::ALT) << int(Qt::Key_Left) << MacAlt + macSymbolForQtKey(Qt::Key_Left); QTest::newRow( "Alt+Shift+Left" ) << int(Qt::ALT | Qt::SHIFT) << int(Qt::Key_Left) << MacAlt + MacShift + macSymbolForQtKey(Qt::Key_Left); QTest::newRow( "Ctrl" ) << int(Qt::CTRL) << int(Qt::Key_Aring | Qt::UNICODE_ACCEL) << MacCtrl + "\x0c5"; @@ -385,10 +381,8 @@ void tst_QKeySequence::toString_data() QTest::newRow("Shift") << QString("Shift+\x0c5") << QString("Shift+\x0c5") << QString("Shift+\x0c5"); QTest::newRow("Meta") << QString("Meta+\x0c5") << QString("Meta+\x0c5") << QString("Meta+\x0c5"); QTest::newRow("Ctrl+Plus") << QString("Ctrl++") << QString("Ctrl++") << QString("Ctrl++"); -#if QT_VERSION > 0x040100 QTest::newRow("Ctrl+,") << QString("Ctrl+,") << QString("Ctrl+,") << QString("Ctrl+,"); QTest::newRow("Ctrl+,,Ctrl+,") << QString("Ctrl+,,Ctrl+,") << QString("Ctrl+,, Ctrl+,") << QString("Ctrl+,, Ctrl+,"); -#endif QTest::newRow("MultiKey") << QString("Alt+X, Ctrl+Y, Z") << QString("Alt+X, Ctrl+Y, Z") << QString("Alt+X, Ctrl+Y, Z"); @@ -406,10 +400,8 @@ void tst_QKeySequence::toString_data() QTest::newRow("Shift") << MacShift + "\x0c5" << QString("Shift+\x0c5") << MacShift + "\x0c5"; QTest::newRow("Meta") << MacMeta + "\x0c5" << QString("Meta+\x0c5") << MacMeta + "\x0c5"; QTest::newRow("Ctrl+Plus") << MacCtrl + "+" << QString("Ctrl++") << MacCtrl + "+"; -#if QT_VERSION > 0x040100 QTest::newRow("Ctrl+,") << MacCtrl + "," << QString("Ctrl+,") << MacCtrl + ","; QTest::newRow("Ctrl+,,Ctrl+,") << MacCtrl + ",, " + MacCtrl + "," << QString("Ctrl+,, Ctrl+,") << MacCtrl + ",, " + MacCtrl + ","; -#endif QTest::newRow("MultiKey") << MacAlt + "X, " + MacCtrl + "Y, Z" << QString("Alt+X, Ctrl+Y, Z") << MacAlt + "X, " + MacCtrl + "Y, Z"; QTest::newRow("Invalid") << QString("Ctrly") << QString("") << QString(""); diff --git a/tests/auto/qlabel/tst_qlabel.cpp b/tests/auto/qlabel/tst_qlabel.cpp index 1783a3d..4580236 100644 --- a/tests/auto/qlabel/tst_qlabel.cpp +++ b/tests/auto/qlabel/tst_qlabel.cpp @@ -263,10 +263,8 @@ void tst_QLabel::setTextFormat() testWidget->setTextFormat( Qt::RichText ); QVERIFY( testWidget->textFormat() == Qt::RichText ); -#if QT_VERSION >= 0x030100 testWidget->setTextFormat( Qt::LogText ); QVERIFY( testWidget->textFormat() == Qt::LogText ); -#endif testWidget->setTextFormat( Qt::AutoText ); QVERIFY( testWidget->textFormat() == Qt::AutoText ); diff --git a/tests/auto/qlibrary/tst_qlibrary.cpp b/tests/auto/qlibrary/tst_qlibrary.cpp index dea0c54e..3e7e3f3 100644 --- a/tests/auto/qlibrary/tst_qlibrary.cpp +++ b/tests/auto/qlibrary/tst_qlibrary.cpp @@ -187,7 +187,7 @@ void tst_QLibrary::version() QFETCH( int, loadversion ); QFETCH( int, resultversion ); -#if QT_VERSION >= 0x040200 && !defined(Q_OS_AIX) && !defined(Q_OS_WIN) +#if !defined(Q_OS_AIX) && !defined(Q_OS_WIN) QString currDir = QDir::currentPath(); QLibrary library( currDir + QLatin1Char('/') + lib, loadversion ); bool ok = library.load(); @@ -218,7 +218,6 @@ void tst_QLibrary::load_data() QTest::newRow("ok (libmylib ver. 1)") << currDir + "/libmylib" <<(bool)true; #endif -#if QT_VERSION >= 0x040103 # if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) QTest::newRow( "ok01 (with suffix)" ) << currDir + "/mylib.dll" << (bool)true; QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/mylib.dl2" << (bool)true; @@ -228,7 +227,6 @@ void tst_QLibrary::load_data() QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/libmylib.so2" << (bool)true; QTest::newRow( "ok03 (with non-standard suffix)" ) << currDir + "/system.trolltech.test.mylib.so" << (bool)true; # endif // Q_OS_UNIX -#endif // QT_VERSION } void tst_QLibrary::load() @@ -438,7 +436,7 @@ void tst_QLibrary::loadHints_data() QTest::addColumn<bool>("result"); QLibrary::LoadHints lh; -#if QT_VERSION >= 0x040300 && defined(Q_OS_AIX) +#if defined(Q_OS_AIX) if (QFile::exists("/usr/lib/libGL.a") || QFile::exists("/usr/X11R6/lib/libGL.a")) { # if QT_POINTER_SIZE == 4 QTest::newRow( "ok03 (Archive member)" ) << "libGL.a(shr.o)" << int(QLibrary::LoadArchiveMemberHint) << (bool)TRUE; @@ -446,9 +444,8 @@ void tst_QLibrary::loadHints_data() QTest::newRow( "ok03 (Archive member)" ) << "libGL.a(shr_64.o)" << int(QLibrary::LoadArchiveMemberHint) << (bool)TRUE; #endif } -#endif // QT_VERSION +#endif -#if QT_VERSION >= 0x040103 QString currDir = QDir::currentPath(); lh |= QLibrary::ResolveAllSymbolsHint; # if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) @@ -460,8 +457,6 @@ void tst_QLibrary::loadHints_data() QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/libmylib.so2" << int(lh) << (bool)TRUE; QTest::newRow( "ok03 (with many dots)" ) << currDir + "/system.trolltech.test.mylib.so" << int(lh) << (bool)TRUE; # endif // Q_OS_UNIX -#endif // QT_VERSION - } void tst_QLibrary::loadHints() diff --git a/tests/auto/qlineedit/tst_qlineedit.cpp b/tests/auto/qlineedit/tst_qlineedit.cpp index 87e966f..34a64c8 100644 --- a/tests/auto/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/qlineedit/tst_qlineedit.cpp @@ -1465,14 +1465,10 @@ void tst_QLineEdit::textMask_data() void tst_QLineEdit::textMask() { -#if (QT_VERSION-0 >= 0x030303) QFETCH( QString, insertString ); testWidget->setInputMask( "#" ); testWidget->setText( insertString ); QCOMPARE( testWidget->text(), insertString ); -#else - QSKIP( "This test function tests a problem with masks that was fixed in 3.3", SkipAll); -#endif } void tst_QLineEdit::setText() diff --git a/tests/auto/qmainwindow/tst_qmainwindow.cpp b/tests/auto/qmainwindow/tst_qmainwindow.cpp index 4529bd5..b16a62a 100644 --- a/tests/auto/qmainwindow/tst_qmainwindow.cpp +++ b/tests/auto/qmainwindow/tst_qmainwindow.cpp @@ -1039,11 +1039,6 @@ void tst_QMainWindow::toolBarArea() QMainWindow mw; QToolBar tb(&mw); -#if QT_VERSION <= 0x040103 - // this would assert in previous versions - QCOMPARE(mw.toolBarArea(&tb), Qt::ToolBarArea(0)); -#endif - for (int j = 0; j < areaCount; ++j) { Qt::ToolBarArea otherArea = areas[j]; @@ -1205,11 +1200,6 @@ void tst_QMainWindow::dockWidgetArea() QMainWindow mw; QDockWidget dw(&mw); -#if QT_VERSION <= 0x040103 - // this would assert in previous versions - QCOMPARE(mw.dockWidgetArea(&dw), Qt::DockWidgetArea(0)); -#endif - for (int j = 0; j < areaCount; ++j) { Qt::DockWidgetArea otherArea = areas[i]; diff --git a/tests/auto/qmake/testdata/functions/functions.pro b/tests/auto/qmake/testdata/functions/functions.pro index 5ee5f51..9ed92f96 100644 --- a/tests/auto/qmake/testdata/functions/functions.pro +++ b/tests/auto/qmake/testdata/functions/functions.pro @@ -51,15 +51,11 @@ include( infiletest.pro ) message( "FAILED: include function: $$DEFINES" ) } -lessThan(QT_VERSION, 40200) { - message( "SKIPPED: replace function only in 4.2" ) -} else { - #replace - VERSION=1.0.0 - VERSION_replaced=$$replace(VERSION,\.,_) - !isEqual(VERSION_replaced, 1_0_0) { - message( "FAILED: replace function: $$VERSION_replaced" ) - } +#replace +VERSION=1.0.0 +VERSION_replaced=$$replace(VERSION,\.,_) +!isEqual(VERSION_replaced, 1_0_0) { + message( "FAILED: replace function: $$VERSION_replaced" ) } #test functions diff --git a/tests/auto/qmap/tst_qmap.cpp b/tests/auto/qmap/tst_qmap.cpp index ce413c5..99efc80 100644 --- a/tests/auto/qmap/tst_qmap.cpp +++ b/tests/auto/qmap/tst_qmap.cpp @@ -728,37 +728,27 @@ void tst_QMap::iterators() void tst_QMap::keys_values_uniqueKeys() { QMap<QString, int> map; -#if QT_VERSION >= 0x040200 QVERIFY(map.uniqueKeys().isEmpty()); -#endif QVERIFY(map.keys().isEmpty()); QVERIFY(map.values().isEmpty()); map.insertMulti("alpha", 1); QVERIFY(map.keys() == (QList<QString>() << "alpha")); -#if QT_VERSION >= 0x040200 QVERIFY(map.uniqueKeys() == map.keys()); -#endif QVERIFY(map.values() == (QList<int>() << 1)); map.insertMulti("beta", -2); QVERIFY(map.keys() == (QList<QString>() << "alpha" << "beta")); -#if QT_VERSION >= 0x040200 QVERIFY(map.keys() == map.uniqueKeys()); -#endif QVERIFY(map.values() == (QList<int>() << 1 << -2)); map.insertMulti("alpha", 2); -#if QT_VERSION >= 0x040200 QVERIFY(map.uniqueKeys() == (QList<QString>() << "alpha" << "beta")); -#endif QVERIFY(map.keys() == (QList<QString>() << "alpha" << "alpha" << "beta")); QVERIFY(map.values() == (QList<int>() << 2 << 1 << -2)); map.insertMulti("beta", 4); -#if QT_VERSION >= 0x040200 QVERIFY(map.uniqueKeys() == (QList<QString>() << "alpha" << "beta")); -#endif QVERIFY(map.keys() == (QList<QString>() << "alpha" << "alpha" << "beta" << "beta")); QVERIFY(map.values() == (QList<int>() << 2 << 1 << 4 << -2)); } diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp index 7607838..a86b754 100644 --- a/tests/auto/qmenu/tst_qmenu.cpp +++ b/tests/auto/qmenu/tst_qmenu.cpp @@ -92,6 +92,7 @@ private slots: void activeSubMenuPosition(); void task242454_sizeHint(); void task176201_clear(); + void task250673_activeMutliColumnSubMenuPosition(); protected slots: void onActivated(QAction*); void onHighlighted(QAction*); @@ -678,6 +679,39 @@ void tst_QMenu::task176201_clear() QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.rect().center()); } +void tst_QMenu::task250673_activeMutliColumnSubMenuPosition() +{ + class MyMenu : public QMenu + { + public: + friend class tst_QMenu; + }; + + QMenu sub; + sub.addAction("Sub-Item1"); + QAction *subAction = sub.addAction("Sub-Item2"); + + MyMenu main; + main.addAction("Item 1"); + QAction *menuAction = main.addMenu(&sub); + main.popup(QPoint(200,200)); + + uint i = 2; + while (main.columnCount() < 2) { + main.addAction(QString("Item %1").arg(i)); + ++i; + Q_ASSERT(i<1000); + } + main.setActiveAction(menuAction); + sub.setActiveAction(subAction); + QVERIFY(main.isVisible()); + QCOMPARE(main.activeAction(), menuAction); + QVERIFY(sub.isVisible()); + QVERIFY(sub.pos().x() > main.pos().x()); + + const int subMenuOffset = main.style()->pixelMetric(QStyle::PM_SubMenuOverlap, 0, &main); + QVERIFY((sub.geometry().left() - subMenuOffset + 5) < main.geometry().right()); +} QTEST_MAIN(tst_QMenu) #include "tst_qmenu.moc" diff --git a/tests/auto/qmetaobject/tst_qmetaobject.cpp b/tests/auto/qmetaobject/tst_qmetaobject.cpp index b3b7f33..3d04a0f 100644 --- a/tests/auto/qmetaobject/tst_qmetaobject.cpp +++ b/tests/auto/qmetaobject/tst_qmetaobject.cpp @@ -257,11 +257,7 @@ private slots: void on_child1_destroyed() { ++invokeCount2; } }; -#if QT_VERSION >= 0x040200 #define FUNCTION(x) "QMetaObject::" x ": " -#else -#define FUNCTION(x) "QMetaObject::" x "(): " -#endif void tst_QMetaObject::connectSlotsByName() { diff --git a/tests/auto/qmetatype/tst_qmetatype.cpp b/tests/auto/qmetatype/tst_qmetatype.cpp index eccf7e6..d71f470 100644 --- a/tests/auto/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/qmetatype/tst_qmetatype.cpp @@ -127,7 +127,6 @@ protected: void tst_QMetaType::threadSafety() { -#if QT_VERSION >= 0x040100 MetaTypeTorturer t1; MetaTypeTorturer t2; MetaTypeTorturer t3; @@ -139,7 +138,6 @@ void tst_QMetaType::threadSafety() QVERIFY(t1.wait()); QVERIFY(t2.wait()); QVERIFY(t3.wait()); -#endif } namespace TestSpace diff --git a/tests/auto/qmovie/tst_qmovie.cpp b/tests/auto/qmovie/tst_qmovie.cpp index dd24f97..23b057b 100644 --- a/tests/auto/qmovie/tst_qmovie.cpp +++ b/tests/auto/qmovie/tst_qmovie.cpp @@ -71,9 +71,7 @@ private slots: void playMovie(); void jumpToFrame_data(); void jumpToFrame(); -#if QT_VERSION >= 0x040101 void changeMovieFile(); -#endif // QT_VERSION }; // Testing get/set functions @@ -201,7 +199,6 @@ void tst_QMovie::jumpToFrame() QVERIFY(movie.currentFrameNumber() == 0); } -#if QT_VERSION >= 0x040101 void tst_QMovie::changeMovieFile() { QMovie movie("animations/comicsecard.gif"); @@ -211,7 +208,5 @@ void tst_QMovie::changeMovieFile() QVERIFY(movie.currentFrameNumber() == -1); } -#endif // QT_VERSION - QTEST_MAIN(tst_QMovie) #include "tst_qmovie.moc" diff --git a/tests/auto/qmutexlocker/tst_qmutexlocker.cpp b/tests/auto/qmutexlocker/tst_qmutexlocker.cpp index cb5112d..cc3e144 100644 --- a/tests/auto/qmutexlocker/tst_qmutexlocker.cpp +++ b/tests/auto/qmutexlocker/tst_qmutexlocker.cpp @@ -194,9 +194,6 @@ void tst_QMutexLocker::unlockAndRelockTest() void tst_QMutexLocker::lockerStateTest() { -#if QT_VERSION < 0x040200 - QSKIP("QMutexLocker doesn't keep state in Qt < 4.2", SkipAll); -#else class LockerStateThread : public tst_QMutexLockerThread { public: @@ -233,7 +230,6 @@ void tst_QMutexLocker::lockerStateTest() delete thread; thread = 0; -#endif } QTEST_MAIN(tst_QMutexLocker) diff --git a/tests/auto/qnativesocketengine/tst_qnativesocketengine.cpp b/tests/auto/qnativesocketengine/tst_qnativesocketengine.cpp index a28c49a..68ec414 100644 --- a/tests/auto/qnativesocketengine/tst_qnativesocketengine.cpp +++ b/tests/auto/qnativesocketengine/tst_qnativesocketengine.cpp @@ -42,8 +42,6 @@ #include <QtTest/QtTest> -#if QT_VERSION >= 0x040100 - #ifdef Q_OS_WIN #include <winsock2.h> #endif @@ -694,7 +692,3 @@ void tst_QNativeSocketEngine::receiveUrgentData() QTEST_MAIN(tst_QNativeSocketEngine) #include "tst_qnativesocketengine.moc" - -#else // QT_VERSION -QTEST_NOOP_MAIN -#endif diff --git a/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp b/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp index 6e5afd2..a246b04 100644 --- a/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp +++ b/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp @@ -42,10 +42,6 @@ #include <QtTest/QtTest> -#if QT_VERSION < 0x040200 -QTEST_NOOP_MAIN -#else - #include <qcoreapplication.h> #include <qnetworkinterface.h> #include <qtcpsocket.h> @@ -210,5 +206,3 @@ void tst_QNetworkInterface::copyInvalidInterface() QTEST_MAIN(tst_QNetworkInterface) #include "tst_qnetworkinterface.moc" - -#endif diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp index 503118a..104b788 100644 --- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp @@ -2236,9 +2236,6 @@ void tst_QNetworkReply::ioPutToFileFromLocalSocket_data() void tst_QNetworkReply::ioPutToFileFromLocalSocket() { -#if defined(Q_OS_WINCE) && QT_VERSION < 0x040500 - QSKIP("No local sockets on Windows CE for Qt 4.4", SkipAll); -#else QString socketname = "networkreplytest"; QLocalServer server; if (!server.listen(socketname)) { @@ -2276,7 +2273,6 @@ void tst_QNetworkReply::ioPutToFileFromLocalSocket() QCOMPARE(file.size(), qint64(data.size())); QByteArray contents = file.readAll(); QCOMPARE(contents, data); -#endif } void tst_QNetworkReply::ioPutToFileFromProcess_data() diff --git a/tests/auto/qobject/tst_qobject.cpp b/tests/auto/qobject/tst_qobject.cpp index 096f1c5..fb46073 100644 --- a/tests/auto/qobject/tst_qobject.cpp +++ b/tests/auto/qobject/tst_qobject.cpp @@ -264,13 +264,9 @@ void tst_QObject::disconnect() QCOMPARE( r1->called(1), FALSE ); r1->reset(); -#if QT_VERSION >= 0x030100 QCOMPARE( ret, TRUE ); -#endif ret = QObject::disconnect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) ); -#if QT_VERSION >= 0x030100 QCOMPARE( ret, FALSE ); -#endif // disconnect all signals from s from all slots from r1 QObject::disconnect( s, 0, r1, 0 ); @@ -702,12 +698,10 @@ void tst_QObject::connectDisconnectNotify() QCOMPARE( s->org_signal, s->nw_signal ); QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) ); -#if QT_VERSION > 0x040101 // Reconnect connect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() ); // Test disconnectNotify for a complete disconnect ((SenderObject*)s)->disconnect((ReceiverObject*)r); -#endif delete s; delete r; diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp index fb8df2e..8b43f9b 100644 --- a/tests/auto/qpainter/tst_qpainter.cpp +++ b/tests/auto/qpainter/tst_qpainter.cpp @@ -2573,23 +2573,6 @@ void tst_QPainter::setOpacity() p.fillRect(imageRect, QColor(127, 127, 127)); p.end(); -#if defined(Q_WS_QWS) && (QT_VERSION < 0x040500) - // embedded has an optimized implementation in 4.4 - if ((dest.format() == QImage::Format_ARGB8555_Premultiplied || - dest.format() == QImage::Format_RGB555 || - dest.format() == QImage::Format_RGB666 || - dest.format() == QImage::Format_RGB888 || - dest.format() == QImage::Format_ARGB8565_Premultiplied) && - src.format() != QImage::Format_RGB32) - { - QColor c1 = expected.pixel(1, 1); - QColor c2 = dest.pixel(1, 1); - QVERIFY(qAbs(c1.red() - c2.red()) < 2); - QVERIFY(qAbs(c1.green() - c2.green()) < 2); - QVERIFY(qAbs(c1.blue() - c2.blue()) < 2); - QVERIFY(qAbs(c1.alpha() - c2.alpha()) < 2); - } else -#endif QCOMPARE(dest, expected); } diff --git a/tests/auto/qpainterpath/tst_qpainterpath.cpp b/tests/auto/qpainterpath/tst_qpainterpath.cpp index cff84e9..3d77f5e 100644 --- a/tests/auto/qpainterpath/tst_qpainterpath.cpp +++ b/tests/auto/qpainterpath/tst_qpainterpath.cpp @@ -84,11 +84,9 @@ private slots: void testOperatorEquals_fuzzy(); void testOperatorDatastream(); -#if QT_VERSION >= 0x040200 void testArcMoveTo_data(); void testArcMoveTo(); void setElementPositionAt(); -#endif void testOnPath_data(); void testOnPath(); @@ -819,7 +817,6 @@ void tst_QPainterPath::closing() } } -#if QT_VERSION >= 0x040200 void tst_QPainterPath::testArcMoveTo_data() { QTest::addColumn<QRectF>("rect"); @@ -1170,8 +1167,6 @@ void tst_QPainterPath::connectPathDuplicatePoint() QCOMPARE(c, a); } -#endif - QTEST_APPLESS_MAIN(tst_QPainterPath) #include "tst_qpainterpath.moc" diff --git a/tests/auto/qpicture/tst_qpicture.cpp b/tests/auto/qpicture/tst_qpicture.cpp index 43559e5..954be23 100644 --- a/tests/auto/qpicture/tst_qpicture.cpp +++ b/tests/auto/qpicture/tst_qpicture.cpp @@ -121,12 +121,10 @@ void tst_QPicture::boundingRect() // default value QVERIFY( !p1.boundingRect().isValid() ); -#if QT_VERSION >= 0x030100 QRect r1( 20, 30, 5, 15 ); p1.setBoundingRect( r1 ); QCOMPARE( p1.boundingRect(), r1 ); p1.setBoundingRect(QRect()); -#endif QPainter pt( &p1 ); pt.drawLine( 10, 20, 110, 80 ); diff --git a/tests/auto/qprinter/tst_qprinter.cpp b/tests/auto/qprinter/tst_qprinter.cpp index 0febb87..a598bfc 100644 --- a/tests/auto/qprinter/tst_qprinter.cpp +++ b/tests/auto/qprinter/tst_qprinter.cpp @@ -121,9 +121,6 @@ void tst_QPrinter::getSetCheck() obj1.setCollateCopies(false); QCOMPARE(false, obj1.collateCopies()); obj1.setCollateCopies(true); -#if !defined(Q_OS_UNIX) && QT_VERSION < 0x040200 - QEXPECT_FAIL("", "Apparently only the Unix (ps) printer supports collate at the moment", Continue); -#endif QCOMPARE(true, obj1.collateCopies()); obj1.setColorMode(QPrinter::GrayScale); @@ -185,9 +182,6 @@ void tst_QPrinter::getSetCheck() obj1.setFontEmbeddingEnabled(false); QCOMPARE(false, obj1.fontEmbeddingEnabled()); obj1.setFontEmbeddingEnabled(true); -#if !defined(Q_OS_UNIX) && QT_VERSION < 0x040200 - QEXPECT_FAIL("", "Apparently only the Unix (ps) printer supports font embedding at the moment", Continue); -#endif QCOMPARE(true, obj1.fontEmbeddingEnabled()); // PageSize QPrinter::pageSize() @@ -255,20 +249,13 @@ void tst_QPrinter::cleanup() void tst_QPrinter::testPageSetupDialog() { -#if QT_VERSION < 0x040102 - QSKIP("QPrinter::OutputFormat doesn't exist in Qt 4.0.x and test crashes on < 4.1.2"); -#else - // Make sure this doesn't crash at least { QPrinter printer; QPageSetupDialog dialog(&printer); } -#endif } - - void tst_QPrinter::testPageSize() { #if defined (Q_WS_WIN) @@ -332,10 +319,6 @@ void tst_QPrinter::testPageRectAndPaperRect_data() void tst_QPrinter::testPageRectAndPaperRect() { -#if QT_VERSION <= 0x040100 - QEXPECT_FAIL("", "Fixed in Qt 4.1.1", Continue); -#endif - QFETCH(bool, withPainter); QFETCH(int, orientation); QFETCH(int, resolution); @@ -529,9 +512,6 @@ void tst_QPrinter::testMulitpleSets() QPrinter::PageSize printerPageSize = QPrinter::PageSize(pageSize); QPrinter printer(mode); printer.setFullPage(true); -#if QT_VERSION < 0x040103 - QEXPECT_FAIL("", "Fixed in Qt 4.1.3", SkipAll); -#endif int paperWidth, paperHeight; //const int Tolerance = 2; diff --git a/tests/auto/qprocess/tst_qprocess.cpp b/tests/auto/qprocess/tst_qprocess.cpp index cb2b1bf..801cce8 100644 --- a/tests/auto/qprocess/tst_qprocess.cpp +++ b/tests/auto/qprocess/tst_qprocess.cpp @@ -265,11 +265,9 @@ void tst_QProcess::simpleStart() //----------------------------------------------------------------------------- void tst_QProcess::startDetached() { -#if QT_VERSION >= 0x040200 QProcess proc; QVERIFY(proc.startDetached("testProcessNormal/testProcessNormal", QStringList() << "arg1" << "arg2")); -#endif QCOMPARE(QProcess::startDetached("nonexistingexe"), false); } diff --git a/tests/auto/qpushbutton/tst_qpushbutton.cpp b/tests/auto/qpushbutton/tst_qpushbutton.cpp index 34dd313..27dec9d 100644 --- a/tests/auto/qpushbutton/tst_qpushbutton.cpp +++ b/tests/auto/qpushbutton/tst_qpushbutton.cpp @@ -206,11 +206,7 @@ void tst_QPushButton::setAutoRepeat() QVERIFY( !testWidget->isCheckable() ); // verify autorepeat is off by default. -#if QT_VERSION < 0x040000 - QButton tmp( 0 ); -#else QPushButton tmp( 0 ); -#endif tmp.setObjectName("tmp"); QVERIFY( !tmp.autoRepeat() ); diff --git a/tests/auto/qreadlocker/tst_qreadlocker.cpp b/tests/auto/qreadlocker/tst_qreadlocker.cpp index c650ff5..a37f93c 100644 --- a/tests/auto/qreadlocker/tst_qreadlocker.cpp +++ b/tests/auto/qreadlocker/tst_qreadlocker.cpp @@ -189,9 +189,6 @@ void tst_QReadLocker::unlockAndRelockTest() void tst_QReadLocker::lockerStateTest() { -#if QT_VERSION < 0x040200 - QSKIP("QReadLocker doesn't keep state in Qt < 4.2", SkipAll); -#else class LockerStateThread : public tst_QReadLockerThread { public: @@ -228,7 +225,6 @@ void tst_QReadLocker::lockerStateTest() delete thread; thread = 0; -#endif } QTEST_MAIN(tst_QReadLocker) diff --git a/tests/auto/qrect/tst_qrect.cpp b/tests/auto/qrect/tst_qrect.cpp index ed605a3..7e8d9c3 100644 --- a/tests/auto/qrect/tst_qrect.cpp +++ b/tests/auto/qrect/tst_qrect.cpp @@ -432,14 +432,12 @@ void tst_QRect::normalized_data() QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << QRect( -10, -10, 5, 5 ); QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << getQRectCase( NullQRect ); QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << getQRectCase( EmptyQRect ); -#if QT_VERSION > 0x040001 QTest::newRow( "Task80908") << QRect(100, 200, 100, 0) << QRect(100, 200, 100, 0); // Since "NegativeSizeQRect passes, I expect both of these to pass too. // This passes, since height() returns -1 before normalization QTest::newRow( "Task85023") << QRect(QPoint(100,201), QPoint(199,199)) << QRect(QPoint(100,199), QPoint(199,201)); // This, on the other hand height() returns 0 before normalization. QTest::newRow( "Task85023.1") << QRect(QPoint(100,200), QPoint(199,199)) << QRect(QPoint(100,199), QPoint(199,200)); -#endif QTest::newRow( "Task188109" ) << QRect(QPoint(263, 113), QPoint(136, 112)) << QRect(QPoint(136, 113), QPoint(263, 112)); } @@ -1733,14 +1731,12 @@ void tst_QRect::newSetTopLeft_data() void tst_QRect::newSetTopLeft() { -#if QT_VERSION >= 0x030100 QFETCH( QRect, r ); QFETCH( QPoint, topLeft ); QFETCH( QRect, nr ); r.setTopLeft( topLeft ); QCOMPARE( r, nr ); -#endif } void tst_QRect::newSetBottomRight_data() @@ -1961,7 +1957,6 @@ void tst_QRect::newSetBottomRight_data() void tst_QRect::newSetBottomRight() { -#if QT_VERSION >= 0x030100 QFETCH( QRect, r ); QFETCH( QPoint, bottomRight ); QFETCH( QRect, nr ); @@ -1969,7 +1964,6 @@ void tst_QRect::newSetBottomRight() r.setBottomRight( bottomRight ); QCOMPARE( r, nr ); -#endif } void tst_QRect::newSetTopRight_data() @@ -2190,7 +2184,6 @@ void tst_QRect::newSetTopRight_data() void tst_QRect::newSetTopRight() { -#if QT_VERSION >= 0x030100 QFETCH( QRect, r ); QFETCH( QPoint, topRight ); QFETCH( QRect, nr ); @@ -2198,7 +2191,6 @@ void tst_QRect::newSetTopRight() r.setTopRight( topRight ); QCOMPARE( r, nr ); -#endif } void tst_QRect::newSetBottomLeft_data() @@ -2419,7 +2411,6 @@ void tst_QRect::newSetBottomLeft_data() void tst_QRect::newSetBottomLeft() { -#if QT_VERSION >= 0x030100 QFETCH( QRect, r ); QFETCH( QPoint, bottomLeft ); QFETCH( QRect, nr ); @@ -2427,7 +2418,6 @@ void tst_QRect::newSetBottomLeft() r.setBottomLeft( bottomLeft ); QCOMPARE( r, nr ); -#endif } void tst_QRect::topLeft_data() @@ -2787,7 +2777,6 @@ void tst_QRect::newMoveLeft_data() void tst_QRect::newMoveLeft() { -#if QT_VERSION >= 0x030100 QFETCH( QRect, r ); QFETCH( int, left ); QFETCH( QRect, nr ); @@ -2795,7 +2784,6 @@ void tst_QRect::newMoveLeft() r.moveLeft( left ); QCOMPARE( r, nr ); -#endif } void tst_QRect::newMoveTop_data() @@ -2958,7 +2946,6 @@ void tst_QRect::newMoveTop_data() void tst_QRect::newMoveTop() { -#if QT_VERSION >= 0x030100 QFETCH( QRect, r ); QFETCH( int, top ); QFETCH( QRect, nr ); @@ -2966,7 +2953,6 @@ void tst_QRect::newMoveTop() r.moveTop( top ); QCOMPARE( r, nr ); -#endif } void tst_QRect::newMoveRight_data() @@ -3114,7 +3100,6 @@ void tst_QRect::newMoveRight_data() void tst_QRect::newMoveRight() { -#if QT_VERSION >= 0x030100 QFETCH( QRect, r ); QFETCH( int, right ); QFETCH( QRect, nr ); @@ -3122,7 +3107,6 @@ void tst_QRect::newMoveRight() r.moveRight( right ); QCOMPARE( r, nr ); -#endif } void tst_QRect::newMoveBottom_data() @@ -3270,7 +3254,6 @@ void tst_QRect::newMoveBottom_data() void tst_QRect::newMoveBottom() { -#if QT_VERSION >= 0x030100 QFETCH( QRect, r ); QFETCH( int, bottom ); QFETCH( QRect, nr ); @@ -3278,7 +3261,6 @@ void tst_QRect::newMoveBottom() r.moveBottom( bottom ); QCOMPARE( r, nr ); -#endif } void tst_QRect::newMoveTopLeft_data() @@ -3468,7 +3450,6 @@ void tst_QRect::newMoveTopLeft_data() void tst_QRect::newMoveTopLeft() { -#if QT_VERSION >= 0x030100 QFETCH(QRect,r); QFETCH(QPoint,topLeft); QFETCH(QRect,nr); @@ -3476,7 +3457,6 @@ void tst_QRect::newMoveTopLeft() r.moveTopLeft(topLeft); QCOMPARE(r,nr); -#endif } void tst_QRect::newMoveBottomRight_data() @@ -3666,7 +3646,6 @@ void tst_QRect::newMoveBottomRight_data() void tst_QRect::newMoveBottomRight() { -#if QT_VERSION >= 0x030100 QFETCH(QRect,r); QFETCH(QPoint,bottomRight); QFETCH(QRect,nr); @@ -3674,11 +3653,9 @@ void tst_QRect::newMoveBottomRight() r.moveBottomRight(bottomRight); QCOMPARE(r,nr); -#endif } - void tst_QRect::translate_data() { QTest::addColumn<QRect>("r"); @@ -3720,10 +3697,8 @@ void tst_QRect::translate() } - void tst_QRect::moveTop() { -#if QT_VERSION >= 0x030100 { QRect r( 10, 10, 100, 100 ); r.moveTop( 3 ); @@ -3742,12 +3717,10 @@ void tst_QRect::moveTop() r.moveTop( -22 ); QCOMPARE( r, QRectF(10, -22, 100, 100) ); } -#endif } void tst_QRect::moveBottom() { -#if QT_VERSION >= 0x030100 { QRect r( 10, -22, 100, 100 ); r.moveBottom( 104 ); @@ -3758,12 +3731,10 @@ void tst_QRect::moveBottom() r.moveBottom( 104 ); QCOMPARE( r, QRectF(10, 4, 100, 100) ); } -#endif } void tst_QRect::moveLeft() { -#if QT_VERSION >= 0x030100 { QRect r( 10, 5, 100, 100 ); r.moveLeft( 11 ); @@ -3774,12 +3745,10 @@ void tst_QRect::moveLeft() r.moveLeft( 11 ); QCOMPARE( r, QRectF(11, 5, 100, 100) ); } -#endif } void tst_QRect::moveRight() { -#if QT_VERSION >= 0x030100 { QRect r( 11, 5, 100, 100 ); r.moveRight( 106 ); @@ -3790,7 +3759,6 @@ void tst_QRect::moveRight() r.moveRight( 106 ); QCOMPARE( r, QRectF(6, 5, 100, 100) ); } -#endif } void tst_QRect::moveTopLeft() @@ -3851,7 +3819,6 @@ void tst_QRect::moveBottomRight() void tst_QRect::setTopLeft() { -#if QT_VERSION >= 0x030100 { QRect r( 20, 10, 200, 100 ); r.setTopLeft( QPoint(5, 7) ); @@ -3862,12 +3829,10 @@ void tst_QRect::setTopLeft() r.setTopLeft( QPoint(5, 7) ); QCOMPARE( r, QRectF(5, 7, 215, 103) ); } -#endif } void tst_QRect::setTopRight() { -#if QT_VERSION >= 0x030100 { QRect r( 20, 10, 200, 100 ); r.setTopRight( QPoint(225, 7) ); @@ -3878,12 +3843,10 @@ void tst_QRect::setTopRight() r.setTopRight( QPoint(225, 7) ); QCOMPARE( r, QRectF(20, 7, 205, 103) ); } -#endif } void tst_QRect::setBottomLeft() { -#if QT_VERSION >= 0x030100 { QRect r( 20, 10, 200, 100 ); r.setBottomLeft( QPoint(5, 117) ); @@ -3894,12 +3857,10 @@ void tst_QRect::setBottomLeft() r.setBottomLeft( QPoint(5, 117) ); QCOMPARE( r, QRectF(5, 10, 215, 107) ); } -#endif } void tst_QRect::setBottomRight() { -#if QT_VERSION >= 0x030100 { QRect r( 20, 10, 200, 100 ); r.setBottomRight( QPoint(225, 117) ); @@ -3910,7 +3871,6 @@ void tst_QRect::setBottomRight() r.setBottomRight( QPoint(225, 117) ); QCOMPARE( r, QRectF(20, 10, 205, 107) ); } -#endif } void tst_QRect::operator_amp() diff --git a/tests/auto/qregexp/tst_qregexp.cpp b/tests/auto/qregexp/tst_qregexp.cpp index 2968a8e..999166e 100644 --- a/tests/auto/qregexp/tst_qregexp.cpp +++ b/tests/auto/qregexp/tst_qregexp.cpp @@ -557,7 +557,6 @@ void tst_QRegExp::setMinimal() void tst_QRegExp::exactMatch() { -#if QT_VERSION >= 0x030100 QRegExp rx_d( "\\d" ); QRegExp rx_s( "\\s" ); QRegExp rx_w( "\\w" ); @@ -570,9 +569,7 @@ void tst_QRegExp::exactMatch() bool is_d = ( ch.category() == QChar::Number_DecimalDigit ); bool is_s = ch.isSpace(); bool is_w = ( ch.isLetterOrNumber() -#if QT_VERSION >= 0x040200 || ch.isMark() -#endif || ch == '_' ); QVERIFY( rx_d.exactMatch(QString(ch)) == is_d ); @@ -582,7 +579,6 @@ void tst_QRegExp::exactMatch() QVERIFY( rx_S.exactMatch(QString(ch)) != is_s ); QVERIFY( rx_W.exactMatch(QString(ch)) != is_w ); } -#endif } void tst_QRegExp::capturedTexts() @@ -593,13 +589,11 @@ void tst_QRegExp::capturedTexts() QCOMPARE(rx1.cap(0), QString("aaa")); QCOMPARE(rx1.cap(1), QString("aaa")); -#if QT_VERSION >= 0x040200 QRegExp rx2("a*(a*)", Qt::CaseSensitive, QRegExp::RegExp2); rx2.exactMatch("aaa"); QCOMPARE(rx2.matchedLength(), 3); QCOMPARE(rx2.cap(0), QString("aaa")); QCOMPARE(rx2.cap(1), QString("")); -#endif QRegExp rx3("(?:a|aa)(a*)", Qt::CaseSensitive, QRegExp::RegExp); rx3.exactMatch("aaa"); @@ -607,13 +601,11 @@ void tst_QRegExp::capturedTexts() QCOMPARE(rx3.cap(0), QString("aaa")); QCOMPARE(rx3.cap(1), QString("aa")); -#if QT_VERSION >= 0x040200 QRegExp rx4("(?:a|aa)(a*)", Qt::CaseSensitive, QRegExp::RegExp2); rx4.exactMatch("aaa"); QCOMPARE(rx4.matchedLength(), 3); QCOMPARE(rx4.cap(0), QString("aaa")); QCOMPARE(rx4.cap(1), QString("a")); -#endif QRegExp rx5("(a)*(a*)", Qt::CaseSensitive, QRegExp::RegExp); rx5.exactMatch("aaa"); @@ -622,14 +614,12 @@ void tst_QRegExp::capturedTexts() QCOMPARE(rx5.cap(1), QString("a")); QCOMPARE(rx5.cap(2), QString("aa")); -#if QT_VERSION >= 0x040200 QRegExp rx6("(a)*(a*)", Qt::CaseSensitive, QRegExp::RegExp2); rx6.exactMatch("aaa"); QCOMPARE(rx6.matchedLength(), 3); QCOMPARE(rx6.cap(0), QString("aaa")); QCOMPARE(rx6.cap(1), QString("a")); QCOMPARE(rx6.cap(2), QString("")); -#endif QRegExp rx7("([A-Za-z_])([A-Za-z_0-9]*)"); rx7.setCaseSensitivity(Qt::CaseSensitive); @@ -689,7 +679,6 @@ void tst_QRegExp::indexIn() } } -#if QT_VERSION >= 0x040200 // same as above, but with RegExp2 { QRegExp rx( regexpStr, Qt::CaseSensitive, QRegExp::RegExp2 ); @@ -707,7 +696,6 @@ void tst_QRegExp::indexIn() QCOMPARE( mycaps[i], caps[i] ); } } -#endif } void tst_QRegExp::lastIndexIn() @@ -746,7 +734,6 @@ void tst_QRegExp::lastIndexIn() } } -#if QT_VERSION >= 0x040200 { QRegExp rx( regexpStr, Qt::CaseSensitive, QRegExp::RegExp2 ); QVERIFY( rx.isValid() ); @@ -766,7 +753,6 @@ void tst_QRegExp::lastIndexIn() } } } -#endif } void tst_QRegExp::matchedLength() @@ -1161,10 +1147,8 @@ void tst_QRegExp::prepareEngineOptimization() QRegExp rx4("foo", Qt::CaseInsensitive, QRegExp::RegExp); QVERIFY(rx4.isValid()); -#if QT_VERSION >= 0x040200 QRegExp rx5("foo", Qt::CaseInsensitive, QRegExp::RegExp2); QVERIFY(rx5.isValid()); -#endif QRegExp rx6("foo", Qt::CaseInsensitive, QRegExp::FixedString); QVERIFY(rx6.isValid()); @@ -1175,10 +1159,8 @@ void tst_QRegExp::prepareEngineOptimization() QRegExp rx8("][", Qt::CaseInsensitive, QRegExp::RegExp); QVERIFY(!rx8.isValid()); -#if QT_VERSION >= 0x040200 QRegExp rx9("][", Qt::CaseInsensitive, QRegExp::RegExp2); QVERIFY(!rx9.isValid()); -#endif QRegExp rx10("][", Qt::CaseInsensitive, QRegExp::Wildcard); QVERIFY(!rx10.isValid()); diff --git a/tests/auto/qregion/tst_qregion.cpp b/tests/auto/qregion/tst_qregion.cpp index 8ec4c28..eba07f2 100644 --- a/tests/auto/qregion/tst_qregion.cpp +++ b/tests/auto/qregion/tst_qregion.cpp @@ -145,12 +145,7 @@ void tst_QRegion::rects() { QRect rect( 10, -20, 30, 40 ); QRegion region( rect ); -#if QT_VERSION < 0x040000 - QCOMPARE( region.rects().count(), (uint)1 ); -#else QCOMPARE( region.rects().count(), 1 ); -#endif - QCOMPARE( region.rects()[0], rect ); } { @@ -200,11 +195,7 @@ void tst_QRegion::setRects() QRegion region; QRect rect( 10, -20, 30, 40 ); region.setRects( &rect, 1 ); -#if QT_VERSION < 0x040000 - QCOMPARE( region.rects().count(), (uint)1 ); -#else QCOMPARE( region.rects().count(), 1 ); -#endif QCOMPARE( region.rects()[0], rect ); } } @@ -374,9 +365,7 @@ void tst_QRegion::bitmapRegion() QVERIFY( region.contains( QPoint( 0, 10 ) ) ); // Mid-left QVERIFY( region.contains( QPoint( 10, 0 ) ) ); // Mid-top -#if ( QT_VERSION >= 0x030100 ) QVERIFY( region.contains( QPoint( 19, 10 ) ) ); // Mid-right -#endif QVERIFY( region.contains( QPoint( 10, 19 ) ) ); // Mid-bottom } } @@ -627,11 +616,9 @@ void tst_QRegion::operator_minus_data() QTest::addColumn<QRegion>("subtract"); QTest::addColumn<QRegion>("expected"); -#if !defined(Q_WS_X11) || QT_VERSION >= 0x040300 QTest::newRow("empty 0") << QRegion() << QRegion() << QRegion(); QTest::newRow("empty 1") << QRegion() << QRegion(QRect(10, 10, 10, 10)) << QRegion(); -#endif QTest::newRow("empty 2") << QRegion(QRect(10, 10, 10, 10)) << QRegion() << QRegion(QRect(10, 10, 10, 10)); diff --git a/tests/auto/qset/tst_qset.cpp b/tests/auto/qset/tst_qset.cpp index 7afcd84..5601656 100644 --- a/tests/auto/qset/tst_qset.cpp +++ b/tests/auto/qset/tst_qset.cpp @@ -619,9 +619,6 @@ void tst_QSet::stlIterator() void tst_QSet::stlMutableIterator() { -#if QT_VERSION < 0x040200 - QSKIP("Needs Qt >= 4.2", SkipAll); -#else QSet<QString> set1; for (int i = 0; i < 25000; ++i) set1.insert(QString::number(i)); @@ -679,7 +676,6 @@ void tst_QSet::stlMutableIterator() #endif QVERIFY(*i == "foo"); } -#endif } void tst_QSet::javaIterator() @@ -768,9 +764,6 @@ void tst_QSet::javaIterator() void tst_QSet::javaMutableIterator() { -#if QT_VERSION < 0x040200 - QSKIP("Needs Qt >= 4.2", SkipAll); -#else QSet<QString> set1; for (int k = 0; k < 25000; ++k) set1.insert(QString::number(k)); @@ -856,7 +849,6 @@ void tst_QSet::javaMutableIterator() QVERIFY(set2.isEmpty()); QVERIFY(set3.isEmpty()); } -#endif } void tst_QSet::makeSureTheComfortFunctionsCompile() diff --git a/tests/auto/qsettings/tst_qsettings.cpp b/tests/auto/qsettings/tst_qsettings.cpp index 9524eb3..c478c63 100644 --- a/tests/auto/qsettings/tst_qsettings.cpp +++ b/tests/auto/qsettings/tst_qsettings.cpp @@ -240,7 +240,6 @@ static QString settingsPath(const char *path = "") return QDir::toNativeSeparators(tempPath + "/tst_QSettings/" + QLatin1String(path)); } -#if QT_VERSION >= 0x040100 static bool readCustom1File(QIODevice &device, QSettings::SettingsMap &map) { QDataStream in(&device); @@ -297,7 +296,6 @@ static bool writeCustom3File(QIODevice &device, const QSettings::SettingsMap &ma out << "OK"; return true; } -#endif static void populateWithFormats() { @@ -305,15 +303,12 @@ static void populateWithFormats() QTest::newRow("native") << QSettings::NativeFormat; QTest::newRow("ini") << QSettings::IniFormat; -#if QT_VERSION >= 0x040100 QTest::newRow("custom1") << QSettings::CustomFormat1; QTest::newRow("custom2") << QSettings::CustomFormat2; -#endif } tst_QSettings::tst_QSettings() { -#if QT_VERSION >= 0x040100 QSettings::Format custom1 = QSettings::registerFormat("custom1", readCustom1File, writeCustom1File); QSettings::Format custom2 = QSettings::registerFormat("custom2", readCustom2File, writeCustom2File #ifndef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER @@ -322,7 +317,6 @@ tst_QSettings::tst_QSettings() ); QVERIFY(custom1 == QSettings::CustomFormat1); QVERIFY(custom2 == QSettings::CustomFormat2); -#endif } void tst_QSettings::init() @@ -1138,9 +1132,9 @@ void tst_QSettings::testVariantTypes() l4 << QVariant(m2) << QVariant(l2) << QVariant(l3); testVal("key13", l4, QVariantList, List); - // With Qt 4.2 we store key sequences as strings instead of binary variant blob, for improved + // We store key sequences as strings instead of binary variant blob, for improved // readability in the resulting format. - if (format >= QSettings::InvalidFormat || QT_VERSION < 0x040200) { + if (format >= QSettings::InvalidFormat) { testVal("keysequence", QKeySequence(Qt::ControlModifier + Qt::Key_F1), QKeySequence, KeySequence); } else { testVal("keysequence", QKeySequence(Qt::ControlModifier + Qt::Key_F1), QString, String); @@ -2637,14 +2631,12 @@ void tst_QSettings::testCaseSensitivity() case QSettings::IniFormat: cs = false; break; -#if QT_VERSION >= 0x040100 case QSettings::CustomFormat1: cs = true; break; case QSettings::CustomFormat2: cs = false; break; -#endif default: ; } @@ -3543,7 +3535,6 @@ void tst_QSettings::allKeys() } } -#if QT_VERSION >= 0x040100 void tst_QSettings::registerFormat() { QSettings settings1(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP"); @@ -3641,7 +3632,6 @@ void tst_QSettings::setPath() TEST_PATH(i == 0, "custom2", CustomFormat2, SystemScope, "iota") } } -#endif void tst_QSettings::setDefaultFormat() { diff --git a/tests/auto/qsizef/tst_qsizef.cpp b/tests/auto/qsizef/tst_qsizef.cpp index 7668491..c1a827b 100644 --- a/tests/auto/qsizef/tst_qsizef.cpp +++ b/tests/auto/qsizef/tst_qsizef.cpp @@ -72,29 +72,6 @@ private slots: void transpose(); }; -#if QT_VERSION < 0x040100 -namespace QTest -{ - // Qt < 4.1 didn't do fuzzy comparisons - template<> - inline bool compare(QSizeF const &t1, QSizeF const &t2, const char *file, int line) - { - char msg[1024]; - msg[0] = '\0'; - bool isOk = true; - if ((qAbs(t1.width() - t2.width()) > 0.000000000001) || (qAbs(t1.height() - t2.height()) > 0.000000000001)) { - qt_snprintf(msg, 1024, "Compared values of type QSizeF are not the same (fuzzy compare).\n" - " Actual : w: %lf h: %lf \n" - " Expected: w: %lf h: %lf", t1.width(), t1.height(), t2.width(), t2.height()); - isOk = false; - } else { - qt_snprintf(msg, 1024, "QCOMPARE('%lf %lf', QSizeF)", t1.width(), t1.height()); - } - return compare_helper(isOk, msg, file, line); - } -} -#endif - tst_QSizeF::tst_QSizeF() { } diff --git a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp index 0a48066..18aa5fc 100644 --- a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp +++ b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp @@ -131,6 +131,8 @@ private slots: void task247867_insertRowsSort(); void task248868_staticSorting(); void task248868_dynamicSorting(); + void task250023_fetchMore(); + void task251296_hiddenChildren(); protected: void buildHierarchy(const QStringList &data, QAbstractItemModel *model); @@ -1507,9 +1509,6 @@ void tst_QSortFilterProxyModel::insertAfterSelect() QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, p); QVERIFY(view.selectionModel()->selectedIndexes().size() > 0); model.insertRows(5, 1, QModelIndex()); -#if QT_VERSION < 0x040200 - QEXPECT_FAIL("", "Selections are not kept in versions < 4.2", Abort); -#endif QVERIFY(view.selectionModel()->selectedIndexes().size() > 0); // Should still have a selection } @@ -1531,9 +1530,6 @@ void tst_QSortFilterProxyModel::removeAfterSelect() QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, p); QVERIFY(view.selectionModel()->selectedIndexes().size() > 0); model.removeRows(5, 1, QModelIndex()); -#if QT_VERSION < 0x040200 - QEXPECT_FAIL("", "Selections are not kept in versions < 4.2", Abort); -#endif QVERIFY(view.selectionModel()->selectedIndexes().size() > 0); // Should still have a selection } @@ -2590,6 +2586,137 @@ void tst_QSortFilterProxyModel::task248868_dynamicSorting() } } +class QtTestModel: public QAbstractItemModel +{ + public: + QtTestModel(int _rows, int _cols, QObject *parent = 0): QAbstractItemModel(parent), + rows(_rows), cols(_cols), wrongIndex(false) { } + + bool canFetchMore(const QModelIndex &idx) const { + return !fetched.contains(idx); + } + + void fetchMore(const QModelIndex &idx) { + if (fetched.contains(idx)) + return; + beginInsertRows(idx, 0, rows-1); + fetched.insert(idx); + endInsertRows(); + } + + bool hasChildren(const QModelIndex & = QModelIndex()) const { + return true; + } + + int rowCount(const QModelIndex& parent = QModelIndex()) const { + return fetched.contains(parent) ? rows : 0; + } + int columnCount(const QModelIndex& parent = QModelIndex()) const { + return cols; + } + + QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const + { + if (row < 0 || column < 0 || column >= cols || row >= rows) { + return QModelIndex(); + } + QModelIndex i = createIndex(row, column, int(parent.internalId() + 1)); + parentHash[i] = parent; + return i; + } + + QModelIndex parent(const QModelIndex &index) const + { + if (!parentHash.contains(index)) + return QModelIndex(); + return parentHash[index]; + } + + QVariant data(const QModelIndex &idx, int role) const + { + if (!idx.isValid()) + return QVariant(); + + if (role == Qt::DisplayRole) { + if (idx.row() < 0 || idx.column() < 0 || idx.column() >= cols || idx.row() >= rows) { + wrongIndex = true; + qWarning("Invalid modelIndex [%d,%d,%p]", idx.row(), idx.column(), + idx.internalPointer()); + } + return QString("[%1,%2]").arg(idx.row()).arg(idx.column()); + } + return QVariant(); + } + + QSet<QModelIndex> fetched; + int rows, cols; + mutable bool wrongIndex; + mutable QMap<QModelIndex,QModelIndex> parentHash; +}; + +void tst_QSortFilterProxyModel::task250023_fetchMore() +{ + QtTestModel model(10,10); + QSortFilterProxyModel proxy; + proxy.setSourceModel(&model); + QVERIFY(proxy.canFetchMore(QModelIndex())); + QVERIFY(proxy.hasChildren()); + while (proxy.canFetchMore(QModelIndex())) + proxy.fetchMore(QModelIndex()); + QCOMPARE(proxy.rowCount(), 10); + QCOMPARE(proxy.columnCount(), 10); + + QModelIndex idx = proxy.index(1,1); + QVERIFY(idx.isValid()); + QVERIFY(proxy.canFetchMore(idx)); + QVERIFY(proxy.hasChildren(idx)); + while (proxy.canFetchMore(idx)) + proxy.fetchMore(idx); + QCOMPARE(proxy.rowCount(idx), 10); + QCOMPARE(proxy.columnCount(idx), 10); +} + +void tst_QSortFilterProxyModel::task251296_hiddenChildren() +{ + QStandardItemModel model; + QSortFilterProxyModel proxy; + proxy.setSourceModel(&model); + proxy.setDynamicSortFilter(true); + + QStandardItem *itemA = new QStandardItem("A VISIBLE"); + model.appendRow(itemA); + QStandardItem *itemB = new QStandardItem("B VISIBLE"); + itemA->appendRow(itemB); + QStandardItem *itemC = new QStandardItem("C"); + itemA->appendRow(itemC); + proxy.setFilterRegExp("VISIBLE"); + + QCOMPARE(proxy.rowCount(QModelIndex()) , 1); + QPersistentModelIndex indexA = proxy.index(0,0); + QCOMPARE(proxy.data(indexA).toString(), QString::fromLatin1("A VISIBLE")); + + QCOMPARE(proxy.rowCount(indexA) , 1); + QPersistentModelIndex indexB = proxy.index(0, 0, indexA); + QCOMPARE(proxy.data(indexB).toString(), QString::fromLatin1("B VISIBLE")); + + itemA->setText("A"); + QCOMPARE(proxy.rowCount(QModelIndex()), 0); + QVERIFY(!indexA.isValid()); + QVERIFY(!indexB.isValid()); + + itemB->setText("B"); + itemA->setText("A VISIBLE"); + itemC->setText("C VISIBLE"); + + QCOMPARE(proxy.rowCount(QModelIndex()), 1); + indexA = proxy.index(0,0); + QCOMPARE(proxy.data(indexA).toString(), QString::fromLatin1("A VISIBLE")); + + QCOMPARE(proxy.rowCount(indexA) , 1); + QModelIndex indexC = proxy.index(0, 0, indexA); + QCOMPARE(proxy.data(indexC).toString(), QString::fromLatin1("C VISIBLE")); +} + QTEST_MAIN(tst_QSortFilterProxyModel) #include "tst_qsortfilterproxymodel.moc" diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp index 8d77589..074f16f 100644 --- a/tests/auto/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp @@ -179,6 +179,10 @@ private slots: void task_217003(); #endif + void task_250026_data() { generic_data("QODBC"); } + void task_250026(); + + private: // returns all database connections void generic_data(const QString &engine=QString()); @@ -293,6 +297,7 @@ void tst_QSqlQuery::dropTestTables( QSqlDatabase db ) #ifdef NOT_READY_YET tablenames << qTableName( "Planet" ); #endif + tablenames << qTableName( "task_250026" ); tst_Databases::safeDropTables( db, tablenames ); } @@ -2677,5 +2682,34 @@ void tst_QSqlQuery::task_217003() } #endif +void tst_QSqlQuery::task_250026() +{ + QString data258, data1026; + QFETCH( QString, dbName ); + QSqlDatabase db = QSqlDatabase::database( dbName ); + CHECK_DATABASE( db ); + QSqlQuery q( db ); + + QString tableName = qTableName( "task_250026" ); + + if ( !q.exec( "create table " + tableName + " (longfield varchar(1100))" ) ) { + qDebug() << "Error" << q.lastError(); + QSKIP( "Db doesn't support \"1100\" as a size for fields", SkipSingle ); + } + + data258.fill( 'A', 258 ); + data1026.fill( 'A', 1026 ); + QVERIFY_SQL( q, prepare( "insert into " + tableName + "(longfield) VALUES (:longfield)" ) ); + q.bindValue( "longfield", data258 ); + QVERIFY_SQL( q, exec() ); + q.bindValue( "longfield", data1026 ); + QVERIFY_SQL( q, exec() ); + QVERIFY_SQL( q, exec( "select * from " + tableName ) ); + QVERIFY_SQL( q, next() ); + QCOMPARE( q.value( 0 ).toString().length(), data258.length() ); + QVERIFY_SQL( q, next() ); + QCOMPARE( q.value( 0 ).toString().length(), data1026.length() ); +} + QTEST_MAIN( tst_QSqlQuery ) #include "tst_qsqlquery.moc" diff --git a/tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp b/tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp index a3322ab..84bda92 100644 --- a/tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp +++ b/tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp @@ -115,7 +115,6 @@ private slots: void checkChildren(); void data(); void clear(); -#if QT_VERSION >= 0x040200 void sort_data(); void sort(); void sortRole_data(); @@ -133,10 +132,9 @@ private slots: void useCase1(); void useCase2(); void useCase3(); -#endif void rootItemFlags(); - void treeDragAndDrop(); + void treeDragAndDrop(); private: QAbstractItemModel *m_model; @@ -144,7 +142,7 @@ private: QVector<QModelIndex> rcParent; QVector<int> rcFirst; QVector<int> rcLast; - + //return true if models have the same structure, and all child have the same text bool compareModels(QStandardItemModel *model1, QStandardItemModel *model2); //return true if models have the same structure, and all child have the same text @@ -154,9 +152,7 @@ private: static const int defaultSize = 3; Q_DECLARE_METATYPE(QModelIndex) -#if QT_VERSION >= 0x040200 Q_DECLARE_METATYPE(QStandardItem*) -#endif Q_DECLARE_METATYPE(Qt::Orientation) Q_DECLARE_METATYPE(QVariantList) @@ -181,9 +177,7 @@ tst_QStandardItemModel::~tst_QStandardItemModel() void tst_QStandardItemModel::init() { qRegisterMetaType<QModelIndex>("QModelIndex"); -#if QT_VERSION >= 0x040200 qRegisterMetaType<QStandardItem*>("QStandardItem*"); -#endif qRegisterMetaType<Qt::Orientation>("Qt::Orientation"); m_model = new QStandardItemModel(defaultSize, defaultSize); @@ -768,7 +762,6 @@ void tst_QStandardItemModel::clear() QCOMPARE(model.hasChildren(), false); } -#if QT_VERSION >= 0x040200 void tst_QStandardItemModel::sort_data() { QTest::addColumn<int>("sortOrder"); @@ -1383,8 +1376,6 @@ void tst_QStandardItemModel::useCase3() delete childItem; } -#endif // QT_VERSION >= 0x040200 - void tst_QStandardItemModel::rootItemFlags() { QStandardItemModel model(6, 4); @@ -1426,7 +1417,7 @@ bool tst_QStandardItemModel::compareItems(QStandardItem *item1, QStandardItem *i } for (int row = 0; row < item1->columnCount(); row++) for (int col = 0; col < item1->columnCount(); col++) { - + if (!compareItems(item1->child(row, col), item2->child(row, col))) return false; } @@ -1438,19 +1429,19 @@ static QStandardItem *itemFromText(QStandardItem *parent, const QString &text) QStandardItem *item = 0; for(int i = 0; i < parent->columnCount(); i++) for(int j = 0; j < parent->rowCount(); j++) { - + QStandardItem *child = parent->child(j, i); - + if(!child) continue; - + if (child->text() == text) { if (item) { return 0; } item = child; } - + QStandardItem *candidate = itemFromText(child, text); if(candidate) { if (item) { @@ -1470,9 +1461,9 @@ static QModelIndex indexFromText(QStandardItemModel *model, const QString &text) } -struct FriendlyTreeView : public QTreeView +struct FriendlyTreeView : public QTreeView { - friend class tst_QStandardItemModel; + friend class tst_QStandardItemModel; Q_DECLARE_PRIVATE(QTreeView) }; @@ -1480,7 +1471,7 @@ void tst_QStandardItemModel::treeDragAndDrop() { const int nRow = 5; const int nCol = 3; - + QStandardItemModel model; QStandardItemModel checkModel; @@ -1489,13 +1480,13 @@ void tst_QStandardItemModel::treeDragAndDrop() for (int c = 0 ; c < nCol; c ++) colItems1 << new QStandardItem(QString("item %1 - %0").arg(c).arg(i)); model.appendRow(colItems1); - + for (int j = 0; j < nRow; ++j) { QList<QStandardItem *> colItems2; for (int c = 0 ; c < nCol; c ++) colItems2 << new QStandardItem(QString("item %1/%2 - %0").arg(c).arg(i).arg(j)); colItems1.at(0)->appendRow(colItems2); - + for (int k = 0; k < nRow; ++k) { QList<QStandardItem *> colItems3; for (int c = 0 ; c < nCol; c ++) @@ -1504,21 +1495,19 @@ void tst_QStandardItemModel::treeDragAndDrop() } } } - - - + for (int i = 0; i < nRow; ++i) { QList<QStandardItem *> colItems1; for (int c = 0 ; c < nCol; c ++) colItems1 << new QStandardItem(QString("item %1 - %0").arg(c).arg(i)); checkModel.appendRow(colItems1); - + for (int j = 0; j < nRow; ++j) { QList<QStandardItem *> colItems2; for (int c = 0 ; c < nCol; c ++) colItems2 << new QStandardItem(QString("item %1/%2 - %0").arg(c).arg(i).arg(j)); colItems1.at(0)->appendRow(colItems2); - + for (int k = 0; k < nRow; ++k) { QList<QStandardItem *> colItems3; for (int c = 0 ; c < nCol; c ++) @@ -1527,9 +1516,9 @@ void tst_QStandardItemModel::treeDragAndDrop() } } } - + QVERIFY(compareModels(&model, &checkModel)); - + FriendlyTreeView view; view.setModel(&model); view.expandAll(); @@ -1556,7 +1545,7 @@ void tst_QStandardItemModel::treeDragAndDrop() if(model.dropMimeData(data, Qt::MoveAction, 0, 0, indexFromText(&model, "item 4 - 0"))) view.d_func()->clearOrRemove(); delete data; - + QVERIFY(!compareModels(&model, &checkModel)); //the model must be different at this point QStandardItem *item4 = itemFromText(checkModel.invisibleRootItem(), "item 4 - 0"); item4->insertRow(0, checkModel.takeRow(1)); @@ -1564,7 +1553,6 @@ void tst_QStandardItemModel::treeDragAndDrop() QVERIFY(compareModels(&model, &checkModel)); } - // // step2 drag "item 3" and "item 3/0" into "item 4" // @@ -1572,10 +1560,10 @@ void tst_QStandardItemModel::treeDragAndDrop() selection->clear(); selection->select(QItemSelection(indexFromText(&model, QString("item 3 - 0")), indexFromText(&model, QString("item 3 - %0").arg(nCol-1))), QItemSelectionModel::Select); - + selection->select(QItemSelection(indexFromText(&model, QString("item 3/0 - 0")), indexFromText(&model, QString("item 3/0 - %0").arg(nCol-1))), QItemSelectionModel::Select); - + //code based from QAbstractItemView::startDrag and QAbstractItemView::dropEvent QModelIndexList indexes = view.selectedIndexes(); QMimeData *data = model.mimeData(indexes); diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp index f786965..1263a41 100644 --- a/tests/auto/qstring/tst_qstring.cpp +++ b/tests/auto/qstring/tst_qstring.cpp @@ -432,6 +432,10 @@ void tst_QString::replace_uint_uint_data() QTest::newRow( "rep09" ) << QString("ACABCAB") << 4 << 2 << QString("XX") << QString("ACABXXB"); QTest::newRow( "rep10" ) << QString("ACABCAB") << 5 << 2 << QString("XX") << QString("ACABCXX"); QTest::newRow( "rep10" ) << QString("ACABCAB") << 6 << 2 << QString("XX") << QString("ACABCAXX"); + QTest::newRow( "rep12" ) << QString() << 0 << 10 << QString("X") << QString("X"); + QTest::newRow( "rep13" ) << QString("short") << 0 << 10 << QString("X") << QString("X"); + QTest::newRow( "rep14" ) << QString() << 0 << 10 << QString("XX") << QString("XX"); + QTest::newRow( "rep15" ) << QString("short") << 0 << 10 << QString("XX") << QString("XX"); } void tst_QString::replace_string_data() diff --git a/tests/auto/qstyle/tst_qstyle.cpp b/tests/auto/qstyle/tst_qstyle.cpp index e31e0db..cb30f83 100644 --- a/tests/auto/qstyle/tst_qstyle.cpp +++ b/tests/auto/qstyle/tst_qstyle.cpp @@ -70,10 +70,7 @@ #include <qlineedit.h> #include <qmdiarea.h> - -#if QT_VERSION >= 0x040200 #include <QCleanlooksStyle> -#endif #ifdef Q_WS_MAC #include <QMacStyle> @@ -343,7 +340,7 @@ void tst_QStyle::testPlastiqueStyle() void tst_QStyle::testCleanlooksStyle() { -#if QT_VERSION >= 0x040200 && !defined(QT_NO_STYLE_CLEANLOOKS) +#if !defined(QT_NO_STYLE_CLEANLOOKS) QCleanlooksStyle cstyle; testAllFunctions(&cstyle); lineUpLayoutTest(&cstyle); @@ -365,7 +362,7 @@ void tst_QStyle::testWindowsXPStyle() QWindowsXPStyle xpstyle; testAllFunctions(&xpstyle); lineUpLayoutTest(&xpstyle); -#else +#else QSKIP("No WindowsXP style", SkipAll); #endif } diff --git a/tests/auto/qsvgdevice/tst_qsvgdevice.cpp b/tests/auto/qsvgdevice/tst_qsvgdevice.cpp index 713b3fa..4f16e7e 100644 --- a/tests/auto/qsvgdevice/tst_qsvgdevice.cpp +++ b/tests/auto/qsvgdevice/tst_qsvgdevice.cpp @@ -332,11 +332,7 @@ void tst_QSvgDevice::playPaint( QPainter *p, const QString &type ) qDrawShadePanel(p,4000,5000,4000,2000,palette.active(),false,200,&br); qDrawShadeRect(p,2000,2000,4000,2000,palette.active(),true,100,0,&br); } - } -#if !defined (Q_WS_WIN) && (QT_VERSION < 0x030200) - // This will fail on X11 with 3.1, fixed in 3.2 -#else - else if (type=="clipRect") { + } else if (type=="clipRect") { p->setClipRect(15,25,10,10); p->drawEllipse(10,20,50,70); } else if (type=="multipleClipRects") { @@ -344,9 +340,7 @@ void tst_QSvgDevice::playPaint( QPainter *p, const QString &type ) p->drawEllipse(10,20,50,70); p->setClipRect(100,200,20,20); p->drawEllipse(110,220,50,70); - } -#endif - else if (type == "qsimplerichtext") { + } else if (type == "qsimplerichtext") { p->setPen(QColor(0,0,0)); p->setBrush(Qt::NoBrush); QRect rect1(10, 10, 100, 50); diff --git a/tests/auto/qsystemtrayicon/tst_qsystemtrayicon.cpp b/tests/auto/qsystemtrayicon/tst_qsystemtrayicon.cpp index 7ce30aa..8c5da7b 100644 --- a/tests/auto/qsystemtrayicon/tst_qsystemtrayicon.cpp +++ b/tests/auto/qsystemtrayicon/tst_qsystemtrayicon.cpp @@ -42,10 +42,6 @@ #include <QtTest/QtTest> -#if QT_VERSION < 0x040200 -QTEST_NOOP_MAIN -#else - #include <qcoreapplication.h> #include <qdebug.h> #include <qsystemtrayicon.h> @@ -150,4 +146,3 @@ void tst_QSystemTrayIcon::lastWindowClosed() QTEST_MAIN(tst_QSystemTrayIcon) #include "tst_qsystemtrayicon.moc" -#endif diff --git a/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp b/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp index 9364af4..f5155ae 100644 --- a/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp +++ b/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp @@ -144,7 +144,6 @@ void tst_QTemporaryFile::fileTemplate_data() void tst_QTemporaryFile::fileTemplate() { -#if QT_VERSION >= 0x040200 QFETCH(QString, constructorTemplate); QFETCH(QString, suffix); QFETCH(QString, fileTemplate); @@ -157,7 +156,6 @@ void tst_QTemporaryFile::fileTemplate() QCOMPARE(file.fileName().right(suffix.length()), suffix); file.close(); -#endif } @@ -234,9 +232,6 @@ void tst_QTemporaryFile::write() void tst_QTemporaryFile::openCloseOpenClose() { -#if QT_VERSION < 0x040101 - QSKIP("Until Qt 4.1.1, QTemporaryFile would create a new name every time open() was called.", SkipSingle); -#endif QString fileName; { // Create a temp file @@ -248,7 +243,7 @@ void tst_QTemporaryFile::openCloseOpenClose() QVERIFY(QFile::exists(fileName)); file.close(); - // Check that it still exists after being closed + // Check that it still exists after being closed QVERIFY(QFile::exists(fileName)); QVERIFY(!file.isOpen()); QVERIFY(file.open()); diff --git a/tests/auto/qtextcursor/tst_qtextcursor.cpp b/tests/auto/qtextcursor/tst_qtextcursor.cpp index 48212a4..86b253f 100644 --- a/tests/auto/qtextcursor/tst_qtextcursor.cpp +++ b/tests/auto/qtextcursor/tst_qtextcursor.cpp @@ -124,9 +124,7 @@ private slots: void selectWordWithSeparators_data(); void selectWordWithSeparators(); void startOfWord(); -#if QT_VERSION >= 0x040100 void selectBlock(); -#endif void selectVisually(); void insertText(); @@ -1228,13 +1226,9 @@ void tst_QTextCursor::selectWord() cursor.movePosition(QTextCursor::EndOfBlock); cursor.select(QTextCursor::WordUnderCursor); -#if QT_VERSION < 0x040200 - QVERIFY(!cursor.hasSelection()); -#else QVERIFY(cursor.hasSelection()); QCOMPARE(cursor.selectionStart(), 17); QCOMPARE(cursor.selectionEnd(), 22); -#endif } void tst_QTextCursor::selectWordWithSeparators_data() @@ -1269,7 +1263,6 @@ void tst_QTextCursor::startOfWord() QCOMPARE(cursor.position(), 0); } -#if QT_VERSION >= 0x040100 void tst_QTextCursor::selectBlock() { cursor.insertText("foobar"); @@ -1295,7 +1288,6 @@ void tst_QTextCursor::selectBlock() QVERIFY(cursor.blockFormat().alignment() == Qt::AlignHCenter); QCOMPARE(cursor.block().text(), QString("blah")); } -#endif void tst_QTextCursor::selectVisually() { @@ -1551,7 +1543,6 @@ void tst_QTextCursor::update() void tst_QTextCursor::disallowSettingObjectIndicesOnCharFormats() { -#if QT_VERSION >= 0x040200 QTextCharFormat fmt; fmt.setObjectIndex(42); cursor.insertText("Hey", fmt); @@ -1581,7 +1572,6 @@ void tst_QTextCursor::disallowSettingObjectIndicesOnCharFormats() cursor = table->cellAt(0, 0).firstCursorPosition(); QVERIFY(!cursor.isNull()); QCOMPARE(cursor.blockCharFormat().objectIndex(), table->objectIndex()); -#endif } void tst_QTextCursor::blockAndColumnNumber() diff --git a/tests/auto/qtextdocument/tst_qtextdocument.cpp b/tests/auto/qtextdocument/tst_qtextdocument.cpp index 58cc019..4ef5299 100644 --- a/tests/auto/qtextdocument/tst_qtextdocument.cpp +++ b/tests/auto/qtextdocument/tst_qtextdocument.cpp @@ -193,14 +193,9 @@ void tst_QTextDocument::getSetCheck() QPointer<MyAbstractTextDocumentLayout> var1 = new MyAbstractTextDocumentLayout(0); obj1.setDocumentLayout(var1); QCOMPARE(static_cast<QAbstractTextDocumentLayout *>(var1), obj1.documentLayout()); -#if QT_VERSION >= 0x040200 - // QTextDocument in Qt < 4.2 crashes on this. Qt >= 4.2 should handle this gracefully obj1.setDocumentLayout((QAbstractTextDocumentLayout *)0); QVERIFY(var1.isNull()); QVERIFY(obj1.documentLayout()); -#else - delete var1; -#endif // bool QTextDocument::useDesignMetrics() // void QTextDocument::setUseDesignMetrics(bool) @@ -672,18 +667,6 @@ void tst_QTextDocument::toHtml_data() << QString("<p DEFAULTBLOCKSTYLE><span style=\" font-size:40pt;\">Blah</span></p>"); } -#if QT_VERSION < 0x040200 - { - CREATE_DOC_AND_CURSOR(); - - QTextCharFormat fmt; - fmt.setProperty(QTextFormat::FontSizeIncrement, 2); - cursor.insertText("Blah", fmt); - - QTest::newRow("logical-font-size") << QTextDocumentFragment(&doc) - << QString("<p DEFAULTBLOCKSTYLE><font size=\"5\">Blah</font></p>"); - } -#else { CREATE_DOC_AND_CURSOR(); @@ -694,7 +677,6 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("logical-font-size") << QTextDocumentFragment(&doc) << QString("<p DEFAULTBLOCKSTYLE><span style=\" font-size:x-large;\">Blah</span></p>"); } -#endif { CREATE_DOC_AND_CURSOR(); @@ -892,13 +874,8 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("simpletable") << QTextDocumentFragment(&doc) << QString("<table border=\"1\" cellspacing=\"2\">" -#if QT_VERSION >= 0x040200 "\n<tr>\n<td></td>\n<td></td></tr>" "\n<tr>\n<td></td>\n<td></td></tr>" -#else - "<tr><td></td><td></td></tr>" - "<tr><td></td><td></td></tr>" -#endif "</table>"); } @@ -911,11 +888,7 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("tablespans") << QTextDocumentFragment(&doc) << QString("<table border=\"1\" cellspacing=\"2\">" -#if QT_VERSION >= 0x040200 "\n<tr>\n<td colspan=\"2\"></td>\n<td colspan=\"2\"></td></tr>" -#else - "<tr><td colspan=\"2\"></td><td colspan=\"2\"></td></tr>" -#endif "</table>"); } @@ -961,7 +934,6 @@ void tst_QTextDocument::toHtml_data() "</table>"); } -#if QT_VERSION >= 0x040200 { CREATE_DOC_AND_CURSOR(); @@ -977,7 +949,6 @@ void tst_QTextDocument::toHtml_data() "\n<tr>\n<td></td>\n<td></td></tr>" "</table>"); } -#endif { CREATE_DOC_AND_CURSOR(); @@ -988,13 +959,8 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("nestedtable") << QTextDocumentFragment(&doc) << QString("<table border=\"1\" cellspacing=\"2\">" -#if QT_VERSION >= 0x040200 "\n<tr>\n<td></td>\n<td>\n<table border=\"1\" cellspacing=\"2\">\n<tr>\n<td>\n<p DEFAULTBLOCKSTYLE>Hey</p></td></tr></table></td></tr>" "\n<tr>\n<td></td>\n<td></td></tr>" -#else - "<tr><td></td><td><table border=\"1\" cellspacing=\"2\"><tr><td><p DEFAULTBLOCKSTYLE>Hey</p></td></tr></table></td></tr>" - "<tr><td></td><td></td></tr>" -#endif "</table>"); } @@ -1011,11 +977,7 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("colwidths") << QTextDocumentFragment(&doc) << QString("<table border=\"1\" cellspacing=\"2\">" -#if QT_VERSION >= 0x040200 "\n<tr>\n<td></td>\n<td width=\"30%\"></td>\n<td width=\"40\"></td></tr>" -#else - "<tr><td></td><td width=\"30%\"></td><td width=\"40\"></td></tr>" -#endif "</table>"); } @@ -1032,11 +994,7 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("cellproperties") << QTextDocumentFragment(&doc) << QString("<table border=\"1\" cellspacing=\"2\">" -#if QT_VERSION >= 0x040200 "\n<tr>\n<td bgcolor=\"#ffffff\"></td></tr>" -#else - "<tr><td bgcolor=\"#ffffff\"></td></tr>" -#endif "</table>"); } @@ -1111,9 +1069,7 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("blockmargins") << QTextDocumentFragment(&doc) << -#if QT_VERSION >= 0x040100 QString("EMPTYBLOCK") + -#endif QString("<p style=\" margin-top:10px; margin-bottom:20px; margin-left:30px; margin-right:40px; -qt-block-indent:0; text-indent:0px;\">Blah</p>"); } @@ -1129,11 +1085,7 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("lists") << QTextDocumentFragment(&doc) << QString("EMPTYBLOCK") + -#if QT_VERSION >= 0x040200 QString("<ul style=\"-qt-list-indent: 1;\"><li DEFAULTBLOCKSTYLE>Blubb</li>\n<li DEFAULTBLOCKSTYLE>Blah</li></ul>"); -#else - QString("<ul style=\"-qt-list-indent: 1;\"><li DEFAULTBLOCKSTYLE>Blubb<li DEFAULTBLOCKSTYLE>Blah</ul>"); -#endif } { @@ -1156,11 +1108,7 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("charfmt-for-list-item") << QTextDocumentFragment(&doc) << QString("EMPTYBLOCK") + -#if QT_VERSION >= 0x040200 QString("<ul style=\"-qt-list-indent: 1;\"><li DEFAULTBLOCKSTYLE>Blubb</li>\n<li style=\" color:#0000ff;\" DEFAULTBLOCKSTYLE><span style=\" color:#ff0000;\">Blah</span></li></ul>"); -#else - QString("<ul style=\"-qt-list-indent: 1;\"><li DEFAULTBLOCKSTYLE>Blubb<li style=\" color:#0000ff;\" DEFAULTBLOCKSTYLE><span style=\" color:#ff0000;\">Blah</span></ul>"); -#endif } { @@ -1174,9 +1122,7 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("block-indent") << QTextDocumentFragment(&doc) << -#if QT_VERSION >= 0x040100 QString("EMPTYBLOCK") + -#endif QString("<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:3; text-indent:30px;\">Test</p>"); } @@ -1192,11 +1138,7 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("list-indent") << QTextDocumentFragment(&doc) << QString("EMPTYBLOCK") + -#if QT_VERSION >= 0x040200 QString("<ul style=\"-qt-list-indent: 4;\"><li DEFAULTBLOCKSTYLE>Blah</li></ul>"); -#else - QString("<ul style=\"-qt-list-indent: 4;\"><li DEFAULTBLOCKSTYLE>Blah</ul>"); -#endif } { @@ -1217,11 +1159,7 @@ void tst_QTextDocument::toHtml_data() // if you press enter twice in an empty textedit and then insert 'Test' // you actually get three visible paragraphs, two empty leading ones and // a third with the actual text. the corresponding html representation - // therefore should also contain three paragraphs. that only works in >= 4.1, - // 4.0.x needs this additional block. -#if QT_VERSION < 0x040100 - cursor.insertBlock(); -#endif + // therefore should also contain three paragraphs. cursor.insertBlock(); QTextCharFormat fmt; @@ -1232,16 +1170,10 @@ void tst_QTextDocument::toHtml_data() fmt.setProperty(QTextFormat::FontSizeIncrement, 2); cursor.insertText("Test", fmt); -#if QT_VERSION < 0x040200 - QTest::newRow("blockcharfmt") << QTextDocumentFragment(&doc) - << QString("EMPTYBLOCK<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; color:#00ff00;\"><font size=\"4\"><font size=\"5\">Test</font></font></p>"); -#else QTest::newRow("blockcharfmt") << QTextDocumentFragment(&doc) << QString("EMPTYBLOCK<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:x-large; color:#00ff00;\">Test</span></p>"); -#endif } -#if QT_VERSION >= 0x040100 { CREATE_DOC_AND_CURSOR(); @@ -1254,7 +1186,6 @@ void tst_QTextDocument::toHtml_data() QTest::newRow("blockcharfmt2") << QTextDocumentFragment(&doc) << QString("<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" color:#0000ff;\">Test</span></p>"); } -#endif { QTest::newRow("horizontal-ruler") << QTextDocumentFragment::fromHtml("<hr />") @@ -1285,11 +1216,7 @@ void tst_QTextDocument::toHtml_data() cursor = mainFrame->lastCursorPosition(); QTest::newRow("frame") << QTextDocumentFragment(&doc) -#if QT_VERSION >= 0x040200 << QString("<table border=\"1\" style=\"-qt-table-type: frame; float: right; margin-top:2px; margin-bottom:2px; margin-left:2px; margin-right:2px;\" width=\"100\" height=\"50\" bgcolor=\"#00ff00\">\n<tr>\n<td style=\"border: none;\">\n<p DEFAULTBLOCKSTYLE>Hello World</p></td></tr></table>"); -#else - << QString("<table border=\"1\" style=\"-qt-table-type: frame; float: right; margin-top:2px; margin-bottom:2px; margin-left:2px; margin-right:2px;\" width=\"100\" height=\"50\" bgcolor=\"#00ff00\"><tr><td style=\"border: none;\"><p DEFAULTBLOCKSTYLE>Hello World</p></td></tr></table>"); -#endif } { @@ -1993,11 +1920,7 @@ void tst_QTextDocument::resolvedFontInEmptyFormat() void tst_QTextDocument::defaultRootFrameMargin() { -#if QT_VERSION >= 0x040200 && QT_VERSION <= 0x040400 - QCOMPARE(doc->rootFrame()->frameFormat().margin(), 2.0); -#else QCOMPARE(doc->rootFrame()->frameFormat().margin(), 4.0); -#endif } class TestDocument : public QTextDocument @@ -2415,7 +2338,6 @@ void tst_QTextDocument::documentCleanup() void tst_QTextDocument::characterAt() { -#if QT_VERSION >= 0x040500 QTextDocument doc; QTextCursor cursor(&doc); QString text("12345\n67890"); @@ -2432,7 +2354,6 @@ void tst_QTextDocument::characterAt() c = QChar(QChar::ParagraphSeparator); QCOMPARE(doc.characterAt(i), c); } -#endif } void tst_QTextDocument::revisions() diff --git a/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp b/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp index bace7b4..6edaee3 100644 --- a/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp +++ b/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp @@ -2217,9 +2217,6 @@ void tst_QTextDocumentFragment::defaultFont() void tst_QTextDocumentFragment::html_spanBackgroundColor() { setHtml("<span style=\"background-color: blue\">Foo</span>"); -#if QT_VERSION <= 0x040100 - QEXPECT_FAIL("", "Fixed in >= 4.1.1", Continue); -#endif QVERIFY(doc->begin().begin().fragment().charFormat().background().color() == QColor(Qt::blue)); } @@ -2251,9 +2248,6 @@ void tst_QTextDocumentFragment::html_brokenTitle() void tst_QTextDocumentFragment::html_blockVsInline() { -#if QT_VERSION <= 0x040100 - QEXPECT_FAIL("", "Fixed in >= 4.1.1", Abort); -#endif { setHtml("<html><body><div><b>Foo<div>Bar"); QVERIFY(cursor.charFormat().fontWeight() == QFont::Bold); @@ -2314,15 +2308,8 @@ void tst_QTextDocumentFragment::html_tbody() QTextTable *table = cursor.currentTable(); QVERIFY(table); QCOMPARE(table->columns(), 1); -#if QT_VERSION <= 0x040100 - QEXPECT_FAIL("", "Fixed in >= 4.1.1", Abort); -#endif QCOMPARE(table->rows(), 2); - -#if QT_VERISON >= 0x040200 QVERIFY(table->format().headerRowCount(), 1); -#endif - QCOMPARE(table->cellAt(0, 0).firstCursorPosition().block().text(), QString("First Cell")); QCOMPARE(table->cellAt(1, 0).firstCursorPosition().block().text(), QString("Second Cell")); } @@ -2380,7 +2367,6 @@ void tst_QTextDocumentFragment::html_nestedTables() void tst_QTextDocumentFragment::html_rowSpans() { -#if QT_VERSION > 0x040100 setHtml("" "<table border=\"1\" width=\"100%\">" " <tr>" @@ -2413,7 +2399,6 @@ void tst_QTextDocumentFragment::html_rowSpans() QCOMPARE(table->cellAt(3, 0).firstCursorPosition().block().text(), QString("blubb")); QCOMPARE(table->cellAt(3, 1).firstCursorPosition().block().text(), QString("baz")); -#endif } void tst_QTextDocumentFragment::html_rowSpans2() diff --git a/tests/auto/qtextlayout/tst_qtextlayout.cpp b/tests/auto/qtextlayout/tst_qtextlayout.cpp index 534c7b0..4ea3e2f 100644 --- a/tests/auto/qtextlayout/tst_qtextlayout.cpp +++ b/tests/auto/qtextlayout/tst_qtextlayout.cpp @@ -182,9 +182,6 @@ void tst_QTextLayout::init() testFont.setFamily("__Qt__Box__Engine__"); testFont.setPixelSize(TESTFONT_SIZE); testFont.setWeight(QFont::Normal); -#if defined(Q_WS_MAC) && QT_VERSION < 0x040200 - QSKIP("QTestFontEngine is not supported on the mac right now", SkipAll); -#endif QCOMPARE(QFontMetrics(testFont).width('a'), testFont.pixelSize()); } diff --git a/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp b/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp index f70082d..c60e0bf 100644 --- a/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp +++ b/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp @@ -533,7 +533,7 @@ void tst_QScriptEngine::bengali() void tst_QScriptEngine::gurmukhi() { -#if QT_VERSION >= 0x040001 && defined(Q_WS_X11) +#if defined(Q_WS_X11) { if (QFontDatabase().families(QFontDatabase::Gurmukhi).contains("Lohit Punjabi")) { QFont f("Lohit Punjabi"); diff --git a/tests/auto/qtextstream/tst_qtextstream.cpp b/tests/auto/qtextstream/tst_qtextstream.cpp index 5a6cce8..358b4b6 100644 --- a/tests/auto/qtextstream/tst_qtextstream.cpp +++ b/tests/auto/qtextstream/tst_qtextstream.cpp @@ -100,10 +100,8 @@ private slots: void readLineFromTextDevice_data(); void readLineFromTextDevice(); void readLineUntilNull(); -#if QT_VERSION >= 0x040103 void readLineMaxlen_data(); void readLineMaxlen(); -#endif void readLinesFromBufferCRCR(); // all @@ -220,13 +218,11 @@ private slots: void utf8IncompleteAtBufferBoundary_data(); void utf8IncompleteAtBufferBoundary(); -#if QT_VERSION >= 0x040100 // status void status_real_read_data(); void status_real_read(); void status_integer_read(); void status_word_read(); -#endif // use case tests void useCase1(); diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp index 6b6197a..235d63b 100644 --- a/tests/auto/qthread/tst_qthread.cpp +++ b/tests/auto/qthread/tst_qthread.cpp @@ -326,10 +326,6 @@ void tst_QThread::isRunning() void tst_QThread::setPriority() { -#if QT_VERSION < 0x040100 - QSKIP("QThread::setPriority() was introduced in 4.1.0, you are testing " QT_VERSION_STR, - SkipAll); -#else Simple_Thread thread; // cannot change the priority, since the thread is not running @@ -401,7 +397,6 @@ void tst_QThread::setPriority() QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running"); thread.setPriority(QThread::TimeCriticalPriority); QCOMPARE(thread.priority(), QThread::InheritPriority); -#endif } void tst_QThread::priority() diff --git a/tests/auto/qtime/tst_qtime.cpp b/tests/auto/qtime/tst_qtime.cpp index ea4700d..cc91e9d 100644 --- a/tests/auto/qtime/tst_qtime.cpp +++ b/tests/auto/qtime/tst_qtime.cpp @@ -254,11 +254,7 @@ void tst_QTime::isNull() QTime t1; QVERIFY( t1.isNull() ); QTime t2(0,0,0); -#if QT_VERSION >= 0x040100 QVERIFY( !t2.isNull() ); -#else - QVERIFY( t2.isNull() ); -#endif QTime t3(0,0,1); QVERIFY( !t3.isNull() ); QTime t4(0,0,0,1); @@ -270,11 +266,7 @@ void tst_QTime::isNull() void tst_QTime::isValid() { QTime t1; -#if QT_VERSION >= 0x040100 QVERIFY( !t1.isValid() ); -#else - QVERIFY( t1.isValid() ); -#endif QTime t2(24,0,0,0); QVERIFY( !t2.isValid() ); QTime t3(23,60,0,0); @@ -599,11 +591,7 @@ void tst_QTime::fromString_data() QTest::newRow( "data0" ) << QString("00:00:00") << QTime(0,0,0,0) << QTime(0,0,0,0); QTest::newRow( "data1" ) << QString("10:12:34") << QTime(10,12,34,0) << QTime(10,12,34,0); QTest::newRow( "data2" ) << QString("19:03:54.998601") << QTime(19, 3, 54, 999) << QTime(19, 3, 54, 999); -#if QT_VERSION >= 0x040200 QTest::newRow( "data3" ) << QString("19:03:54.999601") << QTime(19, 3, 54, 999) << QTime(19, 3, 54, 999); -#else - QTest::newRow( "data3" ) << QString("19:03:54.999601") << QTime() << QTime(); -#endif } void tst_QTime::fromString() @@ -671,9 +659,7 @@ void tst_QTime::toString_format_data() QTest::newRow( "data2" ) << QTime(10,12,34,45) << QString("hh:m:ss:z") << QString("10:12:34:45"); QTest::newRow( "data3" ) << QTime(10,12,34,45) << QString("hh:ss ap") << QString("10:34 am"); QTest::newRow( "data4" ) << QTime(22,12,34,45) << QString("hh:zzz AP") << QString("10:045 PM"); -#if (QT_VERSION-0 >= 0x030200) QTest::newRow( "data5" ) << QTime(230,230,230,230) << QString("hh:mm:ss") << QString(); -#endif } void tst_QTime::toString_format() diff --git a/tests/auto/qtimeline/tst_qtimeline.cpp b/tests/auto/qtimeline/tst_qtimeline.cpp index e35f406..9576193 100644 --- a/tests/auto/qtimeline/tst_qtimeline.cpp +++ b/tests/auto/qtimeline/tst_qtimeline.cpp @@ -42,10 +42,6 @@ #include <QtTest/QtTest> -#if QT_VERSION < 0x040200 -QTEST_NOOP_MAIN -#else - #include <qtimeline.h> //TESTED_CLASS= @@ -705,5 +701,3 @@ void tst_QTimeLine::resume() QTEST_MAIN(tst_QTimeLine) #include "tst_qtimeline.moc" - -#endif //QT_VERSION diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp index dfccd9e..655ea4e 100644 --- a/tests/auto/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/qtreeview/tst_qtreeview.cpp @@ -474,11 +474,7 @@ void tst_QTreeView::construction() QCOMPARE(view.iconSize(), QSize()); QCOMPARE(view.indexAt(QPoint()), QModelIndex()); QVERIFY(!view.indexWidget(QModelIndex())); -#if QT_VERSION >= 0x040400 QVERIFY(qobject_cast<QStyledItemDelegate *>(view.itemDelegate())); -#else - QVERIFY(qobject_cast<QItemDelegate *>(view.itemDelegate())); -#endif QVERIFY(!view.itemDelegateForColumn(-1)); QVERIFY(!view.itemDelegateForColumn(0)); QVERIFY(!view.itemDelegateForColumn(1)); @@ -1003,11 +999,7 @@ void tst_QTreeView::itemDelegate() { QTreeView view; -#if QT_VERSION >= 0x040400 QVERIFY(qobject_cast<QStyledItemDelegate *>(view.itemDelegate())); -#else - QVERIFY(qobject_cast<QItemDelegate *>(view.itemDelegate())); -#endif QPointer<QAbstractItemDelegate> oldDelegate = view.itemDelegate(); otherItemDelegate = new QItemDelegate; @@ -1682,9 +1674,16 @@ void tst_QTreeView::moveCursor() view.setColumnHidden(0, true); QVERIFY(view.isColumnHidden(0)); view.show(); + qApp->setActiveWindow(&view); - QModelIndex actual = view.moveCursor(PublicView::MoveDown, Qt::NoModifier); + //here the first visible index should be selected + //because the view got the focus QModelIndex expected = model.index(1, 1, QModelIndex()); + QCOMPARE(view.currentIndex(), expected); + + //then pressing down should go to the next line + QModelIndex actual = view.moveCursor(PublicView::MoveDown, Qt::NoModifier); + expected = model.index(2, 1, QModelIndex()); QCOMPARE(actual, expected); view.setRowHidden(0, QModelIndex(), false); @@ -1864,14 +1863,8 @@ void tst_QTreeView::indexBelow() i = view.indexBelow(i); QVERIFY(i.isValid()); QCOMPARE(i.row(), 1); -#if QT_VERSION >= 0x040100 i = view.indexBelow(i); QVERIFY(!i.isValid()); -#else - // Qt 4.0.x returns the bottom index - i = view.indexBelow(i); - QVERIFY(i.isValid()); -#endif } void tst_QTreeView::clicked() diff --git a/tests/auto/qtreewidget/tst_qtreewidget.cpp b/tests/auto/qtreewidget/tst_qtreewidget.cpp index b21b240..c3595c2 100644 --- a/tests/auto/qtreewidget/tst_qtreewidget.cpp +++ b/tests/auto/qtreewidget/tst_qtreewidget.cpp @@ -1555,9 +1555,6 @@ void tst_QTreeWidget::keyboardNavigation() void tst_QTreeWidget::scrollToItem() { -#if QT_VERSION < 0x040100 - QSKIP("This behaviour will be merged from main in 4.1.0.", SkipAll); -#else // Check if all parent nodes of the item found are expanded. // Reported in task #78761 QTreeWidgetItem *bar; @@ -1586,7 +1583,6 @@ void tst_QTreeWidget::scrollToItem() QVERIFY(testWidget->isItemExpanded(bar)); bar = bar->parent(); QVERIFY(testWidget->isItemExpanded(bar)); -#endif } // From task #85413 @@ -2087,7 +2083,6 @@ void tst_QTreeWidget::itemWidget() } } -#if QT_VERSION >= 0x040200 void tst_QTreeWidget::insertItemsWithSorting_data() { QTest::addColumn<int>("sortOrder"); @@ -2259,8 +2254,6 @@ void tst_QTreeWidget::insertExpandedItemsWithSorting_data() << (QStringList() << "h" << "g" << "f" << "e"); } - - // From Task 134978 void tst_QTreeWidget::insertExpandedItemsWithSorting() { @@ -2421,7 +2414,6 @@ void tst_QTreeWidget::changeDataWithSorting() QCOMPARE(dataChangedSpy.count(), 1); QCOMPARE(layoutChangedSpy.count(), reorderingExpected ? 1 : 0); } -#endif // QT_VERSION void tst_QTreeWidget::itemOperatorLessThan() { @@ -2599,7 +2591,6 @@ void tst_QTreeWidget::removeSelectedItem() QCOMPARE(selModel->isSelected(w->model()->index(0,0)), false); delete w; - } class AnotherTreeWidget : public QTreeWidget diff --git a/tests/auto/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp b/tests/auto/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp index 49abc6d..e4572c0 100644 --- a/tests/auto/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp +++ b/tests/auto/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp @@ -42,8 +42,6 @@ #include <QtTest/QtTest> -#if QT_VERSION >= 0x040100 - #include <qtreewidget.h> #include <qtreewidgetitemiterator.h> #include <qapplication.h> @@ -61,7 +59,6 @@ public: tst_QTreeWidgetItemIterator(); ~tst_QTreeWidgetItemIterator(); - public slots: void initTestCase(); void cleanupTestCase(); @@ -136,7 +133,7 @@ void tst_QTreeWidgetItemIterator::initTestCase() case 9: top->setFlags(Qt::ItemIsEnabled);break; case 10: top->setFlags(Qt::ItemIsEnabled);break; - case 11: + case 11: top->setFlags(0); break; @@ -982,7 +979,6 @@ void tst_QTreeWidgetItemIterator::postdecrement() } - void tst_QTreeWidgetItemIterator::plus_eq_data() { QTest::addColumn<int>("start"); @@ -1146,9 +1142,9 @@ void tst_QTreeWidgetItemIterator::updateIteratorAfterDeletedItem_and_ContinueIte QTest::addColumn<int>("grandChildItems"); // Populate the tree data // we have one iterator pointing to an item in the tree. // This iterator will be updated if we delete the item it is pointing to. - // + // QTest::addColumn<int>("removeindex"); // The index of the node we want to remove - QTest::addColumn<int>("iterator_initial_index"); // The new expected index of + QTest::addColumn<int>("iterator_initial_index"); // The new expected index of QTest::addColumn<int>("iterator_advance_after_removal"); QTest::addColumn<QString>("iterator_new_value"); // The new current item value of the iterator QTest::newRow("Remove 13, it points to 25, it-=1. We should get top0,child2,grandchild2") << 3 << 3 << 3 << 13 << 25 << -1 << QString("top0,child2,grandchild2"); @@ -1245,7 +1241,3 @@ void tst_QTreeWidgetItemIterator::initializeIterator() QTEST_MAIN(tst_QTreeWidgetItemIterator) #include "tst_qtreewidgetitemiterator.moc" - -#else -QTEST_NOOP_MAIN -#endif diff --git a/tests/auto/qudpsocket/tst_qudpsocket.cpp b/tests/auto/qudpsocket/tst_qudpsocket.cpp index 57e779c..e79be38 100644 --- a/tests/auto/qudpsocket/tst_qudpsocket.cpp +++ b/tests/auto/qudpsocket/tst_qudpsocket.cpp @@ -522,9 +522,6 @@ void tst_QUdpSocket::bindMode() #endif } -#if QT_VERSION < 0x040100 - QSKIP("QUdpSocket::BindMode was added in Qt 4.1.", SkipAll); -#else QUdpSocket socket; QVERIFY2(socket.bind(), socket.errorString().toLatin1().constData()); QUdpSocket socket2; @@ -550,7 +547,6 @@ void tst_QUdpSocket::bindMode() QVERIFY(!socket2.bind(socket.localPort())); QVERIFY(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint)); #endif -#endif } void tst_QUdpSocket::writeDatagramToNonExistingPeer_data() diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp index 3b938f2..5a79792 100644 --- a/tests/auto/qurl/tst_qurl.cpp +++ b/tests/auto/qurl/tst_qurl.cpp @@ -1129,11 +1129,7 @@ void tst_QUrl::setUrl() check("host",ulong.host(),"swww.gad.de"); check("path",ulong.path(),"/servlet/CookieAccepted"); -#if QT_VERSION < 300 - qt_set_locale_codec( KGlobal::charsets()->codecForName( "iso-8859-1" ) ); -#else QTextCodec::setCodecForLocale( KGlobal::charsets()->codecForName( "iso-8859-1" ) ); -#endif // UTF8 tests KURL uloc("/home/dfaure/konqtests/Matériel"); check("locale8bit",uloc.url().latin1(),"file:/home/dfaure/konqtests/Mat%E9riel"); // escaping the letter would be correct too @@ -1155,11 +1151,7 @@ void tst_QUrl::setUrl() uloc = KURL::fromPathOrURL( "" ); check("fromPathOrURL url", uloc.isValid()?"valid":"malformed", "malformed"); -#if QT_VERSION < 300 - qt_set_locale_codec( KGlobal::charsets()->codecForName( "koi8-r" ) ); -#else QTextCodec::setCodecForLocale( KGlobal::charsets()->codecForName( "koi8-r" ) ); -#endif baseURL = "file:/home/coolo"; KURL russian = baseURL.directory(false, true) + QString::fromLocal8Bit( "ÆÇÎ7" ); check( "russian", russian.url(), "file:/home/%C6%C7%CE7" ); diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/qvariant/tst_qvariant.cpp index 78d597e..d15f9c8 100644 --- a/tests/auto/qvariant/tst_qvariant.cpp +++ b/tests/auto/qvariant/tst_qvariant.cpp @@ -2414,13 +2414,9 @@ void tst_QVariant::url() void tst_QVariant::globalColor() { -#if QT_VERSION >= 0x040200 QVariant variant(Qt::blue); QVERIFY(variant.type() == QVariant::Color); QVERIFY(qVariantValue<QColor>(variant) == QColor(Qt::blue)); -#else - QSKIP("Implemented/fixed in 4.2", SkipSingle); -#endif } void tst_QVariant::variantMap() diff --git a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp b/tests/auto/qwaitcondition/tst_qwaitcondition.cpp index b2305cb..1e0136f 100644 --- a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp +++ b/tests/auto/qwaitcondition/tst_qwaitcondition.cpp @@ -161,9 +161,6 @@ public: void tst_QWaitCondition::wait_QMutex() { -#if defined(Q_OS_WIN32) && QT_VERSION < 0x030200 - QSKIP("Known race-conditions cause sporadic failures", SkipAll); -#else int x; for (int i = 0; i < iterations; ++i) { { @@ -240,7 +237,6 @@ void tst_QWaitCondition::wait_QMutex() } } } -#endif } void tst_QWaitCondition::wait_QReadWriteLock() @@ -446,9 +442,6 @@ int wake_Thread_2::count = 0; void tst_QWaitCondition::wakeOne() { -#if defined(Q_OS_WIN32) && QT_VERSION < 0x030200 - QSKIP("Known race-conditions cause sporadic failures", SkipAll); -#else int x; // wake up threads, one at a time for (int i = 0; i < iterations; ++i) { @@ -597,7 +590,7 @@ void tst_QWaitCondition::wakeOne() // QReadWriteLock QReadWriteLock readWriteLock; - wake_Thread_2 rwthread[ThreadCount]; + wake_Thread_2 rwthread[ThreadCount]; readWriteLock.lockForWrite(); for (x = 0; x < ThreadCount; ++x) { @@ -641,14 +634,10 @@ void tst_QWaitCondition::wakeOne() QCOMPARE(wake_Thread_2::count, 0); } -#endif } void tst_QWaitCondition::wakeAll() { -#if defined(Q_OS_WIN32) && QT_VERSION < 0x030200 - QSKIP("Known race-conditions cause sporadic failures", SkipAll); -#else int x; for (int i = 0; i < iterations; ++i) { QMutex mutex; @@ -715,7 +704,6 @@ void tst_QWaitCondition::wakeAll() QCOMPARE(exited, ThreadCount); QCOMPARE(wake_Thread_2::count, 0); } -#endif } class wait_RaceConditionThread : public QThread diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index 4b41bdb..a052034 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -2564,9 +2564,6 @@ void tst_QWidget::setGeometry() void tst_QWidget::windowOpacity() { -#if defined(Q_WS_X11) && QT_VERSION < 0x040200 - QSKIP("QWidget::windowOpacity is broken in Qt < 4.2 on X11", SkipAll); -#else #ifdef Q_OS_WINCE QSKIP( "Windows CE does not support windowOpacity", SkipAll); #endif @@ -2576,43 +2573,27 @@ void tst_QWidget::windowOpacity() // Initial value should be 1.0 QCOMPARE(widget.windowOpacity(), 1.0); // children should always return 1.0 -#if QT_VERSION < 0x040200 - QEXPECT_FAIL("", "Prior to 4.2, all children widgets returned 0.0", Continue); -#endif QCOMPARE(child.windowOpacity(), 1.0); widget.setWindowOpacity(0.0); QCOMPARE(widget.windowOpacity(), 0.0); child.setWindowOpacity(0.0); -#if QT_VERSION < 0x040200 - QEXPECT_FAIL("", "Prior to 4.2, all children widgets returned 0.0", Continue); -#endif QCOMPARE(child.windowOpacity(), 1.0); widget.setWindowOpacity(1.0); QCOMPARE(widget.windowOpacity(), 1.0); child.setWindowOpacity(1.0); -#if QT_VERSION < 0x040200 - QEXPECT_FAIL("", "Prior to 4.2, all children widgets returned 0.0", Continue); -#endif QCOMPARE(child.windowOpacity(), 1.0); widget.setWindowOpacity(2.0); QCOMPARE(widget.windowOpacity(), 1.0); child.setWindowOpacity(2.0); -#if QT_VERSION < 0x040200 - QEXPECT_FAIL("", "Prior to 4.2, all children widgets returned 0.0", Continue); -#endif QCOMPARE(child.windowOpacity(), 1.0); widget.setWindowOpacity(-1.0); QCOMPARE(widget.windowOpacity(), 0.0); child.setWindowOpacity(-1.0); -#if QT_VERSION < 0x040200 - QEXPECT_FAIL("", "Prior to 4.2, all children widgets returned 0.0", Continue); -#endif QCOMPARE(child.windowOpacity(), 1.0); -#endif } class UpdateWidget : public QWidget @@ -5321,7 +5302,7 @@ void tst_QWidget::subtractOpaqueSiblings() { #ifdef QT_MAC_USE_COCOA QSKIP("Cocoa only has rect granularity.", SkipAll); -#elif defined(Q_WIDGET_USE_DIRTYLIST) || (QT_VERSION >= 0x040400) +#else QWidget w; w.setGeometry(50, 50, 300, 300); diff --git a/tests/auto/qwmatrix/tst_qwmatrix.cpp b/tests/auto/qwmatrix/tst_qwmatrix.cpp index 47fd41f..4a816a8 100644 --- a/tests/auto/qwmatrix/tst_qwmatrix.cpp +++ b/tests/auto/qwmatrix/tst_qwmatrix.cpp @@ -299,16 +299,12 @@ void tst_QWMatrix::mapping_data() void tst_QWMatrix::mapRect() { -#if QT_VERSION >= 0x030100 QFETCH( QMatrix, matrix ); QFETCH( QRect, src ); // qDebug( "got src: %d/%d (%d/%d), matrix=[ %f %f %f %f %f %f ]", -// src.x(), src.y(), src.width(), src.height(), -// matrix.m11(), matrix.m12(), matrix.m21(), matrix.m22(), matrix.dx(), matrix.dy() ); +// src.x(), src.y(), src.width(), src.height(), +// matrix.m11(), matrix.m12(), matrix.m21(), matrix.m22(), matrix.dx(), matrix.dy() ); QTEST( QPolygon( matrix.mapRect(src) ), "res" ); -#else - QSKIP( "Not tested with Qt versions < 3.1", SkipAll); -#endif } void tst_QWMatrix::operator_star_qrect() @@ -349,7 +345,6 @@ void tst_QWMatrix::operator_star_qwmatrix() void tst_QWMatrix::assignments() { -#if QT_VERSION >= 0x040000 QMatrix m; m.scale(2, 3); m.rotate(45); @@ -371,24 +366,16 @@ void tst_QWMatrix::assignments() QCOMPARE(m.m22(), c2.m22()); QCOMPARE(m.dx(), c2.dx()); QCOMPARE(m.dy(), c2.dy()); -#else - QSKIP( "Not tested with Qt versions < 4.0", SkipAll); -#endif } void tst_QWMatrix::mapToPolygon() { -#if QT_VERSION >= 0x030100 QFETCH( QMatrix, matrix ); QFETCH( QRect, src ); QFETCH( QPolygon, res ); QCOMPARE( matrix.mapToPolygon( src ), res ); -#else - QSKIP( "Not tested with Qt versions < 3.1", SkipAll); -// qDebug("passing test; transformations are broken in 3.0.x" ); -#endif } diff --git a/tests/auto/qwritelocker/tst_qwritelocker.cpp b/tests/auto/qwritelocker/tst_qwritelocker.cpp index 21bfa8a..258309d 100644 --- a/tests/auto/qwritelocker/tst_qwritelocker.cpp +++ b/tests/auto/qwritelocker/tst_qwritelocker.cpp @@ -189,9 +189,6 @@ void tst_QWriteLocker::unlockAndRelockTest() void tst_QWriteLocker::lockerStateTest() { -#if QT_VERSION < 0x040200 - QSKIP("QWriteLocker doesn't keep state in Qt < 4.2", SkipAll); -#else class LockerStateThread : public tst_QWriteLockerThread { public: @@ -228,7 +225,6 @@ void tst_QWriteLocker::lockerStateTest() delete thread; thread = 0; -#endif } QTEST_MAIN(tst_QWriteLocker) diff --git a/tests/auto/rcc/tst_rcc.cpp b/tests/auto/rcc/tst_rcc.cpp index 3297b2b..57649b4 100644 --- a/tests/auto/rcc/tst_rcc.cpp +++ b/tests/auto/rcc/tst_rcc.cpp @@ -59,8 +59,6 @@ public: private slots: void rcc_data(); void rcc(); - -private: }; @@ -68,18 +66,9 @@ QString findExpectedFile(const QString &base) { QString expectedrccfile = base; - if (QT_VERSION >= 0x040500 && QFileInfo(expectedrccfile + QLatin1String(".450")).exists()) + // Must be updated with each minor release. + if (QFileInfo(expectedrccfile + QLatin1String(".450")).exists()) expectedrccfile += QLatin1String(".450"); - else if (QT_VERSION >= 0x040400 && QFileInfo(expectedrccfile + QLatin1String(".440")).exists()) - expectedrccfile += QLatin1String(".440"); - else if (QT_VERSION >= 0x040300 && QFileInfo(expectedrccfile + QLatin1String(".430")).exists()) - expectedrccfile += QLatin1String(".430"); - else if (QT_VERSION >= 0x040200 && QFileInfo(expectedrccfile + QLatin1String(".420")).exists()) - expectedrccfile += QLatin1String(".420"); - else if (QT_VERSION >= 0x040100 && QFileInfo(expectedrccfile + QLatin1String(".410")).exists()) - expectedrccfile += QLatin1String(".410"); - else if (QT_VERSION >= 0x040000 && QFileInfo(expectedrccfile + QLatin1String(".400")).exists()) - expectedrccfile += QLatin1String(".400"); return expectedrccfile; } diff --git a/tests/benchmarks/qimagereader/tst_qimagereader.cpp b/tests/benchmarks/qimagereader/tst_qimagereader.cpp index ae7ecb2..1b5acb4 100644 --- a/tests/benchmarks/qimagereader/tst_qimagereader.cpp +++ b/tests/benchmarks/qimagereader/tst_qimagereader.cpp @@ -102,9 +102,7 @@ tst_QImageReader::tst_QImageReader() images << QPair<QString, QByteArray>(QLatin1String("4bpp-rle.bmp"), QByteArray("bmp")); images << QPair<QString, QByteArray>(QLatin1String("tst7.bmp"), QByteArray("bmp")); images << QPair<QString, QByteArray>(QLatin1String("16bpp.bmp"), QByteArray("bmp")); -#if QT_VERSION >= 0x040200 images << QPair<QString, QByteArray>(QLatin1String("negativeheight.bmp"), QByteArray("bmp")); -#endif images << QPair<QString, QByteArray>(QLatin1String("marble.xpm"), QByteArray("xpm")); images << QPair<QString, QByteArray>(QLatin1String("kollada.png"), QByteArray("png")); images << QPair<QString, QByteArray>(QLatin1String("teapot.ppm"), QByteArray("ppm")); diff --git a/tests/benchmarks/qobject/main.cpp b/tests/benchmarks/qobject/main.cpp index cd8b142..65833b8 100644 --- a/tests/benchmarks/qobject/main.cpp +++ b/tests/benchmarks/qobject/main.cpp @@ -42,12 +42,7 @@ #include <QtGui> #include <qtest.h> #include "object.h" - -#if QT_VERSION >= 0x040000 -# include <qcoreapplication.h> -#else -# include <qapplication.h> -#endif +#include <qcoreapplication.h> #include <qdatetime.h> enum { @@ -58,7 +53,7 @@ enum { class QObjectBenchmark : public QObject { Q_OBJECT -private slots: +private slots: void signal_slot_benchmark(); void signal_slot_benchmark_data(); void qproperty_benchmark_data(); @@ -82,13 +77,8 @@ void QObjectBenchmark::signal_slot_benchmark() Object singleObject; Object multiObject; -#if QT_VERSION >= 0x040000 singleObject.setObjectName("single"); multiObject.setObjectName("multi"); -#else - singleObject.setName("single"); - multiObject.setName("double"); -#endif singleObject.connect(&singleObject, SIGNAL(signal0()), SLOT(slot0())); diff --git a/tests/benchmarks/qpainter/tst_qpainter.cpp b/tests/benchmarks/qpainter/tst_qpainter.cpp index af2c412..60c099b 100644 --- a/tests/benchmarks/qpainter/tst_qpainter.cpp +++ b/tests/benchmarks/qpainter/tst_qpainter.cpp @@ -700,11 +700,7 @@ void tst_QPainter::compositionModes_data() QTest::addColumn<QSize>("size"); QTest::addColumn<QColor>("color"); -#if QT_VERSION >= 0x040500 const int n = QPainter::RasterOp_SourceAndNotDestination; -#else - const int n = QPainter::CompositionMode_Exclusion; -#endif for (int i = 0; i <= n; ++i) { QString title("%1:%2"); QTest::newRow(qPrintable(title.arg(i).arg("10x10:opaque"))) @@ -732,9 +728,7 @@ void tst_QPainter::compositionModes() src.fill(color); QPixmap dest(size); -#if QT_VERSION >= 0x040500 if (mode < QPainter::RasterOp_SourceOrDestination) -#endif color.setAlpha(127); // porter-duff needs an alpha channel dest.fill(color); diff --git a/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp b/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp index 1b267aa..346da18 100644 --- a/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp +++ b/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp @@ -271,7 +271,7 @@ void TextEditor::fileActionActivated() const QString newPath = m_core->dialogGui()->getOpenFileName(this, tr("Choose a File"), oldPath); if (newPath.isEmpty() || newPath == oldPath) return; - const QString newText = QLatin1String("file:") + newPath; + const QString newText = QUrl::fromLocalFile(newPath).toString(); m_editor->setText(newText); emit textChanged(newText); } diff --git a/tools/linguist/shared/profileevaluator.cpp b/tools/linguist/shared/profileevaluator.cpp index ce53c27..5440752 100644 --- a/tools/linguist/shared/profileevaluator.cpp +++ b/tools/linguist/shared/profileevaluator.cpp @@ -275,6 +275,9 @@ void ProFileEvaluator::Private::insertVariable(const QString &line, int *i) { ProVariable::VariableOperator opkind; + if (m_proitem.isEmpty()) // Line starting with '=', like a conflict marker + return; + switch (m_proitem.at(m_proitem.length() - 1).unicode()) { case '+': m_proitem.chop(1); @@ -1473,7 +1476,13 @@ ProFile *ProFileEvaluator::parsedProFile(const QString &fileName) { QFileInfo fi(fileName); if (fi.exists()) { - ProFile *pro = new ProFile(fi.absoluteFilePath()); + QString fn = QDir::cleanPath(fi.absoluteFilePath()); + foreach (const ProFile *pf, d->m_profileStack) + if (pf->fileName() == fn) { + errorMessage(d->format("circular inclusion of %1").arg(fn)); + return 0; + } + ProFile *pro = new ProFile(fn); if (d->read(pro)) return pro; delete pro; diff --git a/tools/linguist/shared/ui.cpp b/tools/linguist/shared/ui.cpp index 23a73e7..ff98a90 100644 --- a/tools/linguist/shared/ui.cpp +++ b/tools/linguist/shared/ui.cpp @@ -60,7 +60,7 @@ class UiReader : public QXmlDefaultHandler { public: UiReader(Translator &translator, ConversionData &cd) - : m_translator(translator), m_cd(cd), m_lineNumber(-1), + : m_translator(translator), m_cd(cd), m_lineNumber(-1), m_isTrString(false), m_needUtf8(translator.codecName() != "UTF-8") {} @@ -81,6 +81,7 @@ private: QString m_context; QString m_source; QString m_comment; + QString m_extracomment; QXmlLocator *m_locator; QString m_accum; @@ -95,22 +96,27 @@ bool UiReader::startElement(const QString &namespaceURI, Q_UNUSED(namespaceURI); Q_UNUSED(localName); - if (qName == QLatin1String("item")) { + if (qName == QLatin1String("item")) { // UI3 menu entries flush(); - if (!atts.value(QLatin1String("text")).isEmpty()) + if (!atts.value(QLatin1String("text")).isEmpty()) { m_source = atts.value(QLatin1String("text")); + m_isTrString = true; + if (!m_cd.m_noUiLines) + m_lineNumber = m_locator->lineNumber(); + } } else if (qName == QLatin1String("string")) { flush(); if (atts.value(QLatin1String("notr")).isEmpty() || atts.value(QLatin1String("notr")) != QLatin1String("true")) { m_isTrString = true; m_comment = atts.value(QLatin1String("comment")); + m_extracomment = atts.value(QLatin1String("extracomment")); + if (!m_cd.m_noUiLines) + m_lineNumber = m_locator->lineNumber(); } else { m_isTrString = false; } } - if (m_isTrString && !m_cd.m_noUiLines) - m_lineNumber = m_locator->lineNumber(); m_accum.clear(); return true; } @@ -123,15 +129,15 @@ bool UiReader::endElement(const QString &namespaceURI, m_accum.replace(QLatin1String("\r\n"), QLatin1String("\n")); - if (qName == QLatin1String("class")) { + if (qName == QLatin1String("class")) { // UI "header" if (m_context.isEmpty()) m_context = m_accum; } else if (qName == QLatin1String("string") && m_isTrString) { m_source = m_accum; - } else if (qName == QLatin1String("comment")) { + } else if (qName == QLatin1String("comment")) { // FIXME: what's that? m_comment = m_accum; flush(); - } else if (qName == QLatin1String("function")) { + } else if (qName == QLatin1String("function")) { // UI3 embedded code fetchtrInlinedCpp(m_accum, m_translator, m_context); } else { flush(); @@ -161,12 +167,14 @@ void UiReader::flush() TranslatorMessage msg(m_context, m_source, m_comment, QString(), m_cd.m_sourceFileName, m_lineNumber, QStringList()); + msg.setExtraComment(m_extracomment); if (m_needUtf8 && msg.needs8Bit()) msg.setUtf8(true); m_translator.extend(msg); } m_source.clear(); m_comment.clear(); + m_extracomment.clear(); } bool loadUI(Translator &translator, QIODevice &dev, ConversionData &cd) diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf index 298311e..4d401a4 100644 --- a/tools/qdoc3/test/qt.qdocconf +++ b/tools/qdoc3/test/qt.qdocconf @@ -22,7 +22,7 @@ edition.DesktopLight.groups = -graphicsview-api qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.450 +qhp.Qt.namespace = com.trolltech.qt.451 qhp.Qt.virtualFolder = qdoc qhp.Qt.indexTitle = Qt Reference Documentation qhp.Qt.indexRoot = diff --git a/tools/qvfb/qvfb.cpp b/tools/qvfb/qvfb.cpp index b6a715c..62149a1 100644 --- a/tools/qvfb/qvfb.cpp +++ b/tools/qvfb/qvfb.cpp @@ -217,16 +217,10 @@ QVFb::QVFb( int display_id, int w, int h, int d, int r, const QString &skin, Dis setWindowIcon( pix ); rateDlg = 0; refreshRate = 30; -#if QT_VERSION >= 0x030000 - // When compiling with Qt 3 we need to create the menu first to - // avoid scroll bars in the main window + // Create the menu first to avoid scroll bars in the main window createMenu( menuBar() ); init( display_id, w, h, d, r, skin ); enableCursor( true ); -#else - init( display_id, w, h, d, r, skin ); - createMenu( menuBar() ); -#endif } QVFb::~QVFb() @@ -354,9 +348,7 @@ void QVFb::init( int display_id, int pw, int ph, int d, int r, const QString& sk scroller->setWidget(view); view->setContentsMargins( 0, 0, 0, 0 ); setCentralWidget(scroller); -#if QT_VERSION >= 0x030000 ph += 2; // avoid scrollbar -#endif scroller->show(); // delete defaultbuttons.conf if it was left behind... unlink(QFileInfo(QString("/tmp/qtembedded-%1/defaultbuttons.conf").arg(view->displayId())).absoluteFilePath().toLatin1().constData()); diff --git a/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.cpp b/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.cpp index ecdaf16..09394e7 100644 --- a/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.cpp +++ b/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.cpp @@ -48,9 +48,7 @@ #include <QtGui/QToolButton> #include <QtGui/QStyle> -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif class QtButtonPropertyBrowserPrivate { @@ -626,8 +624,6 @@ bool QtButtonPropertyBrowser::isExpanded(QtBrowserItem *item) const return false; } -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #include "moc_qtbuttonpropertybrowser.cpp" diff --git a/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.h b/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.h index 0833c2d..0238f5c 100644 --- a/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.h +++ b/tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.h @@ -44,9 +44,7 @@ #include "qtpropertybrowser.h" -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif class QtButtonPropertyBrowserPrivate; @@ -82,8 +80,6 @@ private: }; -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #endif diff --git a/tools/shared/qtpropertybrowser/qteditorfactory.cpp b/tools/shared/qtpropertybrowser/qteditorfactory.cpp index 3e9336f..a2e3917 100644 --- a/tools/shared/qtpropertybrowser/qteditorfactory.cpp +++ b/tools/shared/qtpropertybrowser/qteditorfactory.cpp @@ -62,9 +62,7 @@ # pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */ #endif -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif // Set a hard coded left margin to account for the indentation // of the tree view icon when switching to an editor @@ -2583,9 +2581,7 @@ void QtFontEditorFactory::disconnectPropertyManager(QtFontPropertyManager *manag disconnect(manager, SIGNAL(valueChanged(QtProperty*,QFont)), this, SLOT(slotPropertyChanged(QtProperty*,QFont))); } -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #include "moc_qteditorfactory.cpp" #include "qteditorfactory.moc" diff --git a/tools/shared/qtpropertybrowser/qteditorfactory.h b/tools/shared/qtpropertybrowser/qteditorfactory.h index 044dd5e..d86f9f6 100644 --- a/tools/shared/qtpropertybrowser/qteditorfactory.h +++ b/tools/shared/qtpropertybrowser/qteditorfactory.h @@ -44,9 +44,7 @@ #include "qtpropertymanager.h" -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif class QtSpinBoxFactoryPrivate; @@ -394,8 +392,6 @@ private: Q_PRIVATE_SLOT(d_func(), void slotSetValue(const QFont &)) }; -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #endif diff --git a/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.cpp b/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.cpp index d7c8f0b..9ac9744 100644 --- a/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.cpp +++ b/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.cpp @@ -47,9 +47,7 @@ #include <QtCore/QTimer> #include <QtCore/QMap> -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif class QtGroupBoxPropertyBrowserPrivate { @@ -528,8 +526,6 @@ void QtGroupBoxPropertyBrowser::itemChanged(QtBrowserItem *item) d_ptr->propertyChanged(item); } -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #include "moc_qtgroupboxpropertybrowser.cpp" diff --git a/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.h b/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.h index 29422bd..6d1b2b1 100644 --- a/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.h +++ b/tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.h @@ -44,9 +44,7 @@ #include "qtpropertybrowser.h" -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif class QtGroupBoxPropertyBrowserPrivate; @@ -73,8 +71,6 @@ private: }; -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #endif diff --git a/tools/shared/qtpropertybrowser/qtpropertybrowser.cpp b/tools/shared/qtpropertybrowser/qtpropertybrowser.cpp index 7254245..cca082d 100644 --- a/tools/shared/qtpropertybrowser/qtpropertybrowser.cpp +++ b/tools/shared/qtpropertybrowser/qtpropertybrowser.cpp @@ -48,9 +48,7 @@ # pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */ #endif -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif class QtPropertyPrivate { @@ -1958,8 +1956,6 @@ void QtAbstractPropertyBrowser::setCurrentItem(QtBrowserItem *item) emit currentItemChanged(item); } -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #include "moc_qtpropertybrowser.cpp" diff --git a/tools/shared/qtpropertybrowser/qtpropertybrowser.h b/tools/shared/qtpropertybrowser/qtpropertybrowser.h index 649a9e3..20ffb81 100644 --- a/tools/shared/qtpropertybrowser/qtpropertybrowser.h +++ b/tools/shared/qtpropertybrowser/qtpropertybrowser.h @@ -45,11 +45,7 @@ #include <QtGui/QWidget> #include <QtCore/QSet> -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif - - class QtAbstractPropertyManager; class QtPropertyPrivate; @@ -308,8 +304,6 @@ private: }; -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #endif // QTPROPERTYBROWSER_H diff --git a/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp b/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp index d689e60..94b0285 100644 --- a/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp +++ b/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp @@ -48,9 +48,7 @@ #include <QtGui/QLineEdit> #include <QtGui/QMenu> -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif QtCursorDatabase::QtCursorDatabase() { @@ -426,9 +424,4 @@ bool QtKeySequenceEdit::event(QEvent *e) return QWidget::event(e); } - - - -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif diff --git a/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h b/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h index 2eab3c8..fe8c6d1 100644 --- a/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h +++ b/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h @@ -58,9 +58,7 @@ #include <QtGui/QWidget> #include <QtCore/QStringList> -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif class QMouseEvent; class QCheckBox; @@ -154,8 +152,6 @@ private: QLineEdit *m_lineEdit; }; -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #endif diff --git a/tools/shared/qtpropertybrowser/qtpropertymanager.cpp b/tools/shared/qtpropertybrowser/qtpropertymanager.cpp index 8b84eb9..47b8c9b 100644 --- a/tools/shared/qtpropertybrowser/qtpropertymanager.cpp +++ b/tools/shared/qtpropertybrowser/qtpropertymanager.cpp @@ -61,9 +61,7 @@ # pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */ #endif -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif template <class PrivateData, class Value> static void setSimpleMinimumData(PrivateData *data, const Value &minVal) @@ -421,23 +419,6 @@ private: QMetaEnum m_policyEnum; }; -#if QT_VERSION < 0x040300 - -static QList<QLocale::Country> countriesForLanguage(QLocale::Language language) -{ - QList<QLocale::Country> countries; - QLocale::Country country = QLocale::AnyCountry; - while (country <= QLocale::LastCountry) { - QLocale locale(language, country); - if (locale.language() == language && !countries.contains(locale.country())) - countries << locale.country(); - country = (QLocale::Country)((uint)country + 1); // ++country - } - return countries; -} - -#endif - static QList<QLocale::Country> sortCountries(const QList<QLocale::Country> &countries) { QMultiMap<QString, QLocale::Country> nameToCountry; @@ -469,11 +450,7 @@ void QtMetaEnumProvider::initLocale() while (itLang.hasNext()) { QLocale::Language language = itLang.next(); QList<QLocale::Country> countries; -#if QT_VERSION < 0x040300 - countries = countriesForLanguage(language); -#else countries = QLocale::countriesForLanguage(language); -#endif if (countries.isEmpty() && language == system.language()) countries << system.country(); @@ -5789,9 +5766,7 @@ QtFontPropertyManager::QtFontPropertyManager(QObject *parent) { d_ptr = new QtFontPropertyManagerPrivate; d_ptr->q_ptr = this; -#if QT_VERSION >= 0x040500 QObject::connect(qApp, SIGNAL(fontDatabaseChanged()), this, SLOT(slotFontDatabaseChanged())); -#endif d_ptr->m_intPropertyManager = new QtIntPropertyManager(this); connect(d_ptr->m_intPropertyManager, SIGNAL(valueChanged(QtProperty *, int)), @@ -6485,9 +6460,7 @@ void QtCursorPropertyManager::uninitializeProperty(QtProperty *property) d_ptr->m_values.remove(property); } -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #include "moc_qtpropertymanager.cpp" #include "qtpropertymanager.moc" diff --git a/tools/shared/qtpropertybrowser/qtpropertymanager.h b/tools/shared/qtpropertybrowser/qtpropertymanager.h index 90fe5c0..2fb69bf 100644 --- a/tools/shared/qtpropertybrowser/qtpropertymanager.h +++ b/tools/shared/qtpropertybrowser/qtpropertymanager.h @@ -44,9 +44,7 @@ #include "qtpropertybrowser.h" -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif class QDate; class QTime; @@ -743,8 +741,6 @@ private: Q_DISABLE_COPY(QtCursorPropertyManager) }; -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #endif diff --git a/tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp b/tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp index ed262e5..1ad3f6b 100644 --- a/tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp +++ b/tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp @@ -52,9 +52,7 @@ #include <QtGui/QStyle> #include <QtGui/QPalette> -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif class QtPropertyEditorView; @@ -1040,9 +1038,7 @@ void QtTreePropertyBrowser::editItem(QtBrowserItem *item) d_ptr->editItem(item); } -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #include "moc_qttreepropertybrowser.cpp" #include "qttreepropertybrowser.moc" diff --git a/tools/shared/qtpropertybrowser/qttreepropertybrowser.h b/tools/shared/qtpropertybrowser/qttreepropertybrowser.h index 63bd7f6..813e050 100644 --- a/tools/shared/qtpropertybrowser/qttreepropertybrowser.h +++ b/tools/shared/qtpropertybrowser/qttreepropertybrowser.h @@ -44,9 +44,7 @@ #include "qtpropertybrowser.h" -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif class QTreeWidgetItem; class QtTreePropertyBrowserPrivate; @@ -131,8 +129,6 @@ private: }; -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #endif diff --git a/tools/shared/qtpropertybrowser/qtvariantproperty.cpp b/tools/shared/qtpropertybrowser/qtvariantproperty.cpp index 7e1975e..f712ba6 100644 --- a/tools/shared/qtpropertybrowser/qtvariantproperty.cpp +++ b/tools/shared/qtpropertybrowser/qtvariantproperty.cpp @@ -51,9 +51,7 @@ # pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */ #endif -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif class QtEnumPropertyType { @@ -69,17 +67,13 @@ class QtGroupPropertyType { }; -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif Q_DECLARE_METATYPE(QtEnumPropertyType) Q_DECLARE_METATYPE(QtFlagPropertyType) Q_DECLARE_METATYPE(QtGroupPropertyType) -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif /*! Returns the type id for an enum property. @@ -2275,8 +2269,6 @@ void QtVariantEditorFactory::disconnectPropertyManager(QtVariantPropertyManager d_ptr->m_checkBoxFactory->removePropertyManager(itFlag.next()->subBoolPropertyManager()); } -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif #include "moc_qtvariantproperty.cpp" diff --git a/tools/shared/qtpropertybrowser/qtvariantproperty.h b/tools/shared/qtpropertybrowser/qtvariantproperty.h index 91397d8..9253809 100644 --- a/tools/shared/qtpropertybrowser/qtvariantproperty.h +++ b/tools/shared/qtpropertybrowser/qtvariantproperty.h @@ -46,9 +46,7 @@ #include <QtCore/QVariant> #include <QtGui/QIcon> -#if QT_VERSION >= 0x040400 QT_BEGIN_NAMESPACE -#endif typedef QMap<int, QIcon> QtIconMap; @@ -172,9 +170,7 @@ private: Q_DISABLE_COPY(QtVariantEditorFactory) }; -#if QT_VERSION >= 0x040400 QT_END_NAMESPACE -#endif Q_DECLARE_METATYPE(QIcon) Q_DECLARE_METATYPE(QtIconMap) |