From 7c029e83a3e5058f7b82efd0235e766952357ffd Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Thu, 28 Nov 2013 11:00:15 +0100 Subject: [PATCH 1/8] Fix invalid memory read when shutting down QML applications As the last line in the QObject destructor, we call setParentHelper(0) to remove ourselves from the parent. In the process of that we also initiate the QML parentChanged callback. The first thing that parentChanged callback used to do (but now does it too late, after 26350b5ceafa0ade1328037f6234a7d288eb8f48 in qtdeclarative) is to check if the object was deleted and then return. We could re-introduce the check there, but I think it's cleaner to not bother calling the callback on a dead object in the first place. Change-Id: Ia4d43b65a9b3744a451b4c312a2d6f9c0e3b67dc Reviewed-by: Lars Knoll --- src/corelib/kernel/qobject.cpp | 2 +- .../corelib/kernel/qobject/tst_qobject.cpp | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index e062a38185..f8664ba3a2 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -1876,7 +1876,7 @@ void QObjectPrivate::setParent_helper(QObject *o) } } } - if (!isDeletingChildren && declarativeData && QAbstractDeclarativeData::parentChanged) + if (!wasDeleted && !isDeletingChildren && declarativeData && QAbstractDeclarativeData::parentChanged) QAbstractDeclarativeData::parentChanged(declarativeData, q, o); } diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp index ece88d47e3..f1e04511cd 100644 --- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp +++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp @@ -152,6 +152,7 @@ private slots: void connectBase(); void qmlConnect(); void exceptions(); + void noDeclarativeParentChangedOnDestruction(); }; struct QObjectCreatedOnShutdown @@ -6233,6 +6234,43 @@ void tst_QObject::exceptions() #endif } +#ifdef QT_BUILD_INTERNAL +static bool parentChangeCalled = false; + +static void testParentChanged(QAbstractDeclarativeData *, QObject *, QObject *) +{ + parentChangeCalled = true; +} +#endif + +void tst_QObject::noDeclarativeParentChangedOnDestruction() +{ +#ifdef QT_BUILD_INTERNAL + typedef void (*ParentChangedCallback)(QAbstractDeclarativeData *, QObject *, QObject *); + QScopedValueRollback rollback(QAbstractDeclarativeData::parentChanged); + QAbstractDeclarativeData::parentChanged = testParentChanged; + + QObject *parent = new QObject; + QObject *child = new QObject; + + QAbstractDeclarativeData dummy; + QObjectPrivate::get(child)->declarativeData = &dummy; + + parentChangeCalled = false; + child->setParent(parent); + + QVERIFY(parentChangeCalled); + parentChangeCalled = false; + + delete child; + QVERIFY(!parentChangeCalled); + + delete parent; +#else + QSKIP("Needs QT_BUILD_INTERNAL"); +#endif +} + // Test for QtPrivate::HasQ_OBJECT_Macro Q_STATIC_ASSERT(QtPrivate::HasQ_OBJECT_Macro::Value); Q_STATIC_ASSERT(!QtPrivate::HasQ_OBJECT_Macro::Value); From bedc5a3ae268594100b5e0eb8f35c0ce2b95ee96 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 26 Nov 2013 12:27:45 +0100 Subject: [PATCH 2/8] Update ChangeLog for 5.2.0 [QtWidgets II] Second batch of changes. Change-Id: I5b3add1df19bcad195f8b9286337de9fe926337c Reviewed-by: Thiago Macieira --- dist/changes-5.2.0 | 107 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 4 deletions(-) diff --git a/dist/changes-5.2.0 b/dist/changes-5.2.0 index f513d64626..30cd2889e9 100644 --- a/dist/changes-5.2.0 +++ b/dist/changes-5.2.0 @@ -48,6 +48,10 @@ information about a particular change. * QUrl now normalizes the path given in setPath, removing ./ and ../ and duplicate slashes. + - QWheelEvent has gained a "phase" attribute and may now be sent with + zero delta() in order to indicate beginning and end of transient + scrolling. + **************************************************************************** * Library * **************************************************************************** @@ -353,12 +357,24 @@ Changes in Qt 5.2.0 QtWidgets --------- + - Added class QKeySequenceEdit. + - Added QMaxCocoaViewContainer and QMacNativeWidget classes. + - [QTBUG-1016] Added API to control tool tip timing via: + * new QToolTip::showTip() overload + * QWidget::toolTipDuration() property. + * QStyle::SH_ToolTip_WakeUpDelay and SH_ToolTip_FallAsleepDelay + style hints. - [QTBUG-30255] Fixed a bug where spans across empty cells in a grid layout got broken. + - [QTBUG-31569] WA_QuitOnClose now works even if there are other + windows that don't have it set. - [QTBUG-32788] Properly handles Qt::WidgetWithChildrenShortcut shortcuts in MDI subwindows now. - [QTBUG-33078] QWidget::setWindowOpacity() now works when called before QWidget::show(). + - [QTBUG-33104] Fixed a bug where layout items with a Preferred size + policy would be treated as fixed size, if mixed with Expanding + items having maximumSize set. - [QTBUG-33247] Changed accessible trees and tables to always expose hidden headers, instead of only exposing the visible headers. - [QTBUG-34007] Fixed a crash in tablet support. @@ -384,18 +400,26 @@ QtWidgets overriding viewportSizeHint() needs to be recompiled against 5.2 for this feature to work correctly. + - QButtonGroup: + * [QTBUG-14857] Added buttonToggled() signals. + - QColorDialog: * Added a web color QLineEdit. * [QTBUG-14332] Added a screen color picker button. * [QTBUG-31998] Does no longer create widgets when using the platform dialog. + * [QTBUG-32054] Fixed a bug with keyboard navigation. - QComboBox: + * [QTBUG-31146] Fixed selection of items with identical text in + popup completion. * Added currentData() convenience function which allows to retrieve the user data set for the current item. - QCompleter: * [QTBUG-3414] Added filterMode property. + * The activated() signal now passes invalid indexes instead of + random bogus ones when falling back to the completion prefix. - QDesktopWidget: * [QTBUG-32567] Fixed emission of workAreaResized() signal. @@ -434,10 +458,16 @@ QtWidgets * [QTBUG-33039] Does no longer create widgets when using the platform dialog. + - QFontComboBox: + * [QTBUG-1573] Made QFontComboBox locale-sensitive. + - QFontDialog: * Now has finer-grained control over the types of fonts listed, similar to what QFontComboBox already had. + - QGestureManager + * Now supports Mac OS X native gestures. + - QGraphicsView etc * Fixed a crash in QGraphicsProxyWidget. * [QTBUG-8061] Allow handling of mouseDoubleClickEvent in @@ -446,16 +476,30 @@ QtWidgets Qt::{Contains,Intersets}ItemBoundingRect with items that contain the point in the bounding rectangle, but not their (custom) shape. + * [QTBUG-29945] Fixed drop-shadow and blur effects when using a + QGLWidget viewport. + + - QGroupBox: + * [QTBUG-33610] The check indicator of a checkable group box is no + longer clipped when using a small title font. - QHeaderView: + * Reduced memory usage by 33%. * [QTBUG-4346] A maximumSize for sections has been introduced. The maximum section size is by default the largest possible section size which in Qt 5.2 has been limited to 1048575 pixels. + * [QTBUG-32203] Fixed a painting bug involving hidden and reordered + sections. - QInputDialog: * Added getMultiLineText static method. + - QLayout: + * Added replaceWidget() function. + - QLineEdit: + * [QTBUG-32061] The cursor is now positioned correctly in an empty + line edit with placeholder text. * Keep placeholderText visible when focused, until text is added. * Context-menu actions now have icons. * Made it possible to add side widgets. @@ -467,28 +511,59 @@ QtWidgets no longer loses the icon. Also fixed a bug where under certain conditions code overriding QAbstractItemView::viewOptions() would not be called. + * [QTBUG-21433] Fixed content size calculation when either + horizontal or vertical scroll bar policy is always off. + + - QMacStyle: + * [QTBUG-31668] Fixed a case where multiple auto-default button + animations were running in parallel on OS X + + - QMainWindow: + * Added takeCentalWidget() function. + + - QMenu: + * Added QMenu::toNSMenu() conversion function (Mac only) + * Added QMenu::setAsDockMenu() and qt_mac_set_doc_menu(QMenu *menu) + functions (Mac only). + * [QTBUG-31664] Moving the mouse over a menu separator now closes + any open sub menus. - QMenuBar: * [QTBUG-32807] Menus now close again on second click. + * Added QMenuBar::toNSMenu() conversion function (Mac only) - QMessageBox: * May use native message boxes on some platforms now. + * setDetailedText() now works after show(). + * [QTBUG-2450] Added setCheckBox() function. * [QTBUG-6731] It is now possible to select some or all text from a QMessageBox and copy it to the clipboard. + - QScrollBar: + * Transient scrollbars are now properly shown when starting + two-finger scrolling on OS X. + - QSizePolicy: * Added a retainSizeWhenHidden attribute. - QSpinBox: * Values can now be displayed in different bases (cf. displayIntegerBase property) - * [QTBUG-31602] Size calculation will now be fixed when stylesheets - are used. + * [QTBUG-31602][QTBUG-34305] Fixed size calculation when + stylesheets are used. + + - QSplashScreen: + * Added message(), a getter for the currently displayed message. - QSplitter: * Now gets the default value of opaqueResize property from (new) QStyle::SH_Splitter_OpaqueResize styleHint. + - QStyle: + * Added SH_ToolTip_WakeUpDelay and SH_ToolTip_FallAsleepDelay. + * Fixed SH_ItemView_ActivateItemOnSingleClick not being retrieved + correctly from the platform theme. + - QSystemTrayIcon: * [QTBUG-31762] Fixed position of system tray icon on Linux/X11 (except Unity). @@ -505,14 +580,26 @@ QtWidgets * Added placeholderText akin to QLineEdit. * Context-menu actions now have icons. + - QToolTip: + * Added new showText() overload taking a duration. + - QTreeView: - * QTreeView now has setTreePosition to allow the treestructure to - show data from other columns than logicalindex zero. + * Added setTreePosition() function. + + - QWidget: + * Added window{Title,Icon,IconText}Changed() signals. + * Added toolTipDuration property. - QWindowContainer: * [QTBUG-32177] Sets active window correctly now. + * [QTBUG-34138] Will not create native child widgets any more. + + - QWindowsVistaStyle: + * [QTBUG-26503] Does no longer draw inapplicable scroll bar + grippers on Windows 8. - QWizard: + * [QTBUG-26722] The default background pixmap works again on OS X. * [QTBUG-29924] Gave all buttons an objectName(). **************************************************************************** @@ -537,6 +624,7 @@ Android OS X ---- + - Added QMaxCocoaViewContainer and QMacNativeWidget classes. - Qt for OS X is now identified by the macro Q_OS_OSX. This complements the existing Q_OS_DARWIN macro (which identifies the open source kernel and could identify non-Apple products) and Q_OS_MAC, which is defined for @@ -547,6 +635,17 @@ OS X supported until official announcement by the Qt Project. - Added a number of functions to QtCore to convert to and from CFString/NSString and QString, CFURL/NSURL and QUrl. + - QGestureManager now supports Mac OS X native gestures. + - Added QMenu::setAsDockMenu(), QMenu(Bar)::toNSMenu(), + qt_mac_set_doc_menu() functions. + - [QTBUG-26722] The QWizard default background pixmap works again. + +BlackBerry +---------- + + - Cover windows (aka active frames) are now supported. Cover windows must + have the Qt::CoverWindow flag set. They are shown when the application + is minimized. Windows ------- From c5b19f252188a01dd7b12090f4776420e3714000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 28 Nov 2013 15:33:06 +0100 Subject: [PATCH 3/8] iOS: Forward [UIApplicationDelegate handleOpenURL:] to QDesktopServices The user may use QDesktopServices::setUrlHandler() in combination with the appropriate Info.plist keys (CFBundleURLTypes, CFBundleURLSchemes) to react to URL requests from other applications. This is among other things useful for handling OAuth authentication from applications such as Dropbox. See: https://www.dropbox.com/developers/core/start/ios We protect against recursive URL opening, but an application may still redirect a request to open a URL by opening another URL, eg a website. Task-number: QTBUG-35201 Change-Id: I9f1d246206c5594b1b65bb11fa98c6bcdefc443e Reviewed-by: Richard Moe Gustavsen --- .../platforms/ios/qiosapplicationdelegate.mm | 20 +++++++++++++++++++ src/plugins/platforms/ios/qiosservices.h | 7 +++++++ src/plugins/platforms/ios/qiosservices.mm | 19 ++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/src/plugins/platforms/ios/qiosapplicationdelegate.mm b/src/plugins/platforms/ios/qiosapplicationdelegate.mm index cf702c82af..9cf1047a6b 100644 --- a/src/plugins/platforms/ios/qiosapplicationdelegate.mm +++ b/src/plugins/platforms/ios/qiosapplicationdelegate.mm @@ -41,9 +41,14 @@ #include "qiosapplicationdelegate.h" +#include "qiosintegration.h" +#include "qiosservices.h" #include "qiosviewcontroller.h" #include "qioswindow.h" +#include +#include + #include @implementation QIOSApplicationDelegate @@ -82,6 +87,21 @@ return YES; } +- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation +{ + Q_UNUSED(application); + Q_UNUSED(sourceApplication); + Q_UNUSED(annotation); + + if (!QGuiApplication::instance()) + return NO; + + QIOSIntegration *iosIntegration = static_cast(QGuiApplicationPrivate::platformIntegration()); + QIOSServices *iosServices = static_cast(iosIntegration->services()); + + return iosServices->handleUrl(QUrl::fromNSURL(url)); +} + - (void)dealloc { [window release]; diff --git a/src/plugins/platforms/ios/qiosservices.h b/src/plugins/platforms/ios/qiosservices.h index 692b3a0b99..aa39fbbed4 100644 --- a/src/plugins/platforms/ios/qiosservices.h +++ b/src/plugins/platforms/ios/qiosservices.h @@ -41,6 +41,8 @@ #ifndef QIOSSERVICES_H #define QIOSSERVICES_H + +#include #include QT_BEGIN_NAMESPACE @@ -50,6 +52,11 @@ class QIOSServices : public QPlatformServices public: bool openUrl(const QUrl &url); bool openDocument(const QUrl &url); + + bool handleUrl(const QUrl &url); + +private: + QUrl m_handlingUrl; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosservices.mm b/src/plugins/platforms/ios/qiosservices.mm index 32203aeb71..0ac6c590ca 100644 --- a/src/plugins/platforms/ios/qiosservices.mm +++ b/src/plugins/platforms/ios/qiosservices.mm @@ -42,6 +42,7 @@ #include "qiosservices.h" #include +#include #import @@ -49,6 +50,9 @@ QT_BEGIN_NAMESPACE bool QIOSServices::openUrl(const QUrl &url) { + if (url == m_handlingUrl) + return false; + if (url.scheme().isEmpty()) return openDocument(url); @@ -66,4 +70,19 @@ bool QIOSServices::openDocument(const QUrl &url) return QPlatformServices::openDocument(url); } +/* Callback from iOS that the application should handle a URL */ +bool QIOSServices::handleUrl(const QUrl &url) +{ + QUrl previouslyHandling = m_handlingUrl; + m_handlingUrl = url; + + // FIXME: Add platform services callback from QDesktopServices::setUrlHandler + // so that we can warn the user if calling setUrlHandler without also setting + // up the matching keys in the Info.plist file (CFBundleURLTypes and friends). + bool couldHandle = QDesktopServices::openUrl(url); + + m_handlingUrl = previouslyHandling; + return couldHandle; +} + QT_END_NAMESPACE From 9b782dca45331c0e0246b8439d5cf007a440afc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 27 Nov 2013 18:20:10 +0100 Subject: [PATCH 4/8] iOS: Update screen properties when we trigger statusbar changes on iOS7 Ideally we'd have a callback from iOS when this happens, so we can also react to changes done outside of Qt, but willChangeStatusBarFrame and friends do not seem to give us what we want. Change-Id: I686ce7950395a83c4257372363c773a95c3935ed Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosscreen.mm | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 57522cb1a3..96410952f9 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -189,6 +189,9 @@ void QIOSScreen::updateProperties() void QIOSScreen::updateStatusBarVisibility() { + if (!isQtApplication()) + return; + QWindow *focusWindow = QGuiApplication::focusWindow(); // If we don't have a focus window we leave the status @@ -199,20 +202,26 @@ void QIOSScreen::updateStatusBarVisibility() return; UIView *view = reinterpret_cast(focusWindow->handle()->winId()); + QIOSViewController *viewController = static_cast(view.viewController); + + bool currentStatusBarVisibility = [UIApplication sharedApplication].statusBarHidden; + if (viewController.prefersStatusBarHidden == currentStatusBarVisibility) + return; + #if QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_7_0) if (QSysInfo::MacintoshVersion >= QSysInfo::MV_IOS_7_0) { - [view.viewController setNeedsStatusBarAppearanceUpdate]; + [viewController setNeedsStatusBarAppearanceUpdate]; + dispatch_async(dispatch_get_main_queue(), ^{ + updateProperties(); + }); } else #endif { - bool wasHidden = [UIApplication sharedApplication].statusBarHidden; - QIOSViewController *viewController = static_cast(view.viewController); [[UIApplication sharedApplication] setStatusBarHidden:[viewController prefersStatusBarHidden] withAnimation:UIStatusBarAnimationNone]; - if ([UIApplication sharedApplication].statusBarHidden != wasHidden) - updateProperties(); + updateProperties(); } } From 740e1900bc93e67e0ff85d684cd636149f7122c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 26 Nov 2013 13:40:21 +0100 Subject: [PATCH 5/8] iOS: Provide default launch image for 4-inch devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Otherwise the application will not scale to the full resolution of the device. We copy the image into the Xcode project, since it's internal to our build system and not meant as a template to be edited by the user. For 5.3 we need to provide a proper qmake/qbs mechanism to handle launch images. Task-number: QTBUG-31431 Change-Id: Ied0b2843a78c5ea865750e0404418ced7ad27082 Reviewed-by: Oswald Buddenhagen Reviewed-by: Tor Arne Vestbø --- mkspecs/macx-ios-clang/Default-568h@2x.png | Bin 0 -> 18594 bytes .../macx-ios-clang/features/default_post.prf | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 mkspecs/macx-ios-clang/Default-568h@2x.png diff --git a/mkspecs/macx-ios-clang/Default-568h@2x.png b/mkspecs/macx-ios-clang/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/mkspecs/macx-ios-clang/features/default_post.prf b/mkspecs/macx-ios-clang/features/default_post.prf index 0a35b1167d..262a8f1889 100644 --- a/mkspecs/macx-ios-clang/features/default_post.prf +++ b/mkspecs/macx-ios-clang/features/default_post.prf @@ -173,6 +173,16 @@ macx-xcode { ios_device_family.name = TARGETED_DEVICE_FAMILY ios_device_family.value = $$QMAKE_IOS_TARGETED_DEVICE_FAMILY QMAKE_MAC_XCODE_SETTINGS += ios_device_family + + # Set up default 4-inch iPhone/iPod launch image so that our apps + # support the full screen resolution of those devices. + launch_image = Default-568h@2x.png + copy_image.input = $$QMAKESPEC/$$launch_image + copy_image.output = $$OUT_PWD/$${TARGET}.xcodeproj/$$launch_image + copy_image.CONFIG = verbatim + QMAKE_SUBSTITUTES += copy_image + launch_images.files = $$copy_image.output + QMAKE_BUNDLE_DATA += launch_images } macx-xcode { From 7016ea797a4ceefc8df8a6e13971045a215c5e4c Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Wed, 27 Nov 2013 09:12:08 +0100 Subject: [PATCH 6/8] Add a few notes to changes-5.2.0 Mostly changes for Android. One change in Qt Gui. Change-Id: Ifce627b6688702b3a3ae1634bd344eb8331f6caf Reviewed-by: Paul Olav Tvete Reviewed-by: BogDan Vatra --- dist/changes-5.2.0 | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/dist/changes-5.2.0 b/dist/changes-5.2.0 index 30cd2889e9..a51cc91f98 100644 --- a/dist/changes-5.2.0 +++ b/dist/changes-5.2.0 @@ -294,6 +294,9 @@ QtGui - [QTBUG-27349] Reintroduced command line argument for positioning windows (-geometry on X11, -qwindowgeometry on other platforms) + - [QTBUG-28832] Fixed regression from Qt 4 when using + QTextOption::ShowLineAndParagraphSeparators. + QtNetwork --------- @@ -620,6 +623,40 @@ Android show the status bar (QWindow::showMaximized()). Use QWindow::showFullScreen() to hide it. - Implemented support for accessibility on Android. + - Implemented support for native action bar backend for menu bars in + Qt Quick Controls and Qt Widgets. + - Implemented support for native popup menus and comboboxes in Qt Quick + Controls. + - Implemented support for native message boxes in Qt Widgets. + - Several improvements to handling dialogs and multiple top-level + windows in Qt Widgets. + - Implemented automatic inclusion of necessary permissions in manifest + when linking against Qt Multimedia. + - Fixed crash on startup when running on Android 4.4. + - Add requirement for Android SDK version 13 or higher for building + Qt application. Note that this is for building only. The application + can still be targeted for devices with SDK versions 9 and up. + - Default to target SDK version 14 to disable overflow button in + system navigation. + - New module: Qt Android Extras. Contains convenience APIs for using + JNI, and will in the future include support for Android-specific + features which do not fit in a cross-platform API. + - Implemented support for thread-affinity in qrand() functions. + - Fixed several problems with predictive text in soft keyboard. + - Made several improvements to stability. + - Implemented support for camera and low-latency audio in Qt Multimedia. + - Fixed driver-specific bugs in text rendering in Qt Quick 2. + - Added preference in default manifest for installing applications to + external storage if possible. + - Fixed delivery of key press event for the Back key. + - Fixed race condition when showing a window in full screen which would + cause it to not be maximized. + - Fixed input method hints. + - Made font point sizes compatible with the interpretation of point + sizes on iOS to ease sharing code between the two platforms. + - Added support for QAmbientTemperatureSensor, QPressureSensor + and QProximitySensor to Qt Sensors. + - Removed dependency on Qt Widgets in default build of Qt Quick Controls. OS X ---- From 6c3adb5f966e349f0488c194462e48cc8ddf248e Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Wed, 27 Nov 2013 14:47:26 +0100 Subject: [PATCH 7/8] Doc: corrected invalid ref. to output iterators MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-34749 Change-Id: I7abd504b6081e84a8e67c7957e13d402999e9d38 Reviewed-by: Martin Smith Reviewed-by: Topi Reiniö --- src/corelib/tools/qalgorithms.qdoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/corelib/tools/qalgorithms.qdoc b/src/corelib/tools/qalgorithms.qdoc index cd389470a4..412b9cf3b2 100644 --- a/src/corelib/tools/qalgorithms.qdoc +++ b/src/corelib/tools/qalgorithms.qdoc @@ -49,9 +49,9 @@ iterators they accept. For example, qFill() accepts two \l {forward iterators}. The iterator types required are specified for each algorithm. If an iterator of the wrong type is passed (for - example, if QList::ConstIterator is passed as an \l {output - iterator}), you will always get a compiler error, although not - necessarily a very informative one. + example, if QList::ConstIterator is passed as an + \l {Output Iterators}{output iterator}), you will always get a + compiler error, although not necessarily a very informative one. Some algorithms have special requirements on the value type stored in the containers. For example, @@ -99,7 +99,7 @@ \section2 Output Iterators - An \e{output iterator} is an iterator that can be used for + An output iterator is an iterator that can be used for writing data sequentially to a container or to some output stream. It must provide the following operators: unary \c{*} for writing a value (i.e., \c{*it = val}) and prefix \c{++} for From 7d5448d9e2ae4d2d10c0cff867cf34b315336feb Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Wed, 27 Nov 2013 13:24:59 +0100 Subject: [PATCH 8/8] Docs: add important QWheelEvent::phase() related notes Change-Id: I4901b96b44b7c1179e678689af5962cb4570d50d Reviewed-by: Jens Bache-Wiig Reviewed-by: Gabriel de Dietrich Reviewed-by: Lars Knoll --- src/gui/kernel/qevent.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp index 28666085a7..88f132b877 100644 --- a/src/gui/kernel/qevent.cpp +++ b/src/gui/kernel/qevent.cpp @@ -709,6 +709,12 @@ QWheelEvent::QWheelEvent(const QPointF &pos, const QPointF& globalPos, Example: \snippet code/src_gui_kernel_qevent.cpp 0 + + \note On platforms that support scrolling \l{phase()}{phases}, the delta may be null when: + \list + \li scrolling is about to begin, but the distance did not yet change (Qt::ScrollBegin), + \li or scrolling has ended and the distance did not change anymore (Qt::ScrollEnd). + \endlist */ /*! @@ -731,6 +737,12 @@ QWheelEvent::QWheelEvent(const QPointF &pos, const QPointF& globalPos, Example: \snippet code/src_gui_kernel_qevent.cpp 0 + + \note On platforms that support scrolling \l{phase()}{phases}, the delta may be null when: + \list + \li scrolling is about to begin, but the distance did not yet change (Qt::ScrollBegin), + \li or scrolling has ended and the distance did not change anymore (Qt::ScrollEnd). + \endlist */ /*! @@ -830,6 +842,9 @@ QWheelEvent::QWheelEvent(const QPointF &pos, const QPointF& globalPos, \since 5.2 Returns the scrolling phase of this wheel event. + + \note The Qt::ScrollBegin and Qt::ScrollEnd phases are currently + supported only on Mac OS X. */