diff --git a/dist/changes-3.0.0 b/dist/changes-3.0.0 index 4f6cf897e31785b2814d088732f822fa8f9fb92c..233eb56d2906b639f9000dbffeac42c23bcad505 100644 --- a/dist/changes-3.0.0 +++ b/dist/changes-3.0.0 @@ -18,6 +18,10 @@ Editing are detected * Fixed issues with splitting when editor is not splittable (QTCREATORBUG-6827) * Added action for closing all editors except the visible ones (QTCREATORBUG-9893) + * Added support for changing case of entered values in snippets + (:u :c :l modifiers like for custom wizards) + * Fixed that proposal list would pop up again after it was dismissed with Esc key + right after it opened Managing and Building Projects * Fixed exit code that is shown for applications that are run in terminal @@ -35,6 +39,7 @@ QMake Projects * Fixed issues when using qtchooser (QTCREATORBUG-9841) * Fixed issues with autosave files triggering reparses (QTCREATORBUG-9957) * Fixed that run configurations were created for targets that are not built (QTCREATORBUG-9549) + * Fixed issue when renaming a file changes its MIME type (QTCREATORBUG-9824) CMake Projects * Added parser for CMake build errors @@ -42,16 +47,18 @@ CMake Projects * Added support for a CMakeDeployment.txt file that defines deployment rules Qbs Projects + * Added code completion support for code generated from .ui files Generic Projects Debugging + * Added Debuggers tab to Build & Run options + * Pretty printers (Python based, GDB and LLDB) + * Added QIPv6Address and support for IPv6 in QHostAddress * GDB - * Fixed various pretty printers * CDB * Fixed interrupting 32 bit processes from 64 bit Qt Creator builds * LLDB - * Fixed various pretty printers * QML Analyzer @@ -78,6 +85,15 @@ C++ Support * Added list of potential destinations when doing "Follow Symbol" on virtual function calls (QTCREATORBUG-9611) * Fixed "Follow Symbol" for operators (QTCREATORBUG-7485) + * Added logic to avoid complete project reparses (QTCREATORBUG-9730) + * Added matching against fully qualified name in C++ related locator filters + +Qt Quick Designer + * Added imports editor + * Fixed bread crumb bar for infile components + +Qt Designer + * Fixed "Go to slot" for form classes that are not part of a project (QTCREATORBUG-9653) Python Support @@ -85,11 +101,12 @@ GLSL Support * Fixed crash (QTCREATORBUG-10166) Diff Viewer - * Added button that switches between inline and side-by-side view + * Added button that switches between inline and side-by-side view (QTCREATORBUG-10035) * Added syntax highlighting (QTCREATORBUG-9580) Version Control Systems * Fixed crash when reverting changes while commit editor is open (QTCREATORBUG-10190) + * Fixed colors in description in submit editor * Added VCS topic to window title * Fixed that user was asked about adding file to VCS even if it already was in VCS (QTCREATORBUG-2455) @@ -113,6 +130,8 @@ Version Control Systems * ClearCase FakeVim + * Added <C-W><C-V> shortcut for splitting editors + * Fixed scrolling when using single character or single line movement Platform Specific @@ -122,6 +141,8 @@ Qt Support QNX * Added check for existence of debug token and show error message in that case (QTCREATORBUG-9103) + * Added device auto-detection in "Add BlackBerry Device" wizard + * Added support for NDKs with multiple target configurations Android * Added error messages for incompatible devices to compile output (QTCREATORBUG-9690) diff --git a/doc/images/qtcreator-snippet-modifiers.png b/doc/images/qtcreator-snippet-modifiers.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6f3657f7d5d24676b7169941e76a529e4e1773 Binary files /dev/null and b/doc/images/qtcreator-snippet-modifiers.png differ diff --git a/doc/src/editors/creator-editors.qdoc b/doc/src/editors/creator-editors.qdoc index f8d7a12f0c8e8c26f2694fa32e32ab44c7e3a06d..bb5a8a5100edb7c5f6055877344963d1cbfbad9c 100644 --- a/doc/src/editors/creator-editors.qdoc +++ b/doc/src/editors/creator-editors.qdoc @@ -833,6 +833,29 @@ Use unique variable names within a snippet, because all instances of a variable are renamed when you specify a value for it. + To determine the case of values you enter in snippets, use the following + modifiers: + + \list + + \li \c {:c} converts the initial letter of the string to upper case + + \li \c {:l} converts the string to lower case + + \li \c {:u} converts the string to upper case + + \endlist + + For example, add the following line to the \c class snippet to specify that + the function name is converted to all lower case characters regardless of + how you specify the value of the \c{$name$} variable: + + \code + void $name:l$() {} + \endcode + + \image qtcreator-snippet-modifiers.png + The snippet editor does not check the syntax of the snippets that you edit or add. However, when you use the snippets, the code editor marks any errors by underlining them in red. diff --git a/scripts/hasCopyright.pl b/scripts/hasCopyright.pl index e8bb0b387897af4d3b34fb1db56ebf8fc94f1f74..3f7d4dc622eea2b1a15890e848842f749e5d6625 100644 --- a/scripts/hasCopyright.pl +++ b/scripts/hasCopyright.pl @@ -63,7 +63,7 @@ while (1) { last if ($linecount > 50); $hasCopyright = 1 if $_ =~ /Copyright/i; - $hasCurrent = 1 if $_ =~ /\(c\).*\s2013/i; + $hasCurrent = 1 if $_ =~ /\(c\).*\s2014/i; $hasContact = 1 if $_ =~ /Contact: http:\/\/www.qt-project.org\/legal/; $hasCommercial = 1 if $_ =~ /Commercial (License )?Usage/; diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 2ab1b915449cfa8e71f88dea13ddba8deb3be91c..d88bed7bdb7fd0b30ecebe4671ed1842778a1254 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -185,6 +185,13 @@ def impl_SBValue__getitem__(value, index): return value.GetChildAtIndex(index) return value.GetChildMemberWithName(index) +def impl_SBValue__deref(value): + result = value.Dereference() + if result.IsValid(): + return result + result = value.CreateValueFromExpression(None, '*' + value.get_expr_path()) + return result + lldb.SBValue.__add__ = impl_SBValue__add__ lldb.SBValue.__sub__ = impl_SBValue__sub__ lldb.SBValue.__le__ = impl_SBValue__le__ @@ -196,7 +203,7 @@ lldb.SBValue.__long__ = lambda self: long(self.GetValue(), 0) lldb.SBValue.code = lambda self: self.GetTypeClass() lldb.SBValue.cast = lambda self, typeObj: self.Cast(typeObj) -lldb.SBValue.dereference = lambda self: self.Dereference() +lldb.SBValue.dereference = impl_SBValue__deref lldb.SBValue.address = property(lambda self: self.GetAddress()) lldb.SBType.pointer = lambda self: self.GetPointerType() @@ -625,10 +632,11 @@ class Dumper(DumperBase): self.remoteChannel_ = args.get('remoteChannel', '') self.platform_ = args.get('platform', '') - if self.sysRoot_: - self.debugger.SetCurrentPlatformSDKRoot(self.sysRoot_) if self.platform_: self.debugger.SetCurrentPlatform(self.platform_) + # sysroot has to be set *after* the platform + if self.sysRoot_: + self.debugger.SetCurrentPlatformSDKRoot(self.sysRoot_) self.target = self.debugger.CreateTarget(self.executable_, None, None, True, error) self.importDumpers() diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index e79ef3d47d34afa84d28d4a9c06769aec8cff013..4a9256c06eaf90eae99ef01d82df4c9706b6ee47 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -990,10 +990,12 @@ def qdumpHelper__Qt5_QMap(d, value, forceLong): innerType = nodeType - def helper(d, node, nodeType, isCompact, forceLong, i): + def helper(d, node, nodeType, isCompact, forceLong, i, n): left = node["left"] if not d.isNull(left): - i = helper(d, left.dereference(), nodeType, isCompact, forceLong, i) + i = helper(d, left.dereference(), nodeType, isCompact, forceLong, i, n) + if i >= n: + return i nodex = node.cast(nodeType) with SubItem(d, i): @@ -1008,16 +1010,18 @@ def qdumpHelper__Qt5_QMap(d, value, forceLong): qdump__QMapNode(d, nodex) i += 1 + if i >= n: + return i right = node["right"] if not d.isNull(right): - i = helper(d, right.dereference(), nodeType, isCompact, forceLong, i) + i = helper(d, right.dereference(), nodeType, isCompact, forceLong, i, n) return i with Children(d, n, childType=innerType): node = d_ptr["header"] - helper(d, node, nodeType, isCompact, forceLong, 0) + helper(d, node, nodeType, isCompact, forceLong, 0, n) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AdvancedSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AdvancedSection.qml index 1a79b72ac4585177a1f9e160aaff5b8d9a71d5e7..89ea883cc1cd240489429a8d79251f6263edde1f 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AdvancedSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AdvancedSection.qml @@ -92,5 +92,48 @@ Section { ExpandingSpacer { } } + + Label { + visible: majorQtQuickVersion > 1 + text: qsTr("Enabled") + } + SecondColumnLayout { + visible: majorQtQuickVersion > 1 + CheckBox { + backendValue: backendValues.enabled + text: qsTr("Accept mouse and keyboard events") + } + ExpandingSpacer { + } + } + + Label { + visible: majorQtQuickVersion > 1 + text: qsTr("Smooth") + } + SecondColumnLayout { + visible: majorQtQuickVersion > 1 + CheckBox { + backendValue: backendValues.smooth + text: qsTr("Smooth sampling active") + } + ExpandingSpacer { + } + } + + Label { + visible: majorQtQuickVersion > 1 + text: qsTr("Antialiasing") + } + SecondColumnLayout { + visible: majorQtQuickVersion > 1 + CheckBox { + backendValue: backendValues.antialiasing + text: qsTr("Anti-aliasing active") + } + ExpandingSpacer { + } + } + } } diff --git a/share/qtcreator/templates/shared/qtquickapplicationviewer/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.cpp b/share/qtcreator/templates/shared/qtquickapplicationviewer/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.cpp index 7198a903b41fe7e098b95cfd7fa49d14eec4866e..bbce9d70bf50cd80d727d5334f9de4bbfe69f9fc 100644 --- a/share/qtcreator/templates/shared/qtquickapplicationviewer/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.cpp +++ b/share/qtcreator/templates/shared/qtquickapplicationviewer/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.cpp @@ -34,7 +34,11 @@ class QtQuick2ApplicationViewerPrivate QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path) { -#if defined(Q_OS_MAC) +#if defined(Q_OS_IOS) + if (!QDir::isAbsolutePath(path)) + return QString::fromLatin1("%1/%2") + .arg(QCoreApplication::applicationDirPath(), path); +#elif defined(Q_OS_MAC) if (!QDir::isAbsolutePath(path)) return QStringLiteral("%1/../Resources/%2") .arg(QCoreApplication::applicationDirPath(), path); diff --git a/share/qtcreator/translations/qtcreator_ru.ts b/share/qtcreator/translations/qtcreator_ru.ts index 746587dd6e7008ad32e30c1ebe580633b49adbae..21312796dee44482f89a86e8febb7f61fa228a51 100644 --- a/share/qtcreator/translations/qtcreator_ru.ts +++ b/share/qtcreator/translations/qtcreator_ru.ts @@ -146,41 +146,6 @@ <translation><html><head/><body><p>Попытка выполнить утилиту «%1» Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² режиме %2. Утилита разработана Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² режиме %3.</p><p>Работа в режимах отладки и выпуÑка значительно отличаетÑÑ, поÑтому проблемы, найденные Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ из них, могут отÑутÑтвовать у другого.</p><p>Выполнить запуÑк утилиты в режиме %2?</p></body></html></translation> </message> </context> -<context> - <name>AnchorButtons</name> - <message> - <source>Set top anchor</source> - <translation>УÑтановить верхнюю привÑзку</translation> - </message> - <message> - <source>Setting anchors in states is not supported.</source> - <translation>УÑтановка привÑзок на ÑоÑтоÑÐ½Ð¸Ñ Ð½Ðµ поддерживаетÑÑ.</translation> - </message> - <message> - <source>Set bottom anchor</source> - <translation>УÑтановить нижнюю привÑзку</translation> - </message> - <message> - <source>Set left anchor</source> - <translation>УÑтановить левую привÑзку</translation> - </message> - <message> - <source>Set right anchor</source> - <translation>УÑтановить правую привÑзку</translation> - </message> - <message> - <source>Fill to parent</source> - <translation>Заполнить предка</translation> - </message> - <message> - <source>Set vertical anchor</source> - <translation>УÑтановить вертикальную привÑзку</translation> - </message> - <message> - <source>Set horizontal anchor</source> - <translation>УÑтановить горизонтальную привÑзку</translation> - </message> -</context> <context> <name>Android</name> <message> @@ -2955,30 +2920,10 @@ Local pulls are not applied to the master branch.</source> </context> <context> <name>BorderImageSpecifics</name> - <message> - <source>BorderImage</source> - <translation>Изображение рамки</translation> - </message> <message> <source>Source</source> <translation>ИÑточник</translation> </message> - <message> - <source>Left</source> - <translation>Слева</translation> - </message> - <message> - <source>Right</source> - <translation>Справа</translation> - </message> - <message> - <source>Top</source> - <translation>Сверху</translation> - </message> - <message> - <source>Bottom</source> - <translation>Снизу</translation> - </message> <message> <source>Border Image</source> <translation>Изображение рамки</translation> @@ -4309,63 +4254,6 @@ p, li { white-space: pre-wrap; } <translation>Стиль кода</translation> </message> </context> -<context> - <name>ColorGroupBox</name> - <message> - <source>Color editor</source> - <translation>Редактор цвета</translation> - </message> - <message> - <source>Hue</source> - <translation>Тон</translation> - </message> - <message> - <source>Saturation</source> - <translation>ÐаÑыщенноÑть</translation> - </message> - <message> - <source>Brightness</source> - <translation>ЯркоÑть</translation> - </message> - <message> - <source>Alpha</source> - <translation>Ðльфа</translation> - </message> -</context> -<context> - <name>ColorLineEdit</name> - <message> - <source>Translate this string</source> - <translation>ПеревеÑти Ñту Ñтроку</translation> - </message> -</context> -<context> - <name>ColorTypeButtons</name> - <message> - <source>Solid color</source> - <translation>Сплошной цвет</translation> - </message> - <message> - <source>Solid color (only editable in base state)</source> - <translation>Сплошной цвет (менÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в иÑходном ÑоÑтоÑнии)</translation> - </message> - <message> - <source>Gradient</source> - <translation>Градиент</translation> - </message> - <message> - <source>Gradient (only editable in base state)</source> - <translation>Градиент (менÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в иÑходном ÑоÑтоÑнии)</translation> - </message> - <message> - <source>Transparent</source> - <translation>ПрозрачноÑть</translation> - </message> - <message> - <source>Transparent (only editable in base state)</source> - <translation>ПрозрачноÑть (менÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в иÑходном ÑоÑтоÑнии)</translation> - </message> -</context> <context> <name>ColumnSpecifics</name> <message> @@ -12907,14 +12795,6 @@ Rebuilding the project might help.</source> </context> <context> <name>EditorManager</name> - <message> - <source>Next Open Document in History</source> - <translation>Следующий открытый документ в иÑтории</translation> - </message> - <message> - <source>Previous Open Document in History</source> - <translation>Предыдущий открытый документ в иÑтории</translation> - </message> <message> <source>Go Back</source> <translation>Перейти назад</translation> @@ -12954,47 +12834,6 @@ Rebuilding the project might help.</source> <translation>Редактор</translation> </message> </context> -<context> - <name>ExpressionEditor</name> - <message> - <source>Expression</source> - <translation>Выражение</translation> - </message> -</context> -<context> - <name>Extended</name> - <message> - <source>Effect</source> - <translation>Ðффект</translation> - </message> - <message> - <source>Blur Radius:</source> - <translation>Ð Ð°Ð´Ð¸ÑƒÑ Ñ€Ð°Ð·Ð¼Ñ‹Ñ‚Ð¸Ñ:</translation> - </message> - <message> - <source>Pixel Size:</source> - <translation>Размер пикÑелÑ:</translation> - </message> - <message> - <source>x Offset: </source> - <translation>Смещение по x: </translation> - </message> - <message> - <source>y Offset: </source> - <translation>Смещение по y: </translation> - </message> -</context> -<context> - <name>ExtendedFunctionButton</name> - <message> - <source>Reset</source> - <translation>СброÑить</translation> - </message> - <message> - <source>Set Expression</source> - <translation>ПриÑвоить выражение</translation> - </message> -</context> <context> <name>ExtensionSystem::Internal::PluginDetailsView</name> <message> @@ -13941,53 +13780,6 @@ Reason: %3</source> <translation>Свернуть вÑÑ‘</translation> </message> </context> -<context> - <name>FlickableGroupBox</name> - <message> - <source>Flickable</source> - <translation>Толкаемо</translation> - </message> - <message> - <source>Content size</source> - <translation>Размер Ñодержимого</translation> - </message> - <message> - <source>Flick direction</source> - <translation>Ðаправление толканиÑ</translation> - </message> - <message> - <source>Flickable direction</source> - <translation>Ðаправление толканиÑ</translation> - </message> - <message> - <source>Bounds behavior</source> - <translation>Поведение границ</translation> - </message> - <message> - <source>Max. velocity</source> - <translation>МакÑ. ÑкороÑть</translation> - </message> - <message> - <source>Maximum flick velocity</source> - <translation>МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑкороÑть толканиÑ</translation> - </message> - <message> - <source>Flick deceleration</source> - <translation>Замедление толканиÑ</translation> - </message> - <message> - <source>Behavior</source> - <translation>Поведение</translation> - </message> - <message> - <source>Interactive</source> - <translation>ИнтерактивноÑть</translation> - </message> - <message> - <source>Deceleration</source> - <translation>Замедление</translation> - </message> -</context> <context> <name>FlickableSection</name> <message> @@ -14044,10 +13836,6 @@ Reason: %3</source> <source>Flow</source> <translation>Перетекание</translation> </message> - <message> - <source>Layout direction</source> - <translation>Ðаправление компоновки</translation> - </message> <message> <source>Spacing</source> <translation>ОтÑтуп</translation> @@ -14057,25 +13845,6 @@ Reason: %3</source> <translation>Ðаправление компоновки</translation> </message> </context> -<context> - <name>FontGroupBox</name> - <message> - <source>Font</source> - <translation>Шрифт</translation> - </message> - <message> - <source>Size</source> - <translation>Размер</translation> - </message> - <message> - <source>Font style</source> - <translation>Ðачертание</translation> - </message> - <message> - <source>Style</source> - <translation>Стиль</translation> - </message> -</context> <context> <name>FontSection</name> <message> @@ -14337,33 +14106,6 @@ These files are preserved.</source> </translation> </message> </context> -<context> - <name>Geometry</name> - <message> - <source>Geometry</source> - <translation>ГеометриÑ</translation> - </message> - <message> - <source>Position</source> - <translation>Положение</translation> - </message> - <message> - <source>Size</source> - <translation>Размер</translation> - </message> - <message> - <source>Width</source> - <translation>Ширина</translation> - </message> - <message> - <source>Height</source> - <translation>Ð’Ñ‹Ñота</translation> - </message> - <message> - <source>Lock aspect ratio</source> - <translation>ЗафикÑировать Ñоотношение Ñторон</translation> - </message> -</context> <context> <name>GeometrySection</name> <message> @@ -16650,10 +16392,6 @@ You can choose between stashing the changes or discarding them.</source> <source>Flow</source> <translation>Перетекание</translation> </message> - <message> - <source>Layout direction</source> - <translation>Ðаправление компоновки</translation> - </message> <message> <source>Spacing</source> <translation>ОтÑтуп</translation> @@ -16677,14 +16415,6 @@ You can choose between stashing the changes or discarding them.</source> <source>Cache buffer</source> <translation>Буфер кÑша</translation> </message> - <message> - <source>Cell height</source> - <translation>Ð’Ñ‹Ñота Ñчейки</translation> - </message> - <message> - <source>Cell width</source> - <translation>Ширина Ñчейки</translation> - </message> <message> <source>Determines whether the grid wraps key navigation.</source> <translation>ОпределÑет, менÑет ли Ñетка навигацию клавишами.</translation> @@ -17612,6 +17342,10 @@ Ids must begin with a lowercase letter.</source> </context> <context> <name>Ios::Internal::IosDebugSupport</name> + <message> + <source>Could not find device specific debug symbols at %1. Debugging initialization will be slow until you open the Organizer window of Xcode with the device connected to have the symbols generated.</source> + <translation>Ðе удалоÑÑŒ найти отладочные Ñимволы Ð´Ð»Ñ ÑƒÑтройÑтва в %1. Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ займёт много времени. Ð”Ð»Ñ ÐµÑ‘ уÑÐºÐ¾Ñ€ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ подключить уÑтройÑтво и открыть окно органайзера Xcode Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ Ñимволов.</translation> + </message> <message> <source>Could not get debug server file descriptor.</source> <translation>Ðе удалоÑÑŒ получить деÑкриптор файла Ñервера отладки.</translation> @@ -17718,6 +17452,10 @@ Ids must begin with a lowercase letter.</source> <source>unknown</source> <translation>неизвеÑтно</translation> </message> + <message> + <source>OS version</source> + <translation>ВерÑÐ¸Ñ ÐžÐ¡</translation> + </message> <message> <source>An iOS device in user mode has been detected.</source> <translation>Обнаружено уÑтройÑтво iOS работающее в пользовательÑком режиме.</translation> @@ -17895,33 +17633,6 @@ QML component instance objects and properties directly.</source> QML.</translation> </message> </context> -<context> - <name>Layout</name> - <message> - <source>Layout</source> - <translation>Компоновка</translation> - </message> - <message> - <source>Anchors</source> - <translation>ПривÑзки</translation> - </message> - <message> - <source>Set anchors</source> - <translation>УÑтановить привÑзки</translation> - </message> - <message> - <source>Setting anchors in states is not supported.</source> - <translation>УÑтановка привÑзок на ÑоÑтоÑÐ½Ð¸Ñ Ð½Ðµ поддерживаетÑÑ.</translation> - </message> - <message> - <source>Target</source> - <translation>Цель</translation> - </message> - <message> - <source>Margin</source> - <translation>ОтÑтуп</translation> - </message> -</context> <context> <name>LayoutSection</name> <message> @@ -17941,13 +17652,6 @@ QML.</translation> <translation>ОтÑтуп</translation> </message> </context> -<context> - <name>LineEdit</name> - <message> - <source>Translate this string</source> - <translation>ПеревеÑти Ñту Ñтроку</translation> - </message> -</context> <context> <name>LinksBar</name> <message> @@ -18021,14 +17725,6 @@ QML.</translation> <source>Resize animation duration of the highlight delegate.</source> <translation>ПродолжительноÑть анимации Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° делегата подÑветки.</translation> </message> - <message> - <source>Resize speed</source> - <translation>СкороÑть Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°</translation> - </message> - <message> - <source>Resize animation speed of the highlight delegate.</source> - <translation>СкороÑть анимации Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° делегата подÑветки.</translation> - </message> <message> <source>Preferred begin</source> <translation>Предпочтительное начало</translation> @@ -19171,27 +18867,8 @@ Do you want to kill it?</source> <translation>Ð’Ñтроенный в Qt Creator</translation> </message> </context> -<context> - <name>Modifiers</name> - <message> - <source>Manipulation</source> - <translation>Управление</translation> - </message> - <message> - <source>Rotation</source> - <translation>Вращение</translation> - </message> - <message> - <source>z</source> - <translation></translation> - </message> -</context> <context> <name>MouseAreaSpecifics</name> - <message> - <source>MouseArea</source> - <translation></translation> - </message> <message> <source>Enabled</source> <translation>Включено</translation> @@ -25159,11 +24836,23 @@ Neither the path to the library nor the path to its includes is added to the .pr <extracomment>The name of the release build configuration created by default for a qmake project.</extracomment> <translation>ВыпуÑк</translation> </message> + <message> + <source>Release</source> + <comment>Shadow build directory suffix</comment> + <extracomment>Non-ASCII characters in directory suffix may cause build issues.</extracomment> + <translation>Release</translation> + </message> <message> <source>Debug</source> <extracomment>The name of the debug build configuration created by default for a qmake project.</extracomment> <translation>Отладка</translation> </message> + <message> + <source>Debug</source> + <comment>Shadow build directory suffix</comment> + <extracomment>Non-ASCII characters in directory suffix may cause build issues.</extracomment> + <translation>Debug</translation> + </message> <message> <source>Build</source> <translation>Сборка</translation> @@ -29160,12 +28849,12 @@ Do you want Qt Creator to generate it for your project?</source> %1</translation> </message> <message> - <source>Target is being added.</source> - <translation>Цель была добавлена.</translation> + <source>Target %1 is being added.</source> + <translation>ДобавлÑетÑÑ Ñ†ÐµÐ»ÑŒ %1.</translation> </message> <message> - <source>Target is already added.</source> - <translation>Цель уже добавлена.</translation> + <source>Target %1 is already added.</source> + <translation>Цель %1 уже добавлена.</translation> </message> <message> <source>Finished uninstalling target: @@ -30769,43 +30458,8 @@ cannot be found in the path.</source> <translation>Ð¤Ð¾ÐºÑƒÑ Ð¿Ñ€Ð¸ нажатии</translation> </message> </context> -<context> - <name>RectangleColorGroupBox</name> - <message> - <source>Colors</source> - <translation>Цвета</translation> - </message> - <message> - <source>Stops</source> - <translation>Опорные точки</translation> - </message> - <message> - <source>Gradient stops</source> - <translation>Опорные точки градиента</translation> - </message> - <message> - <source>Rectangle</source> - <translation>ПрÑмоугольник</translation> - </message> - <message> - <source>Border</source> - <translation>Рамка</translation> - </message> -</context> <context> <name>RectangleSpecifics</name> - <message> - <source>Rectangle</source> - <translation>ПрÑмоугольник</translation> - </message> - <message> - <source>Border width</source> - <translation>Ширина рамки</translation> - </message> - <message> - <source>Border has to be solid to change width</source> - <translation>Ð”Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ñ‹ необходимо, чтобы рамка была Ñплошной</translation> - </message> <message> <source>Radius</source> <translation>РадиуÑ</translation> @@ -31767,10 +31421,6 @@ Remote stderr was: '%1'</source> <source>Row</source> <translation>Строка</translation> </message> - <message> - <source>Layout direction</source> - <translation>Ðаправление компоновки</translation> - </message> <message> <source>Spacing</source> <translation>ОтÑтуп</translation> @@ -31900,47 +31550,12 @@ with a password, which you can enter below.</source> <translation>Ðе кодировать файл ключа</translation> </message> </context> -<context> - <name>StandardTextColorGroupBox</name> - <message> - <source>Color</source> - <translation>Цвет</translation> - </message> - <message> - <source>Text</source> - <translation>ТекÑÑ‚</translation> - </message> - <message> - <source>Style</source> - <translation>Стиль</translation> - </message> - <message> - <source>Selection</source> - <translation>Выделение</translation> - </message> - <message> - <source>Selected</source> - <translation>Выделено</translation> - </message> -</context> <context> <name>StandardTextGroupBox</name> - <message> - <source>Text</source> - <translation>ТекÑÑ‚</translation> - </message> - <message> - <source>Wrap mode</source> - <translation>Режим переноÑа</translation> - </message> <message> <source></source> <translation></translation> </message> - <message> - <source>Alignment</source> - <translation>Выравнивание</translation> - </message> </context> <context> <name>StandardTextSection</name> @@ -32288,25 +31903,6 @@ with a password, which you can enter below.</source> <translation>ФикÑÐ°Ñ†Ð¸Ñ Subversion</translation> </message> </context> -<context> - <name>Switches</name> - <message> - <source>Special properties</source> - <translation>Специальные ÑвойÑтва</translation> - </message> - <message> - <source>Layout</source> - <translation>Компоновка</translation> - </message> - <message> - <source>Advanced properties</source> - <translation>Дополнительные ÑвойÑтва</translation> - </message> - <message> - <source>Advanced</source> - <translation>Дополнительно</translation> - </message> -</context> <context> <name>TabViewToolAction</name> <message> @@ -32436,10 +32032,6 @@ with a password, which you can enter below.</source> </context> <context> <name>TextEditSpecifics</name> - <message> - <source>Text Edit</source> - <translation>ТекÑтовый редактор</translation> - </message> <message> <source>Format</source> <translation>Формат</translation> @@ -32463,10 +32055,6 @@ with a password, which you can enter below.</source> <source>Text Editor</source> <translation>ТекÑтовый редактор</translation> </message> - <message> - <source>Translate this string</source> - <translation>ПеревеÑти Ñту Ñтроку</translation> - </message> </context> <context> <name>TextEditor::BaseFileFind</name> @@ -34517,49 +34105,6 @@ Will not be applied to whitespace in comments and strings.</source> <translation>ОпределÑет, как текÑÑ‚ отображаетÑÑ Ð² поле.</translation> </message> </context> -<context> - <name>TextInputGroupBox</name> - <message> - <source>Text Input</source> - <translation>ТекÑтовый ввод</translation> - </message> - <message> - <source>Input mask</source> - <translation>МаÑка ввода</translation> - </message> - <message> - <source>Echo mode</source> - <translation>Режим Ñха</translation> - </message> - <message> - <source>Pass. char</source> - <translation>Символ паролÑ</translation> - </message> - <message> - <source>Character displayed when users enter passwords.</source> - <translation>Символ отображаемый при вводе пользователем паролей.</translation> - </message> - <message> - <source>Read only</source> - <translation>Только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ</translation> - </message> - <message> - <source>Cursor visible</source> - <translation>КурÑор виден</translation> - </message> - <message> - <source>Active focus on press</source> - <translation>Ðктивировать Ñ„Ð¾ÐºÑƒÑ Ð¿Ñ€Ð¸ нажатии</translation> - </message> - <message> - <source>Auto scroll</source> - <translation>Прокручивать автоматичеÑки</translation> - </message> - <message> - <source>Flags</source> - <translation>Флаги</translation> - </message> -</context> <context> <name>TextInputSection</name> <message> @@ -34763,72 +34308,6 @@ Will not be applied to whitespace in comments and strings.</source> <translation>&Закрыть</translation> </message> </context> -<context> - <name>Transformation</name> - <message> - <source>Transformation</source> - <translation>Преобразование</translation> - </message> - <message> - <source>Origin</source> - <translation>Ðачало</translation> - </message> - <message> - <source>Top</source> - <translation>Верхний</translation> - </message> - <message> - <source>Top left</source> - <translation>Верхний левый</translation> - </message> - <message> - <source>Top right</source> - <translation>Верхний правый</translation> - </message> - <message> - <source>Left</source> - <translation>Левый</translation> - </message> - <message> - <source>Center</source> - <translation>Центральный</translation> - </message> - <message> - <source>Right</source> - <translation>Правый</translation> - </message> - <message> - <source>Bottom left</source> - <translation>Ðижний левый</translation> - </message> - <message> - <source>Bottom right</source> - <translation>Ðижний правый</translation> - </message> - <message> - <source>Bottom</source> - <translation>Ðижний</translation> - </message> - <message> - <source>Scale</source> - <translation>МаÑштаб</translation> - </message> - <message> - <source>Rotation</source> - <translation>Вращение</translation> - </message> -</context> -<context> - <name>Type</name> - <message> - <source>Type</source> - <translation>Тип</translation> - </message> - <message> - <source>Id</source> - <translation></translation> - </message> -</context> <context> <name>Update</name> <message> @@ -37174,68 +36653,6 @@ should a repository require SSH-authentication (see documentation on SSH and the <translation>... поиÑк переопределений</translation> </message> </context> -<context> - <name>Visibility</name> - <message> - <source>Visibility</source> - <translation>ВидимоÑть</translation> - </message> - <message> - <source>Visible</source> - <translation>Виден</translation> - </message> - <message> - <source>isVisible</source> - <translation></translation> - </message> - <message> - <source>Smooth</source> - <translation>Сглаживание</translation> - </message> - <message> - <source>Clip</source> - <translation>Обрезка</translation> - </message> - <message> - <source>Opacity</source> - <translation>ÐепрозрачноÑть</translation> - </message> -</context> -<context> - <name>WebViewSpecifics</name> - <message> - <source>WebView</source> - <translation></translation> - </message> - <message> - <source>URL</source> - <translation>URL</translation> - </message> - <message> - <source>Pref Width</source> - <translation>Ð–ÐµÐ»Ð°ÐµÐ¼Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð°</translation> - </message> - <message> - <source>Preferred Width</source> - <translation>ÐžÐ¿Ñ‚Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð°</translation> - </message> - <message> - <source>Pref Height</source> - <translation>Ð–ÐµÐ»Ð°ÐµÐ¼Ð°Ñ Ð²Ñ‹Ñота</translation> - </message> - <message> - <source>Preferred Height</source> - <translation>Ð–ÐµÐ»Ð°ÐµÐ¼Ð°Ñ Ð²Ñ‹Ñота</translation> - </message> - <message> - <source>Scale</source> - <translation>МаÑштаб</translation> - </message> - <message> - <source>Contents Scale</source> - <translation>МаÑштаб Ñодержимого</translation> - </message> -</context> <context> <name>Welcome::Internal::CommunityWelcomePage</name> <message> @@ -37273,17 +36690,6 @@ should a repository require SSH-authentication (see documentation on SSH and the <translation>Файл «%1» не ÑвлÑетÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¼ QmlDesigner.</translation> </message> </context> -<context> - <name>WindowPane</name> - <message> - <source>Window</source> - <translation>Окно</translation> - </message> - <message> - <source>Title</source> - <translation>Заголовок</translation> - </message> -</context> <context> <name>WindowSpecifics</name> <message> diff --git a/src/app/Info.plist.in b/src/app/Info.plist.in index 290a4e7bc73dcff5b4d4314eac6fa1dae330bf72..6bbfcc3a0204d457491dd7bc2f9be273faf7ac2a 100644 --- a/src/app/Info.plist.in +++ b/src/app/Info.plist.in @@ -4,6 +4,8 @@ <dict> <key>NSPrincipalClass</key> <string>NSApplication</string> + <key>NSSupportsAutomaticGraphicsSwitching</key> + <true/> <key>CFBundleDocumentTypes</key> <array> <dict> diff --git a/src/plugins/android/androiddeploystep.cpp b/src/plugins/android/androiddeploystep.cpp index 9d8695cb5a8b69f68963885c760e8182d27cb274..7c3374795fdd97b5721b7cc4a05c5afe288da615 100644 --- a/src/plugins/android/androiddeploystep.cpp +++ b/src/plugins/android/androiddeploystep.cpp @@ -283,7 +283,7 @@ unsigned int AndroidDeployStep::remoteModificationTime(const QString &fullDestin process.start(AndroidConfigurations::instance().adbToolPath().toString(), arguments); if (!process.waitForFinished(5000) || process.exitCode() != 0) - return -1; + return 0; QByteArray output = process.readAll(); output.replace("\r\n", "\n"); QList<QByteArray> lines = output.split('\n'); diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 07b03abf3c9919f2953e0b51488b31e87b65088e..5d31975ed5ecca3218ddd3b33777bd8bdd2a9448 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -1077,9 +1077,8 @@ void MainWindow::readSettings() QColor(Utils::StyleHelper::DEFAULT_BASE_COLOR)).value<QColor>()); } - if (!restoreGeometry(m_settings->value(QLatin1String(windowGeometryKey)).toByteArray())) - resize(1008, 700); // size without window decoration - restoreState(m_settings->value(QLatin1String(windowStateKey)).toByteArray()); + // Delay restoreWindowState, since it is overridden by LayoutRequest event + QTimer::singleShot(0, this, SLOT(restoreWindowState())); bool modeSelectorVisible = m_settings->value(QLatin1String(modeSelectorVisibleKey), true).toBool(); ModeManager::setModeSelectorVisible(modeSelectorVisible); @@ -1262,3 +1261,12 @@ bool MainWindow::showWarningWithOptions(const QString &title, return showOptionsDialog(settingsCategory, settingsId); return false; } + +void MainWindow::restoreWindowState() +{ + m_settings->beginGroup(QLatin1String(settingsGroup)); + if (!restoreGeometry(m_settings->value(QLatin1String(windowGeometryKey)).toByteArray())) + resize(1008, 700); // size without window decoration + restoreState(m_settings->value(QLatin1String(windowStateKey)).toByteArray()); + m_settings->endGroup(); +} diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index 93cbf6a026840475c751b4959904db2a05616441..323ad67de10273872d67f82db6c9fb3f6bc71ef9 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -149,6 +149,7 @@ private slots: void setSidebarVisible(bool visible); void destroyVersionDialog(); void openDelayedFiles(); + void restoreWindowState(); private: void updateContextObject(const QList<IContext *> &context); diff --git a/src/plugins/cpptools/includeutils.cpp b/src/plugins/cpptools/includeutils.cpp index 3d697974e7fe5b471ff4d9b49803df69d708586b..17bbf5c31909b62ed5a67892a180d5533f53c4b2 100644 --- a/src/plugins/cpptools/includeutils.cpp +++ b/src/plugins/cpptools/includeutils.cpp @@ -423,7 +423,7 @@ int IncludeGroup::lineForNewInclude(const QString &newIncludeFileName, return -1; if (isSorted()) { - const Include newInclude(newIncludeFileName, QString(), -1, newIncludeType); + const Include newInclude(newIncludeFileName, QString(), 0, newIncludeType); const QList<Include>::const_iterator it = std::lower_bound(m_includes.begin(), m_includes.end(), newInclude, includeFileNamelessThen); if (it == m_includes.end()) diff --git a/src/plugins/debugger/debuggerprotocol.cpp b/src/plugins/debugger/debuggerprotocol.cpp index 83fa67abe69a5df0fc1e6671745b31987a5e91ce..1897527e49e6b3ffb387b145fdf0ef0e942e871f 100644 --- a/src/plugins/debugger/debuggerprotocol.cpp +++ b/src/plugins/debugger/debuggerprotocol.cpp @@ -56,7 +56,7 @@ uchar fromhex(uchar c) return 10 + c - 'a'; if (c >= 'A' && c <= 'Z') return 10 + c - 'A'; - return -1; + return UCHAR_MAX; } void skipCommas(const char *&from, const char *to) @@ -147,7 +147,7 @@ QByteArray GdbMi::parseCString(const char *&from, const char *to) uchar prod = 0; while (true) { uchar val = fromhex(c); - if (val == uchar(-1)) + if (val == UCHAR_MAX) break; prod = prod * 16 + val; if (++chars == 3 || src == end) diff --git a/src/plugins/debugger/debuggersourcepathmappingwidget.cpp b/src/plugins/debugger/debuggersourcepathmappingwidget.cpp index 86d3c673f960e8985156fe5e6af82d122b5dcdce..dd5ed64d51d2bc12089b2d61bf275da6376ec023 100644 --- a/src/plugins/debugger/debuggersourcepathmappingwidget.cpp +++ b/src/plugins/debugger/debuggersourcepathmappingwidget.cpp @@ -49,8 +49,7 @@ using namespace Utils; #if defined(Q_OS_WIN) static const char* qtBuildPaths[] = { "Q:/qt5_workdir/w/s", - "C:/iwmake/build_mingw_opensource", - "C:/ndk_buildrepos/qt-desktop/src"}; + "C:/work/build/qt5_workdir/w/s"}; #elif defined(Q_OS_MAC) static const char* qtBuildPaths[] = {}; #else diff --git a/src/plugins/debugger/debuggerstartparameters.h b/src/plugins/debugger/debuggerstartparameters.h index 52d1054b0a7e61c03c3be014ea0afbf21d4dd9ab..17dc02a7b62b66ca5d94a75c502e6fd4e29e29df 100644 --- a/src/plugins/debugger/debuggerstartparameters.h +++ b/src/plugins/debugger/debuggerstartparameters.h @@ -86,6 +86,7 @@ public: DebuggerEngineType secondSlaveEngineType; DebuggerEngineType cppEngineType; QString sysRoot; + QString deviceSymbolsRoot; QString debuggerCommand; ProjectExplorer::Abi toolChainAbi; ProjectExplorer::IDevice::ConstPtr device; diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 9b8d686f105632ccfe246fe26f54a057358d53d1..624200d840e7edaff24700f0167066dff1aee371 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -208,7 +208,7 @@ void LldbEngine::setupInferior() QTC_CHECK(sp.attachPID <= 0 || (sp.startMode == AttachCrashedExternal || sp.startMode == AttachExternal)); cmd.arg("attachPid", sp.attachPID); - cmd.arg("sysRoot", sp.sysRoot); + cmd.arg("sysRoot", sp.deviceSymbolsRoot.isEmpty() ? sp.sysRoot : sp.deviceSymbolsRoot); cmd.arg("remoteChannel", ((sp.startMode == AttachToRemoteProcess || sp.startMode == AttachToRemoteServer) ? sp.remoteChannel : QString())); diff --git a/src/plugins/debugger/qml/qmllivetextpreview.cpp b/src/plugins/debugger/qml/qmllivetextpreview.cpp index ec82d9c280b90bfe5265aadeedad90e19ee1be3e..ed9ee1124595af988dde73a420df01519ac9d4c5 100644 --- a/src/plugins/debugger/qml/qmllivetextpreview.cpp +++ b/src/plugins/debugger/qml/qmllivetextpreview.cpp @@ -642,7 +642,7 @@ void QmlLiveTextPreview::editorContentsChanged() void QmlLiveTextPreview::onAutomaticUpdateFailed() { - showSyncWarning(AutomaticUpdateFailed, QString(), -1, -1); + showSyncWarning(AutomaticUpdateFailed, QString(), UINT_MAX, UINT_MAX); } QList<int> QmlLiveTextPreview::objectReferencesForOffset(quint32 offset) diff --git a/src/plugins/debugger/registerhandler.cpp b/src/plugins/debugger/registerhandler.cpp index 71904f1ac474264d6600e8459da22a378693f3bb..4b068a9cade041fc1ce900e0c8ec424deb66d593 100644 --- a/src/plugins/debugger/registerhandler.cpp +++ b/src/plugins/debugger/registerhandler.cpp @@ -293,7 +293,7 @@ static int bitWidthFromType(int type, int subType) return 0; } -static const int TopLevelId = -1; +static const uint TopLevelId = UINT_MAX; static bool isTopLevelItem(const QModelIndex &index) { return quintptr(index.internalId()) == quintptr(TopLevelId); diff --git a/src/plugins/ios/iosdebugsupport.cpp b/src/plugins/ios/iosdebugsupport.cpp index 4b82e207e57a4cf04352161df5611108466637bf..174ea9bd9cc5077c71a7bdd1b4bfd2257710f8dd 100644 --- a/src/plugins/ios/iosdebugsupport.cpp +++ b/src/plugins/ios/iosdebugsupport.cpp @@ -31,6 +31,7 @@ #include "iosrunner.h" #include "iosmanager.h" +#include "iosdevice.h" #include <debugger/debuggerengine.h> #include <debugger/debuggerplugin.h> @@ -40,10 +41,12 @@ #include <debugger/debuggerrunconfigurationaspect.h> #include <projectexplorer/toolchain.h> #include <projectexplorer/target.h> +#include <projectexplorer/taskhub.h> #include <qmakeprojectmanager/qmakebuildconfiguration.h> #include <qmakeprojectmanager/qmakenodes.h> #include <qmakeprojectmanager/qmakeproject.h> #include <qtsupport/qtkitinformation.h> +#include <utils/fileutils.h> #include <QDir> #include <QTcpServer> @@ -73,11 +76,38 @@ RunControl *IosDebugSupport::createDebugRunControl(IosRunConfiguration *runConfi if (device.isNull()) return 0; QmakeProject *project = static_cast<QmakeProject *>(target->project()); + Kit *kit = target->kit(); DebuggerStartParameters params; if (device->type() == Core::Id(Ios::Constants::IOS_DEVICE_TYPE)) { params.startMode = AttachToRemoteProcess; params.platform = QLatin1String("remote-ios"); + IosDevice::ConstPtr iosDevice = device.dynamicCast<const IosDevice>(); + if (iosDevice.isNull()) + return 0; + QString osVersion = iosDevice->osVersion(); + Utils::FileName deviceSdk1 = Utils::FileName::fromString(QDir::homePath() + + QLatin1String("/Library/Developer/Xcode/iOS DeviceSupport/") + + osVersion + QLatin1String("/Symbols")); + QString deviceSdk; + if (deviceSdk1.toFileInfo().isDir()) { + deviceSdk = deviceSdk1.toString(); + } else { + Utils::FileName deviceSdk2 = IosConfigurations::developerPath() + .appendPath(QLatin1String("Platforms/iPhoneOS.platform/DeviceSupport/")) + .appendPath(osVersion).appendPath(QLatin1String("Symbols")); + if (deviceSdk2.toFileInfo().isDir()) { + deviceSdk = deviceSdk2.toString(); + } else { + TaskHub::addTask(Task::Warning, tr( + "Could not find device specific debug symbols at %1. " + "Debugging initialization will be slow until you open the Organizer window of " + "Xcode with the device connected to have the symbols generated.") + .arg(deviceSdk1.toUserOutput()), + ProjectExplorer::Constants::TASK_CATEGORY_DEPLOYMENT); + } + } + params.deviceSymbolsRoot = deviceSdk; } else { params.startMode = AttachExternal; params.platform = QLatin1String("ios-simulator"); @@ -91,7 +121,6 @@ RunControl *IosDebugSupport::createDebugRunControl(IosRunConfiguration *runConfi = runConfig->extraAspect<Debugger::DebuggerRunConfigurationAspect>(); if (aspect->useCppDebugger()) { params.languages |= CppLanguage; - Kit *kit = target->kit(); params.sysRoot = SysRootKitInformation::sysRoot(kit).toString(); params.debuggerCommand = DebuggerKitInformation::debuggerCommand(kit).toString(); if (ToolChain *tc = ToolChainKitInformation::toolChain(kit)) diff --git a/src/plugins/ios/iosdevice.cpp b/src/plugins/ios/iosdevice.cpp index a9753cadb114f79de2a12e3f87d56ea088e95021..ba4631be8234d7060b006e7b3ccfae6f3b433c52 100644 --- a/src/plugins/ios/iosdevice.cpp +++ b/src/plugins/ios/iosdevice.cpp @@ -190,21 +190,11 @@ QString IosDevice::name() return QCoreApplication::translate("Ios::Internal::IosDevice", "iOS Device"); } -/* -// add back? - -QString IosDevice::cpuArchitecure() const +QString IosDevice::osVersion() const { - return m_extraInfo.value(QLatin1String("deviceInfo")).toMap() - .value(QLatin1String("CPUArchitecture")).toString(); + return m_extraInfo.value(QLatin1String("osVersion")); } -QString IosDevice::productType() const -{ - return m_extraInfo.value(QLatin1String("deviceInfo")).toMap() - .value(QLatin1String("ProductType")).toString(); -}*/ - // IosDeviceManager @@ -222,6 +212,7 @@ IosDeviceManager::TranslationMap IosDeviceManager::translationMap() tMap[QLatin1String("NO")] = tr("no"); tMap[QLatin1String("YES")] = tr("yes"); tMap[QLatin1String("*unknown*")] = tr("unknown"); + tMap[QLatin1String("osVersion")] = tr("OS version"); translationMap = &tMap; return tMap; } diff --git a/src/plugins/ios/iosdevice.h b/src/plugins/ios/iosdevice.h index f480f3a62f9629e0c5b3f9b37b87d31973ee03aa..a0f9456ec7e48f1035f1fd111f2f98201004192f 100644 --- a/src/plugins/ios/iosdevice.h +++ b/src/plugins/ios/iosdevice.h @@ -65,9 +65,7 @@ public: QVariantMap toMap() const; QString uniqueDeviceID() const; IosDevice(const QString &uid); - // add back? currently unused... - //QString cpuArchitecure() const; - //QString productType() const; + QString osVersion() const; static QString name(); diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp index fde3f3ef14fe855b4073280906703087a894cb8d..75cf14f7ef7a3e7d6111164143f2673b0ed69e61 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp @@ -40,6 +40,7 @@ PropertyEditorContextObject::PropertyEditorContextObject(QObject *parent) : m_backendValues(0), m_majorVersion(-1), m_minorVersion(-1), + m_majorQtQuickVersion(-1), m_qmlComponent(0), m_qmlContext(0) { @@ -52,6 +53,11 @@ int PropertyEditorContextObject::majorVersion() const } +int PropertyEditorContextObject::majorQtQuickVersion() const +{ + return m_majorQtQuickVersion; +} + void PropertyEditorContextObject::setMajorVersion(int majorVersion) { if (m_majorVersion == majorVersion) @@ -62,6 +68,17 @@ void PropertyEditorContextObject::setMajorVersion(int majorVersion) emit majorVersionChanged(); } +void PropertyEditorContextObject::setMajorQtQuickVersion(int majorVersion) +{ + if (m_majorQtQuickVersion == majorVersion) + return; + + m_majorQtQuickVersion = majorVersion; + + emit majorQtQuickVersionChanged(); + +} + int PropertyEditorContextObject::minorVersion() const { return m_minorVersion; diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h index 0c5e4a5690a01bf6923e7e91b375cfd7f2afdcae..22ec4d44f9ddcd5a96e8374784c3da0f7a252cd7 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h @@ -53,6 +53,7 @@ class PropertyEditorContextObject : public QObject Q_PROPERTY(int majorVersion READ majorVersion WRITE setMajorVersion NOTIFY majorVersionChanged) Q_PROPERTY(int minorVersion READ minorVersion WRITE setMinorVersion NOTIFY minorVersionChanged) + Q_PROPERTY(int majorQtQuickVersion READ majorQtQuickVersion WRITE setMajorQtQuickVersion NOTIFY majorQtQuickVersionChanged) Q_PROPERTY(QQmlPropertyMap* backendValues READ backendValues WRITE setBackendValues NOTIFY backendValuesChanged) @@ -74,7 +75,9 @@ public: Q_INVOKABLE QString convertColorToString(const QColor &color) { return color.name(); } int majorVersion() const; + int majorQtQuickVersion() const; void setMajorVersion(int majorVersion); + void setMajorQtQuickVersion(int majorVersion); int minorVersion() const; void setMinorVersion(int minorVersion); @@ -91,6 +94,7 @@ signals: void backendValuesChanged(); void majorVersionChanged(); void minorVersionChanged(); + void majorQtQuickVersionChanged(); void specificQmlComponentChanged(); public slots: @@ -124,6 +128,7 @@ private: int m_majorVersion; int m_minorVersion; + int m_majorQtQuickVersion; QQmlComponent *m_qmlComponent; QQmlContext *m_qmlContext; }; diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp index 25cdc1cd696232a4b9c69a4c8c126dac6c9da9d5..12f74c52185e6d814283186a4d177feba7a5bb60 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp @@ -290,8 +290,10 @@ void PropertyEditorQmlBackend::setup(const QmlObjectNode &qmlObjectNode, const Q } else { contextObject()->setMajorVersion(-1); contextObject()->setMinorVersion(-1); + contextObject()->setMajorQtQuickVersion(-1); } + contextObject()->setMajorQtQuickVersion(qmlObjectNode.view()->majorQtQuickVersion()); } else { qWarning() << "PropertyEditor: invalid node for setup"; } diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp index f209cf8b237c95ddc6d05aa740dca44e052c5f88..126be7ad71a702d63d17542ff2ef985fcc2e7454 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp @@ -240,6 +240,9 @@ void PropertyEditorView::changeExpression(const QString &propertyName) if (m_locked) return; + if (!m_selectedNode.isValid()) + return; + RewriterTransaction transaction = beginRewriterTransaction(QByteArrayLiteral("PropertyEditorView::changeExpression")); try { diff --git a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h index 4f4a20e38f6083657ab9369f26f15134890e7208..0a6b63d9c16144d51500a8ae42f550893c8e2970 100644 --- a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h +++ b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h @@ -86,6 +86,8 @@ public: QList<NodeMetaInfo> superClasses() const; NodeMetaInfo directSuperClass() const; + QList<TypeName> superClassNames() const; + bool defaultPropertyIsComponent() const; TypeName typeName() const; diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index b8b61ceb2bdb90a808ebfb4bd9dfd87ecba0497b..c18576e3994a16e06bb371408189aa45e527b5b9 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -1031,12 +1031,27 @@ void NodeMetaInfoPrivate::setupPrototypes() description.majorVersion = qmlValue->componentVersion().majorVersion(); LanguageUtils::FakeMetaObject::Export qtquickExport = qmlValue->metaObject()->exportInPackage("QtQuick"); LanguageUtils::FakeMetaObject::Export cppExport = qmlValue->metaObject()->exportInPackage("<cpp>"); - if (qtquickExport.isValid()) + + if (qtquickExport.isValid()) { description.className = qtquickExport.package.toUtf8() + '.' + qtquickExport.type.toUtf8(); - else if (qmlValue->moduleName().isEmpty() && cppExport.isValid()) - description.className = cppExport.package.toUtf8() + '.' + cppExport.type.toUtf8(); - else if (!qmlValue->moduleName().isEmpty()) - description.className = qmlValue->moduleName().toUtf8() + '.' + description.className; + } else { + bool found = false; + if (cppExport.isValid()) { + foreach (const LanguageUtils::FakeMetaObject::Export &exportValue, qmlValue->metaObject()->exports()) { + if (exportValue.package.toUtf8() != "<cpp>") { + found = true; + description.className = exportValue.package.toUtf8() + '.' + exportValue.type.toUtf8(); + } + } + } + if (!found) { + if (qmlValue->moduleName().isEmpty() && cppExport.isValid()) { + description.className = cppExport.package.toUtf8() + '.' + cppExport.type.toUtf8(); + } else if (!qmlValue->moduleName().isEmpty()) { + description.className = qmlValue->moduleName().toUtf8() + '.' + description.className; + } + } + } m_prototypes.append(description); } else { if (context()->lookupType(document(), QStringList() << ov->className())) { @@ -1233,6 +1248,16 @@ NodeMetaInfo NodeMetaInfo::directSuperClass() const return NodeMetaInfo(); } +QList<TypeName> NodeMetaInfo::superClassNames() const +{ + QList<TypeName> list; + + foreach (const Internal::TypeDescription &type, m_privateData->prototypes()) { + list.append(type.className); + } + return list; +} + bool NodeMetaInfo::defaultPropertyIsComponent() const { if (hasDefaultProperty()) diff --git a/src/plugins/qmlprofiler/qmlprofilertraceview.cpp b/src/plugins/qmlprofiler/qmlprofilertraceview.cpp index 164e91c6d633b4feefbcd44dc83df48ba83ac734..df9adf3238c2e17998f7b9c2819f6f0a3d865ed0 100644 --- a/src/plugins/qmlprofiler/qmlprofilertraceview.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertraceview.cpp @@ -471,12 +471,14 @@ void QmlProfilerTraceView::profilerDataModelStateChanged() switch (d->m_modelManager->state()) { case QmlProfilerDataState::Empty: break; case QmlProfilerDataState::ClearingData: + d->m_mainView->hide(); emit enableToolbar(false); break; case QmlProfilerDataState::AcquiringData: break; case QmlProfilerDataState::ProcessingData: break; case QmlProfilerDataState::Done: emit enableToolbar(true); + d->m_mainView->show(); break; default: break; diff --git a/src/plugins/qnx/blackberryinstallwizardpages.cpp b/src/plugins/qnx/blackberryinstallwizardpages.cpp index 8ca8986820e8a0f3eb512ae19ae1e2493c94ee41..207b8b29d71a1360a2053f31b1fee30c032df4b0 100644 --- a/src/plugins/qnx/blackberryinstallwizardpages.cpp +++ b/src/plugins/qnx/blackberryinstallwizardpages.cpp @@ -487,11 +487,11 @@ void BlackBerryInstallWizardFinalPage::initializePage() return; } - label->setText(tr("Target is being added.").arg(m_data.ndkPath)); + label->setText(tr("Target %1 is being added.").arg(m_data.ndkPath)); emit done(); return; } else { - label->setText(tr("Target is already added.").arg(m_data.ndkPath)); + label->setText(tr("Target %1 is already added.").arg(m_data.ndkPath)); return; } } diff --git a/src/plugins/qtsupport/exampleslistmodel.cpp b/src/plugins/qtsupport/exampleslistmodel.cpp index 1f0f8c956d117eb827ad4da9a98a982629196b69..e1f4e8a878475c1d9f96b300b4a7a169570676bc 100644 --- a/src/plugins/qtsupport/exampleslistmodel.cpp +++ b/src/plugins/qtsupport/exampleslistmodel.cpp @@ -174,7 +174,7 @@ public slots: ExamplesListModel::ExamplesListModel(QObject *parent) : QAbstractListModel(parent), - m_uniqueQtId(noQtVersionsId) + m_uniqueQtId(uniqueQtVersionIdSetting()) { QHash<int, QByteArray> roleNames; roleNames[Name] = "name"; diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp index a586f42393579e5101021ddc4a7bc39a19b6db29..d52b042d1b935d4fea41dca8de818fd2e03bcfe5 100644 --- a/src/plugins/updateinfo/updateinfoplugin.cpp +++ b/src/plugins/updateinfo/updateinfoplugin.cpp @@ -246,12 +246,13 @@ QDomDocument UpdateInfoPlugin::update() QDomDocument updates; if (updater.exitStatus() != QProcess::CrashExit) { d->m_timer.stop(); - d->m_lastDayChecked = QDate::currentDate(); updates.setContent(updater.readAllStandardOutput()); saveSettings(); // force writing out the last update date } else { qWarning() << "Updater application crashed."; } + + d->m_lastDayChecked = QDate::currentDate(); return updates; } diff --git a/src/tools/iostool/iosdevicemanager.cpp b/src/tools/iostool/iosdevicemanager.cpp index 3bc83bb02740e6533459f234a8f43bd2b4a2500c..ce61347c610b29ba7b7d31cefca8936029d1f6a3 100644 --- a/src/tools/iostool/iosdevicemanager.cpp +++ b/src/tools/iostool/iosdevicemanager.cpp @@ -1227,6 +1227,7 @@ void DevInfoSession::deviceCallbackReturned() QString deviceNameKey = QLatin1String("deviceName"); QString developerStatusKey = QLatin1String("developerStatus"); QString deviceConnectedKey = QLatin1String("deviceConnected"); + QString osVersionKey = QLatin1String("osVersion"); bool failure = !device; if (!failure) { failure = !connectDevice(); @@ -1256,6 +1257,32 @@ void DevInfoSession::deviceCallbackReturned() if (!res.contains(developerStatusKey)) res[developerStatusKey] = QLatin1String("*off*"); } + if (!failure) { + CFPropertyListRef cfProductVersion = lib()->deviceCopyValue(device, + 0, + CFSTR("ProductVersion")); + //CFShow(cfProductVersion); + CFPropertyListRef cfBuildVersion = lib()->deviceCopyValue(device, + 0, + CFSTR("BuildVersion")); + //CFShow(cfBuildVersion); + QString versionString; + if (cfProductVersion) { + if (CFGetTypeID(cfProductVersion) == CFStringGetTypeID()) + versionString = CFStringRef2QString(reinterpret_cast<CFStringRef>(cfProductVersion)); + CFRelease(cfProductVersion); + } + if (cfBuildVersion) { + if (!versionString.isEmpty() && CFGetTypeID(cfBuildVersion) == CFStringGetTypeID()) + versionString += QString::fromLatin1(" (%1)").arg( + CFStringRef2QString(reinterpret_cast<CFStringRef>(cfBuildVersion))); + CFRelease(cfBuildVersion); + } + if (!versionString.isEmpty()) + res[osVersionKey] = versionString; + else + res[osVersionKey] = QLatin1String("*unknown*"); + } disconnectDevice(); } if (!res.contains(deviceConnectedKey)) diff --git a/src/tools/qmlpuppet/qmlpuppet.pro b/src/tools/qmlpuppet/qmlpuppet.pro index baa1e72923901d9f0db0eaadb24818564e0e8de0..ca6ad0a8dcce571c27306173f477bd07302accbf 100644 --- a/src/tools/qmlpuppet/qmlpuppet.pro +++ b/src/tools/qmlpuppet/qmlpuppet.pro @@ -4,7 +4,7 @@ include(../../../qtcreator.pri) include(../../private_headers.pri) greaterThan(QT_MAJOR_VERSION, 4) { - qtHaveModule(declarative) { + qtHaveModule(declarative-private) { QT += declarative-private core-private SUBDIRS += qmlpuppet } diff --git a/tests/manual/debugger/simple/simple_test_app.cpp b/tests/manual/debugger/simple/simple_test_app.cpp index 2d98cbef23e631a4e4c630db1470ec2adf898adb..a685f4b76c1d02f65f261c0e34abe100f2e904ac 100644 --- a/tests/manual/debugger/simple/simple_test_app.cpp +++ b/tests/manual/debugger/simple/simple_test_app.cpp @@ -3311,6 +3311,7 @@ namespace lambda { std::string x; auto f = [&] () -> const std::string & { int z = x.size(); + Q_UNUSED(z); return x; }; auto c = f(); diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py index 634269cc6d190bdac04b20db2710d90764766e24..b814680f8dda0c6317fac54a299a615c8dba45df 100644 --- a/tests/system/shared/project.py +++ b/tests/system/shared/project.py @@ -456,8 +456,8 @@ def __closeSubprocessByPushingStop__(sType): stopButton = verifyEnabled(":Qt Creator.Stop_QToolButton") if stopButton.enabled: clickButton(stopButton) - test.verify(playButton.enabled) - test.compare(stopButton.enabled, False) + test.verify(waitFor("playButton.enabled", 5000), "Play button should be enabled") + test.compare(stopButton.enabled, False, "Stop button should be disabled") if sType == SubprocessType.QT_QUICK_UI and platform.system() == "Darwin": waitFor("stopButton.enabled==False") snooze(2) diff --git a/tests/system/shared/qtcreator.py b/tests/system/shared/qtcreator.py index 76e947c0261f8ce8b56d1b7ba435a95143115d2d..290d622ce7a5654f60f13d1adbe4002eda5c46b1 100644 --- a/tests/system/shared/qtcreator.py +++ b/tests/system/shared/qtcreator.py @@ -60,15 +60,19 @@ source("../../shared/workarounds.py") # function must be called BEFORE any call except the first (which is done always automatically) def overrideStartApplication(): global startApplication, __origStartApplication__ - if (platform.system() != "Darwin"): + if (platform.system() == "Linux"): return if (__origStartApplication__ == None): __origStartApplication__ = startApplication def startApplication(*args): args = list(args) if str(args[0]).startswith('qtcreator'): - args[0] = args[0].replace('qtcreator', '"Qt Creator"', 1) - test.log("Using workaround for MacOS (different AUT name)") + if platform.system() == 'Darwin': + args[0] = args[0].replace('qtcreator', '"Qt Creator"', 1) + test.log("Using workaround for MacOS (different AUT name)") + elif not isQt4Build: + args[0] = args[0] + ' -platform windows:dialogs=none' + test.log("Using workaround for Windows (failing to hook into native FileDialog)") return __origStartApplication__(*args) def startedWithoutPluginError(): diff --git a/tests/system/suite_tools/tst_git_clone/test.py b/tests/system/suite_tools/tst_git_clone/test.py index 656b29863ee149cc163c7237932421be2678bffa..a7f5a5dde8b646386e5065dbe99d79cd771526d6 100644 --- a/tests/system/suite_tools/tst_git_clone/test.py +++ b/tests/system/suite_tools/tst_git_clone/test.py @@ -53,9 +53,11 @@ def verifyCloneLog(targetDir, canceled): "Searching for clone directory in clone log") result = "The process terminated with exit code 0." summary = "Succeeded." + # cloneLog.plainText holds escape as character which makes QDom fail while printing the result + # removing these for letting Jenkins continue execute the test suite test.xverify((result in str(cloneLog.plainText)), "Searching for result (%s) in clone log:\n%s" - % (result, str(cloneLog.plainText))) + % (result, str(cloneLog.plainText).replace(unicode("\x1b"), ""))) test.compare(waitForObject(":Git Repository Clone.Result._QLabel").text, summary) def verifyFiles(targetDir):