diff --git a/README b/README index 58e2cbd79e7..d59cd8cbf38 100644 --- a/README +++ b/README @@ -170,7 +170,7 @@ http://qt-project.org/wiki/Building_Qt_5_from_Git . able to find all dependent Qt-libraries and plugins when being launched by the system. The easiest way to provide them for Qt 5 is to run the tool windeployqt: - windeployqt -svg -xml -designercomponents -script -concurrent -network -quick -quickwidgets -test -sql -printsupport -qthelp -qmldir share\qtcreator -qmldir src\plugins\qmlprofiler bin\qtcreator.exe + windeployqt -qmldir share\qtcreator -qmldir src\plugins\qmlprofiler bin\qtcreator.exe lib\qtcreator lib\qtcreator\plugins Note that unlike on Unix, you cannot overwrite executables that are running. Thus, if you want to work on Qt Creator using Qt Creator, you need a diff --git a/dist/changes-3.3.0 b/dist/changes-3.3.0 index 10f4b28a0f7..ddee5bc1569 100644 --- a/dist/changes-3.3.0 +++ b/dist/changes-3.3.0 @@ -14,33 +14,93 @@ General * Created new wizard engine to add new script based wizards without the need for recompilation * Improved high DPI support + * Added Window > Close Window for external windows + * Added list of open windows to Window menu + * Added basic theming support + * Fixed various thread-safety issues in locator Editing - * Implemented dragging of edited documents between views + * Moved the Close Document button next to the document + chooser + * Implemented dragging of edited documents between splits, + and from navigation views onto splits + * Added titles to external editor windows + * Fixed that File > Close, and the corresponding shortcuts + and tool buttons, closed all editors for a document even + if multiple editors were visible Help + * Added Home and Bookmark buttons to external and side-by-side + help viewers + * Added support for File > Print to external and side-by-side + help viewers + * Added optionally shown side bar with contents, index, bookmark + and search views to external help viewer Managing and Building Projects + * Added option to specify environment variables per kit + (QTCREATORBUG-9898) + * Added 256-color ANSI support to application output view + (QTCREATORBUG-12623) + * Added Select all kits check box to project setup page + * Added support for using variables, such as %{Qt:Version}, + in Qt version and kit display names (QTCREATORBUG-11118) + * Changed File > Close Project to a menu that allows selecting + a specific project to close, if more than one project is open + (QTCREATORBUG-12857) + * Fixed that Run menu in project context menu was never shown QMake Projects + * Implemented asynchronous loading of projects + * Added option to use Qt Quick Compiler + * Fixed that adding multiple build configurations stopped asking + for the configuration name (QTCREATORBUG-12955) + * Fixed crash when renaming files in case automatic rewriting + of the .pro file is not possible (QTCREATORBUG-12930) CMake Projects + * Added support for bare metal devices + * Added option to override make command (QTCREATORBUG-11788) Qbs Projects + * Removed experimental status of the plugin + * Added support for renaming files (QBS-652) + * Fixed crash with simplified project view (QTCREATORBUG-12897) Generic Projects + * Fixed that project files were shown twice after adding files to empty + generic project (QTCREATORBUG-13106) Debugging + * GDB + * Fixed detection of target architecture + * CDB + * Made it possible to abort the debugging process + * Fixed shadowed local variable handling (QTCREATORBUG-13132) QML Profiler - * Added JavaScript heap profiler - * Improved scenegraph profiler + * Added drag & drop for reordering categories in timeline (QTCREATORBUG-12337) + * Added optional showing and hiding of categories + * Added option to add notes to events in timeline for export + * Fixed display of binding loops (QTCREATORBUG-12950) + * Fixed selection of previous and next item in timeline Analyzer C++ Support + * Added Convert connect() to Qt 5 Style refactoring action + * Added smart splitting of string literals when pressing enter within strings + * Fixed code completion for pointer in template specialization + and initialization (QTCREATORBUG-12638) + * Fixed code completion for typedefs of pointer arrays + (QTCREATORBUG-12703) + * Fixed that hovering over a symbol sometimes jumped to its definition + (QTCREATORBUG-12986) + * Fixed that include paths were not adjusted when files are renamed + QML Support + * Added support for forms Qt Quick Designer * Added support for a workflow where .qml code is split into @@ -49,10 +109,16 @@ Qt Quick Designer * Extended anchoring options Diff Viewer + * Fixed reloading patch files (QTCREATORBUG-13241) Version Control Systems + * Removed support for Gitorious + * Fixed commit editor line wrapping for lines that end with a dash + (QTCREATORBUG-8528) FakeVim + * Fixed issues with Save As + (QTCREATORBUG-12810) Beautifier @@ -63,12 +129,25 @@ Windows OS X Android + * Removed Necessitas support * Added Gradle build system support + * Changed installation of package to use androiddeployqt + when using Qt 5.4 or later + * Improved error dialog for Android manifest + * Split permissions and features check box into separate check boxes + in manifest editor + * Fixed that passwords used for signing were shown in build log + (QTCREATORBUG-12919) Remote Linux + * Made checks on tool chain and target architecture/OS for deployment + options less restrictive QNX BareMetal +Tools: + * Removed unused zeroconf wrapper + Credits for these changes go to: diff --git a/doc/images/creator-qbs-build-app.png b/doc/images/creator-qbs-build-app.png index 17e46849609..43941b093bf 100644 Binary files a/doc/images/creator-qbs-build-app.png and b/doc/images/creator-qbs-build-app.png differ diff --git a/doc/images/qtcreator-external-tools.png b/doc/images/qtcreator-external-tools.png index ec79bfdcd08..dfd8a7ddad8 100644 Binary files a/doc/images/qtcreator-external-tools.png and b/doc/images/qtcreator-external-tools.png differ diff --git a/doc/src/analyze/qtquick-profiler.qdoc b/doc/src/analyze/qtquick-profiler.qdoc index accb949c41c..44fe2827b53 100644 --- a/doc/src/analyze/qtquick-profiler.qdoc +++ b/doc/src/analyze/qtquick-profiler.qdoc @@ -151,7 +151,7 @@ \table \header - \li Event Type + \li Event Category \li Description \li Minimum Qt Version \li Qt Quick Version @@ -183,7 +183,6 @@ surpassing a certain size, the memory manager will allocate those separately. Those two modes of operation are shown as events of different colors. - The second row displays the actual usage of the allocated memory. This is the amount of JavaScript heap the application has actually requested. @@ -191,6 +190,13 @@ \li Qt Quick 2 \li Yes + \row + \li \gui {Input Events} + \li Displays mouse and keyboard events. + \li Qt 4.7.4 + \li Qt Quick 1 or Qt Quick 2 + \li Yes + \row \li \gui Painting \li Displays the time spent painting the scene for each frame. @@ -202,7 +208,6 @@ \li \gui Animations \li Displays the amount of animations that are active and the frame rate that they are running at. - Information about render thread animations is displayed for applications that are built with Qt 5.3 or later. Render thread animations are shown in a separate row then. @@ -225,7 +230,6 @@ elements. The second stage represents the completion callbacks. Not all elements trigger completion callbacks, though. The stages are shown as separate events in the timeline. - For Qt Quick 2 applications compiled with versions of Qt before 5.2.1 only the creation of top-level elements is shown, as single events. @@ -260,6 +264,207 @@ \endtable + \section2 Analyzing Scene Graph Events + + In order to understand the scene graph category, it's important to + understand how the Qt Quick scene graph works. See + \l {Qt Quick Scene Graph} and \l {Qt Quick Scene Graph Renderer} for a + detailed description. The following events are reported in the + \gui {Scene Graph} category. Not all events are generated by all render + loops. In the Windows and Basic render loops everything runs in the same + thread and the distinction between GUI thread and render thread is + meaningless. + + If you set the environment variable QSG_RENDER_TIMING, you get a textual + output of similar, but slightly different timings from the application + being profiled. For easier orientation, the differences are listed below. + + \table + \header + \li Event Type + \li Thread + \li Render Loop Types + \li Label in output of QSG_RENDER_TIMING + \li Description + \li Caveats + \row + \li \gui {Polish} + \li GUI + \li Threaded, Basic, Windows + \li polish + \li Final touch-up of items before they are rendered using + QQuickItem::updatePolish(). + \li Versions of Qt prior to Qt 5.4 record no polish times for the basic + render loop and incorrect ones for the windows render loop. + \row + \li \gui {GUI Thread Wait} + \li GUI + \li Threaded + \li lock + \li Executing slots connected to the QQuickWindow::afterAnimating() + signal and then locking the render thread's mutex before waiting on + the same mutex at \gui {GUI Thread Sync}. If this starts long + before \gui {Render Thread Sync}, there is \e free time in the GUI + thread you could be using for running additional QML or JavaScript. + \li None + \row + \li \gui {GUI Thread Sync} + \li GUI + \li Threaded + \li blockedForSync + \li The time the GUI thread is blocked, waiting for the render thread + to synchronize the QML state into the scene graph. + \li None + \row + \li \gui {Animations} + \li GUI + \li Threaded, Windows + \li animations + \li Advancing animations in the GUI thread. The basic render loop does + not drive animations in sync with the rendering. This is why no + animation events will be shown when using the basic render loop. + Watch the \gui {Animations} category to see animation timing in + this case. + \li None + \row + \li \gui {Render Thread Sync} + \li Render + \li Threaded, Basic, Windows + \li Frame rendered ... sync + \li Synchronizing the QML state into the scene graph using + QQuickItem::updatePaintNode(). + \li None + \row + \li \gui {Render} + \li Render + \li Threaded, Basic, Windows + \li Frame rendered ... render + \li Total time spent rendering the frame, including preparing and + uploading all the necessary data to the GPU. This is the \e gross + render time. Do not confuse it with the \e net \gui{Render Render} + time below. + \li With versions of Qt prior to Qt 5.5, the gross render time and the + below breakup of render times may be misaligned by some + microseconds due to different, unsynchronized timers being used to + measure them. For example \gui {Render Preprocess} might seem to + start before \gui {Render Thread Sync} is finished. + \row + \li \gui {Swap} + \li Render + \li Threaded, Basic, Windows + \li Frame rendered ... swap + \li Swapping frames after rendering. + \li The output of swap times triggered by setting QSG_RENDER_TIMING is + incorrect for the basic render loop and versions of Qt prior to + Qt 5.4. The QML profiler shows the correct swap times. + \row + \li \gui {Render Preprocess} + \li Render + \li Threaded, Basic, Windows + \li time in renderer ... preprocess + \li Calling QSGNode::preprocess() on all nodes that need to be + preprocessed. This is part of the gross \gui {Render} step. + \li May not be properly aligned with \gui {Render} with versions of Qt + prior to Qt 5.5. + \row + \li \gui {Render Update} + \li Render + \li Threaded, Basic, Windows + \li time in renderer ... updates + \li Iterating and processing all the nodes in the scene graph to update + their geometry, transformations, opacity, and other state. In the + \gui {Render Thread Sync} stage, each node is updated separately + with state from the GUI thread. In \gui {Render Update}, all the + nodes are combined to create the final scene. This is part of the + gross \gui {Render} step. + \li May not be properly aligned with \gui {Render} with versions of Qt + prior to Qt 5.5. + \row + \li \gui {Render Bind} + \li Render + \li Threaded, Basic, Windows + \li time in renderer ... binding + \li Binding the correct framebuffer for OpenGL rendering. This is part + of the gross \gui {Render} step. + \li May not be properly aligned with \gui {Render} with versions of Qt + prior to Qt 5.5. + \row + \li \gui {Render Render} + \li Render + \li Threaded, Basic, Windows + \li time in renderer ... rendering + \li The actual process of sending all the data to the GPU via OpenGL. + This is part of the gross \gui {Render} step. + \li May not be properly aligned with \gui {Render} with versions of Qt + prior to Qt 5.5. + \row + \li \gui {Material Compile} + \li Render + \li Threaded, Basic, Windows + \li shader compiled + \li Compiling GLSL shader programs. + \li None + \row + \li \gui {Glyph Render} + \li Render + \li Threaded, Basic, Windows + \li glyphs ... rendering + \li Rendering of font glyphs into textures. + \li Versions of Qt prior to Qt 5.4 report incorrect times for these + events. + \row + \li \gui {Glyph Upload} + \li Render + \li Threaded, Basic, Windows + \li glyphs ... upload + \li Uploading of glyph textures to the GPU. + \li Versions of Qt prior to Qt 5.4 report incorrect times for these + events. + \row + \li \gui {Texture Bind} + \li Render + \li Threaded, Basic, Windows + \li plain texture ... bind + \li Binding a texture in the OpenGL context using glBindTextures. + \li None + \row + \li \gui {Texture Convert} + \li Render + \li Threaded, Basic, Windows + \li plain texture ... convert + \li Converting the format and downscaling an image to make it suitable + for usage as a texture. + \li None + \row + \li \gui {Texture Swizzle} + \li Render + \li Threaded, Basic, Windows + \li plain texture ... swizzle + \li Swizzling the texture data on the CPU if necessary. + \li None + \row + \li \gui {Texture Upload} + \li Render + \li Threaded, Basic, Windows + \li plain texture ... upload / atlastexture uploaded + \li Uploading the texture data to the GPU. + \li None + \row + \li \gui {Texture Mipmap} + \li Render + \li Threaded, Basic, Windows + \li plain texture ... mipmap + \li Mipmapping a texture on the GPU. + \li None + \row + \li \gui {Texture Delete} + \li Render + \li Threaded, Basic, Windows + \li plain texture deleted + \li Deleting a texture from the GPU that became unnecessary. + \li None + \endtable + \section1 Viewing Events The \gui Events view displays the number of times each binding, create, diff --git a/doc/src/editors/creator-editors.qdoc b/doc/src/editors/creator-editors.qdoc index 0ba58b85c01..975de5d5b14 100644 --- a/doc/src/editors/creator-editors.qdoc +++ b/doc/src/editors/creator-editors.qdoc @@ -1827,10 +1827,6 @@ \li String literal - \row - \li #include Header File - \li Adds the matching #include statement for a forward-declared class or struct - \li Forward-declared class or struct \row \li Add Definition in ... \li Inserts a definition stub for a function declaration either in the header file @@ -1957,9 +1953,9 @@ icon appears: \inlineimage qml-toolbar-indicator.png \row - \li Add #include for undeclared identifier + \li Add #include for undeclared or forward declared identifier \li Adds an #include directive to the current file to make the - declaration of a symbol available. + definition of a symbol available. \li Undeclared identifier \row \li Reformat Pointers or References diff --git a/doc/src/howto/creator-ui.qdoc b/doc/src/howto/creator-ui.qdoc index e44ca373716..b40ba565e87 100644 --- a/doc/src/howto/creator-ui.qdoc +++ b/doc/src/howto/creator-ui.qdoc @@ -221,6 +221,9 @@ \inlineimage qtcreator-show-subprojects.png (\gui {Show Subprojects}). + To visit all parts of a namespace, double-click on the namespace item + multiple times. + \section2 Viewing QML Types The \gui Outline view shows the type hierarchy in a QML file. diff --git a/doc/src/projects/creator-projects-other.qdoc b/doc/src/projects/creator-projects-other.qdoc index 558a4415939..85aab3d67f0 100644 --- a/doc/src/projects/creator-projects-other.qdoc +++ b/doc/src/projects/creator-projects-other.qdoc @@ -42,11 +42,10 @@ \li \l{Setting Up a Qbs Project} - Qt Build Suite (Qbs) is a new build tool for Qt. It is an all-in-one + Qt Build Suite (Qbs) is an all-in-one build tool that generates a build graph from a high-level project description (like qmake or CMake do) and executes the commands in - the low-level build graph (like make does). Qbs is still - experimental, but you can use it to build \QC, for example. + the low-level build graph (like make does). \li \l{Setting Up an Autotools Project} diff --git a/doc/src/projects/creator-projects-qbs.qdoc b/doc/src/projects/creator-projects-qbs.qdoc index 8fdd4228642..a43fd260a60 100644 --- a/doc/src/projects/creator-projects-qbs.qdoc +++ b/doc/src/projects/creator-projects-qbs.qdoc @@ -24,33 +24,22 @@ \title Setting Up a Qbs Project - The Qt Build Suite (Qbs) and the Qbs plugin are still experimental, and - therefore, you must first enable the plugin manually. If you build \QC - yourself from our Git repository, you also need to fetch the Qbs submodule - to get Qbs support. - To use Qbs to build a project, you must create a .qbs file for the project. - For more information, see the - \l{http://qt-project.org/doc/qbs/index.html}{Qbs Manual}. - - \section1 Enabling the Qbs Plugin - - If you use a \QC binary release, you need to enable the plugin by - selecting \gui Help > \gui {About Plugins} > \gui {Build Systems} - > \gui {QbsProjectManager} and restarting \QC. + You can use \QC to create a C or C++ project that is built with Qbs. + For more information about Qbs, see + the \l{http://qt-project.org/doc/qbs/index.html}{Qbs Manual}. \section1 Building Qbs - To build the Qbs plugin yourself from the \QC git repository: + If you build \QC yourself from the \QC Git repository, you also need to + fetch the Qbs submodule to get Qbs support: \list 1 \li Fetch the Qbs submodule in your \QC git checkout with \c {git submodule update --init}. - \li Use Qbs or qmake and make to build \QC again. - - \li Enable the Qbs plugin as described above. + \li Run qmake on \QC and build \QC again. \endlist diff --git a/doc/src/qtcreator.qdoc b/doc/src/qtcreator.qdoc index fdb28a2ef80..319f9d8e2b8 100644 --- a/doc/src/qtcreator.qdoc +++ b/doc/src/qtcreator.qdoc @@ -165,6 +165,7 @@ \li \l{Developing Qt Quick Applications} \list \li \l {Creating Qt Quick Projects} + \li \l {Qt Quick UI Forms} \li \l {Using Qt Quick Designer} \li \l {Creating Components} \li \l {Creating Buttons} diff --git a/doc/src/qtquick/qtquick-app-development.qdoc b/doc/src/qtquick/qtquick-app-development.qdoc index c54a0654982..f1a678775e9 100644 --- a/doc/src/qtquick/qtquick-app-development.qdoc +++ b/doc/src/qtquick/qtquick-app-development.qdoc @@ -36,6 +36,13 @@ \li \l {Creating Qt Quick Projects} You can use wizards to create Qt Quick projects. + + \li \l{Qt Quick UI Forms} + + Some of the wizards create Qt Quick projects that contain UI forms + (.ui.qml files). The forms use a purely declarative subset of the + QML language and you can edit them in the Design mode. + \li \l {Using Qt Quick Designer} You can use the code editor (Edit mode) or the visual editor (Design diff --git a/doc/src/qtquick/qtquick-creating.qdoc b/doc/src/qtquick/qtquick-creating.qdoc index 0f4ce96f2be..cb4b02589b4 100644 --- a/doc/src/qtquick/qtquick-creating.qdoc +++ b/doc/src/qtquick/qtquick-creating.qdoc @@ -27,7 +27,7 @@ \contentspage {Qt Creator Manual} \previouspage creator-visual-editor.html \page quick-projects.html - \nextpage creator-using-qt-quick-designer.html + \nextpage creator-quick-ui-forms.html \title Creating Qt Quick Projects @@ -102,6 +102,13 @@ \li .qml file defines an UI item, such as a component, screen, or the whole application UI. + \li .qml.ui files defines a form for the application UI. It is created + if you select \gui {Qt Quick Controls 1.3}, or later, or + \gui {Qt Quick 2.4}, or later. The forms can contain a subset of the + QML language. Similarly as with the UI forms for \QD, it is + recommended that you use \QMLD to edit the UI forms. For more + information, see \l{Qt Quick UI Forms}. + \endlist To use JavaScript and image files in the application, copy them to the diff --git a/doc/src/qtquick/qtquick-designer.qdoc b/doc/src/qtquick/qtquick-designer.qdoc index cc8b45025ea..7fe5db8b9a0 100644 --- a/doc/src/qtquick/qtquick-designer.qdoc +++ b/doc/src/qtquick/qtquick-designer.qdoc @@ -24,16 +24,15 @@ /*! \contentspage {Qt Creator Manual} - \previouspage quick-projects.html + \previouspage creator-quick-ui-forms.html \page creator-using-qt-quick-designer.html \nextpage quick-components.html \title Using Qt Quick Designer - You can edit .qml files in the \QMLD visual editor or in the code editor. - - In \gui Projects, double-click a .qml file to open it in the code editor. - Then select the \gui {Design} mode to edit the file in the visual editor. + You can edit \l{Qt Quick UI Forms} (ui.qml files) in \QMLD. \QC opens the + UI forms in the \gui Design mode. It is recommended that you use UI forms + for components that you want to desing in \QMLD. \image qmldesigner-visual-editor.png "Visual editor" @@ -185,7 +184,8 @@ values that you specify explicitly are highlighted with blue color. In addition, property changes in states are highlighted with blue. - This allows you to easily see which values are set in the .qml file and + This allows you to easily see which values are set in the UI form or + QML file and which values are default characteristics of a QML type or a component. When editing states, you can easily see which values are explicitly set in @@ -201,7 +201,7 @@ \image qmldesigner-properties-explicit-state1.png "Explicitly set properties" Resetting a property sets it back to the default value and removes the value - from the .qml file. + from the UI form or QML file. \note As a result, all boolean values can be visualized in four different ways. diff --git a/doc/src/qtquick/qtquick-ui-forms.qdoc b/doc/src/qtquick/qtquick-ui-forms.qdoc new file mode 100644 index 00000000000..7a3e1db1121 --- /dev/null +++ b/doc/src/qtquick/qtquick-ui-forms.qdoc @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (c) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator +** +** +** GNU Free Documentation License +** +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of this +** file. +** +** +****************************************************************************/ + +// ********************************************************************** +// NOTE: the sections are not ordered by their logical order to avoid +// reshuffling the file each time the index order changes (i.e., often). +// Run the fixnavi.pl script to adjust the links to the index order. +// ********************************************************************** + +/*! + + \contentspage {Qt Creator Manual} + \previouspage quick-projects.html + \page creator-quick-ui-forms.html + \nextpage creator-using-qt-quick-designer.html + + \title Qt Quick UI Forms + + You can use \QC wizards to create UI forms tha have the filename extension + \e .ui.qml. The UI forms contain a purely declarative subset of the QML + language. It is recommended that you edit the forms in the \gui Design mode. + \QC enforces the use of the supported QML features by displaying error + messages. + + The following features are not supported: + + \list + \li JavaScript blocks + \li Function definitions + \li Function calls (except \c qsTr) + \li Other bindings than pure expressions + \li Signal handlers + \li States in other items than the root item + \li Root items that are not derived from \l QQuickItem or \l Item + \endlist + + The following types are not supported: + + \list + \li Behavior + \li Binding + \li Canvas + \li Component + \li Shader Effect + \li Timer + \li Transform + \li Transition + \endlist + + \section1 Using Qt Quick UI Forms + + You can edit the forms in the \gui Design mode. Items that are supposed to + be used in QML code have to be exported as properties: + + \code + Item { + width: 640 + height: 480 + + property alias button: button + + Button { + anchors.centerIn: parent + id: button + text: qsTr("Press Me") + } + } + \endcode + + The property alias exports the button to the QML code that uses the form. + In \QC Enterprise you can use the + \inlineimage qmldesigner-export-item-button.png + (\gui Export) button in the \gui Navigator to export an item as a property: + + \image qmldesigner-export-item.png + + In the QML file that uses the form, you can use the \c button property alias + to implement signal handlers, for example. In the following code snippet, + the UI form is called \e MainForm.ui.qml: + + \code + MainForm { + anchors.fill: parent + button.onClicked: messageDialog.show(qsTr("Button pressed")) + } + \endcode + + You can also assign properties or define behavior or transitions. + +*/ diff --git a/qtcreator.pri b/qtcreator.pri index 6569cb65ee4..44a4092617e 100644 --- a/qtcreator.pri +++ b/qtcreator.pri @@ -1,9 +1,9 @@ !isEmpty(QTCREATOR_PRI_INCLUDED):error("qtcreator.pri already included") QTCREATOR_PRI_INCLUDED = 1 -QTCREATOR_VERSION = 3.2.81 -QTCREATOR_COMPAT_VERSION = 3.2.81 -BINARY_ARTIFACTS_BRANCH = master +QTCREATOR_VERSION = 3.2.82 +QTCREATOR_COMPAT_VERSION = 3.2.82 +BINARY_ARTIFACTS_BRANCH = 3.3 # enable c++11 CONFIG += c++11 diff --git a/qtcreator.pro b/qtcreator.pro index 67b2553b76f..cbc959a00df 100644 --- a/qtcreator.pro +++ b/qtcreator.pro @@ -90,9 +90,9 @@ macx { BINDIST_SOURCE = "$$OUT_PWD/bin/Qt Creator.app" BINDIST_INSTALLER_SOURCE = $$BINDIST_SOURCE deployqt.commands = $$PWD/scripts/deployqtHelper_mac.sh \"$${APPBUNDLE}\" \"$$[QT_INSTALL_TRANSLATIONS]\" \"$$[QT_INSTALL_PLUGINS]\" \"$$[QT_INSTALL_IMPORTS]\" \"$$[QT_INSTALL_QML]\" - codesign.commands = codesign -s \"$(SIGNING_IDENTITY)\" $(SIGNING_FLAGS) \"$${APPBUNDLE}\" + codesign.commands = codesign --deep -s \"$(SIGNING_IDENTITY)\" $(SIGNING_FLAGS) \"$${APPBUNDLE}\" dmg.commands = $$PWD/scripts/makedmg.sh $$OUT_PWD/bin $${BASENAME}.dmg - dmg.depends = deployqt + #dmg.depends = deployqt QMAKE_EXTRA_TARGETS += codesign dmg } else { BINDIST_SOURCE = "$(INSTALL_ROOT)$$QTC_PREFIX" @@ -113,9 +113,9 @@ isEmpty(INSTALLER_ARCHIVE_FROM_ENV) { INSTALLER_ARCHIVE = $$OUT_PWD/$$(INSTALLER_ARCHIVE) } -bindist.depends = deployqt +#bindist.depends = deployqt bindist.commands = 7z a -mx9 $$OUT_PWD/$${BASENAME}.7z \"$$BINDIST_SOURCE\" -bindist_installer.depends = deployqt +#bindist_installer.depends = deployqt bindist_installer.commands = 7z a -mx9 $${INSTALLER_ARCHIVE} \"$$BINDIST_INSTALLER_SOURCE\" installer.depends = bindist_installer installer.commands = python -u $$PWD/scripts/packageIfw.py -i \"$(IFW_PATH)\" -v $${QTCREATOR_VERSION} -a \"$${INSTALLER_ARCHIVE}\" "$$INSTALLER_NAME" diff --git a/qtcreator.qbs b/qtcreator.qbs index c04219488c3..aff06c48d03 100644 --- a/qtcreator.qbs +++ b/qtcreator.qbs @@ -5,11 +5,11 @@ Project { property bool withAutotests: qbs.buildVariant === "debug" property string ide_version_major: '3' property string ide_version_minor: '2' - property string ide_version_release: '81' + property string ide_version_release: '82' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release property string ide_compat_version_major: '3' property string ide_compat_version_minor: '2' - property string ide_compat_version_release: '81' + property string ide_compat_version_release: '82' property string qtcreator_compat_version: ide_compat_version_major + '.' + ide_compat_version_minor + '.' + ide_compat_version_release property path ide_source_tree: path property string ide_app_path: qbs.targetOS.contains("osx") ? "" : "bin" diff --git a/scripts/deployqtHelper_mac.sh b/scripts/deployqtHelper_mac.sh index f6168fac8e0..85f7a080c53 100755 --- a/scripts/deployqtHelper_mac.sh +++ b/scripts/deployqtHelper_mac.sh @@ -2,57 +2,61 @@ [ $# -lt 5 ] && echo "Usage: $(basename $0) " && exit 2 [ $(uname -s) != "Darwin" ] && echo "Run this script on Mac OS X" && exit 2; +echo "Deploying Qt" + # collect designer plugins designerDestDir="$1/Contents/PlugIns/designer" -test -d "$designerDestDir" || mkdir -p "$designerDestDir" -for plugin in "$3"/designer/*.dylib; do - cp "$plugin" "$designerDestDir"/ || exit 1 -done +if [ ! -d "$designerDestDir" ]; then + echo "- Copying designer plugins" + mkdir -p "$designerDestDir" + for plugin in "$3"/designer/*.dylib; do + cp "$plugin" "$designerDestDir"/ || exit 1 + done +fi # copy Qt Quick 1 imports importsDir="$1/Contents/Imports/qtquick1" if [ -d "$4" ]; then - test -d "$importsDir" || mkdir -p "$importsDir" - cp -R "$4"/ "$importsDir"/ + if [ ! -d "$importsDir" ]; then + echo "- Copying Qt Quick 1 imports" + mkdir -p "$importsDir" + cp -R "$4"/ "$importsDir"/ + fi fi # copy Qt Quick 2 imports imports2Dir="$1/Contents/Imports/qtquick2" if [ -d "$5" ]; then - test -d "$imports2Dir" || mkdir -p "$imports2Dir" - cp -R "$5"/ "$imports2Dir"/ + if [ ! -d "$imports2Dir" ]; then + echo "- Copying Qt Quick 2 imports" + mkdir -p "$imports2Dir" + cp -R "$5"/ "$imports2Dir"/ + fi fi -qmlpuppetapp="$1/Contents/MacOS/qmlpuppet" -if [ -f "$qmlpuppetapp" ]; then - qmlpuppetArgument="-executable=$qmlpuppetapp" -fi - -qml2puppetapp="$1/Contents/MacOS/qml2puppet" -if [ -f "$qml2puppetapp" ]; then - qml2puppetArgument="-executable=$qml2puppetapp" -fi - -macdeployqt "$1" \ - "-executable=$1/Contents/Resources/qtpromaker" \ - "-executable=$1/Contents/Resources/sdktool" \ - "-executable=$1/Contents/Resources/ios/iostool" \ - "-executable=$1/Contents/Resources/ios/iossim" \ - "-executable=$1/Contents/Resources/ios/iossim_1_8_2" \ - "$qmlpuppetArgument" "$qml2puppetArgument" || exit 1 - # copy qt creator qt.conf -cp -f "$(dirname "${BASH_SOURCE[0]}")/../dist/installer/mac/qt.conf" "$1/Contents/Resources/qt.conf" || exit 1 +if [ ! -f "$1/Contents/Resources/qt.conf" ]; then + echo "- Copying qt.conf" + cp -f "$(dirname "${BASH_SOURCE[0]}")/../dist/installer/mac/qt.conf" "$1/Contents/Resources/qt.conf" || exit 1 +fi # copy ios tools' qt.conf -cp -f "$(dirname "${BASH_SOURCE[0]}")/../dist/installer/mac/ios_qt.conf" "$1/Contents/Resources/ios/qt.conf" || exit 1 +if [ ! -f "$1/Contents/Resources/ios/qt.conf" ]; then + echo "- Copying ios/qt.conf" + cp -f "$(dirname "${BASH_SOURCE[0]}")/../dist/installer/mac/ios_qt.conf" "$1/Contents/Resources/ios/qt.conf" || exit 1 +fi # copy Qt translations -cp "$2"/*.qm "$1/Contents/Resources/translations/" || exit 1 +# check for known existing translation to avoid copying multiple times +if [ ! -f "$1/Contents/Resources/translations/qt_de.qm" ]; then + echo "- Copying Qt translations" + cp "$2"/*.qm "$1/Contents/Resources/translations/" || exit 1 +fi # copy libclang if needed if [ $LLVM_INSTALL_DIR ]; then if [ "$LLVM_INSTALL_DIR"/lib/libclang.dylib -nt "$1/Contents/PlugIns"/libclang.dylib ]; then + echo "- Copying libclang" cp -f "$LLVM_INSTALL_DIR"/lib/libclang.dylib "$1/Contents/PlugIns/" || exit 1 cp -Rf "$LLVM_INSTALL_DIR"/lib/clang "$1/Contents/Resources/cplusplus/" || exit 1 fi @@ -60,6 +64,32 @@ if [ $LLVM_INSTALL_DIR ]; then if [ ! -f "$_CLANG_CODEMODEL_LIB" ]; then _CLANG_CODEMODEL_LIB="$1/Contents/PlugIns/libClangCodeModel.dylib" fi + # this will just fail when run a second time on libClangCodeModel xcrun install_name_tool -rpath "$LLVM_INSTALL_DIR/lib" "@loader_path/" "$_CLANG_CODEMODEL_LIB" || true fi +#### macdeployqt + +if [ ! -d "$1/Contents/Frameworks/QtCore.framework" ]; then + + qmlpuppetapp="$1/Contents/MacOS/qmlpuppet" + if [ -f "$qmlpuppetapp" ]; then + qmlpuppetArgument="-executable=$qmlpuppetapp" + fi + + qml2puppetapp="$1/Contents/MacOS/qml2puppet" + if [ -f "$qml2puppetapp" ]; then + qml2puppetArgument="-executable=$qml2puppetapp" + fi + + echo "- Running macdeployqt ($(which macdeployqt))" + + macdeployqt "$1" \ + "-executable=$1/Contents/Resources/qtpromaker" \ + "-executable=$1/Contents/Resources/sdktool" \ + "-executable=$1/Contents/Resources/ios/iostool" \ + "-executable=$1/Contents/Resources/ios/iossim" \ + "-executable=$1/Contents/Resources/ios/iossim_1_8_2" \ + "$qmlpuppetArgument" "$qml2puppetArgument" || exit 1 + +fi diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 72c9a87bb3f..5ebff0d251d 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -834,6 +834,14 @@ class DumperBase: return "0x%x" % toInteger(addr) except: warn("CANNOT CONVERT TYPE: %s" % type(addr)) + try: + warn("ADDR: %s" % addr) + except: + pass + try: + warn("TYPE: %s" % addr.type) + except: + pass return str(addr) def tryPutArrayContents(self, base, n, innerType): diff --git a/share/qtcreator/generic-highlighter/alert.xml b/share/qtcreator/generic-highlighter/alert.xml index 3e1ac03ecb8..8ac5296fc80 100644 --- a/share/qtcreator/generic-highlighter/alert.xml +++ b/share/qtcreator/generic-highlighter/alert.xml @@ -30,7 +30,7 @@ Introduce 3 alert levels and sort keywords according importance. Few more keywords has been added. --> -