Merge remote-tracking branch 'origin/3.0'

Conflicts:
	src/plugins/qmldesigner/components/formeditor/anchorindicatorgraphicsitem.cpp
	src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp
	src/plugins/qmlprofiler/qmlprofilertraceview.cpp

Change-Id: I778a0c2d0f1b4f799caaa2c2cc5daf94ec7ca352
This commit is contained in:
Eike Ziller
2014-01-15 14:04:41 +01:00
39 changed files with 303 additions and 674 deletions

27
dist/changes-3.0.0 vendored
View File

@@ -18,6 +18,10 @@ Editing
are detected are detected
* Fixed issues with splitting when editor is not splittable (QTCREATORBUG-6827) * Fixed issues with splitting when editor is not splittable (QTCREATORBUG-6827)
* Added action for closing all editors except the visible ones (QTCREATORBUG-9893) * 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 Managing and Building Projects
* Fixed exit code that is shown for applications that are run in terminal * 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 when using qtchooser (QTCREATORBUG-9841)
* Fixed issues with autosave files triggering reparses (QTCREATORBUG-9957) * Fixed issues with autosave files triggering reparses (QTCREATORBUG-9957)
* Fixed that run configurations were created for targets that are not built (QTCREATORBUG-9549) * 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 CMake Projects
* Added parser for CMake build errors * Added parser for CMake build errors
@@ -42,16 +47,18 @@ CMake Projects
* Added support for a CMakeDeployment.txt file that defines deployment rules * Added support for a CMakeDeployment.txt file that defines deployment rules
Qbs Projects Qbs Projects
* Added code completion support for code generated from .ui files
Generic Projects Generic Projects
Debugging Debugging
* Added Debuggers tab to Build & Run options
* Pretty printers (Python based, GDB and LLDB)
* Added QIPv6Address and support for IPv6 in QHostAddress
* GDB * GDB
* Fixed various pretty printers
* CDB * CDB
* Fixed interrupting 32 bit processes from 64 bit Qt Creator builds * Fixed interrupting 32 bit processes from 64 bit Qt Creator builds
* LLDB * LLDB
* Fixed various pretty printers
* QML * QML
Analyzer Analyzer
@@ -78,6 +85,15 @@ C++ Support
* Added list of potential destinations when doing "Follow Symbol" on * Added list of potential destinations when doing "Follow Symbol" on
virtual function calls (QTCREATORBUG-9611) virtual function calls (QTCREATORBUG-9611)
* Fixed "Follow Symbol" for operators (QTCREATORBUG-7485) * 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 Python Support
@@ -85,11 +101,12 @@ GLSL Support
* Fixed crash (QTCREATORBUG-10166) * Fixed crash (QTCREATORBUG-10166)
Diff Viewer 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) * Added syntax highlighting (QTCREATORBUG-9580)
Version Control Systems Version Control Systems
* Fixed crash when reverting changes while commit editor is open (QTCREATORBUG-10190) * 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 * Added VCS topic to window title
* Fixed that user was asked about adding file to VCS even if it already * Fixed that user was asked about adding file to VCS even if it already
was in VCS (QTCREATORBUG-2455) was in VCS (QTCREATORBUG-2455)
@@ -113,6 +130,8 @@ Version Control Systems
* ClearCase * ClearCase
FakeVim FakeVim
* Added <C-W><C-V> shortcut for splitting editors
* Fixed scrolling when using single character or single line movement
Platform Specific Platform Specific
@@ -122,6 +141,8 @@ Qt Support
QNX QNX
* Added check for existence of debug token and show error message in that case (QTCREATORBUG-9103) * 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 Android
* Added error messages for incompatible devices to compile output (QTCREATORBUG-9690) * Added error messages for incompatible devices to compile output (QTCREATORBUG-9690)

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -833,6 +833,29 @@
Use unique variable names within a snippet, because all instances of a Use unique variable names within a snippet, because all instances of a
variable are renamed when you specify a value for it. 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 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 or add. However, when you use the snippets, the code editor marks any
errors by underlining them in red. errors by underlining them in red.

View File

@@ -63,7 +63,7 @@ while (1) {
last if ($linecount > 50); last if ($linecount > 50);
$hasCopyright = 1 if $_ =~ /Copyright/i; $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/; $hasContact = 1 if $_ =~ /Contact: http:\/\/www.qt-project.org\/legal/;
$hasCommercial = 1 if $_ =~ /Commercial (License )?Usage/; $hasCommercial = 1 if $_ =~ /Commercial (License )?Usage/;

View File

@@ -185,6 +185,13 @@ def impl_SBValue__getitem__(value, index):
return value.GetChildAtIndex(index) return value.GetChildAtIndex(index)
return value.GetChildMemberWithName(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.__add__ = impl_SBValue__add__
lldb.SBValue.__sub__ = impl_SBValue__sub__ lldb.SBValue.__sub__ = impl_SBValue__sub__
lldb.SBValue.__le__ = impl_SBValue__le__ 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.code = lambda self: self.GetTypeClass()
lldb.SBValue.cast = lambda self, typeObj: self.Cast(typeObj) 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.SBValue.address = property(lambda self: self.GetAddress())
lldb.SBType.pointer = lambda self: self.GetPointerType() lldb.SBType.pointer = lambda self: self.GetPointerType()
@@ -625,10 +632,11 @@ class Dumper(DumperBase):
self.remoteChannel_ = args.get('remoteChannel', '') self.remoteChannel_ = args.get('remoteChannel', '')
self.platform_ = args.get('platform', '') self.platform_ = args.get('platform', '')
if self.sysRoot_:
self.debugger.SetCurrentPlatformSDKRoot(self.sysRoot_)
if self.platform_: if self.platform_:
self.debugger.SetCurrentPlatform(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.target = self.debugger.CreateTarget(self.executable_, None, None, True, error)
self.importDumpers() self.importDumpers()

View File

@@ -990,10 +990,12 @@ def qdumpHelper__Qt5_QMap(d, value, forceLong):
innerType = nodeType innerType = nodeType
def helper(d, node, nodeType, isCompact, forceLong, i): def helper(d, node, nodeType, isCompact, forceLong, i, n):
left = node["left"] left = node["left"]
if not d.isNull(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) nodex = node.cast(nodeType)
with SubItem(d, i): with SubItem(d, i):
@@ -1008,16 +1010,18 @@ def qdumpHelper__Qt5_QMap(d, value, forceLong):
qdump__QMapNode(d, nodex) qdump__QMapNode(d, nodex)
i += 1 i += 1
if i >= n:
return i
right = node["right"] right = node["right"]
if not d.isNull(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 return i
with Children(d, n, childType=innerType): with Children(d, n, childType=innerType):
node = d_ptr["header"] node = d_ptr["header"]
helper(d, node, nodeType, isCompact, forceLong, 0) helper(d, node, nodeType, isCompact, forceLong, 0, n)

View File

@@ -92,5 +92,48 @@ Section {
ExpandingSpacer { 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 {
}
}
} }
} }

View File

@@ -34,7 +34,11 @@ class QtQuick2ApplicationViewerPrivate
QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path) 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)) if (!QDir::isAbsolutePath(path))
return QStringLiteral("%1/../Resources/%2") return QStringLiteral("%1/../Resources/%2")
.arg(QCoreApplication::applicationDirPath(), path); .arg(QCoreApplication::applicationDirPath(), path);

View File

@@ -146,41 +146,6 @@
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Попытка выполнить утилиту «%1» для приложения в режиме %2. Утилита разработана для использования в режиме %3.&lt;/p&gt;&lt;p&gt;Работа в режимах отладки и выпуска значительно отличается, поэтому проблемы, найденные для одного из них, могут отсутствовать у другого.&lt;/p&gt;&lt;p&gt;Выполнить запуск утилиты в режиме %2?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Попытка выполнить утилиту «%1» для приложения в режиме %2. Утилита разработана для использования в режиме %3.&lt;/p&gt;&lt;p&gt;Работа в режимах отладки и выпуска значительно отличается, поэтому проблемы, найденные для одного из них, могут отсутствовать у другого.&lt;/p&gt;&lt;p&gt;Выполнить запуск утилиты в режиме %2?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
</context> </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> <context>
<name>Android</name> <name>Android</name>
<message> <message>
@@ -2955,30 +2920,10 @@ Local pulls are not applied to the master branch.</source>
</context> </context>
<context> <context>
<name>BorderImageSpecifics</name> <name>BorderImageSpecifics</name>
<message>
<source>BorderImage</source>
<translation>Изображение рамки</translation>
</message>
<message> <message>
<source>Source</source> <source>Source</source>
<translation>Источник</translation> <translation>Источник</translation>
</message> </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> <message>
<source>Border Image</source> <source>Border Image</source>
<translation>Изображение рамки</translation> <translation>Изображение рамки</translation>
@@ -4309,63 +4254,6 @@ p, li { white-space: pre-wrap; }
<translation>Стиль кода</translation> <translation>Стиль кода</translation>
</message> </message>
</context> </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> <context>
<name>ColumnSpecifics</name> <name>ColumnSpecifics</name>
<message> <message>
@@ -12907,14 +12795,6 @@ Rebuilding the project might help.</source>
</context> </context>
<context> <context>
<name>EditorManager</name> <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> <message>
<source>Go Back</source> <source>Go Back</source>
<translation>Перейти назад</translation> <translation>Перейти назад</translation>
@@ -12954,47 +12834,6 @@ Rebuilding the project might help.</source>
<translation>Редактор</translation> <translation>Редактор</translation>
</message> </message>
</context> </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> <context>
<name>ExtensionSystem::Internal::PluginDetailsView</name> <name>ExtensionSystem::Internal::PluginDetailsView</name>
<message> <message>
@@ -13941,53 +13780,6 @@ Reason: %3</source>
<translation>Свернуть всё</translation> <translation>Свернуть всё</translation>
</message> </message>
</context> </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> <context>
<name>FlickableSection</name> <name>FlickableSection</name>
<message> <message>
@@ -14044,10 +13836,6 @@ Reason: %3</source>
<source>Flow</source> <source>Flow</source>
<translation>Перетекание</translation> <translation>Перетекание</translation>
</message> </message>
<message>
<source>Layout direction</source>
<translation>Направление компоновки</translation>
</message>
<message> <message>
<source>Spacing</source> <source>Spacing</source>
<translation>Отступ</translation> <translation>Отступ</translation>
@@ -14057,25 +13845,6 @@ Reason: %3</source>
<translation>Направление компоновки</translation> <translation>Направление компоновки</translation>
</message> </message>
</context> </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> <context>
<name>FontSection</name> <name>FontSection</name>
<message> <message>
@@ -14337,33 +14106,6 @@ These files are preserved.</source>
</translation> </translation>
</message> </message>
</context> </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> <context>
<name>GeometrySection</name> <name>GeometrySection</name>
<message> <message>
@@ -16650,10 +16392,6 @@ You can choose between stashing the changes or discarding them.</source>
<source>Flow</source> <source>Flow</source>
<translation>Перетекание</translation> <translation>Перетекание</translation>
</message> </message>
<message>
<source>Layout direction</source>
<translation>Направление компоновки</translation>
</message>
<message> <message>
<source>Spacing</source> <source>Spacing</source>
<translation>Отступ</translation> <translation>Отступ</translation>
@@ -16677,14 +16415,6 @@ You can choose between stashing the changes or discarding them.</source>
<source>Cache buffer</source> <source>Cache buffer</source>
<translation>Буфер кэша</translation> <translation>Буфер кэша</translation>
</message> </message>
<message>
<source>Cell height</source>
<translation>Высота ячейки</translation>
</message>
<message>
<source>Cell width</source>
<translation>Ширина ячейки</translation>
</message>
<message> <message>
<source>Determines whether the grid wraps key navigation.</source> <source>Determines whether the grid wraps key navigation.</source>
<translation>Определяет, меняет ли сетка навигацию клавишами.</translation> <translation>Определяет, меняет ли сетка навигацию клавишами.</translation>
@@ -17612,6 +17342,10 @@ Ids must begin with a lowercase letter.</source>
</context> </context>
<context> <context>
<name>Ios::Internal::IosDebugSupport</name> <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> <message>
<source>Could not get debug server file descriptor.</source> <source>Could not get debug server file descriptor.</source>
<translation>Не удалось получить дескриптор файла сервера отладки.</translation> <translation>Не удалось получить дескриптор файла сервера отладки.</translation>
@@ -17718,6 +17452,10 @@ Ids must begin with a lowercase letter.</source>
<source>unknown</source> <source>unknown</source>
<translation>неизвестно</translation> <translation>неизвестно</translation>
</message> </message>
<message>
<source>OS version</source>
<translation>Версия ОС</translation>
</message>
<message> <message>
<source>An iOS device in user mode has been detected.</source> <source>An iOS device in user mode has been detected.</source>
<translation>Обнаружено устройство iOS работающее в пользовательском режиме.</translation> <translation>Обнаружено устройство iOS работающее в пользовательском режиме.</translation>
@@ -17895,33 +17633,6 @@ QML component instance objects and properties directly.</source>
QML.</translation> QML.</translation>
</message> </message>
</context> </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> <context>
<name>LayoutSection</name> <name>LayoutSection</name>
<message> <message>
@@ -17941,13 +17652,6 @@ QML.</translation>
<translation>Отступ</translation> <translation>Отступ</translation>
</message> </message>
</context> </context>
<context>
<name>LineEdit</name>
<message>
<source>Translate this string</source>
<translation>Перевести эту строку</translation>
</message>
</context>
<context> <context>
<name>LinksBar</name> <name>LinksBar</name>
<message> <message>
@@ -18021,14 +17725,6 @@ QML.</translation>
<source>Resize animation duration of the highlight delegate.</source> <source>Resize animation duration of the highlight delegate.</source>
<translation>Продолжительность анимации изменения размера делегата подсветки.</translation> <translation>Продолжительность анимации изменения размера делегата подсветки.</translation>
</message> </message>
<message>
<source>Resize speed</source>
<translation>Скорость изменения размера</translation>
</message>
<message>
<source>Resize animation speed of the highlight delegate.</source>
<translation>Скорость анимации изменения размера делегата подсветки.</translation>
</message>
<message> <message>
<source>Preferred begin</source> <source>Preferred begin</source>
<translation>Предпочтительное начало</translation> <translation>Предпочтительное начало</translation>
@@ -19171,27 +18867,8 @@ Do you want to kill it?</source>
<translation>Встроенный в Qt Creator</translation> <translation>Встроенный в Qt Creator</translation>
</message> </message>
</context> </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> <context>
<name>MouseAreaSpecifics</name> <name>MouseAreaSpecifics</name>
<message>
<source>MouseArea</source>
<translation></translation>
</message>
<message> <message>
<source>Enabled</source> <source>Enabled</source>
<translation>Включено</translation> <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> <extracomment>The name of the release build configuration created by default for a qmake project.</extracomment>
<translation>Выпуск</translation> <translation>Выпуск</translation>
</message> </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> <message>
<source>Debug</source> <source>Debug</source>
<extracomment>The name of the debug build configuration created by default for a qmake project.</extracomment> <extracomment>The name of the debug build configuration created by default for a qmake project.</extracomment>
<translation>Отладка</translation> <translation>Отладка</translation>
</message> </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> <message>
<source>Build</source> <source>Build</source>
<translation>Сборка</translation> <translation>Сборка</translation>
@@ -29160,12 +28849,12 @@ Do you want Qt Creator to generate it for your project?</source>
%1</translation> %1</translation>
</message> </message>
<message> <message>
<source>Target is being added.</source> <source>Target %1 is being added.</source>
<translation>Цель была добавлена.</translation> <translation>Добавляется цель %1.</translation>
</message> </message>
<message> <message>
<source>Target is already added.</source> <source>Target %1 is already added.</source>
<translation>Цель уже добавлена.</translation> <translation>Цель %1 уже добавлена.</translation>
</message> </message>
<message> <message>
<source>Finished uninstalling target: <source>Finished uninstalling target:
@@ -30769,43 +30458,8 @@ cannot be found in the path.</source>
<translation>Фокус при нажатии</translation> <translation>Фокус при нажатии</translation>
</message> </message>
</context> </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> <context>
<name>RectangleSpecifics</name> <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> <message>
<source>Radius</source> <source>Radius</source>
<translation>Радиус</translation> <translation>Радиус</translation>
@@ -31767,10 +31421,6 @@ Remote stderr was: &apos;%1&apos;</source>
<source>Row</source> <source>Row</source>
<translation>Строка</translation> <translation>Строка</translation>
</message> </message>
<message>
<source>Layout direction</source>
<translation>Направление компоновки</translation>
</message>
<message> <message>
<source>Spacing</source> <source>Spacing</source>
<translation>Отступ</translation> <translation>Отступ</translation>
@@ -31900,47 +31550,12 @@ with a password, which you can enter below.</source>
<translation>Не кодировать файл ключа</translation> <translation>Не кодировать файл ключа</translation>
</message> </message>
</context> </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> <context>
<name>StandardTextGroupBox</name> <name>StandardTextGroupBox</name>
<message>
<source>Text</source>
<translation>Текст</translation>
</message>
<message>
<source>Wrap mode</source>
<translation>Режим переноса</translation>
</message>
<message> <message>
<source></source> <source></source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Alignment</source>
<translation>Выравнивание</translation>
</message>
</context> </context>
<context> <context>
<name>StandardTextSection</name> <name>StandardTextSection</name>
@@ -32288,25 +31903,6 @@ with a password, which you can enter below.</source>
<translation>Фиксация Subversion</translation> <translation>Фиксация Subversion</translation>
</message> </message>
</context> </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> <context>
<name>TabViewToolAction</name> <name>TabViewToolAction</name>
<message> <message>
@@ -32436,10 +32032,6 @@ with a password, which you can enter below.</source>
</context> </context>
<context> <context>
<name>TextEditSpecifics</name> <name>TextEditSpecifics</name>
<message>
<source>Text Edit</source>
<translation>Текстовый редактор</translation>
</message>
<message> <message>
<source>Format</source> <source>Format</source>
<translation>Формат</translation> <translation>Формат</translation>
@@ -32463,10 +32055,6 @@ with a password, which you can enter below.</source>
<source>Text Editor</source> <source>Text Editor</source>
<translation>Текстовый редактор</translation> <translation>Текстовый редактор</translation>
</message> </message>
<message>
<source>Translate this string</source>
<translation>Перевести эту строку</translation>
</message>
</context> </context>
<context> <context>
<name>TextEditor::BaseFileFind</name> <name>TextEditor::BaseFileFind</name>
@@ -34517,49 +34105,6 @@ Will not be applied to whitespace in comments and strings.</source>
<translation>Определяет, как текст отображается в поле.</translation> <translation>Определяет, как текст отображается в поле.</translation>
</message> </message>
</context> </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> <context>
<name>TextInputSection</name> <name>TextInputSection</name>
<message> <message>
@@ -34763,72 +34308,6 @@ Will not be applied to whitespace in comments and strings.</source>
<translation>&amp;Закрыть</translation> <translation>&amp;Закрыть</translation>
</message> </message>
</context> </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> <context>
<name>Update</name> <name>Update</name>
<message> <message>
@@ -37174,68 +36653,6 @@ should a repository require SSH-authentication (see documentation on SSH and the
<translation>... поиск переопределений</translation> <translation>... поиск переопределений</translation>
</message> </message>
</context> </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> <context>
<name>Welcome::Internal::CommunityWelcomePage</name> <name>Welcome::Internal::CommunityWelcomePage</name>
<message> <message>
@@ -37273,17 +36690,6 @@ should a repository require SSH-authentication (see documentation on SSH and the
<translation>Файл «%1» не является модулем QmlDesigner.</translation> <translation>Файл «%1» не является модулем QmlDesigner.</translation>
</message> </message>
</context> </context>
<context>
<name>WindowPane</name>
<message>
<source>Window</source>
<translation>Окно</translation>
</message>
<message>
<source>Title</source>
<translation>Заголовок</translation>
</message>
</context>
<context> <context>
<name>WindowSpecifics</name> <name>WindowSpecifics</name>
<message> <message>

View File

@@ -4,6 +4,8 @@
<dict> <dict>
<key>NSPrincipalClass</key> <key>NSPrincipalClass</key>
<string>NSApplication</string> <string>NSApplication</string>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
<key>CFBundleDocumentTypes</key> <key>CFBundleDocumentTypes</key>
<array> <array>
<dict> <dict>

View File

@@ -283,7 +283,7 @@ unsigned int AndroidDeployStep::remoteModificationTime(const QString &fullDestin
process.start(AndroidConfigurations::instance().adbToolPath().toString(), arguments); process.start(AndroidConfigurations::instance().adbToolPath().toString(), arguments);
if (!process.waitForFinished(5000) if (!process.waitForFinished(5000)
|| process.exitCode() != 0) || process.exitCode() != 0)
return -1; return 0;
QByteArray output = process.readAll(); QByteArray output = process.readAll();
output.replace("\r\n", "\n"); output.replace("\r\n", "\n");
QList<QByteArray> lines = output.split('\n'); QList<QByteArray> lines = output.split('\n');

View File

@@ -1077,9 +1077,8 @@ void MainWindow::readSettings()
QColor(Utils::StyleHelper::DEFAULT_BASE_COLOR)).value<QColor>()); QColor(Utils::StyleHelper::DEFAULT_BASE_COLOR)).value<QColor>());
} }
if (!restoreGeometry(m_settings->value(QLatin1String(windowGeometryKey)).toByteArray())) // Delay restoreWindowState, since it is overridden by LayoutRequest event
resize(1008, 700); // size without window decoration QTimer::singleShot(0, this, SLOT(restoreWindowState()));
restoreState(m_settings->value(QLatin1String(windowStateKey)).toByteArray());
bool modeSelectorVisible = m_settings->value(QLatin1String(modeSelectorVisibleKey), true).toBool(); bool modeSelectorVisible = m_settings->value(QLatin1String(modeSelectorVisibleKey), true).toBool();
ModeManager::setModeSelectorVisible(modeSelectorVisible); ModeManager::setModeSelectorVisible(modeSelectorVisible);
@@ -1262,3 +1261,12 @@ bool MainWindow::showWarningWithOptions(const QString &title,
return showOptionsDialog(settingsCategory, settingsId); return showOptionsDialog(settingsCategory, settingsId);
return false; 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();
}

View File

@@ -149,6 +149,7 @@ private slots:
void setSidebarVisible(bool visible); void setSidebarVisible(bool visible);
void destroyVersionDialog(); void destroyVersionDialog();
void openDelayedFiles(); void openDelayedFiles();
void restoreWindowState();
private: private:
void updateContextObject(const QList<IContext *> &context); void updateContextObject(const QList<IContext *> &context);

View File

@@ -423,7 +423,7 @@ int IncludeGroup::lineForNewInclude(const QString &newIncludeFileName,
return -1; return -1;
if (isSorted()) { 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(), const QList<Include>::const_iterator it = std::lower_bound(m_includes.begin(),
m_includes.end(), newInclude, includeFileNamelessThen); m_includes.end(), newInclude, includeFileNamelessThen);
if (it == m_includes.end()) if (it == m_includes.end())

View File

@@ -56,7 +56,7 @@ uchar fromhex(uchar c)
return 10 + c - 'a'; return 10 + c - 'a';
if (c >= 'A' && c <= 'Z') if (c >= 'A' && c <= 'Z')
return 10 + c - 'A'; return 10 + c - 'A';
return -1; return UCHAR_MAX;
} }
void skipCommas(const char *&from, const char *to) void skipCommas(const char *&from, const char *to)
@@ -147,7 +147,7 @@ QByteArray GdbMi::parseCString(const char *&from, const char *to)
uchar prod = 0; uchar prod = 0;
while (true) { while (true) {
uchar val = fromhex(c); uchar val = fromhex(c);
if (val == uchar(-1)) if (val == UCHAR_MAX)
break; break;
prod = prod * 16 + val; prod = prod * 16 + val;
if (++chars == 3 || src == end) if (++chars == 3 || src == end)

View File

@@ -49,8 +49,7 @@ using namespace Utils;
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN)
static const char* qtBuildPaths[] = { static const char* qtBuildPaths[] = {
"Q:/qt5_workdir/w/s", "Q:/qt5_workdir/w/s",
"C:/iwmake/build_mingw_opensource", "C:/work/build/qt5_workdir/w/s"};
"C:/ndk_buildrepos/qt-desktop/src"};
#elif defined(Q_OS_MAC) #elif defined(Q_OS_MAC)
static const char* qtBuildPaths[] = {}; static const char* qtBuildPaths[] = {};
#else #else

View File

@@ -86,6 +86,7 @@ public:
DebuggerEngineType secondSlaveEngineType; DebuggerEngineType secondSlaveEngineType;
DebuggerEngineType cppEngineType; DebuggerEngineType cppEngineType;
QString sysRoot; QString sysRoot;
QString deviceSymbolsRoot;
QString debuggerCommand; QString debuggerCommand;
ProjectExplorer::Abi toolChainAbi; ProjectExplorer::Abi toolChainAbi;
ProjectExplorer::IDevice::ConstPtr device; ProjectExplorer::IDevice::ConstPtr device;

View File

@@ -208,7 +208,7 @@ void LldbEngine::setupInferior()
QTC_CHECK(sp.attachPID <= 0 || (sp.startMode == AttachCrashedExternal QTC_CHECK(sp.attachPID <= 0 || (sp.startMode == AttachCrashedExternal
|| sp.startMode == AttachExternal)); || sp.startMode == AttachExternal));
cmd.arg("attachPid", sp.attachPID); 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 cmd.arg("remoteChannel", ((sp.startMode == AttachToRemoteProcess
|| sp.startMode == AttachToRemoteServer) || sp.startMode == AttachToRemoteServer)
? sp.remoteChannel : QString())); ? sp.remoteChannel : QString()));

View File

@@ -642,7 +642,7 @@ void QmlLiveTextPreview::editorContentsChanged()
void QmlLiveTextPreview::onAutomaticUpdateFailed() void QmlLiveTextPreview::onAutomaticUpdateFailed()
{ {
showSyncWarning(AutomaticUpdateFailed, QString(), -1, -1); showSyncWarning(AutomaticUpdateFailed, QString(), UINT_MAX, UINT_MAX);
} }
QList<int> QmlLiveTextPreview::objectReferencesForOffset(quint32 offset) QList<int> QmlLiveTextPreview::objectReferencesForOffset(quint32 offset)

View File

@@ -293,7 +293,7 @@ static int bitWidthFromType(int type, int subType)
return 0; return 0;
} }
static const int TopLevelId = -1; static const uint TopLevelId = UINT_MAX;
static bool isTopLevelItem(const QModelIndex &index) static bool isTopLevelItem(const QModelIndex &index)
{ {
return quintptr(index.internalId()) == quintptr(TopLevelId); return quintptr(index.internalId()) == quintptr(TopLevelId);

View File

@@ -31,6 +31,7 @@
#include "iosrunner.h" #include "iosrunner.h"
#include "iosmanager.h" #include "iosmanager.h"
#include "iosdevice.h"
#include <debugger/debuggerengine.h> #include <debugger/debuggerengine.h>
#include <debugger/debuggerplugin.h> #include <debugger/debuggerplugin.h>
@@ -40,10 +41,12 @@
#include <debugger/debuggerrunconfigurationaspect.h> #include <debugger/debuggerrunconfigurationaspect.h>
#include <projectexplorer/toolchain.h> #include <projectexplorer/toolchain.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <projectexplorer/taskhub.h>
#include <qmakeprojectmanager/qmakebuildconfiguration.h> #include <qmakeprojectmanager/qmakebuildconfiguration.h>
#include <qmakeprojectmanager/qmakenodes.h> #include <qmakeprojectmanager/qmakenodes.h>
#include <qmakeprojectmanager/qmakeproject.h> #include <qmakeprojectmanager/qmakeproject.h>
#include <qtsupport/qtkitinformation.h> #include <qtsupport/qtkitinformation.h>
#include <utils/fileutils.h>
#include <QDir> #include <QDir>
#include <QTcpServer> #include <QTcpServer>
@@ -73,11 +76,38 @@ RunControl *IosDebugSupport::createDebugRunControl(IosRunConfiguration *runConfi
if (device.isNull()) if (device.isNull())
return 0; return 0;
QmakeProject *project = static_cast<QmakeProject *>(target->project()); QmakeProject *project = static_cast<QmakeProject *>(target->project());
Kit *kit = target->kit();
DebuggerStartParameters params; DebuggerStartParameters params;
if (device->type() == Core::Id(Ios::Constants::IOS_DEVICE_TYPE)) { if (device->type() == Core::Id(Ios::Constants::IOS_DEVICE_TYPE)) {
params.startMode = AttachToRemoteProcess; params.startMode = AttachToRemoteProcess;
params.platform = QLatin1String("remote-ios"); 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 { } else {
params.startMode = AttachExternal; params.startMode = AttachExternal;
params.platform = QLatin1String("ios-simulator"); params.platform = QLatin1String("ios-simulator");
@@ -91,7 +121,6 @@ RunControl *IosDebugSupport::createDebugRunControl(IosRunConfiguration *runConfi
= runConfig->extraAspect<Debugger::DebuggerRunConfigurationAspect>(); = runConfig->extraAspect<Debugger::DebuggerRunConfigurationAspect>();
if (aspect->useCppDebugger()) { if (aspect->useCppDebugger()) {
params.languages |= CppLanguage; params.languages |= CppLanguage;
Kit *kit = target->kit();
params.sysRoot = SysRootKitInformation::sysRoot(kit).toString(); params.sysRoot = SysRootKitInformation::sysRoot(kit).toString();
params.debuggerCommand = DebuggerKitInformation::debuggerCommand(kit).toString(); params.debuggerCommand = DebuggerKitInformation::debuggerCommand(kit).toString();
if (ToolChain *tc = ToolChainKitInformation::toolChain(kit)) if (ToolChain *tc = ToolChainKitInformation::toolChain(kit))

View File

@@ -190,21 +190,11 @@ QString IosDevice::name()
return QCoreApplication::translate("Ios::Internal::IosDevice", "iOS Device"); return QCoreApplication::translate("Ios::Internal::IosDevice", "iOS Device");
} }
/* QString IosDevice::osVersion() const
// add back?
QString IosDevice::cpuArchitecure() const
{ {
return m_extraInfo.value(QLatin1String("deviceInfo")).toMap() return m_extraInfo.value(QLatin1String("osVersion"));
.value(QLatin1String("CPUArchitecture")).toString();
} }
QString IosDevice::productType() const
{
return m_extraInfo.value(QLatin1String("deviceInfo")).toMap()
.value(QLatin1String("ProductType")).toString();
}*/
// IosDeviceManager // IosDeviceManager
@@ -222,6 +212,7 @@ IosDeviceManager::TranslationMap IosDeviceManager::translationMap()
tMap[QLatin1String("NO")] = tr("no"); tMap[QLatin1String("NO")] = tr("no");
tMap[QLatin1String("YES")] = tr("yes"); tMap[QLatin1String("YES")] = tr("yes");
tMap[QLatin1String("*unknown*")] = tr("unknown"); tMap[QLatin1String("*unknown*")] = tr("unknown");
tMap[QLatin1String("osVersion")] = tr("OS version");
translationMap = &tMap; translationMap = &tMap;
return tMap; return tMap;
} }

View File

@@ -65,9 +65,7 @@ public:
QVariantMap toMap() const; QVariantMap toMap() const;
QString uniqueDeviceID() const; QString uniqueDeviceID() const;
IosDevice(const QString &uid); IosDevice(const QString &uid);
// add back? currently unused... QString osVersion() const;
//QString cpuArchitecure() const;
//QString productType() const;
static QString name(); static QString name();

View File

@@ -40,6 +40,7 @@ PropertyEditorContextObject::PropertyEditorContextObject(QObject *parent) :
m_backendValues(0), m_backendValues(0),
m_majorVersion(-1), m_majorVersion(-1),
m_minorVersion(-1), m_minorVersion(-1),
m_majorQtQuickVersion(-1),
m_qmlComponent(0), m_qmlComponent(0),
m_qmlContext(0) m_qmlContext(0)
{ {
@@ -52,6 +53,11 @@ int PropertyEditorContextObject::majorVersion() const
} }
int PropertyEditorContextObject::majorQtQuickVersion() const
{
return m_majorQtQuickVersion;
}
void PropertyEditorContextObject::setMajorVersion(int majorVersion) void PropertyEditorContextObject::setMajorVersion(int majorVersion)
{ {
if (m_majorVersion == majorVersion) if (m_majorVersion == majorVersion)
@@ -62,6 +68,17 @@ void PropertyEditorContextObject::setMajorVersion(int majorVersion)
emit majorVersionChanged(); emit majorVersionChanged();
} }
void PropertyEditorContextObject::setMajorQtQuickVersion(int majorVersion)
{
if (m_majorQtQuickVersion == majorVersion)
return;
m_majorQtQuickVersion = majorVersion;
emit majorQtQuickVersionChanged();
}
int PropertyEditorContextObject::minorVersion() const int PropertyEditorContextObject::minorVersion() const
{ {
return m_minorVersion; return m_minorVersion;

View File

@@ -53,6 +53,7 @@ class PropertyEditorContextObject : public QObject
Q_PROPERTY(int majorVersion READ majorVersion WRITE setMajorVersion NOTIFY majorVersionChanged) Q_PROPERTY(int majorVersion READ majorVersion WRITE setMajorVersion NOTIFY majorVersionChanged)
Q_PROPERTY(int minorVersion READ minorVersion WRITE setMinorVersion NOTIFY minorVersionChanged) 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) 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(); } Q_INVOKABLE QString convertColorToString(const QColor &color) { return color.name(); }
int majorVersion() const; int majorVersion() const;
int majorQtQuickVersion() const;
void setMajorVersion(int majorVersion); void setMajorVersion(int majorVersion);
void setMajorQtQuickVersion(int majorVersion);
int minorVersion() const; int minorVersion() const;
void setMinorVersion(int minorVersion); void setMinorVersion(int minorVersion);
@@ -91,6 +94,7 @@ signals:
void backendValuesChanged(); void backendValuesChanged();
void majorVersionChanged(); void majorVersionChanged();
void minorVersionChanged(); void minorVersionChanged();
void majorQtQuickVersionChanged();
void specificQmlComponentChanged(); void specificQmlComponentChanged();
public slots: public slots:
@@ -124,6 +128,7 @@ private:
int m_majorVersion; int m_majorVersion;
int m_minorVersion; int m_minorVersion;
int m_majorQtQuickVersion;
QQmlComponent *m_qmlComponent; QQmlComponent *m_qmlComponent;
QQmlContext *m_qmlContext; QQmlContext *m_qmlContext;
}; };

View File

@@ -290,8 +290,10 @@ void PropertyEditorQmlBackend::setup(const QmlObjectNode &qmlObjectNode, const Q
} else { } else {
contextObject()->setMajorVersion(-1); contextObject()->setMajorVersion(-1);
contextObject()->setMinorVersion(-1); contextObject()->setMinorVersion(-1);
contextObject()->setMajorQtQuickVersion(-1);
} }
contextObject()->setMajorQtQuickVersion(qmlObjectNode.view()->majorQtQuickVersion());
} else { } else {
qWarning() << "PropertyEditor: invalid node for setup"; qWarning() << "PropertyEditor: invalid node for setup";
} }

View File

@@ -240,6 +240,9 @@ void PropertyEditorView::changeExpression(const QString &propertyName)
if (m_locked) if (m_locked)
return; return;
if (!m_selectedNode.isValid())
return;
RewriterTransaction transaction = beginRewriterTransaction(QByteArrayLiteral("PropertyEditorView::changeExpression")); RewriterTransaction transaction = beginRewriterTransaction(QByteArrayLiteral("PropertyEditorView::changeExpression"));
try { try {

View File

@@ -86,6 +86,8 @@ public:
QList<NodeMetaInfo> superClasses() const; QList<NodeMetaInfo> superClasses() const;
NodeMetaInfo directSuperClass() const; NodeMetaInfo directSuperClass() const;
QList<TypeName> superClassNames() const;
bool defaultPropertyIsComponent() const; bool defaultPropertyIsComponent() const;
TypeName typeName() const; TypeName typeName() const;

View File

@@ -1031,12 +1031,27 @@ void NodeMetaInfoPrivate::setupPrototypes()
description.majorVersion = qmlValue->componentVersion().majorVersion(); description.majorVersion = qmlValue->componentVersion().majorVersion();
LanguageUtils::FakeMetaObject::Export qtquickExport = qmlValue->metaObject()->exportInPackage("QtQuick"); LanguageUtils::FakeMetaObject::Export qtquickExport = qmlValue->metaObject()->exportInPackage("QtQuick");
LanguageUtils::FakeMetaObject::Export cppExport = qmlValue->metaObject()->exportInPackage("<cpp>"); LanguageUtils::FakeMetaObject::Export cppExport = qmlValue->metaObject()->exportInPackage("<cpp>");
if (qtquickExport.isValid())
if (qtquickExport.isValid()) {
description.className = qtquickExport.package.toUtf8() + '.' + qtquickExport.type.toUtf8(); description.className = qtquickExport.package.toUtf8() + '.' + qtquickExport.type.toUtf8();
else if (qmlValue->moduleName().isEmpty() && cppExport.isValid()) } else {
description.className = cppExport.package.toUtf8() + '.' + cppExport.type.toUtf8(); bool found = false;
else if (!qmlValue->moduleName().isEmpty()) if (cppExport.isValid()) {
description.className = qmlValue->moduleName().toUtf8() + '.' + description.className; 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); m_prototypes.append(description);
} else { } else {
if (context()->lookupType(document(), QStringList() << ov->className())) { if (context()->lookupType(document(), QStringList() << ov->className())) {
@@ -1233,6 +1248,16 @@ NodeMetaInfo NodeMetaInfo::directSuperClass() const
return NodeMetaInfo(); 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 bool NodeMetaInfo::defaultPropertyIsComponent() const
{ {
if (hasDefaultProperty()) if (hasDefaultProperty())

View File

@@ -471,12 +471,14 @@ void QmlProfilerTraceView::profilerDataModelStateChanged()
switch (d->m_modelManager->state()) { switch (d->m_modelManager->state()) {
case QmlProfilerDataState::Empty: break; case QmlProfilerDataState::Empty: break;
case QmlProfilerDataState::ClearingData: case QmlProfilerDataState::ClearingData:
d->m_mainView->hide();
emit enableToolbar(false); emit enableToolbar(false);
break; break;
case QmlProfilerDataState::AcquiringData: break; case QmlProfilerDataState::AcquiringData: break;
case QmlProfilerDataState::ProcessingData: break; case QmlProfilerDataState::ProcessingData: break;
case QmlProfilerDataState::Done: case QmlProfilerDataState::Done:
emit enableToolbar(true); emit enableToolbar(true);
d->m_mainView->show();
break; break;
default: default:
break; break;

View File

@@ -487,11 +487,11 @@ void BlackBerryInstallWizardFinalPage::initializePage()
return; 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(); emit done();
return; return;
} else { } 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; return;
} }
} }

View File

@@ -174,7 +174,7 @@ public slots:
ExamplesListModel::ExamplesListModel(QObject *parent) : ExamplesListModel::ExamplesListModel(QObject *parent) :
QAbstractListModel(parent), QAbstractListModel(parent),
m_uniqueQtId(noQtVersionsId) m_uniqueQtId(uniqueQtVersionIdSetting())
{ {
QHash<int, QByteArray> roleNames; QHash<int, QByteArray> roleNames;
roleNames[Name] = "name"; roleNames[Name] = "name";

View File

@@ -246,12 +246,13 @@ QDomDocument UpdateInfoPlugin::update()
QDomDocument updates; QDomDocument updates;
if (updater.exitStatus() != QProcess::CrashExit) { if (updater.exitStatus() != QProcess::CrashExit) {
d->m_timer.stop(); d->m_timer.stop();
d->m_lastDayChecked = QDate::currentDate();
updates.setContent(updater.readAllStandardOutput()); updates.setContent(updater.readAllStandardOutput());
saveSettings(); // force writing out the last update date saveSettings(); // force writing out the last update date
} else { } else {
qWarning() << "Updater application crashed."; qWarning() << "Updater application crashed.";
} }
d->m_lastDayChecked = QDate::currentDate();
return updates; return updates;
} }

View File

@@ -1227,6 +1227,7 @@ void DevInfoSession::deviceCallbackReturned()
QString deviceNameKey = QLatin1String("deviceName"); QString deviceNameKey = QLatin1String("deviceName");
QString developerStatusKey = QLatin1String("developerStatus"); QString developerStatusKey = QLatin1String("developerStatus");
QString deviceConnectedKey = QLatin1String("deviceConnected"); QString deviceConnectedKey = QLatin1String("deviceConnected");
QString osVersionKey = QLatin1String("osVersion");
bool failure = !device; bool failure = !device;
if (!failure) { if (!failure) {
failure = !connectDevice(); failure = !connectDevice();
@@ -1256,6 +1257,32 @@ void DevInfoSession::deviceCallbackReturned()
if (!res.contains(developerStatusKey)) if (!res.contains(developerStatusKey))
res[developerStatusKey] = QLatin1String("*off*"); 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(); disconnectDevice();
} }
if (!res.contains(deviceConnectedKey)) if (!res.contains(deviceConnectedKey))

View File

@@ -4,7 +4,7 @@ include(../../../qtcreator.pri)
include(../../private_headers.pri) include(../../private_headers.pri)
greaterThan(QT_MAJOR_VERSION, 4) { greaterThan(QT_MAJOR_VERSION, 4) {
qtHaveModule(declarative) { qtHaveModule(declarative-private) {
QT += declarative-private core-private QT += declarative-private core-private
SUBDIRS += qmlpuppet SUBDIRS += qmlpuppet
} }

View File

@@ -3311,6 +3311,7 @@ namespace lambda {
std::string x; std::string x;
auto f = [&] () -> const std::string & { auto f = [&] () -> const std::string & {
int z = x.size(); int z = x.size();
Q_UNUSED(z);
return x; return x;
}; };
auto c = f(); auto c = f();

View File

@@ -456,8 +456,8 @@ def __closeSubprocessByPushingStop__(sType):
stopButton = verifyEnabled(":Qt Creator.Stop_QToolButton") stopButton = verifyEnabled(":Qt Creator.Stop_QToolButton")
if stopButton.enabled: if stopButton.enabled:
clickButton(stopButton) clickButton(stopButton)
test.verify(playButton.enabled) test.verify(waitFor("playButton.enabled", 5000), "Play button should be enabled")
test.compare(stopButton.enabled, False) test.compare(stopButton.enabled, False, "Stop button should be disabled")
if sType == SubprocessType.QT_QUICK_UI and platform.system() == "Darwin": if sType == SubprocessType.QT_QUICK_UI and platform.system() == "Darwin":
waitFor("stopButton.enabled==False") waitFor("stopButton.enabled==False")
snooze(2) snooze(2)

View File

@@ -60,15 +60,19 @@ source("../../shared/workarounds.py")
# function must be called BEFORE any call except the first (which is done always automatically) # function must be called BEFORE any call except the first (which is done always automatically)
def overrideStartApplication(): def overrideStartApplication():
global startApplication, __origStartApplication__ global startApplication, __origStartApplication__
if (platform.system() != "Darwin"): if (platform.system() == "Linux"):
return return
if (__origStartApplication__ == None): if (__origStartApplication__ == None):
__origStartApplication__ = startApplication __origStartApplication__ = startApplication
def startApplication(*args): def startApplication(*args):
args = list(args) args = list(args)
if str(args[0]).startswith('qtcreator'): if str(args[0]).startswith('qtcreator'):
args[0] = args[0].replace('qtcreator', '"Qt Creator"', 1) if platform.system() == 'Darwin':
test.log("Using workaround for MacOS (different AUT name)") 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) return __origStartApplication__(*args)
def startedWithoutPluginError(): def startedWithoutPluginError():

View File

@@ -53,9 +53,11 @@ def verifyCloneLog(targetDir, canceled):
"Searching for clone directory in clone log") "Searching for clone directory in clone log")
result = "The process terminated with exit code 0." result = "The process terminated with exit code 0."
summary = "Succeeded." 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)), test.xverify((result in str(cloneLog.plainText)),
"Searching for result (%s) in clone log:\n%s" "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) test.compare(waitForObject(":Git Repository Clone.Result._QLabel").text, summary)
def verifyFiles(targetDir): def verifyFiles(targetDir):