forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/4.12' into qds-1.50
Change-Id: I9bc1f87c3ab4a5ff0c84efa05d22763b8a1084c3
This commit is contained in:
@@ -496,11 +496,11 @@ function(add_qtc_library name)
|
||||
file(RELATIVE_PATH include_dir_relative_path ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
target_include_directories(${name}
|
||||
PRIVATE ${_arg_INCLUDES}
|
||||
PUBLIC
|
||||
PRIVATE
|
||||
${_arg_INCLUDES}
|
||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
|
||||
PUBLIC
|
||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>"
|
||||
"$<INSTALL_INTERFACE:include/${include_dir_relative_path}>"
|
||||
"$<INSTALL_INTERFACE:include/${include_dir_relative_path}/..>"
|
||||
)
|
||||
set_public_includes(${name} "${_arg_PUBLIC_INCLUDES}")
|
||||
@@ -755,10 +755,9 @@ function(add_qtc_plugin target_name)
|
||||
${_arg_INCLUDES}
|
||||
"${CMAKE_CURRENT_BINARY_DIR}"
|
||||
"${CMAKE_BINARY_DIR}/src"
|
||||
PUBLIC
|
||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
|
||||
PUBLIC
|
||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>"
|
||||
"$<INSTALL_INTERFACE:include/${include_dir_relative_path}>"
|
||||
"$<INSTALL_INTERFACE:include/${include_dir_relative_path}/..>"
|
||||
)
|
||||
set_public_includes(${target_name} "${_arg_PUBLIC_INCLUDES}")
|
||||
@@ -886,7 +885,7 @@ function(extend_qtc_target target_name)
|
||||
if (NOT IS_ABSOLUTE ${_arg_SOURCES_PREFIX})
|
||||
set(_arg_SOURCES_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/${_arg_SOURCES_PREFIX}")
|
||||
endif()
|
||||
target_include_directories(${target_name} PUBLIC $<BUILD_INTERFACE:${_arg_SOURCES_PREFIX}>)
|
||||
target_include_directories(${target_name} PRIVATE $<BUILD_INTERFACE:${_arg_SOURCES_PREFIX}>)
|
||||
|
||||
set(_arg_SOURCES ${prefixed_sources})
|
||||
endif()
|
||||
|
@@ -1,9 +1,9 @@
|
||||
#BINARY_ARTIFACTS_BRANCH = master
|
||||
#PROJECT_USER_FILE_EXTENSION = .user
|
||||
|
||||
set(IDE_VERSION "4.12.0") # The IDE version.
|
||||
set(IDE_VERSION "4.12.1") # The IDE version.
|
||||
set(IDE_VERSION_COMPAT "4.12.0") # The IDE Compatibility version.
|
||||
set(IDE_VERSION_DISPLAY "4.12.0") # The IDE display version.
|
||||
set(IDE_VERSION_DISPLAY "4.12.1") # The IDE display version.
|
||||
set(IDE_COPYRIGHT_YEAR "2020") # The IDE current copyright year.
|
||||
|
||||
set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation.
|
||||
|
@@ -130,8 +130,10 @@
|
||||
\uicontrol {Default line endings} field.
|
||||
|
||||
To set the line endings to use for a project, select \uicontrol Projects >
|
||||
\uicontrol {Project Settings} > \uicontrol Editor. For more information,
|
||||
see \l {Specifying Editor Settings}.
|
||||
\uicontrol {Project Settings} > \uicontrol Editor.
|
||||
\if defined(qtcreator)
|
||||
For more information, see \l {Specifying Editor Settings}.
|
||||
\endif
|
||||
|
||||
\section1 Splitting the Editor View
|
||||
|
||||
|
@@ -53,7 +53,7 @@
|
||||
To disable library linking for the current project, deselect the
|
||||
\uicontrol {Add build library search path to PATH} check box. To disable
|
||||
library linking for all projects, select \uicontrol Tools >
|
||||
\uicontrol Options > \uicontrol General, and then deselect the
|
||||
\uicontrol Options > \uicontrol {Build & Run}, and then deselect the
|
||||
\uicontrol {Add linker library search paths to run environment} check box.
|
||||
|
||||
The \uicontrol {Use debug version of frameworks (DYLD_IMAGE_SUFFIX=_debug)} option
|
||||
|
@@ -26,7 +26,7 @@
|
||||
/*!
|
||||
\contentspage index.html
|
||||
\page qtquick-adding-dynamics.html
|
||||
\previouspage qtquick-fonts.html
|
||||
\previouspage creator-quick-ui-forms.html
|
||||
\nextpage studio-timeline.html
|
||||
|
||||
\title Adding Dynamics
|
||||
|
@@ -33,7 +33,7 @@
|
||||
\contentspage index.html
|
||||
\page quick-components.html
|
||||
\if defined(qtdesignstudio)
|
||||
\previouspage studio-prototyping.html
|
||||
\previouspage quick-uis.html
|
||||
\else
|
||||
\previouspage creator-using-qt-quick-designer.html
|
||||
\endif
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2019 The Qt Company Ltd.
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Creator documentation.
|
||||
@@ -34,11 +34,7 @@
|
||||
\contentspage index.html
|
||||
\page creator-quick-ui-forms.html
|
||||
\previouspage qtquick-annotations.html
|
||||
\if defined(qtdesignstudio)
|
||||
\nextpage creator-live-preview.html
|
||||
\else
|
||||
\nextpage creator-qml-modules-with-plugins.html
|
||||
\endif
|
||||
\nextpage qtquick-adding-dynamics.html
|
||||
|
||||
\title Qt Quick UI Forms
|
||||
|
||||
|
@@ -4,10 +4,10 @@ import qbs.FileInfo
|
||||
import "qtc.js" as HelperFunctions
|
||||
|
||||
Module {
|
||||
property string qtcreator_display_version: '4.12.0'
|
||||
property string qtcreator_display_version: '4.12.1'
|
||||
property string ide_version_major: '4'
|
||||
property string ide_version_minor: '12'
|
||||
property string ide_version_release: '0'
|
||||
property string ide_version_release: '1'
|
||||
property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.'
|
||||
+ ide_version_release
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
QTCREATOR_VERSION = 4.12.0
|
||||
QTCREATOR_VERSION = 4.12.1
|
||||
QTCREATOR_COMPAT_VERSION = 4.12.0
|
||||
QTCREATOR_DISPLAY_VERSION = 4.12.0
|
||||
QTCREATOR_DISPLAY_VERSION = 4.12.1
|
||||
QTCREATOR_COPYRIGHT_YEAR = 2020
|
||||
BINARY_ARTIFACTS_BRANCH = 4.12
|
||||
|
||||
|
@@ -1,25 +1,42 @@
|
||||
set(template_directories android cplusplus debugger glsl modeleditor qml qmldesigner
|
||||
qmlicons qml-type-descriptions schemes scripts snippets styles templates themes welcomescreen)
|
||||
set(resource_directories
|
||||
android
|
||||
cplusplus
|
||||
debugger
|
||||
glsl
|
||||
indexer_preincludes
|
||||
modeleditor
|
||||
qml
|
||||
qmldesigner
|
||||
qmlicons
|
||||
qml-type-descriptions
|
||||
schemes
|
||||
snippets
|
||||
styles
|
||||
templates
|
||||
themes
|
||||
)
|
||||
|
||||
if (APPLE)
|
||||
set(resource_directories ${resource_directories} scripts)
|
||||
endif()
|
||||
|
||||
add_custom_target(copy_share_to_builddir ALL
|
||||
COMMENT Copy files into build directory
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
foreach(dir IN ITEMS ${template_directories})
|
||||
# copy resource directories during build
|
||||
foreach(dir IN ITEMS ${resource_directories})
|
||||
add_custom_command(TARGET copy_share_to_builddir POST_BUILD
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${dir}"
|
||||
"${PROJECT_BINARY_DIR}/${IDE_DATA_PATH}/${dir}"
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
COMMENT Copy files into build directory
|
||||
COMMENT Copy resource directories into build directory
|
||||
VERBATIM
|
||||
)
|
||||
endforeach()
|
||||
|
||||
install(DIRECTORY ${template_directories} DESTINATION "${IDE_DATA_PATH}")
|
||||
install(
|
||||
FILES indexer_preincludes/qglobal.h indexer_preincludes/windows.h
|
||||
DESTINATION "${IDE_DATA_PATH}/indexer_preincludes"
|
||||
)
|
||||
# create install rule for resource directories
|
||||
install(DIRECTORY ${resource_directories} DESTINATION "${IDE_DATA_PATH}")
|
||||
|
||||
add_subdirectory(translations)
|
||||
|
@@ -283,7 +283,8 @@ def qdump__std__map(d, value):
|
||||
return
|
||||
|
||||
# stuff is actually (color, pad) with 'I@', but we can save cycles/
|
||||
(compare, stuff, parent, left, right, size) = value.split('pppppp')
|
||||
(compare, stuff, parent, left, right) = value.split('ppppp')
|
||||
size = value["_M_t"]["_M_impl"]["_M_node_count"].integer()
|
||||
d.check(0 <= size and size <= 100 * 1000 * 1000)
|
||||
d.putItemCount(size)
|
||||
|
||||
|
@@ -38,6 +38,10 @@ StudioControls.ComboBox {
|
||||
enum ValueType { String, Integer, Enum }
|
||||
property int valueType: ComboBox.ValueType.Enum
|
||||
|
||||
onModelChanged: colorLogic.invalidate()
|
||||
|
||||
// This is available in all editors.
|
||||
|
||||
onValueTypeChanged: {
|
||||
if (comboBox.valueType === ComboBox.ValueType.Integer)
|
||||
comboBox.useInteger = true
|
||||
@@ -97,28 +101,34 @@ StudioControls.ComboBox {
|
||||
comboBox.valueFromBackendChanged()
|
||||
} else {
|
||||
switch (comboBox.valueType) {
|
||||
case ComboBox.ValueType.String:
|
||||
if (comboBox.currentText !== comboBox.backendValue.value)
|
||||
comboBox.currentText = comboBox.backendValue.value
|
||||
break
|
||||
case ComboBox.ValueType.Integer:
|
||||
if (comboBox.currentIndex !== comboBox.backendValue.value)
|
||||
comboBox.currentIndex = comboBox.backendValue.value
|
||||
break
|
||||
case ComboBox.ValueType.Enum:
|
||||
default:
|
||||
var enumString = comboBox.backendValue.enumeration
|
||||
|
||||
if (enumString === "")
|
||||
enumString = comboBox.backendValue.value
|
||||
|
||||
var index = comboBox.find(enumString)
|
||||
|
||||
case ComboBox.ValueType.String:
|
||||
if (comboBox.currentText !== comboBox.backendValue.value) {
|
||||
var index = comboBox.find(comboBox.backendValue.value)
|
||||
if (index < 0)
|
||||
index = 0
|
||||
|
||||
if (index !== comboBox.currentIndex)
|
||||
comboBox.currentIndex = index
|
||||
}
|
||||
break
|
||||
case ComboBox.ValueType.Integer:
|
||||
if (comboBox.currentIndex !== comboBox.backendValue.value)
|
||||
comboBox.currentIndex = comboBox.backendValue.value
|
||||
break
|
||||
case ComboBox.ValueType.Enum:
|
||||
default:
|
||||
var enumString = comboBox.backendValue.enumeration
|
||||
|
||||
if (enumString === "")
|
||||
enumString = comboBox.backendValue.value
|
||||
|
||||
index = comboBox.find(enumString)
|
||||
|
||||
if (index < 0)
|
||||
index = 0
|
||||
|
||||
if (index !== comboBox.currentIndex)
|
||||
comboBox.currentIndex = index
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,15 +147,15 @@ StudioControls.ComboBox {
|
||||
return
|
||||
|
||||
switch (comboBox.valueType) {
|
||||
case ComboBox.ValueType.String:
|
||||
comboBox.backendValue.value = comboBox.currentText
|
||||
break
|
||||
case ComboBox.ValueType.Integer:
|
||||
comboBox.backendValue.value = comboBox.currentIndex
|
||||
break
|
||||
case ComboBox.ValueType.Enum:
|
||||
default:
|
||||
comboBox.backendValue.setEnumeration(comboBox.scope, comboBox.currentText)
|
||||
case ComboBox.ValueType.String:
|
||||
comboBox.backendValue.value = comboBox.currentText
|
||||
break
|
||||
case ComboBox.ValueType.Integer:
|
||||
comboBox.backendValue.value = comboBox.currentIndex
|
||||
break
|
||||
case ComboBox.ValueType.Enum:
|
||||
default:
|
||||
comboBox.backendValue.setEnumeration(comboBox.scope, comboBox.currentText)
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -215,6 +215,7 @@ namespace ADS
|
||||
DockManager *m_dockManager = nullptr;
|
||||
bool m_updateTitleBarButtons = false;
|
||||
DockWidgetAreas m_allowedAreas = AllDockAreas;
|
||||
QSize m_minSizeHint;
|
||||
|
||||
/**
|
||||
* Private data constructor
|
||||
@@ -264,6 +265,22 @@ namespace ADS
|
||||
* Udpates the enable state of the close and detach button
|
||||
*/
|
||||
void updateTitleBarButtonStates();
|
||||
|
||||
/**
|
||||
* Scans all contained dock widgets for the max. minimum size hint
|
||||
*/
|
||||
void updateMinimumSizeHint()
|
||||
{
|
||||
m_minSizeHint = QSize();
|
||||
for (int i = 0; i < m_contentsLayout->count(); ++i)
|
||||
{
|
||||
auto widget = m_contentsLayout->widget(i);
|
||||
m_minSizeHint.setHeight(qMax(m_minSizeHint.height(),
|
||||
widget->minimumSizeHint().height()));
|
||||
m_minSizeHint.setWidth(qMax(m_minSizeHint.width(),
|
||||
widget->minimumSizeHint().width()));
|
||||
}
|
||||
}
|
||||
};
|
||||
// struct DockAreaWidgetPrivate
|
||||
|
||||
@@ -349,6 +366,10 @@ namespace ADS
|
||||
d->tabBar()->blockSignals(false);
|
||||
tabWidget->setVisible(!dockWidget->isClosed());
|
||||
dockWidget->setProperty(INDEX_PROPERTY, index);
|
||||
d->m_minSizeHint.setHeight(qMax(d->m_minSizeHint.height(),
|
||||
dockWidget->minimumSizeHint().height()));
|
||||
d->m_minSizeHint.setWidth(qMax(d->m_minSizeHint.width(),
|
||||
dockWidget->minimumSizeHint().width()));
|
||||
if (activate) {
|
||||
setCurrentIndex(index);
|
||||
}
|
||||
@@ -381,6 +402,7 @@ namespace ADS
|
||||
|
||||
d->updateTitleBarButtonStates();
|
||||
updateTitleBarVisibility();
|
||||
d->updateMinimumSizeHint();
|
||||
auto topLevelDockWidget = dockContainerWidget->topLevelDockWidget();
|
||||
if (topLevelDockWidget) {
|
||||
topLevelDockWidget->emitTopLevelChanged(true);
|
||||
@@ -683,4 +705,9 @@ namespace ADS
|
||||
|
||||
DockAreaTitleBar *DockAreaWidget::titleBar() const { return d->m_titleBar; }
|
||||
|
||||
QSize DockAreaWidget::minimumSizeHint() const
|
||||
{
|
||||
return d->m_minSizeHint.isValid() ? d->m_minSizeHint : Super::minimumSizeHint();
|
||||
}
|
||||
|
||||
} // namespace ADS
|
||||
|
@@ -291,6 +291,13 @@ public:
|
||||
*/
|
||||
void closeOtherAreas();
|
||||
|
||||
/**
|
||||
* Returns the largest minimumSizeHint() of the dock widgets in this
|
||||
* area.
|
||||
* The minimum size hint is updated if a dock widget is removed or added.
|
||||
*/
|
||||
virtual QSize minimumSizeHint() const override;
|
||||
|
||||
signals:
|
||||
/**
|
||||
* This signal is emitted when user clicks on a tab at an index.
|
||||
|
@@ -83,6 +83,7 @@ namespace ADS
|
||||
QSize m_toolBarIconSizeFloating = QSize(24, 24);
|
||||
bool m_isFloatingTopLevel = false;
|
||||
QList<QAction *> m_titleBarActions;
|
||||
DockWidget::eMinimumSizeHintMode m_minimumSizeHintMode = DockWidget::MinimumSizeHintFromDockWidget;
|
||||
|
||||
/**
|
||||
* Private data constructor
|
||||
@@ -317,6 +318,11 @@ namespace ADS
|
||||
}
|
||||
}
|
||||
|
||||
void DockWidget::setMinimumSizeHintMode(eMinimumSizeHintMode mode)
|
||||
{
|
||||
d->m_minimumSizeHintMode = mode;
|
||||
}
|
||||
|
||||
void DockWidget::toggleView(bool open)
|
||||
{
|
||||
// If the toggle view action mode is ActionModeShow, then Open is always
|
||||
@@ -545,7 +551,13 @@ namespace ADS
|
||||
|
||||
void DockWidget::setClosedState(bool closed) { d->m_closed = closed; }
|
||||
|
||||
QSize DockWidget::minimumSizeHint() const { return QSize(60, 40); }
|
||||
QSize DockWidget::minimumSizeHint() const
|
||||
{
|
||||
if (d->m_minimumSizeHintMode == DockWidget::MinimumSizeHintFromDockWidget || !d->m_widget)
|
||||
return QSize(60, 40);
|
||||
else
|
||||
return d->m_widget->minimumSizeHint();
|
||||
}
|
||||
|
||||
void DockWidget::setFloating()
|
||||
{
|
||||
@@ -587,6 +599,7 @@ namespace ADS
|
||||
floatingWidget->hide();
|
||||
}
|
||||
deleteDockWidget();
|
||||
emit closed();
|
||||
} else {
|
||||
toggleView(false);
|
||||
}
|
||||
|
@@ -184,6 +184,17 @@ public:
|
||||
*/
|
||||
enum eInsertMode { AutoScrollArea, ForceScrollArea, ForceNoScrollArea };
|
||||
|
||||
/**
|
||||
* The mode of the minimumSizeHint() that is returned by the DockWidget
|
||||
* minimumSizeHint() function.
|
||||
* To ensure, that a dock widget does not block resizing, the dock widget
|
||||
* reimplements minimumSizeHint() function to return a very small minimum
|
||||
* size hint. If you would like to adhere the minimumSizeHint() from the
|
||||
* content widget, the set the minimumSizeHintMode() to
|
||||
* MinimumSizeHintFromContent.
|
||||
*/
|
||||
enum eMinimumSizeHintMode { MinimumSizeHintFromDockWidget, MinimumSizeHintFromContent };
|
||||
|
||||
/**
|
||||
* This mode configures the behavior of the toggle view action.
|
||||
* If the mode if ActionModeToggle, then the toggle view action is
|
||||
@@ -218,7 +229,8 @@ public:
|
||||
virtual ~DockWidget() override;
|
||||
|
||||
/**
|
||||
* We return a fixed minimum size hint for all dock widgets
|
||||
* We return a fixed minimum size hint or the size hint of the content
|
||||
* widget if minimum size hint mode is MinimumSizeHintFromContent
|
||||
*/
|
||||
virtual QSize minimumSizeHint() const override;
|
||||
|
||||
@@ -327,6 +339,13 @@ public:
|
||||
*/
|
||||
void setToggleViewActionMode(eToggleViewActionMode mode);
|
||||
|
||||
/**
|
||||
* Configures the minimum size hint that is returned by the
|
||||
* minimumSizeHint() function.
|
||||
* \see eMinimumSizeHintMode for a detailed description
|
||||
*/
|
||||
void setMinimumSizeHintMode(eMinimumSizeHintMode mode);
|
||||
|
||||
/**
|
||||
* Sets the dock widget icon that is shown in tabs and in toggle view
|
||||
* actions
|
||||
@@ -339,13 +358,10 @@ public:
|
||||
QIcon icon() const;
|
||||
|
||||
/**
|
||||
* If the WithToolBar layout flag is enabled, then this function returns
|
||||
* the dock widget toolbar. If the flag is disabled, the function returns
|
||||
* a nullptr.
|
||||
* This function returns the dock widget top tool bar.
|
||||
* If no toolbar is assigned, this function returns nullptr. To get a valid
|
||||
* toolbar you either need to create a default empty toolbar via
|
||||
* createDefaultToolBar() function or you need to assign you custom
|
||||
* createDefaultToolBar() function or you need to assign your custom
|
||||
* toolbar via setToolBar().
|
||||
*/
|
||||
QToolBar *toolBar() const;
|
||||
|
@@ -73,6 +73,7 @@ namespace ADS
|
||||
QPoint m_dragStartMousePosition;
|
||||
DockContainerWidget *m_dropContainer = nullptr;
|
||||
DockAreaWidget *m_singleDockArea = nullptr;
|
||||
QPoint m_dragStartPos;
|
||||
QWidget *m_mouseEventHandler = nullptr;
|
||||
FloatingWidgetTitleBar *m_titleBar = nullptr;
|
||||
|
||||
@@ -107,25 +108,30 @@ namespace ADS
|
||||
q->setWindowTitle(text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reflect the current dock widget title in the floating widget windowTitle()
|
||||
* depending on the DockManager::FloatingContainerHasWidgetTitle flag
|
||||
*/
|
||||
void reflectCurrentWidget(DockWidget *currentWidget)
|
||||
{
|
||||
// reflect CurrentWidget's title if configured to do so, otherwise display application name as window title
|
||||
if (testConfigFlag(DockManager::FloatingContainerHasWidgetTitle)) {
|
||||
if (testConfigFlag(DockManager::FloatingContainerHasWidgetTitle))
|
||||
setWindowTitle(currentWidget->windowTitle());
|
||||
} else {
|
||||
else
|
||||
setWindowTitle(QApplication::applicationDisplayName());
|
||||
}
|
||||
|
||||
// reflect CurrentWidget's icon if configured to do so, otherwise display application icon as window icon
|
||||
QIcon CurrentWidgetIcon = currentWidget->icon();
|
||||
if (testConfigFlag(DockManager::FloatingContainerHasWidgetIcon)
|
||||
&& !CurrentWidgetIcon.isNull())
|
||||
{
|
||||
// reflect currentWidget's icon if configured to do so, otherwise display application icon as window icon
|
||||
QIcon currentWidgetIcon = currentWidget->icon();
|
||||
if (testConfigFlag(DockManager::FloatingContainerHasWidgetIcon) && !currentWidgetIcon.isNull())
|
||||
q->setWindowIcon(currentWidget->icon());
|
||||
} else {
|
||||
else
|
||||
q->setWindowIcon(QApplication::windowIcon());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles escape key press when dragging around the floating widget
|
||||
*/
|
||||
void handleEscapeKey();
|
||||
}; // class FloatingDockContainerPrivate
|
||||
|
||||
FloatingDockContainerPrivate::FloatingDockContainerPrivate(FloatingDockContainer *parent)
|
||||
@@ -135,17 +141,15 @@ namespace ADS
|
||||
void FloatingDockContainerPrivate::titleMouseReleaseEvent()
|
||||
{
|
||||
setState(DraggingInactive);
|
||||
if (!m_dropContainer) {
|
||||
if (!m_dropContainer)
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_dockManager->dockAreaOverlay()->dropAreaUnderCursor() != InvalidDockWidgetArea
|
||||
|| m_dockManager->containerOverlay()->dropAreaUnderCursor() != InvalidDockWidgetArea) {
|
||||
// Resize the floating widget to the size of the highlighted drop area rectangle
|
||||
DockOverlay *overlay = m_dockManager->containerOverlay();
|
||||
if (!overlay->dropOverlayRect().isValid()) {
|
||||
if (!overlay->dropOverlayRect().isValid())
|
||||
overlay = m_dockManager->dockAreaOverlay();
|
||||
}
|
||||
|
||||
QRect rect = overlay->dropOverlayRect();
|
||||
int frameWidth = (q->frameSize().width() - q->rect().width()) / 2;
|
||||
@@ -165,26 +169,22 @@ namespace ADS
|
||||
|
||||
void FloatingDockContainerPrivate::updateDropOverlays(const QPoint &globalPosition)
|
||||
{
|
||||
if (!q->isVisible() || !m_dockManager) {
|
||||
if (!q->isVisible() || !m_dockManager)
|
||||
return;
|
||||
}
|
||||
|
||||
auto containers = m_dockManager->dockContainers();
|
||||
DockContainerWidget *topContainer = nullptr;
|
||||
for (auto containerWidget : containers) {
|
||||
if (!containerWidget->isVisible()) {
|
||||
if (!containerWidget->isVisible())
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m_dockContainer == containerWidget) {
|
||||
if (m_dockContainer == containerWidget)
|
||||
continue;
|
||||
}
|
||||
|
||||
QPoint mappedPos = containerWidget->mapFromGlobal(globalPosition);
|
||||
if (containerWidget->rect().contains(mappedPos)) {
|
||||
if (!topContainer || containerWidget->isInFrontOf(topContainer)) {
|
||||
if (!topContainer || containerWidget->isInFrontOf(topContainer))
|
||||
topContainer = containerWidget;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,6 +223,14 @@ namespace ADS
|
||||
}
|
||||
}
|
||||
|
||||
void FloatingDockContainerPrivate::handleEscapeKey()
|
||||
{
|
||||
qCInfo(adsLog) << Q_FUNC_INFO;
|
||||
setState(DraggingInactive);
|
||||
m_dockManager->containerOverlay()->hideOverlay();
|
||||
m_dockManager->dockAreaOverlay()->hideOverlay();
|
||||
}
|
||||
|
||||
FloatingDockContainer::FloatingDockContainer(DockManager *dockManager)
|
||||
: FloatingWidgetBaseType(dockManager)
|
||||
, d(new FloatingDockContainerPrivate(this))
|
||||
@@ -268,9 +276,8 @@ namespace ADS
|
||||
d->m_titleBar->enableCloseButton(isClosable());
|
||||
|
||||
auto dw = topLevelDockWidget();
|
||||
if (dw) {
|
||||
if (dw)
|
||||
dw->emitTopLevelChanged(true);
|
||||
}
|
||||
}
|
||||
|
||||
FloatingDockContainer::FloatingDockContainer(DockWidget *dockWidget)
|
||||
@@ -281,17 +288,16 @@ namespace ADS
|
||||
d->m_titleBar->enableCloseButton(isClosable());
|
||||
|
||||
auto dw = topLevelDockWidget();
|
||||
if (dw) {
|
||||
if (dw)
|
||||
dw->emitTopLevelChanged(true);
|
||||
}
|
||||
}
|
||||
|
||||
FloatingDockContainer::~FloatingDockContainer()
|
||||
{
|
||||
qCInfo(adsLog) << Q_FUNC_INFO;
|
||||
if (d->m_dockManager) {
|
||||
if (d->m_dockManager)
|
||||
d->m_dockManager->removeFloatingWidget(this);
|
||||
}
|
||||
|
||||
delete d;
|
||||
}
|
||||
|
||||
@@ -312,6 +318,10 @@ namespace ADS
|
||||
QWidget::moveEvent(event);
|
||||
switch (d->m_draggingState) {
|
||||
case DraggingMousePressed:
|
||||
// TODO Is checking for windows only sufficient or has macOS also problems?
|
||||
if (Utils::HostOsInfo::isWindowsHost())
|
||||
QApplication::instance()->installEventFilter(this);
|
||||
|
||||
d->setState(DraggingFloatingWidget);
|
||||
d->updateDropOverlays(QCursor::pos());
|
||||
break;
|
||||
@@ -340,9 +350,8 @@ namespace ADS
|
||||
if (isClosable()) {
|
||||
auto dw = topLevelDockWidget();
|
||||
if (dw && dw->features().testFlag(DockWidget::DockWidgetDeleteOnClose)) {
|
||||
if (!dw->closeDockWidgetInternal()) {
|
||||
if (!dw->closeDockWidgetInternal())
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this->hide();
|
||||
@@ -352,19 +361,16 @@ namespace ADS
|
||||
void FloatingDockContainer::hideEvent(QHideEvent *event)
|
||||
{
|
||||
Super::hideEvent(event);
|
||||
if (event->spontaneous()) {
|
||||
if (event->spontaneous())
|
||||
return;
|
||||
}
|
||||
|
||||
// Prevent toogleView() events during restore state
|
||||
if (d->m_dockManager->isRestoringState()) {
|
||||
if (d->m_dockManager->isRestoringState())
|
||||
return;
|
||||
}
|
||||
|
||||
for (auto dockArea : d->m_dockContainer->openedDockAreas()) {
|
||||
for (auto dockWidget : dockArea->openedDockWidgets()) {
|
||||
for (auto dockWidget : dockArea->openedDockWidgets())
|
||||
dockWidget->toggleView(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -379,22 +385,21 @@ namespace ADS
|
||||
// QEvent::NonClientAreaMouseButtonPress return the wrong mouse button
|
||||
// The event always returns Qt::RightButton even if the left button is clicked.
|
||||
// It is really great to work around the whole NonClientMouseArea bugs
|
||||
|
||||
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 2))
|
||||
if (event->type()
|
||||
== QEvent::
|
||||
NonClientAreaMouseButtonPress /*&& QGuiApplication::mouseButtons().testFlag(Qt::LeftButton)*/) {
|
||||
qCInfo(adsLog) << Q_FUNC_INFO << "QEvent::NonClientAreaMouseButtonPress"
|
||||
<< event->type();
|
||||
d->setState(DraggingMousePressed);
|
||||
}
|
||||
if (event->type() == QEvent::NonClientAreaMouseButtonPress
|
||||
/*&& QGuiApplication::mouseButtons().testFlag(Qt::LeftButton)*/)
|
||||
#else
|
||||
if (event->type() == QEvent::NonClientAreaMouseButtonPress
|
||||
&& QGuiApplication::mouseButtons().testFlag(Qt::LeftButton)) {
|
||||
&& QGuiApplication::mouseButtons().testFlag(Qt::LeftButton))
|
||||
#endif
|
||||
{
|
||||
qCInfo(adsLog) << Q_FUNC_INFO << "QEvent::NonClientAreaMouseButtonPress"
|
||||
<< event->type();
|
||||
d->m_dragStartPos = pos();
|
||||
d->setState(DraggingMousePressed);
|
||||
}
|
||||
#endif
|
||||
} break;
|
||||
|
||||
case DraggingMousePressed:
|
||||
@@ -440,6 +445,37 @@ namespace ADS
|
||||
return QWidget::event(event);
|
||||
}
|
||||
|
||||
bool FloatingDockContainer::eventFilter(QObject *watched, QEvent *event)
|
||||
{
|
||||
Q_UNUSED(watched);
|
||||
// I have not found a way to detect non client area key press events to
|
||||
// handle escape key presses. On Windows, if the escape key is pressed while
|
||||
// dragging around a widget, the widget position is reset to its start position
|
||||
// which in turn generates a QEvent::NonClientAreaMouseButtonRelease event
|
||||
// if the mouse is outside of the widget after the move to its initial position
|
||||
// or a QEvent::MouseButtonRelease event, if the mouse is inside of the widget
|
||||
// after the position has been reset.
|
||||
// So we can install an event filter on the application to get these events
|
||||
// here to properly cancel dragging and hide the overlays.
|
||||
// If we are in DraggingFloatingWidget state, it means the widget
|
||||
// has been dragged already but if the position is the same like
|
||||
// the start position, then this is an indication that the escape
|
||||
// key has been pressed.
|
||||
if (event->type() == QEvent::MouseButtonRelease || event->type() == QEvent::NonClientAreaMouseButtonRelease)
|
||||
{
|
||||
qCInfo(adsLog) << Q_FUNC_INFO << "QEvent::MouseButtonRelease or QEvent::NonClientAreaMouseButtonRelease"
|
||||
<< "d->m_draggingState " << d->m_draggingState;
|
||||
QApplication::instance()->removeEventFilter(this);
|
||||
if (d->m_dragStartPos == pos())
|
||||
{
|
||||
d->handleEscapeKey();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void FloatingDockContainer::startFloating(const QPoint &dragStartMousePos,
|
||||
const QSize &size,
|
||||
eDragState dragState,
|
||||
|
@@ -188,6 +188,7 @@ protected: // reimplements QWidget
|
||||
virtual void closeEvent(QCloseEvent *event) override;
|
||||
virtual void hideEvent(QHideEvent *event) override;
|
||||
virtual void showEvent(QShowEvent *event) override;
|
||||
virtual bool eventFilter(QObject *watched, QEvent *event) override;
|
||||
|
||||
public:
|
||||
using Super = QWidget;
|
||||
|
@@ -8,6 +8,8 @@ add_qtc_library(ClangSupport
|
||||
CLANG_RESOURCE_DIR="${IDE_LIBEXEC_PATH}/clang/lib/clang/${CLANG_VERSION}/include"
|
||||
CLANG_BINDIR="${IDE_LIBEXEC_PATH}/clang/bin"
|
||||
DEFINES CLANGSUPPORT_BUILD_LIB
|
||||
PUBLIC_INCLUDES
|
||||
"${CMAKE_CURRENT_LIST_DIR}"
|
||||
SOURCES
|
||||
alivemessage.cpp alivemessage.h
|
||||
annotationsmessage.cpp annotationsmessage.h
|
||||
|
@@ -3,6 +3,8 @@ add_qtc_library(Modeling
|
||||
DEPENDS Qt5::Widgets Utils
|
||||
PUBLIC_DEPENDS OptionalSvg
|
||||
INCLUDES qtserialization/inc
|
||||
PUBLIC_INCLUDES
|
||||
"${CMAKE_CURRENT_LIST_DIR}"
|
||||
SOURCES
|
||||
qmt/config/configcontroller.cpp qmt/config/configcontroller.h
|
||||
qmt/config/sourcepos.cpp qmt/config/sourcepos.h
|
||||
|
@@ -4,7 +4,9 @@ add_qtc_library(Sqlite
|
||||
SQLITE_ENABLE_UNLOCK_NOTIFY SQLITE_ENABLE_COLUMN_METADATA
|
||||
BUILD_SQLITE_LIBRARY
|
||||
DEPENDS Qt5::Core Threads::Threads ${CMAKE_DL_LIBS}
|
||||
PUBLIC_INCLUDES ../3rdparty/sqlite
|
||||
PUBLIC_INCLUDES
|
||||
"${CMAKE_CURRENT_LIST_DIR}"
|
||||
../3rdparty/sqlite
|
||||
SOURCES
|
||||
../3rdparty/sqlite/sqlite3.c
|
||||
createtablesqlstatementbuilder.cpp createtablesqlstatementbuilder.h
|
||||
|
@@ -33,6 +33,7 @@
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
#include <QDebug>
|
||||
#include <QRegularExpression>
|
||||
#include <QTextBlock>
|
||||
#include <QTextCursor>
|
||||
#include <QTextDocument>
|
||||
@@ -81,7 +82,7 @@ QString DoxygenGenerator::generate(QTextCursor cursor,
|
||||
const QTextCursor initialCursor = cursor;
|
||||
|
||||
const QChar &c = cursor.document()->characterAt(cursor.position());
|
||||
if (!c.isLetter() && c != QLatin1Char('_'))
|
||||
if (!c.isLetter() && c != QLatin1Char('_') && c != QLatin1Char('['))
|
||||
return QString();
|
||||
|
||||
// Try to find what would be the declaration we are interested in.
|
||||
@@ -109,8 +110,12 @@ QString DoxygenGenerator::generate(QTextCursor cursor,
|
||||
|
||||
QString declCandidate = cursor.selectedText();
|
||||
|
||||
if (declCandidate.startsWith(QLatin1String("Q_INVOKABLE")))
|
||||
declCandidate = declCandidate.mid(11);
|
||||
// remove attributes like [[nodiscard]] because
|
||||
// Document::Ptr::parse(Document::ParseDeclaration) fails on attributes
|
||||
static QRegularExpression attribute("\\[\\s*\\[.*\\]\\s*\\]");
|
||||
declCandidate.replace(attribute, "");
|
||||
|
||||
declCandidate.replace("Q_INVOKABLE", "");
|
||||
|
||||
declCandidate.replace(QChar::ParagraphSeparator, QLatin1Char('\n'));
|
||||
|
||||
|
@@ -118,6 +118,7 @@ QString simplifyType(const QString &typeIn)
|
||||
type.remove(0, 7);
|
||||
|
||||
type.replace("short int", "short");
|
||||
type.replace("long long int", "long long");
|
||||
|
||||
const bool isLibCpp = type.contains("std::__1");
|
||||
type.replace("std::__cxx11::", "std::");
|
||||
|
@@ -32,9 +32,12 @@ const char DEVICE_TYPE[] = "McuSupport.DeviceType";
|
||||
const char DEVICE_ID[] = "McuSupport.Device";
|
||||
const char RUNCONFIGURATION[] = "McuSupport.RunConfiguration";
|
||||
const char SETTINGS_ID[] = "CC.McuSupport.Configuration";
|
||||
|
||||
const char KIT_MCUTARGET_VENDOR_KEY[] = "McuSupport.McuTargetVendor";
|
||||
const char KIT_MCUTARGET_MODEL_KEY[] = "McuSupport.McuTargetModel";
|
||||
const char KIT_MCUTARGET_SDKVERSION_KEY[] = "McuSupport.McuTargetSdkVersion";
|
||||
const char KIT_MCUTARGET_KITVERSION_KEY[] = "McuSupport.McuTargetKitVersion";
|
||||
const char KIT_MCUTARGET_COLORDEPTH_KEY[] = "McuSupport.McuTargetColorDepth";
|
||||
|
||||
const char SETTINGS_GROUP[] = "McuSupport";
|
||||
const char SETTINGS_KEY_PACKAGE_PREFIX[] = "Package_";
|
||||
|
@@ -61,6 +61,8 @@
|
||||
namespace McuSupport {
|
||||
namespace Internal {
|
||||
|
||||
static const int KIT_VERSION = 2; // Bumps up whenever details in Kit creation change
|
||||
|
||||
static QString packagePathFromSettings(const QString &settingsKey, const QString &defaultPath = {})
|
||||
{
|
||||
QSettings *s = Core::ICore::settings();
|
||||
@@ -319,13 +321,13 @@ QVariant McuToolChainPackage::debuggerId() const
|
||||
}
|
||||
|
||||
McuTarget::McuTarget(const QString &vendor, const QString &platform,
|
||||
const QVector<McuPackage *> &packages, McuToolChainPackage *toolChainPackage)
|
||||
const QVector<McuPackage *> &packages,
|
||||
const McuToolChainPackage *toolChainPackage)
|
||||
: m_vendor(vendor)
|
||||
, m_qulPlatform(platform)
|
||||
, m_packages(packages)
|
||||
, m_toolChainPackage(toolChainPackage)
|
||||
{
|
||||
QTC_CHECK(m_toolChainPackage == nullptr || m_packages.contains(m_toolChainPackage));
|
||||
}
|
||||
|
||||
QString McuTarget::vendor() const
|
||||
@@ -338,7 +340,7 @@ QVector<McuPackage *> McuTarget::packages() const
|
||||
return m_packages;
|
||||
}
|
||||
|
||||
McuToolChainPackage *McuTarget::toolChainPackage() const
|
||||
const McuToolChainPackage *McuTarget::toolChainPackage() const
|
||||
{
|
||||
return m_toolChainPackage;
|
||||
}
|
||||
@@ -467,16 +469,18 @@ static void setKitProperties(const QString &kitName, ProjectExplorer::Kit *k,
|
||||
const McuTarget* mcuTarget)
|
||||
{
|
||||
using namespace ProjectExplorer;
|
||||
using namespace Constants;
|
||||
|
||||
k->setUnexpandedDisplayName(kitName);
|
||||
k->setValue(Constants::KIT_MCUTARGET_VENDOR_KEY, mcuTarget->vendor());
|
||||
k->setValue(Constants::KIT_MCUTARGET_MODEL_KEY, mcuTarget->qulPlatform());
|
||||
k->setValue(Constants::KIT_MCUTARGET_SDKVERSION_KEY,
|
||||
McuSupportOptions::supportedQulVersion().toString());
|
||||
k->setValue(KIT_MCUTARGET_VENDOR_KEY, mcuTarget->vendor());
|
||||
k->setValue(KIT_MCUTARGET_MODEL_KEY, mcuTarget->qulPlatform());
|
||||
k->setValue(KIT_MCUTARGET_COLORDEPTH_KEY, mcuTarget->colorDepth());
|
||||
k->setValue(KIT_MCUTARGET_SDKVERSION_KEY, McuSupportOptions::supportedQulVersion().toString());
|
||||
k->setValue(KIT_MCUTARGET_KITVERSION_KEY, KIT_VERSION);
|
||||
k->setAutoDetected(true);
|
||||
k->makeSticky();
|
||||
if (mcuTarget->toolChainPackage()->type() == McuToolChainPackage::TypeDesktop)
|
||||
k->setDeviceTypeForIcon(Constants::DEVICE_TYPE);
|
||||
k->setDeviceTypeForIcon(DEVICE_TYPE);
|
||||
QSet<Core::Id> irrelevant = {
|
||||
SysRootKitAspect::id(),
|
||||
QtSupport::QtKitAspect::id()
|
||||
@@ -520,7 +524,7 @@ static void setKitDevice(ProjectExplorer::Kit *k, const McuTarget* mcuTarget)
|
||||
}
|
||||
|
||||
static void setKitEnvironment(ProjectExplorer::Kit *k, const McuTarget* mcuTarget,
|
||||
McuPackage *qtForMCUsSdkPackage)
|
||||
const McuPackage *qtForMCUsSdkPackage)
|
||||
{
|
||||
using namespace ProjectExplorer;
|
||||
|
||||
@@ -534,18 +538,17 @@ static void setKitEnvironment(ProjectExplorer::Kit *k, const McuTarget* mcuTarge
|
||||
&& !CMakeProjectManager::CMakeToolManager::defaultCMakeTool()->hasFileApi())
|
||||
pathAdditions.append(QDir::toNativeSeparators(qtForMCUsSdkPackage->path() + "/bin"));
|
||||
|
||||
QVector<McuPackage *> packagesIncludingSdk;
|
||||
packagesIncludingSdk.reserve(mcuTarget->packages().size() + 1);
|
||||
packagesIncludingSdk.append(mcuTarget->packages());
|
||||
packagesIncludingSdk.append(qtForMCUsSdkPackage);
|
||||
|
||||
for (auto package : packagesIncludingSdk) {
|
||||
auto processPackage = [&pathAdditions, &changes](const McuPackage *package) {
|
||||
if (package->addToPath())
|
||||
pathAdditions.append(QDir::toNativeSeparators(package->path()));
|
||||
if (!package->environmentVariableName().isEmpty())
|
||||
changes.append({package->environmentVariableName(),
|
||||
QDir::toNativeSeparators(package->path())});
|
||||
}
|
||||
};
|
||||
for (auto package : mcuTarget->packages())
|
||||
processPackage(package);
|
||||
processPackage(qtForMCUsSdkPackage);
|
||||
|
||||
pathAdditions.append("${Path}");
|
||||
pathAdditions.append(QDir::toNativeSeparators(Core::ICore::libexecPath() + "/clang/bin"));
|
||||
const QString path = QLatin1String(Utils::HostOsInfo().isWindowsHost() ? "Path" : "PATH");
|
||||
@@ -589,7 +592,7 @@ static void setKitQtVersionOptions(ProjectExplorer::Kit *k)
|
||||
QtSupport::QtKitAspect::setQtVersion(k, nullptr);
|
||||
}
|
||||
|
||||
QString McuSupportOptions::kitName(const McuTarget *mcuTarget) const
|
||||
QString McuSupportOptions::kitName(const McuTarget *mcuTarget)
|
||||
{
|
||||
// TODO: get version from qulSdkPackage and insert into name
|
||||
const QString colorDepth = mcuTarget->colorDepth() > 0
|
||||
@@ -604,28 +607,52 @@ QString McuSupportOptions::kitName(const McuTarget *mcuTarget) const
|
||||
.arg(supportedQulVersion().toString(), targetName, colorDepth);
|
||||
}
|
||||
|
||||
QList<ProjectExplorer::Kit *> McuSupportOptions::existingKits(const McuTarget *mcuTargt)
|
||||
QList<ProjectExplorer::Kit *> McuSupportOptions::existingKits(const McuTarget *mcuTarget)
|
||||
{
|
||||
using namespace ProjectExplorer;
|
||||
const QString mcuTargetKitName = kitName(mcuTargt);
|
||||
return Utils::filtered(KitManager::kits(), [&mcuTargetKitName](Kit *kit) {
|
||||
return kit->isAutoDetected() && kit->unexpandedDisplayName() == mcuTargetKitName;
|
||||
using namespace Constants;
|
||||
return Utils::filtered(KitManager::kits(), [mcuTarget](Kit *kit) {
|
||||
return kit->isAutoDetected()
|
||||
&& kit->value(KIT_MCUTARGET_KITVERSION_KEY) == KIT_VERSION
|
||||
&& kit->value(KIT_MCUTARGET_SDKVERSION_KEY) ==
|
||||
McuSupportOptions::supportedQulVersion().toString()
|
||||
&& (!mcuTarget || (
|
||||
kit->value(KIT_MCUTARGET_VENDOR_KEY) == mcuTarget->vendor()
|
||||
&& kit->value(KIT_MCUTARGET_MODEL_KEY) == mcuTarget->qulPlatform()
|
||||
&& kit->value(KIT_MCUTARGET_COLORDEPTH_KEY) == mcuTarget->colorDepth()
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
ProjectExplorer::Kit *McuSupportOptions::newKit(const McuTarget *mcuTarget)
|
||||
QList<ProjectExplorer::Kit *> McuSupportOptions::outdatedKits()
|
||||
{
|
||||
return Utils::filtered(ProjectExplorer::KitManager::kits(), [](ProjectExplorer::Kit *kit) {
|
||||
return kit->isAutoDetected()
|
||||
&& !kit->value(Constants::KIT_MCUTARGET_VENDOR_KEY).isNull()
|
||||
&& kit->value(Constants::KIT_MCUTARGET_KITVERSION_KEY) != KIT_VERSION;
|
||||
});
|
||||
}
|
||||
|
||||
void McuSupportOptions::removeOutdatedKits()
|
||||
{
|
||||
for (auto kit : McuSupportOptions::outdatedKits())
|
||||
ProjectExplorer::KitManager::deregisterKit(kit);
|
||||
}
|
||||
|
||||
ProjectExplorer::Kit *McuSupportOptions::newKit(const McuTarget *mcuTarget,
|
||||
const McuPackage *qtForMCUsSdk)
|
||||
{
|
||||
using namespace ProjectExplorer;
|
||||
|
||||
const auto init = [this, mcuTarget](Kit *k) {
|
||||
const auto init = [mcuTarget, qtForMCUsSdk](Kit *k) {
|
||||
KitGuard kitGuard(k);
|
||||
|
||||
setKitProperties(kitName(mcuTarget), k, mcuTarget);
|
||||
setKitDevice(k, mcuTarget);
|
||||
setKitToolchains(k, mcuTarget->toolChainPackage());
|
||||
setKitDebugger(k, mcuTarget->toolChainPackage());
|
||||
setKitEnvironment(k, mcuTarget, qtForMCUsSdkPackage);
|
||||
setKitCMakeOptions(k, mcuTarget, qtForMCUsSdkPackage->path());
|
||||
setKitEnvironment(k, mcuTarget, qtForMCUsSdk);
|
||||
setKitCMakeOptions(k, mcuTarget, qtForMCUsSdk->path());
|
||||
setKitQtVersionOptions(k);
|
||||
|
||||
k->setup();
|
||||
|
@@ -132,11 +132,11 @@ class McuTarget : public QObject
|
||||
|
||||
public:
|
||||
McuTarget(const QString &vendor, const QString &platform, const QVector<McuPackage *> &packages,
|
||||
McuToolChainPackage *toolChainPackage);
|
||||
const McuToolChainPackage *toolChainPackage);
|
||||
|
||||
QString vendor() const;
|
||||
QVector<McuPackage *> packages() const;
|
||||
McuToolChainPackage *toolChainPackage() const;
|
||||
const McuToolChainPackage *toolChainPackage() const;
|
||||
QString qulPlatform() const;
|
||||
void setColorDepth(int colorDepth);
|
||||
int colorDepth() const;
|
||||
@@ -146,7 +146,7 @@ private:
|
||||
const QString m_vendor;
|
||||
const QString m_qulPlatform;
|
||||
const QVector<McuPackage*> m_packages;
|
||||
McuToolChainPackage *m_toolChainPackage;
|
||||
const McuToolChainPackage *m_toolChainPackage;
|
||||
int m_colorDepth = -1;
|
||||
};
|
||||
|
||||
@@ -165,10 +165,12 @@ public:
|
||||
void setQulDir(const Utils::FilePath &dir);
|
||||
static Utils::FilePath qulDirFromSettings();
|
||||
|
||||
QString kitName(const McuTarget* mcuTarget) const;
|
||||
static QString kitName(const McuTarget* mcuTarget);
|
||||
|
||||
QList<ProjectExplorer::Kit *> existingKits(const McuTarget *mcuTargt);
|
||||
ProjectExplorer::Kit *newKit(const McuTarget *mcuTarget);
|
||||
static QList<ProjectExplorer::Kit *> existingKits(const McuTarget *mcuTarget);
|
||||
static QList<ProjectExplorer::Kit *> outdatedKits();
|
||||
static void removeOutdatedKits();
|
||||
static ProjectExplorer::Kit *newKit(const McuTarget *mcuTarget, const McuPackage *qtForMCUsSdk);
|
||||
void populatePackagesAndTargets();
|
||||
static void registerQchFiles();
|
||||
static void registerExamples();
|
||||
|
@@ -168,7 +168,7 @@ void McuSupportOptionsWidget::updateStatus()
|
||||
mcuTargetValid ? QString::fromLatin1(
|
||||
"A kit <b>%1</b> for the selected target can be "
|
||||
"generated. Press Apply to generate it.")
|
||||
.arg(m_options.kitName(mcuTarget))
|
||||
.arg(McuSupportOptions::kitName(mcuTarget))
|
||||
: "Provide the package paths in order to create a kit "
|
||||
"for your target.");
|
||||
}
|
||||
@@ -231,14 +231,15 @@ void McuSupportOptionsWidget::apply()
|
||||
return;
|
||||
|
||||
McuSupportOptions::registerQchFiles();
|
||||
McuSupportOptions::removeOutdatedKits();
|
||||
|
||||
const McuTarget *mcuTarget = currentMcuTarget();
|
||||
if (!mcuTarget)
|
||||
return;
|
||||
|
||||
for (auto existingKit : m_options.existingKits(mcuTarget))
|
||||
for (auto existingKit : McuSupportOptions::existingKits(mcuTarget))
|
||||
ProjectExplorer::KitManager::deregisterKit(existingKit);
|
||||
m_options.newKit(mcuTarget);
|
||||
McuSupportOptions::newKit(mcuTarget, m_options.qtForMCUsSdkPackage);
|
||||
}
|
||||
|
||||
void McuSupportOptionsWidget::populateMcuTargetsComboBox()
|
||||
@@ -246,8 +247,8 @@ void McuSupportOptionsWidget::populateMcuTargetsComboBox()
|
||||
m_options.populatePackagesAndTargets();
|
||||
m_mcuTargetsComboBox->clear();
|
||||
m_mcuTargetsComboBox->addItems(
|
||||
Utils::transform<QStringList>(m_options.mcuTargets, [this](McuTarget *t){
|
||||
return m_options.kitName(t);
|
||||
Utils::transform<QStringList>(m_options.mcuTargets, [](McuTarget *t) {
|
||||
return McuSupportOptions::kitName(t);
|
||||
}));
|
||||
updateStatus();
|
||||
}
|
||||
|
@@ -178,12 +178,12 @@ void BaseStringAspect::toMap(QVariantMap &map) const
|
||||
|
||||
FilePath BaseStringAspect::filePath() const
|
||||
{
|
||||
return FilePath::fromString(d->m_value);
|
||||
return FilePath::fromUserInput(d->m_value);
|
||||
}
|
||||
|
||||
void BaseStringAspect::setFilePath(const FilePath &val)
|
||||
{
|
||||
setValue(val.toString());
|
||||
setValue(val.toUserOutput());
|
||||
}
|
||||
|
||||
void BaseStringAspect::setLabelText(const QString &labelText)
|
||||
|
@@ -469,7 +469,7 @@ void ExecutableAspect::setPlaceHolderText(const QString &placeHolderText)
|
||||
|
||||
void ExecutableAspect::setExecutable(const FilePath &executable)
|
||||
{
|
||||
m_executable.setValue(executable.toString());
|
||||
m_executable.setFilePath(executable);
|
||||
m_executable.setShowToolTipOnLabel(true);
|
||||
}
|
||||
|
||||
|
@@ -6,7 +6,8 @@ add_qtc_plugin(QmlDesigner
|
||||
DESIGNER_CORE_LIBRARY
|
||||
IDE_LIBRARY_BASENAME=\"${IDE_LIBRARY_BASE_PATH}\"
|
||||
PUBLIC_INCLUDES
|
||||
${CMAKE_CURRENT_LIST_DIR}/designercore/include
|
||||
"${CMAKE_CURRENT_LIST_DIR}"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/designercore/include"
|
||||
PLUGIN_DEPENDS
|
||||
Core ProjectExplorer QmlJSEditor QmakeProjectManager QmlProjectManager
|
||||
QtSupport TextEditor
|
||||
@@ -155,6 +156,7 @@ extend_qtc_plugin(QmlDesigner
|
||||
|
||||
extend_qtc_plugin(QmlDesigner
|
||||
SOURCES_PREFIX ../../../share/qtcreator/qml/qmlpuppet/types
|
||||
PUBLIC_INCLUDES ../../../share/qtcreator/qml/qmlpuppet/types
|
||||
SOURCES enumeration.h
|
||||
)
|
||||
|
||||
|
@@ -78,7 +78,8 @@ QList<ModelNode> SelectionContext::selectedModelNodes() const
|
||||
|
||||
bool SelectionContext::hasSingleSelectedModelNode() const
|
||||
{
|
||||
return view()->hasSelectedModelNodes();
|
||||
return view()->hasSingleSelectedModelNode()
|
||||
&& firstSelectedModelNode().isValid();
|
||||
}
|
||||
|
||||
AbstractView *SelectionContext::view() const
|
||||
|
@@ -103,11 +103,11 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
|
||||
|
||||
m_itemViewQuickWidget->rootContext()->setContextProperties(
|
||||
QVector<QQmlContext::PropertyPair>{
|
||||
{"itemLibraryModel", QVariant::fromValue(m_itemLibraryModel.data())},
|
||||
{"itemLibraryIconWidth", m_itemIconSize.width()},
|
||||
{"itemLibraryIconHeight", m_itemIconSize.height()},
|
||||
{"rootView", QVariant::fromValue(this)},
|
||||
{"highlightColor", Utils::StyleHelper::notTooBrightHighlightColor()}
|
||||
{{"itemLibraryModel"}, QVariant::fromValue(m_itemLibraryModel.data())},
|
||||
{{"itemLibraryIconWidth"}, m_itemIconSize.width()},
|
||||
{{"itemLibraryIconHeight"}, m_itemIconSize.height()},
|
||||
{{"rootView"}, QVariant::fromValue(this)},
|
||||
{{"highlightColor"}, Utils::StyleHelper::notTooBrightHighlightColor()}
|
||||
}
|
||||
);
|
||||
|
||||
|
@@ -421,6 +421,9 @@ void NavigatorView::selectedNodesChanged(const QList<ModelNode> &/*selectedNodeL
|
||||
|
||||
void NavigatorView::updateItemSelection()
|
||||
{
|
||||
if (!isAttached())
|
||||
return;
|
||||
|
||||
QItemSelection itemSelection;
|
||||
foreach (const ModelNode &node, selectedModelNodes()) {
|
||||
const QModelIndex index = indexForModelNode(node);
|
||||
|
@@ -29,6 +29,7 @@
|
||||
|
||||
#include "propertycontainer.h"
|
||||
#include <QPointer>
|
||||
#include <QSharedDataPointer>
|
||||
|
||||
namespace QmlDesigner {
|
||||
|
||||
@@ -88,7 +89,7 @@ public:
|
||||
void addHints(const QHash<QString, QString> &hints);
|
||||
|
||||
private:
|
||||
QExplicitlySharedDataPointer<Internal::ItemLibraryEntryData> m_data;
|
||||
QSharedDataPointer<Internal::ItemLibraryEntryData> m_data;
|
||||
};
|
||||
|
||||
class QMLDESIGNERCORE_EXPORT ItemLibraryInfo : public QObject
|
||||
|
@@ -269,8 +269,11 @@ protected:
|
||||
}
|
||||
}
|
||||
|
||||
if (type != SemanticHighlighter::UnknownType)
|
||||
addUse(location, type);
|
||||
if (type != SemanticHighlighter::UnknownType) {
|
||||
// do not add uses of length 0 - this messes up highlighting (e.g. anon functions)
|
||||
if (location.length != 0)
|
||||
addUse(location, type);
|
||||
}
|
||||
}
|
||||
|
||||
void processTypeId(UiQualifiedId *typeId)
|
||||
|
@@ -4,9 +4,11 @@ endif()
|
||||
|
||||
add_qtc_library(designerintegrationv2 STATIC
|
||||
DEPENDS Qt5::Designer Qt5::Widgets
|
||||
PUBLIC_INCLUDES
|
||||
"${CMAKE_CURRENT_LIST_DIR}"
|
||||
SOURCES
|
||||
formresizer.cpp formresizer.h
|
||||
sizehandlerect.cpp sizehandlerect.h
|
||||
widgethostconstants.h
|
||||
widgethost.cpp widgethost.h
|
||||
formresizer.cpp formresizer.h
|
||||
sizehandlerect.cpp sizehandlerect.h
|
||||
widgethostconstants.h
|
||||
widgethost.cpp widgethost.h
|
||||
)
|
||||
|
@@ -18,6 +18,7 @@ add_qtc_library(shared_help STATIC
|
||||
"${PLUGIN_SOURCE_DIR}"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/shared_help_autogen/include${autogen_suffix}"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/"
|
||||
"${CMAKE_CURRENT_LIST_DIR}"
|
||||
SOURCES
|
||||
bookmarkdialog.ui
|
||||
bookmarkmanager.cpp bookmarkmanager.h
|
||||
|
@@ -3,6 +3,7 @@ add_qtc_library(clangbackend_lib STATIC
|
||||
PUBLIC_DEFINES CLANGSUPPORT_BUILD_LIB
|
||||
PUBLIC_INCLUDES
|
||||
${CLANG_INCLUDE_DIRS}
|
||||
"${CMAKE_CURRENT_LIST_DIR}"
|
||||
SOURCES
|
||||
clangasyncjob.h
|
||||
clangbackend_global.h
|
||||
|
@@ -3,6 +3,7 @@ add_qtc_library(clangpchmanagerbackend_lib STATIC
|
||||
PUBLIC_DEPENDS libclang
|
||||
PUBLIC_DEFINES CLANGSUPPORT_BUILD_LIB
|
||||
PUBLIC_INCLUDES
|
||||
../../clangrefactoringbackend/source
|
||||
${CLANG_INCLUDE_DIRS}
|
||||
SOURCES
|
||||
builddependenciesprovider.cpp builddependenciesprovider.h
|
||||
|
@@ -10,6 +10,7 @@ add_qtc_library(clangrefactoringbackend_lib STATIC
|
||||
PUBLIC_INCLUDES
|
||||
${CLANG_INCLUDE_DIRS}
|
||||
"../../clangpchmanagerbackend/source"
|
||||
"${CMAKE_CURRENT_LIST_DIR}"
|
||||
SOURCES
|
||||
clangquery.cpp clangquery.h
|
||||
clangquerygatherer.cpp clangquerygatherer.h
|
||||
|
Reference in New Issue
Block a user