aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-02-27 09:41:05 +0100
committerEike Ziller <eike.ziller@qt.io>2020-02-27 09:41:05 +0100
commit0585ad0f64e26700f3436802c19ff3c0f663396e (patch)
tree0559ce940a0dacb874e5a46f6dcbbf9885c52f08 /src
parent4672013595da7f534f7bd1e49817a48771917751 (diff)
parent56d2dab5feb4062c71fd4480f90bed0cae43bafb (diff)
Merge remote-tracking branch 'origin/4.12'
Diffstat (limited to 'src')
-rw-r--r--src/libs/advanceddockingsystem/dockoverlay.h14
-rw-r--r--src/libs/advanceddockingsystem/dockwidget.cpp110
-rw-r--r--src/libs/advanceddockingsystem/floatingdockcontainer.cpp6
-rw-r--r--src/libs/advanceddockingsystem/floatingdragpreview.cpp37
-rw-r--r--src/libs/utils/CMakeLists.txt13
-rw-r--r--src/plugins/android/androidtoolchain.cpp15
-rw-r--r--src/plugins/autotest/autotestplugin.cpp2
-rw-r--r--src/plugins/autotest/testrunconfiguration.h2
-rw-r--r--src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp5
-rw-r--r--src/plugins/clangtools/clangtool.cpp2
-rw-r--r--src/plugins/cppcheck/cppcheckplugin.cpp2
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp2
-rw-r--r--src/plugins/git/branchview.cpp30
-rw-r--r--src/plugins/git/changeselectiondialog.cpp7
-rw-r--r--src/plugins/git/gerrit/branchcombobox.cpp5
-rw-r--r--src/plugins/git/gerrit/gerritmodel.cpp3
-rw-r--r--src/plugins/git/gerrit/gerritplugin.cpp20
-rw-r--r--src/plugins/git/gerrit/gerritpushdialog.cpp19
-rw-r--r--src/plugins/git/gerrit/gerritremotechooser.cpp3
-rw-r--r--src/plugins/git/gerrit/gerritserver.cpp4
-rw-r--r--src/plugins/git/gitclient.cpp88
-rw-r--r--src/plugins/git/gitclient.h4
-rw-r--r--src/plugins/git/giteditor.cpp67
-rw-r--r--src/plugins/git/giteditor.h2
-rw-r--r--src/plugins/git/gitgrep.cpp5
-rw-r--r--src/plugins/git/gitplugin.cpp4
-rw-r--r--src/plugins/git/gitsubmiteditor.cpp12
-rw-r--r--src/plugins/git/logchangedialog.cpp15
-rw-r--r--src/plugins/git/mergetool.cpp4
-rw-r--r--src/plugins/git/remotedialog.cpp4
-rw-r--r--src/plugins/git/remotemodel.cpp11
-rw-r--r--src/plugins/git/stashdialog.cpp21
-rw-r--r--src/plugins/languageclient/CMakeLists.txt2
-rw-r--r--src/plugins/languageclient/languageclientcompletionassist.cpp7
-rw-r--r--src/plugins/nim/project/nimrunconfiguration.cpp4
-rw-r--r--src/plugins/perfprofiler/perfprofilertool.cpp2
-rw-r--r--src/plugins/projectexplorer/appoutputpane.cpp2
-rw-r--r--src/plugins/projectexplorer/buildconfiguration.cpp2
-rw-r--r--src/plugins/projectexplorer/buildmanager.cpp4
-rw-r--r--src/plugins/projectexplorer/buildmanager.h3
-rw-r--r--src/plugins/projectexplorer/buildsystem.cpp2
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.cpp1
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp26
-rw-r--r--src/plugins/projectexplorer/projectexplorer.h4
-rw-r--r--src/plugins/projectexplorer/runconfiguration.cpp16
-rw-r--r--src/plugins/projectexplorer/runconfiguration.h5
-rw-r--r--src/plugins/projectexplorer/taskwindow.cpp1
-rw-r--r--src/plugins/projectexplorer/taskwindow.h1
-rw-r--r--src/plugins/qmldesigner/components/formeditor/lineeditaction.cpp2
-rw-r--r--src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.cpp2
-rw-r--r--src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.h8
-rw-r--r--src/plugins/qmlprofiler/qmlprofilertool.cpp2
-rw-r--r--src/plugins/texteditor/texteditor.cpp23
-rw-r--r--src/plugins/valgrind/callgrindtool.cpp2
-rw-r--r--src/plugins/valgrind/memchecktool.cpp2
-rw-r--r--src/plugins/vcsbase/vcscommand.cpp1
56 files changed, 320 insertions, 342 deletions
diff --git a/src/libs/advanceddockingsystem/dockoverlay.h b/src/libs/advanceddockingsystem/dockoverlay.h
index b7243c29a63..04f9d627510 100644
--- a/src/libs/advanceddockingsystem/dockoverlay.h
+++ b/src/libs/advanceddockingsystem/dockoverlay.h
@@ -138,13 +138,13 @@ struct DockOverlayCrossPrivate;
* You can style the cross icon using the property system.
* \code
* ADS--DockOverlayCross
- {
- qproperty-iconFrameColor: palette(highlight);
- qproperty-iconBackgroundColor: palette(base);
- qproperty-iconOverlayColor: palette(highlight);
- qproperty-iconArrowColor: rgb(227, 227, 227);
- qproperty-iconShadowColor: rgb(0, 0, 0);
- }
+ * {
+ * qproperty-iconFrameColor: palette(highlight);
+ * qproperty-iconBackgroundColor: palette(base);
+ * qproperty-iconOverlayColor: palette(highlight);
+ * qproperty-iconArrowColor: rgb(227, 227, 227);
+ * qproperty-iconShadowColor: rgb(0, 0, 0);
+ * }
* \endcode
* Or you can use the iconColors property to pass in AARRGGBB values as
* hex string like shown in the example below.
diff --git a/src/libs/advanceddockingsystem/dockwidget.cpp b/src/libs/advanceddockingsystem/dockwidget.cpp
index 08857994b5e..5b4ff87265d 100644
--- a/src/libs/advanceddockingsystem/dockwidget.cpp
+++ b/src/libs/advanceddockingsystem/dockwidget.cpp
@@ -154,16 +154,18 @@ namespace ADS
void DockWidgetPrivate::updateParentDockArea()
{
- if (!m_dockArea) {
+ if (!m_dockArea)
+ return;
+
+ // we don't need to change the current tab if the current DockWidget is not the one being closed
+ if (m_dockArea->currentDockWidget() != q)
return;
- }
auto nextDockWidget = m_dockArea->nextOpenDockWidget(q);
- if (nextDockWidget) {
+ if (nextDockWidget)
m_dockArea->setCurrentDockWidget(nextDockWidget);
- } else {
+ else
m_dockArea->hideAreaWithNoVisibleContent();
- }
}
void DockWidgetPrivate::setupToolBar()
@@ -222,9 +224,8 @@ namespace ADS
QScrollArea *scrollAreaWidget = qobject_cast<QScrollArea *>(widget);
if (scrollAreaWidget || ForceNoScrollArea == insertMode) {
d->m_layout->addWidget(widget);
- if (scrollAreaWidget && scrollAreaWidget->viewport()) {
+ if (scrollAreaWidget && scrollAreaWidget->viewport())
scrollAreaWidget->viewport()->setProperty("dockWidgetContent", true);
- }
} else {
d->setupScrollArea();
d->m_scrollArea->setWidget(widget);
@@ -283,9 +284,8 @@ namespace ADS
bool DockWidget::isFloating() const
{
- if (!isInFloatingContainer()) {
+ if (!isInFloatingContainer())
return false;
- }
return dockContainer()->topLevelDockWidget() == this;
}
@@ -293,13 +293,11 @@ namespace ADS
bool DockWidget::isInFloatingContainer() const
{
auto container = dockContainer();
- if (!container) {
+ if (!container)
return false;
- }
- if (!container->isFloating()) {
+ if (!container->isFloating())
return false;
- }
return true;
}
@@ -324,17 +322,16 @@ namespace ADS
// If the toggle view action mode is ActionModeShow, then Open is always
// true if the sender is the toggle view action
QAction *action = qobject_cast<QAction *>(sender());
- if (action == d->m_toggleViewAction && !d->m_toggleViewAction->isCheckable()) {
+ if (action == d->m_toggleViewAction && !d->m_toggleViewAction->isCheckable())
open = true;
- }
+
// If the dock widget state is different, then we really need to toggle
// the state. If we are in the right state, then we simply make this
// dock widget the current dock widget
- if (d->m_closed != !open) {
+ if (d->m_closed != !open)
toggleViewInternal(open);
- } else if (open && d->m_dockArea) {
+ else if (open && d->m_dockArea)
d->m_dockArea->setCurrentDockWidget(this);
- }
}
void DockWidget::toggleViewInternal(bool open)
@@ -353,13 +350,11 @@ namespace ADS
//d->m_toggleViewAction->blockSignals(true);
d->m_toggleViewAction->setChecked(open);
//d->m_toggleViewAction->blockSignals(false);
- if (d->m_dockArea) {
+ if (d->m_dockArea)
d->m_dockArea->toggleDockWidgetView(this, open);
- }
- if (open && topLevelDockWidgetBefore) {
+ if (open && topLevelDockWidgetBefore)
DockWidget::emitTopLevelEventForWidget(topLevelDockWidgetBefore, false);
- }
// Here we need to call the dockContainer() function again, because if
// this dock widget was unassigned before the call to showDockWidget() then
@@ -370,13 +365,12 @@ namespace ADS
: nullptr;
DockWidget::emitTopLevelEventForWidget(topLevelDockWidgetAfter, true);
FloatingDockContainer *floatingContainer = dockContainerWidget->floatingWidget();
- if (floatingContainer) {
+ if (floatingContainer)
floatingContainer->updateWindowTitle();
- }
- if (!open) {
+ if (!open)
emit closed();
- }
+
emit viewToggled(open);
}
@@ -440,24 +434,22 @@ namespace ADS
#ifndef QT_NO_TOOLTIP
void DockWidget::setTabToolTip(const QString &text)
{
- if (d->m_tabWidget) {
+ if (d->m_tabWidget)
d->m_tabWidget->setToolTip(text);
- }
- if (d->m_toggleViewAction) {
+
+ if (d->m_toggleViewAction)
d->m_toggleViewAction->setToolTip(text);
- }
- if (d->m_dockArea) {
+
+ if (d->m_dockArea)
d->m_dockArea->markTitleBarMenuOutdated(); //update tabs menu
- }
}
#endif
void DockWidget::setIcon(const QIcon &icon)
{
d->m_tabWidget->setIcon(icon);
- if (!d->m_toggleViewAction->isCheckable()) {
+ if (!d->m_toggleViewAction->isCheckable())
d->m_toggleViewAction->setIcon(icon);
- }
}
QIcon DockWidget::icon() const { return d->m_tabWidget->icon(); }
@@ -466,18 +458,16 @@ namespace ADS
QToolBar *DockWidget::createDefaultToolBar()
{
- if (!d->m_toolBar) {
+ if (!d->m_toolBar)
d->setupToolBar();
- }
return d->m_toolBar;
}
void DockWidget::setToolBar(QToolBar *toolBar)
{
- if (d->m_toolBar) {
+ if (d->m_toolBar)
delete d->m_toolBar;
- }
d->m_toolBar = toolBar;
d->m_layout->insertWidget(0, d->m_toolBar);
@@ -487,59 +477,52 @@ namespace ADS
void DockWidget::setToolBarStyle(Qt::ToolButtonStyle style, eState state)
{
- if (StateFloating == state) {
+ if (StateFloating == state)
d->m_toolBarStyleFloating = style;
- } else {
+ else
d->m_toolBarStyleDocked = style;
- }
setToolbarFloatingStyle(isFloating());
}
Qt::ToolButtonStyle DockWidget::toolBarStyle(eState state) const
{
- if (StateFloating == state) {
+ if (StateFloating == state)
return d->m_toolBarStyleFloating;
- } else {
+ else
return d->m_toolBarStyleDocked;
- }
}
void DockWidget::setToolBarIconSize(const QSize &iconSize, eState state)
{
- if (StateFloating == state) {
+ if (StateFloating == state)
d->m_toolBarIconSizeFloating = iconSize;
- } else {
+ else
d->m_toolBarIconSizeDocked = iconSize;
- }
setToolbarFloatingStyle(isFloating());
}
QSize DockWidget::toolBarIconSize(eState state) const
{
- if (StateFloating == state) {
+ if (StateFloating == state)
return d->m_toolBarIconSizeFloating;
- } else {
+ else
return d->m_toolBarIconSizeDocked;
- }
}
void DockWidget::setToolbarFloatingStyle(bool floating)
{
- if (!d->m_toolBar) {
+ if (!d->m_toolBar)
return;
- }
auto iconSize = floating ? d->m_toolBarIconSizeFloating : d->m_toolBarIconSizeDocked;
- if (iconSize != d->m_toolBar->iconSize()) {
+ if (iconSize != d->m_toolBar->iconSize())
d->m_toolBar->setIconSize(iconSize);
- }
auto buttonStyle = floating ? d->m_toolBarStyleFloating : d->m_toolBarStyleDocked;
- if (buttonStyle != d->m_toolBar->toolButtonStyle()) {
+ if (buttonStyle != d->m_toolBar->toolButtonStyle())
d->m_toolBar->setToolButtonStyle(buttonStyle);
- }
}
void DockWidget::emitTopLevelEventForWidget(DockWidget *topLevelDockWidget, bool floating)
@@ -564,9 +547,9 @@ namespace ADS
void DockWidget::setFloating()
{
- if (isClosed()) {
+ if (isClosed())
return;
- }
+
d->m_tabWidget->detachDockWidget();
}
@@ -584,13 +567,11 @@ namespace ADS
bool DockWidget::closeDockWidgetInternal(bool forceClose)
{
- if (!forceClose) {
+ if (!forceClose)
emit closeRequested();
- }
- if (!forceClose && features().testFlag(DockWidget::CustomCloseHandling)) {
+ if (!forceClose && features().testFlag(DockWidget::CustomCloseHandling))
return false;
- }
if (features().testFlag(DockWidget::DockWidgetDeleteOnClose)) {
// If the dock widget is floating, then we check if we also need to
@@ -598,11 +579,10 @@ namespace ADS
if (isFloating()) {
FloatingDockContainer* floatingWidget = internal::findParent<
FloatingDockContainer *>(this);
- if (floatingWidget->dockWidgets().count() == 1) {
+ if (floatingWidget->dockWidgets().count() == 1)
floatingWidget->deleteLater();
- } else {
+ else
floatingWidget->hide();
- }
}
deleteDockWidget();
} else {
diff --git a/src/libs/advanceddockingsystem/floatingdockcontainer.cpp b/src/libs/advanceddockingsystem/floatingdockcontainer.cpp
index 2fbe879f471..6bf2d9efbdc 100644
--- a/src/libs/advanceddockingsystem/floatingdockcontainer.cpp
+++ b/src/libs/advanceddockingsystem/floatingdockcontainer.cpp
@@ -112,7 +112,7 @@ namespace ADS
if (testConfigFlag(DockManager::FloatingContainerHasWidgetTitle)) {
setWindowTitle(currentWidget->windowTitle());
} else {
- setWindowTitle(qApp->applicationDisplayName());
+ setWindowTitle(QApplication::applicationDisplayName());
}
// reflect CurrentWidget's icon if configured to do so, otherwise display application icon as window icon
@@ -495,7 +495,7 @@ namespace ADS
&FloatingDockContainer::onDockAreaCurrentChanged);
d->m_singleDockArea = nullptr;
}
- d->setWindowTitle(qApp->applicationDisplayName());
+ d->setWindowTitle(QApplication::applicationDisplayName());
setWindowIcon(QApplication::windowIcon());
}
}
@@ -507,7 +507,7 @@ namespace ADS
DockWidget *currentWidget = topLevelDockArea->currentDockWidget();
d->reflectCurrentWidget(currentWidget);
} else {
- d->setWindowTitle(qApp->applicationDisplayName());
+ d->setWindowTitle(QApplication::applicationDisplayName());
setWindowIcon(QApplication::windowIcon());
}
}
diff --git a/src/libs/advanceddockingsystem/floatingdragpreview.cpp b/src/libs/advanceddockingsystem/floatingdragpreview.cpp
index 41dadfc9790..b54b6bfbf06 100644
--- a/src/libs/advanceddockingsystem/floatingdragpreview.cpp
+++ b/src/libs/advanceddockingsystem/floatingdragpreview.cpp
@@ -96,22 +96,19 @@ namespace ADS
void FloatingDragPreviewPrivate::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;
- }
QPoint mappedPosition = containerWidget->mapFromGlobal(globalPosition);
if (containerWidget->rect().contains(mappedPosition)) {
- if (!topContainer || containerWidget->isInFrontOf(topContainer)) {
+ if (!topContainer || containerWidget->isInFrontOf(topContainer))
topContainer = containerWidget;
- }
}
}
@@ -124,9 +121,9 @@ namespace ADS
if (!topContainer) {
containerOverlay->hideOverlay();
dockAreaOverlay->hideOverlay();
- if (DockManager::configFlags().testFlag(DockManager::DragPreviewIsDynamic)) {
+ if (DockManager::configFlags().testFlag(DockManager::DragPreviewIsDynamic))
setHidden(false);
- }
+
return;
}
@@ -153,9 +150,8 @@ namespace ADS
}
} else {
dockAreaOverlay->hideOverlay();
- if (dockArea == m_contentSourceArea && InvalidDockWidgetArea == containerDropArea) {
+ if (dockArea == m_contentSourceArea && InvalidDockWidgetArea == containerDropArea)
m_dropContainer = nullptr;
- }
}
if (DockManager::configFlags().testFlag(DockManager::DragPreviewIsDynamic)) {
@@ -199,7 +195,10 @@ namespace ADS
connect(qApp,
&QApplication::applicationStateChanged,
this,
- &FloatingDragPreview::onApplicationStateChanged); // TODO
+ &FloatingDragPreview::onApplicationStateChanged);
+ // The focused object will receive key press events and therefore we install
+ // the event filter on it to receive escape key press for drag canceling
+ QApplication::focusObject()->installEventFilter(this);
}
FloatingDragPreview::FloatingDragPreview(DockWidget *content)
@@ -212,9 +211,6 @@ namespace ADS
d->m_contenSourceContainer = content->dockContainer();
}
setWindowTitle(content->windowTitle());
- // We need to install an event filter for the given content
- // widget to receive the escape key press
- content->dockAreaWidget()->installEventFilter(this);
}
FloatingDragPreview::FloatingDragPreview(DockAreaWidget *content)
@@ -225,10 +221,6 @@ namespace ADS
d->m_contentSourceArea = content;
d->m_contenSourceContainer = content->dockContainer();
setWindowTitle(content->currentDockWidget()->windowTitle());
-
- // We need to install an event filter for the given Content
- // widget to receive the escape key press
- content->installEventFilter(this);
}
FloatingDragPreview::~FloatingDragPreview() { delete d; }
@@ -277,9 +269,8 @@ namespace ADS
floatingWidget = new FloatingDockContainer(dockWidget);
} else {
DockAreaWidget *dockArea = qobject_cast<DockAreaWidget *>(d->m_content);
- if (dockArea->features().testFlag(DockWidget::DockWidgetFloatable)) {
+ if (dockArea->features().testFlag(DockWidget::DockWidgetFloatable))
floatingWidget = new FloatingDockContainer(dockArea);
- }
}
if (floatingWidget) {
@@ -303,14 +294,12 @@ namespace ADS
void FloatingDragPreview::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
- if (d->m_hidden) {
+ if (d->m_hidden)
return;
- }
QPainter painter(this);
- if (DockManager::configFlags().testFlag(DockManager::DragPreviewShowsContentPixmap)) {
+ if (DockManager::configFlags().testFlag(DockManager::DragPreviewShowsContentPixmap))
painter.drawPixmap(QPoint(0, 0), d->m_contentPreviewPixmap);
- }
// If we do not have a window frame then we paint a QRubberBand like frameless window
if (!DockManager::configFlags().testFlag(DockManager::DragPreviewHasWindowFrame)) {
diff --git a/src/libs/utils/CMakeLists.txt b/src/libs/utils/CMakeLists.txt
index a0663ebd8f3..ff7bbe62862 100644
--- a/src/libs/utils/CMakeLists.txt
+++ b/src/libs/utils/CMakeLists.txt
@@ -1,19 +1,8 @@
-if (IDE_LIBEXEC_PATH AND IDE_BIN_PATH)
- get_filename_component(bin_path
- "${CMAKE_INSTALL_PREFIX}/${IDE_BIN_PATH}" ABSOLUTE "${CMAKE_BINARY_DIR}")
- get_filename_component(libexec_path
- "${CMAKE_INSTALL_PREFIX}/${IDE_LIBEXEC_PATH}" ABSOLUTE "${CMAKE_BINARY_DIR}")
- file(RELATIVE_PATH RELATIVE_TOOLS_PATH "${bin_path}" "${libexec_path}")
-else()
- message(WARNING "IDE_LIBEXEC_PATH or IDE_BIN_PATH undefined when calculating tools path")
- set(RELATIVE_TOOLS_PATH "")
-endif()
-
add_qtc_library(Utils
DEPENDS Qt5::Xml
PUBLIC_DEPENDS Qt5::Concurrent Qt5::Core Qt5::Network Qt5::Qml Qt5::Gui Qt5::Widgets
DEFINES
- "QTC_REL_TOOLS_PATH=\"${RELATIVE_TOOLS_PATH}\""
+ "QTC_REL_TOOLS_PATH=\"${RELATIVE_LIBEXEC_PATH}\""
SOURCES
../3rdparty/optional/optional.hpp
../3rdparty/variant/variant.hpp
diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp
index a9f5aeb2816..42ea48ee97c 100644
--- a/src/plugins/android/androidtoolchain.cpp
+++ b/src/plugins/android/androidtoolchain.cpp
@@ -228,8 +228,16 @@ ToolChainList AndroidToolChainFactory::autodetectToolChainsForNdk(const ToolChai
const Abi &abi = targetItr.value();
const QString target = targetItr.key();
ToolChain *tc = findToolChain(compilerCommand, lang, target, alreadyKnown);
+
+ const QString displayName(QString("Android Clang (%1, %2, NDK %3)")
+ .arg(ToolChainManager::displayNameOfLanguageId(lang),
+ AndroidConfig::displayName(abi),
+ config.ndkVersion(qtVersion).toString()));
if (tc) {
qCDebug(androidTCLog) << "Tool chain already known" << abi.toString() << lang;
+ // make sure to update the toolchain with current name format
+ if (tc->displayName() != displayName)
+ tc->setDisplayName(displayName);
} else {
qCDebug(androidTCLog) << "New Clang toolchain found" << abi.toString() << lang;
auto atc = new AndroidToolChain();
@@ -239,14 +247,11 @@ ToolChainList AndroidToolChainFactory::autodetectToolChainsForNdk(const ToolChai
atc->setTargetAbi(ClangTargets[target]);
atc->setPlatformCodeGenFlags({"-target", target});
atc->setPlatformLinkerFlags({"-target", target});
- atc->setDetection(ToolChain::AutoDetection);
- atc->setDisplayName(QString("Android Clang (%1, %2, NDK %3)")
- .arg(ToolChainManager::displayNameOfLanguageId(lang),
- AndroidConfig::displayName(abi),
- config.ndkVersion(qtVersion).toString()));
+ atc->setDisplayName(displayName);
atc->resetToolChain(compilerCommand);
tc = atc;
}
+ tc->setDetection(ToolChain::AutoDetection);
result << tc;
++targetItr;
}
diff --git a/src/plugins/autotest/autotestplugin.cpp b/src/plugins/autotest/autotestplugin.cpp
index 3dfaa4fad51..df73f237c6b 100644
--- a/src/plugins/autotest/autotestplugin.cpp
+++ b/src/plugins/autotest/autotestplugin.cpp
@@ -236,7 +236,7 @@ void AutotestPluginPrivate::initializeMenuEntries()
this, &AutotestPlugin::updateMenuItemsEnabledState);
connect(BuildManager::instance(), &BuildManager::buildQueueFinished,
this, &AutotestPlugin::updateMenuItemsEnabledState);
- connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::updateRunActions,
+ connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::runActionsUpdated,
this, &AutotestPlugin::updateMenuItemsEnabledState);
connect(TestTreeModel::instance(), &TestTreeModel::testTreeModelChanged,
this, &AutotestPlugin::updateMenuItemsEnabledState);
diff --git a/src/plugins/autotest/testrunconfiguration.h b/src/plugins/autotest/testrunconfiguration.h
index 1c86f663591..df43b9dc86f 100644
--- a/src/plugins/autotest/testrunconfiguration.h
+++ b/src/plugins/autotest/testrunconfiguration.h
@@ -59,7 +59,7 @@ public:
if (auto debugAspect = aspect<Debugger::DebuggerRunConfigurationAspect>()) {
debugAspect->setUseQmlDebugger(enableQuick);
- ProjectExplorer::ProjectExplorerPlugin::instance()->updateRunActions();
+ ProjectExplorer::ProjectExplorerPlugin::updateRunActions();
}
m_testConfig = config;
}
diff --git a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp
index 09f5ee95075..592f7c8795c 100644
--- a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp
+++ b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp
@@ -215,8 +215,11 @@ void ClangCompletionAssistProcessor::handleAvailableCompletions(const CodeComple
return;
}
- if (!m_fallbackToNormalCompletion)
+ if (!m_fallbackToNormalCompletion) {
+ // We must report back to the code assistant under all circumstances
+ setAsyncProposalAvailable(nullptr);
return;
+ }
// else: Proceed with a normal completion in case:
// 1) it was not a function call, but e.g. a function declaration like "void f("
// 2) '{' meant not a constructor call.
diff --git a/src/plugins/clangtools/clangtool.cpp b/src/plugins/clangtools/clangtool.cpp
index b1684788cf9..ba7747d9a08 100644
--- a/src/plugins/clangtools/clangtool.cpp
+++ b/src/plugins/clangtools/clangtool.cpp
@@ -602,7 +602,7 @@ ClangTool::ClangTool()
update();
- connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::updateRunActions,
+ connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::runActionsUpdated,
this, &ClangTool::update);
connect(CppModelManager::instance(), &CppModelManager::projectPartsUpdated,
this, &ClangTool::update);
diff --git a/src/plugins/cppcheck/cppcheckplugin.cpp b/src/plugins/cppcheck/cppcheckplugin.cpp
index 02488c696c9..e38e367daef 100644
--- a/src/plugins/cppcheck/cppcheckplugin.cpp
+++ b/src/plugins/cppcheck/cppcheckplugin.cpp
@@ -176,7 +176,7 @@ bool CppcheckPlugin::initialize(const QStringList &arguments, QString *errorStri
}
using ProjectExplorer::ProjectExplorerPlugin;
- connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::updateRunActions,
+ connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::runActionsUpdated,
d.get(), &CppcheckPluginPrivate::updateManualRunAction);
d->updateManualRunAction();
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 5fdf0015e1b..73c8a2ade8b 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1186,7 +1186,7 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(const QStringList &arguments)
this, &DebuggerPluginPrivate::writeSettings);
// ProjectExplorer
- connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::updateRunActions,
+ connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::runActionsUpdated,
this, &DebuggerPluginPrivate::updatePresetState);
// EditorManager
diff --git a/src/plugins/git/branchview.cpp b/src/plugins/git/branchview.cpp
index 3cac8265f18..87c4e097537 100644
--- a/src/plugins/git/branchview.cpp
+++ b/src/plugins/git/branchview.cpp
@@ -82,7 +82,7 @@ BranchView::BranchView() :
m_refreshButton(new QToolButton(this)),
m_repositoryLabel(new Utils::ElidingLabel(this)),
m_branchView(new Utils::NavigationTreeView(this)),
- m_model(new BranchModel(GitPlugin::client(), this)),
+ m_model(new BranchModel(GitClient::instance(), this)),
m_filterModel(new BranchFilterModel(this))
{
m_addButton->setIcon(Utils::Icons::PLUS_TOOLBAR.icon());
@@ -122,7 +122,7 @@ BranchView::BranchView() :
this, &BranchView::setIncludeOldEntries);
m_includeTagsAction->setCheckable(true);
m_includeTagsAction->setChecked(
- GitPlugin::client()->settings().boolValue(GitSettings::showTagsKey));
+ GitClient::instance()->settings().boolValue(GitSettings::showTagsKey));
connect(m_includeTagsAction, &QAction::toggled,
this, &BranchView::setIncludeTags);
@@ -214,12 +214,12 @@ void BranchView::slotCustomContextMenu(const QPoint &point)
const Utils::optional<QString> remote = m_model->remoteName(index);
if (remote.has_value()) {
contextMenu.addAction(tr("&Fetch"), this, [this, &remote]() {
- GitPlugin::client()->fetch(m_repository, *remote);
+ GitClient::instance()->fetch(m_repository, *remote);
});
contextMenu.addSeparator();
if (!remote->isEmpty()) {
contextMenu.addAction(tr("Remove &Stale Branches"), this, [this, &remote]() {
- GitPlugin::client()->removeStaleRemoteBranches(m_repository, *remote);
+ GitClient::instance()->removeStaleRemoteBranches(m_repository, *remote);
});
contextMenu.addSeparator();
}
@@ -238,7 +238,7 @@ void BranchView::slotCustomContextMenu(const QPoint &point)
contextMenu.addAction(tr("&Diff"), this, [this] {
const QString fullName = m_model->fullName(selectedIndex(), true);
if (!fullName.isEmpty())
- GitPlugin::client()->diffBranch(m_repository, fullName);
+ GitClient::instance()->diffBranch(m_repository, fullName);
});
contextMenu.addAction(tr("&Log"), this, [this] { log(selectedIndex()); });
contextMenu.addAction(tr("Reflo&g"), this, [this] { reflog(selectedIndex()); });
@@ -289,7 +289,7 @@ void BranchView::setIncludeOldEntries(bool filter)
void BranchView::setIncludeTags(bool includeTags)
{
- GitPlugin::client()->settings().setValue(GitSettings::showTagsKey, includeTags);
+ GitClient::instance()->settings().setValue(GitSettings::showTagsKey, includeTags);
refreshCurrentRepository();
}
@@ -365,7 +365,7 @@ bool BranchView::checkout()
' ' + nextBranch + "-AutoStash ";
BranchCheckoutDialog branchCheckoutDialog(this, currentBranch, nextBranch);
- GitClient *client = GitPlugin::client();
+ GitClient *client = GitClient::instance();
if (client->gitStatus(m_repository, StatusMode(NoUntracked | NoSubmodules)) != GitClient::StatusChanged)
branchCheckoutDialog.foundNoLocalChanges();
@@ -500,7 +500,7 @@ bool BranchView::reset(const QByteArray &resetType)
if (QMessageBox::question(this, tr("Git Reset"), tr("Reset branch \"%1\" to \"%2\"?")
.arg(currentName).arg(branchName),
QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) {
- GitPlugin::client()->reset(m_repository, QLatin1String("--" + resetType), branchName);
+ GitClient::instance()->reset(m_repository, QLatin1String("--" + resetType), branchName);
return true;
}
return false;
@@ -512,7 +512,7 @@ bool BranchView::isFastForwardMerge()
QTC_CHECK(selected != m_model->currentBranch());
const QString branch = m_model->fullName(selected, true);
- return GitPlugin::client()->isFastForwardMerge(m_repository, branch);
+ return GitClient::instance()->isFastForwardMerge(m_repository, branch);
}
bool BranchView::merge(bool allowFastForward)
@@ -523,7 +523,7 @@ bool BranchView::merge(bool allowFastForward)
QTC_CHECK(selected != m_model->currentBranch());
const QString branch = m_model->fullName(selected, true);
- GitClient *client = GitPlugin::client();
+ GitClient *client = GitClient::instance();
if (client->beginStashScope(m_repository, "merge", AllowUnstashed))
return client->synchronousMerge(m_repository, branch, allowFastForward);
@@ -538,7 +538,7 @@ void BranchView::rebase()
QTC_CHECK(selected != m_model->currentBranch());
const QString baseBranch = m_model->fullName(selected, true);
- GitClient *client = GitPlugin::client();
+ GitClient *client = GitClient::instance();
if (client->beginStashScope(m_repository, "rebase"))
client->rebase(m_repository, baseBranch);
}
@@ -551,21 +551,21 @@ bool BranchView::cherryPick()
QTC_CHECK(selected != m_model->currentBranch());
const QString branch = m_model->fullName(selected, true);
- return GitPlugin::client()->synchronousCherryPick(m_repository, branch);
+ return GitClient::instance()->synchronousCherryPick(m_repository, branch);
}
void BranchView::log(const QModelIndex &idx)
{
const QString branchName = m_model->fullName(idx, true);
if (!branchName.isEmpty())
- GitPlugin::client()->log(m_repository, QString(), false, {branchName});
+ GitClient::instance()->log(m_repository, QString(), false, {branchName});
}
void BranchView::reflog(const QModelIndex &idx)
{
const QString branchName = m_model->fullName(idx, true);
if (!branchName.isEmpty())
- GitPlugin::client()->reflog(m_repository, branchName);
+ GitClient::instance()->reflog(m_repository, branchName);
}
void BranchView::push()
@@ -581,7 +581,7 @@ void BranchView::push()
const QString remoteBranch = fullTargetName.mid(pos + 1);
const QStringList pushArgs = {remoteName, localBranch + ':' + remoteBranch};
- GitPlugin::client()->push(m_repository, pushArgs);
+ GitClient::instance()->push(m_repository, pushArgs);
}
BranchViewFactory::BranchViewFactory()
diff --git a/src/plugins/git/changeselectiondialog.cpp b/src/plugins/git/changeselectiondialog.cpp
index c1cc46ce984..52f8c4762fa 100644
--- a/src/plugins/git/changeselectiondialog.cpp
+++ b/src/plugins/git/changeselectiondialog.cpp
@@ -25,7 +25,6 @@
#include "changeselectiondialog.h"
#include "logchangedialog.h"
-#include "gitplugin.h"
#include "gitclient.h"
#include "ui_changeselectiondialog.h"
@@ -57,12 +56,12 @@ ChangeSelectionDialog::ChangeSelectionDialog(const QString &workingDirectory, Co
QWidget *parent) :
QDialog(parent), m_ui(new Ui::ChangeSelectionDialog)
{
- m_gitExecutable = GitPlugin::client()->vcsBinary();
+ m_gitExecutable = GitClient::instance()->vcsBinary();
m_ui->setupUi(this);
m_ui->workingDirectoryChooser->setExpectedKind(PathChooser::ExistingDirectory);
m_ui->workingDirectoryChooser->setPromptDialogTitle(tr("Select Git Directory"));
m_ui->workingDirectoryChooser->setPath(workingDirectory);
- m_gitEnvironment = GitPlugin::client()->processEnvironment();
+ m_gitEnvironment = GitClient::instance()->processEnvironment();
m_ui->changeNumberEdit->setFocus();
m_ui->changeNumberEdit->selectAll();
@@ -203,7 +202,7 @@ void ChangeSelectionDialog::recalculateCompletion()
if (workingDir.isEmpty())
return;
- GitClient *client = GitPlugin::client();
+ GitClient *client = GitClient::instance();
VcsBase::VcsCommand *command = client->asyncForEachRefCmd(
workingDir, {"--format=%(refname:short)"});
connect(this, &QObject::destroyed, command, &VcsBase::VcsCommand::abort);
diff --git a/src/plugins/git/gerrit/branchcombobox.cpp b/src/plugins/git/gerrit/branchcombobox.cpp
index 6cc866ce3f1..bc7aa282df2 100644
--- a/src/plugins/git/gerrit/branchcombobox.cpp
+++ b/src/plugins/git/gerrit/branchcombobox.cpp
@@ -24,7 +24,6 @@
****************************************************************************/
#include "branchcombobox.h"
-#include "../gitplugin.h"
#include "../gitclient.h"
using namespace Git::Internal;
@@ -36,7 +35,7 @@ BranchComboBox::BranchComboBox(QWidget *parent) : QComboBox(parent)
void BranchComboBox::init(const QString &repository)
{
m_repository = repository;
- QString currentBranch = GitPlugin::client()->synchronousCurrentLocalBranch(repository);
+ QString currentBranch = GitClient::instance()->synchronousCurrentLocalBranch(repository);
if (currentBranch.isEmpty()) {
m_detached = true;
currentBranch = "HEAD";
@@ -44,7 +43,7 @@ void BranchComboBox::init(const QString &repository)
}
QString output;
const QString branchPrefix("refs/heads/");
- if (!GitPlugin::client()->synchronousForEachRefCmd(
+ if (!GitClient::instance()->synchronousForEachRefCmd(
m_repository, {"--format=%(refname)", branchPrefix}, &output)) {
return;
}
diff --git a/src/plugins/git/gerrit/gerritmodel.cpp b/src/plugins/git/gerrit/gerritmodel.cpp
index a9be6358ccb..c5e346aaa6e 100644
--- a/src/plugins/git/gerrit/gerritmodel.cpp
+++ b/src/plugins/git/gerrit/gerritmodel.cpp
@@ -24,7 +24,6 @@
****************************************************************************/
#include "gerritmodel.h"
-#include "../gitplugin.h"
#include "../gitclient.h"
#include <coreplugin/progressmanager/progressmanager.h>
@@ -295,7 +294,7 @@ QueryContext::QueryContext(const QString &query,
connect(&m_process, &QProcess::errorOccurred, this, &QueryContext::processError);
connect(&m_watcher, &QFutureWatcherBase::canceled, this, &QueryContext::terminate);
m_watcher.setFuture(m_progress.future());
- m_process.setProcessEnvironment(Git::Internal::GitPlugin::client()->processEnvironment());
+ m_process.setProcessEnvironment(Git::Internal::GitClient::instance()->processEnvironment());
m_progress.setProgressRange(0, 1);
m_timer.setInterval(timeOutMS);
diff --git a/src/plugins/git/gerrit/gerritplugin.cpp b/src/plugins/git/gerrit/gerritplugin.cpp
index 656f1e34f70..85d414b9b9a 100644
--- a/src/plugins/git/gerrit/gerritplugin.cpp
+++ b/src/plugins/git/gerrit/gerritplugin.cpp
@@ -148,7 +148,7 @@ FetchContext::FetchContext(const QSharedPointer<GerritChange> &change,
connect(&m_watcher, &QFutureWatcher<void>::canceled, this, &FetchContext::terminate);
m_watcher.setFuture(m_progress.future());
m_process.setWorkingDirectory(repository);
- m_process.setProcessEnvironment(GitPlugin::client()->processEnvironment());
+ m_process.setProcessEnvironment(GitClient::instance()->processEnvironment());
m_process.closeWriteChannel();
}
@@ -240,7 +240,7 @@ void FetchContext::show()
{
const QString title = QString::number(m_change->number) + '/'
+ QString::number(m_change->currentPatchSet.patchSetNumber);
- GitPlugin::client()->show(m_repository, "FETCH_HEAD", title);
+ GitClient::instance()->show(m_repository, "FETCH_HEAD", title);
}
void FetchContext::cherryPick()
@@ -248,12 +248,12 @@ void FetchContext::cherryPick()
// Point user to errors.
VcsBase::VcsOutputWindow::instance()->popup(IOutputPane::ModeSwitch
| IOutputPane::WithFocus);
- GitPlugin::client()->synchronousCherryPick(m_repository, "FETCH_HEAD");
+ GitClient::instance()->synchronousCherryPick(m_repository, "FETCH_HEAD");
}
void FetchContext::checkout()
{
- GitPlugin::client()->checkout(m_repository, "FETCH_HEAD");
+ GitClient::instance()->checkout(m_repository, "FETCH_HEAD");
}
void FetchContext::terminate()
@@ -328,7 +328,7 @@ void GerritPlugin::push(const QString &topLevel)
dialog.storeTopic();
m_reviewers = dialog.reviewers();
- GitPlugin::client()->push(topLevel, {dialog.selectedRemoteName(), dialog.pushTarget()});
+ GitClient::instance()->push(topLevel, {dialog.selectedRemoteName(), dialog.pushTarget()});
}
static QString currentRepository()
@@ -375,19 +375,19 @@ void GerritPlugin::push()
Utils::FilePath GerritPlugin::gitBinDirectory()
{
- return GitPlugin::client()->gitBinDirectory();
+ return GitClient::instance()->gitBinDirectory();
}
// Find the branch of a repository.
QString GerritPlugin::branch(const QString &repository)
{
- return GitPlugin::client()->synchronousCurrentLocalBranch(repository);
+ return GitClient::instance()->synchronousCurrentLocalBranch(repository);
}
void GerritPlugin::fetch(const QSharedPointer<GerritChange> &change, int mode)
{
// Locate git.
- const Utils::FilePath git = GitPlugin::client()->vcsBinary();
+ const Utils::FilePath git = GitClient::instance()->vcsBinary();
if (git.isEmpty()) {
VcsBase::VcsOutputWindow::appendError(tr("Git is not available."));
return;
@@ -400,7 +400,7 @@ void GerritPlugin::fetch(const QSharedPointer<GerritChange> &change, int mode)
if (!repository.isEmpty()) {
// Check if remote from a working dir is the same as remote from patch
- QMap<QString, QString> remotesList = GitPlugin::client()->synchronousRemotesList(repository);
+ QMap<QString, QString> remotesList = GitClient::instance()->synchronousRemotesList(repository);
if (!remotesList.isEmpty()) {
const QStringList remotes = remotesList.values();
for (QString remote : remotes) {
@@ -413,7 +413,7 @@ void GerritPlugin::fetch(const QSharedPointer<GerritChange> &change, int mode)
}
if (!verifiedRepository) {
- const SubmoduleDataMap submodules = GitPlugin::client()->submoduleList(repository);
+ const SubmoduleDataMap submodules = GitClient::instance()->submoduleList(repository);
for (const SubmoduleData &submoduleData : submodules) {
QString remote = submoduleData.url;
if (remote.endsWith(".git"))
diff --git a/src/plugins/git/gerrit/gerritpushdialog.cpp b/src/plugins/git/gerrit/gerritpushdialog.cpp
index 08c280fc90f..ddd45134f79 100644
--- a/src/plugins/git/gerrit/gerritpushdialog.cpp
+++ b/src/plugins/git/gerrit/gerritpushdialog.cpp
@@ -27,7 +27,6 @@
#include "ui_gerritpushdialog.h"
#include "branchcombobox.h"
-#include "../gitplugin.h"
#include "../gitclient.h"
#include "../gitconstants.h"
@@ -70,7 +69,7 @@ QString GerritPushDialog::determineRemoteBranch(const QString &localBranch)
QString output;
QString error;
- if (!GitPlugin::client()->synchronousBranchCmd(
+ if (!GitClient::instance()->synchronousBranchCmd(
m_workingDir, {"-r", "--contains", earliestCommit + '^'}, &output, &error)) {
return QString();
}
@@ -79,7 +78,7 @@ QString GerritPushDialog::determineRemoteBranch(const QString &localBranch)
QString remoteTrackingBranch;
if (localBranch != "HEAD")
- remoteTrackingBranch = GitPlugin::client()->synchronousTrackingBranch(m_workingDir, localBranch);
+ remoteTrackingBranch = GitClient::instance()->synchronousTrackingBranch(m_workingDir, localBranch);
QString remoteBranch;
for (const QString &reference : refs) {
@@ -103,7 +102,7 @@ void GerritPushDialog::initRemoteBranches()
const QString head = "/HEAD";
QString remotesPrefix("refs/remotes/");
- if (!GitPlugin::client()->synchronousForEachRefCmd(
+ if (!GitClient::instance()->synchronousForEachRefCmd(
m_workingDir, {"--format=%(refname)\t%(committerdate:raw)", remotesPrefix}, &output)) {
return;
}
@@ -186,8 +185,8 @@ QString GerritPushDialog::calculateChangeRange(const QString &branch)
QString number;
QString error;
- GitPlugin::client()->synchronousRevListCmd(m_workingDir, { remote + ".." + branch, "--count" },
- &number, &error);
+ GitClient::instance()->synchronousRevListCmd(
+ m_workingDir, { remote + ".." + branch, "--count" }, &number, &error);
number.chop(1);
return number;
@@ -303,8 +302,8 @@ QString GerritPushDialog::pushTarget() const
void GerritPushDialog::storeTopic()
{
const QString branch = m_ui->localBranchComboBox->currentText();
- GitPlugin::client()->setConfigValue(m_workingDir, QString("branch.%1.topic").arg(branch),
- selectedTopic());
+ GitClient::instance()->setConfigValue(
+ m_workingDir, QString("branch.%1.topic").arg(branch), selectedTopic());
}
void GerritPushDialog::setRemoteBranches(bool includeOld)
@@ -316,7 +315,7 @@ void GerritPushDialog::setRemoteBranches(bool includeOld)
const QString remoteName = selectedRemoteName();
if (!m_remoteBranches.contains(remoteName)) {
const QStringList remoteBranches =
- GitPlugin::client()->synchronousRepositoryBranches(remoteName, m_workingDir);
+ GitClient::instance()->synchronousRepositoryBranches(remoteName, m_workingDir);
for (const QString &branch : remoteBranches)
m_remoteBranches.insertMulti(remoteName, qMakePair(branch, QDate()));
if (remoteBranches.isEmpty()) {
@@ -354,7 +353,7 @@ void GerritPushDialog::updateCommits(int index)
{
const QString branch = m_ui->localBranchComboBox->itemText(index);
m_hasLocalCommits = m_ui->commitView->init(m_workingDir, branch, LogChangeWidget::Silent);
- QString topic = GitPlugin::client()->readConfigValue(
+ QString topic = GitClient::instance()->readConfigValue(
m_workingDir, QString("branch.%1.topic").arg(branch));
if (!topic.isEmpty())
m_ui->topicLineEdit->setText(topic);
diff --git a/src/plugins/git/gerrit/gerritremotechooser.cpp b/src/plugins/git/gerrit/gerritremotechooser.cpp
index 8e5e7cd8828..6b94bcd238f 100644
--- a/src/plugins/git/gerrit/gerritremotechooser.cpp
+++ b/src/plugins/git/gerrit/gerritremotechooser.cpp
@@ -27,7 +27,6 @@
#include "gerritparameters.h"
#include "gerritserver.h"
#include "../gitclient.h"
-#include "../gitplugin.h"
#include <utils/qtcassert.h>
#include <utils/utilsicons.h>
@@ -104,7 +103,7 @@ bool GerritRemoteChooser::updateRemotes(bool forceReload)
m_remotes.clear();
QString errorMessage; // Mute errors. We'll just fallback to the defaults
const QMap<QString, QString> remotesList =
- Git::Internal::GitPlugin::client()->synchronousRemotesList(m_repository, &errorMessage);
+ Git::Internal::GitClient::instance()->synchronousRemotesList(m_repository, &errorMessage);
for (auto mapIt = remotesList.cbegin(), end = remotesList.cend(); mapIt != end; ++mapIt) {
GerritServer server;
if (!server.fillFromRemote(mapIt.value(), *m_parameters, forceReload))
diff --git a/src/plugins/git/gerrit/gerritserver.cpp b/src/plugins/git/gerrit/gerritserver.cpp
index f2fae53d517..a0a6a650469 100644
--- a/src/plugins/git/gerrit/gerritserver.cpp
+++ b/src/plugins/git/gerrit/gerritserver.cpp
@@ -241,7 +241,7 @@ QStringList GerritServer::curlArguments() const
int GerritServer::testConnection()
{
- static GitClient *const client = GitPlugin::client();
+ static GitClient *const client = GitClient::instance();
const QStringList arguments = curlArguments() << (url(RestUrl) + accountUrlC);
const SynchronousProcessResponse resp = client->vcsFullySynchronousExec(
QString(), {curlBinary, arguments},
@@ -333,7 +333,7 @@ bool GerritServer::resolveRoot()
void GerritServer::resolveVersion(const GerritParameters &p, bool forceReload)
{
- static GitClient *const client = GitPlugin::client();
+ static GitClient *const client = GitClient::instance();
QSettings *settings = Core::ICore::settings();
const QString fullVersionKey = "Gerrit/" + host + '/' + versionKey;
version = settings->value(fullVersionKey).toString();
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 005e0e66f86..8608d947e1c 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -106,6 +106,8 @@ using namespace VcsBase;
namespace Git {
namespace Internal {
+static GitClient *m_instance = nullptr;
+
// Suppress git diff warnings about "LF will be replaced by CRLF..." on Windows.
static unsigned diffExecutionFlags()
{
@@ -300,7 +302,7 @@ void GitDiffEditorController::updateBranchList()
return;
const QString workingDirectory = baseDirectory();
- VcsCommand *command = GitPlugin::client()->vcsExec(
+ VcsCommand *command = m_instance->vcsExec(
workingDirectory, {"branch", noColorOption, "-a", "--contains", revision}, nullptr,
false, 0, workingDirectory);
connect(command, &VcsCommand::stdOutText, this, [this](const QString &text) {
@@ -375,7 +377,7 @@ QStringList GitDiffEditorController::addHeadWhenCommandInProgress() const
// This is workaround for lack of support for merge commits and resolving conflicts,
// we compare the current state of working tree to the HEAD of current branch
// instead of showing unsupported combined diff format.
- GitClient::CommandInProgress commandInProgress = GitPlugin::client()->checkCommandInProgress(workingDirectory());
+ GitClient::CommandInProgress commandInProgress = m_instance->checkCommandInProgress(workingDirectory());
if (commandInProgress != GitClient::NoCommand)
return {HEAD};
return QStringList();
@@ -478,7 +480,7 @@ public:
setReloader([this] {
m_state = GettingDescription;
const QStringList args = {"show", "-s", noColorOption, showFormatC, m_id};
- runCommand({args}, GitPlugin::client()->encoding(workingDirectory(), "i18n.commitEncoding"));
+ runCommand({args}, m_instance->encoding(workingDirectory(), "i18n.commitEncoding"));
setStartupFile(VcsBase::source(this->document()));
});
}
@@ -495,7 +497,7 @@ void ShowController::processCommandOutput(const QString &output)
{
QTC_ASSERT(m_state != Idle, return);
if (m_state == GettingDescription) {
- setDescription(GitPlugin::client()->extendedShowDescription(workingDirectory(), output));
+ setDescription(m_instance->extendedShowDescription(workingDirectory(), output));
// stage 2
m_state = GettingDiff;
const QStringList args = {"show", "--format=format:", // omit header, already generated
@@ -669,12 +671,11 @@ private:
{
// If interactive rebase editor window is closed, plugin is terminated
// but referenced here when the command ends
- GitClient *client = GitPlugin::client();
if (m_commit.isEmpty() && m_files.isEmpty()) {
- if (client->checkCommandInProgress(m_workingDirectory) == GitClient::NoCommand)
- client->endStashScope(m_workingDirectory);
+ if (m_instance->checkCommandInProgress(m_workingDirectory) == GitClient::NoCommand)
+ m_instance->endStashScope(m_workingDirectory);
} else {
- client->handleMergeConflicts(m_workingDirectory, m_commit, m_files, m_abortCommand);
+ m_instance->handleMergeConflicts(m_workingDirectory, m_commit, m_files, m_abortCommand);
}
}
@@ -763,11 +764,17 @@ GitClient::GitClient(GitSettings *settings) : VcsBase::VcsBaseClientImpl(setting
m_cachedGitVersion(0),
m_disableEditor(false)
{
+ m_instance = this;
m_gitQtcEditor = QString::fromLatin1("\"%1\" -client -block -pid %2")
.arg(QCoreApplication::applicationFilePath())
.arg(QCoreApplication::applicationPid());
}
+GitClient *GitClient::instance()
+{
+ return m_instance;
+}
+
QString GitClient::findRepositoryForDirectory(const QString &directory) const
{
if (directory.isEmpty() || directory.endsWith("/.git") || directory.contains("/.git/"))
@@ -3476,8 +3483,8 @@ bool GitClient::StashInfo::init(const QString &workingDirectory, const QString &
m_pushAction = pushAction;
QString errorMessage;
QString statusOutput;
- switch (GitPlugin::client()->gitStatus(m_workingDir, StatusMode(NoUntracked | NoSubmodules),
- &statusOutput, &errorMessage)) {
+ switch (m_instance->gitStatus(m_workingDir, StatusMode(NoUntracked | NoSubmodules),
+ &statusOutput, &errorMessage)) {
case GitClient::StatusChanged:
if (m_flags & NoPrompt)
executeStash(command, &errorMessage);
@@ -3529,14 +3536,14 @@ void GitClient::StashInfo::stashPrompt(const QString &command, const QString &st
msgBox.exec();
if (msgBox.clickedButton() == discardButton) {
- m_stashResult = GitPlugin::client()->synchronousReset(m_workingDir, QStringList(), errorMessage) ?
+ m_stashResult = m_instance->synchronousReset(m_workingDir, QStringList(), errorMessage) ?
StashUnchanged : StashFailed;
} else if (msgBox.clickedButton() == ignoreButton) { // At your own risk, so.
m_stashResult = NotStashed;
} else if (msgBox.clickedButton() == cancelButton) {
m_stashResult = StashCanceled;
} else if (msgBox.clickedButton() == stashButton) {
- const bool result = GitPlugin::client()->executeSynchronousStash(
+ const bool result = m_instance->executeSynchronousStash(
m_workingDir, creatorStashMessage(command), false, errorMessage);
m_stashResult = result ? StashUnchanged : StashFailed;
} else if (msgBox.clickedButton() == stashAndPopButton) {
@@ -3547,7 +3554,7 @@ void GitClient::StashInfo::stashPrompt(const QString &command, const QString &st
void GitClient::StashInfo::executeStash(const QString &command, QString *errorMessage)
{
m_message = creatorStashMessage(command);
- if (!GitPlugin::client()->executeSynchronousStash(m_workingDir, m_message, false, errorMessage))
+ if (!m_instance->executeSynchronousStash(m_workingDir, m_message, false, errorMessage))
m_stashResult = StashFailed;
else
m_stashResult = Stashed;
@@ -3570,12 +3577,12 @@ void GitClient::StashInfo::end()
{
if (m_stashResult == Stashed) {
QString stashName;
- if (GitPlugin::client()->stashNameFromMessage(m_workingDir, m_message, &stashName))
- GitPlugin::client()->stashPop(m_workingDir, stashName);
+ if (m_instance->stashNameFromMessage(m_workingDir, m_message, &stashName))
+ m_instance->stashPop(m_workingDir, stashName);
}
if (m_pushAction == NormalPush)
- GitPlugin::client()->push(m_workingDir);
+ m_instance->push(m_workingDir);
else if (m_pushAction == PushToGerrit)
GitPlugin::gerritPush(m_workingDir);
@@ -3589,6 +3596,55 @@ GitRemote::GitRemote(const QString &location) : Core::IVersionControl::RepoUrl(l
isValid = QDir(path).exists() || QDir(path + ".git").exists();
}
+void GitClient::addChangeActions(QMenu *menu, const QString &workingDir, const QString &change)
+{
+ menu->addAction(tr("Cherr&y-Pick Change %1").arg(change), [workingDir, change] {
+ m_instance->synchronousCherryPick(workingDir, change);
+ });
+ menu->addAction(tr("Re&vert Change %1").arg(change), [workingDir, change] {
+ m_instance->synchronousRevert(workingDir, change);
+ });
+ menu->addAction(tr("C&heckout Change %1").arg(change), [workingDir, change] {
+ m_instance->checkout(workingDir, change);
+ });
+ connect(menu->addAction(tr("&Interactive Rebase from Change %1...").arg(change)),
+ &QAction::triggered, [workingDir, change] {
+ GitPlugin::startRebaseFromCommit(workingDir, change);
+ });
+ menu->addAction(tr("&Log for Change %1").arg(change), [workingDir, change] {
+ m_instance->log(workingDir, QString(), false, {change});
+ });
+ menu->addAction(tr("Add &Tag for Change %1...").arg(change), [workingDir, change] {
+ QString output;
+ QString errorMessage;
+ m_instance->synchronousTagCmd(workingDir, QStringList(),
+ &output, &errorMessage);
+
+ const QStringList tags = output.split('\n');
+ BranchAddDialog dialog(tags, BranchAddDialog::Type::AddTag, Core::ICore::dialogParent());
+
+ if (dialog.exec() == QDialog::Rejected)
+ return;
+
+ m_instance->synchronousTagCmd(workingDir,
+ {dialog.branchName(), change},
+ &output, &errorMessage);
+ VcsOutputWindow::append(output);
+ if (!errorMessage.isEmpty())
+ VcsOutputWindow::append(errorMessage, VcsOutputWindow::MessageStyle::Error);
+ });
+
+ auto resetChange = [workingDir, change](const QByteArray &resetType) {
+ m_instance->reset(
+ workingDir, QLatin1String("--" + resetType), change);
+ };
+ auto resetMenu = new QMenu(tr("&Reset to Change %1").arg(change), menu);
+ resetMenu->addAction(tr("&Hard"), std::bind(resetChange, "hard"));
+ resetMenu->addAction(tr("&Mixed"), std::bind(resetChange, "mixed"));
+ resetMenu->addAction(tr("&Soft"), std::bind(resetChange, "soft"));
+ menu->addMenu(resetMenu);
+}
+
} // namespace Internal
} // namespace Git
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index 447238888aa..c159fb31375 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -139,6 +139,7 @@ public:
};
explicit GitClient(GitSettings *settings);
+ static GitClient *instance();
Utils::FilePath vcsBinary() const override;
unsigned gitVersion(QString *errorMessage = nullptr) const;
@@ -352,6 +353,9 @@ public:
VcsBase::VcsCommand *asyncUpstreamStatus(const QString &workingDirectory,
const QString &branch, const QString &upstream);
+
+ static void addChangeActions(QMenu *menu, const QString &workingDir, const QString &change);
+
private:
void finishSubmoduleUpdate();
void chunkActionsRequested(QMenu *menu, int fileIndex, int chunkIndex,
diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp
index 47546d0df61..36463955963 100644
--- a/src/plugins/git/giteditor.cpp
+++ b/src/plugins/git/giteditor.cpp
@@ -152,7 +152,7 @@ static QString sanitizeBlameOutput(const QString &b)
if (b.isEmpty())
return b;
- const bool omitDate = GitPlugin::client()->settings().boolValue(
+ const bool omitDate = GitClient::instance()->settings().boolValue(
GitSettings::omitAnnotationDateKey);
const QChar space(' ');
const int parenPos = b.indexOf(')');
@@ -216,12 +216,6 @@ void GitEditorWidget::setPlainText(const QString &text)
textDocument()->setPlainText(modText);
}
-void GitEditorWidget::resetChange(const QByteArray &resetType)
-{
- GitPlugin::client()->reset(
- sourceWorkingDirectory(), QLatin1String("--" + resetType), m_currentChange);
-}
-
void GitEditorWidget::applyDiffChunk(const DiffChunk& chunk, bool revert)
{
Utils::TemporaryFile patchFile("git-apply-chunk");
@@ -237,7 +231,7 @@ void GitEditorWidget::applyDiffChunk(const DiffChunk& chunk, bool revert)
if (revert)
args << "--reverse";
QString errorMessage;
- if (GitPlugin::client()->synchronousApplyPatch(baseDir, patchFile.fileName(), &errorMessage, args)) {
+ if (GitClient::instance()->synchronousApplyPatch(baseDir, patchFile.fileName(), &errorMessage, args)) {
if (errorMessage.isEmpty())
VcsOutputWindow::append(tr("Chunk successfully staged"));
else
@@ -286,14 +280,14 @@ void GitEditorWidget::aboutToOpen(const QString &fileName, const QString &realFi
const QString gitPath = fi.absolutePath();
setSource(gitPath);
textDocument()->setCodec(
- GitPlugin::client()->encoding(gitPath, "i18n.commitEncoding"));
+ GitClient::instance()->encoding(gitPath, "i18n.commitEncoding"));
}
}
QString GitEditorWidget::decorateVersion(const QString &revision) const
{
// Format verbose, SHA1 being first token
- return GitPlugin::client()->synchronousShortDescription(sourceWorkingDirectory(), revision);
+ return GitClient::instance()->synchronousShortDescription(sourceWorkingDirectory(), revision);
}
QStringList GitEditorWidget::annotationPreviousVersions(const QString &revision) const
@@ -301,8 +295,8 @@ QStringList GitEditorWidget::annotationPreviousVersions(const QString &revision)
QStringList revisions;
QString errorMessage;
// Get the SHA1's of the file.
- if (!GitPlugin::client()->synchronousParentRevisions(sourceWorkingDirectory(),
- revision, &revisions, &errorMessage)) {
+ if (!GitClient::instance()->synchronousParentRevisions(
+ sourceWorkingDirectory(), revision, &revisions, &errorMessage)) {
VcsOutputWindow::appendSilently(errorMessage);
return QStringList();
}
@@ -311,56 +305,13 @@ QStringList GitEditorWidget::annotationPreviousVersions(const QString &revision)
bool GitEditorWidget::isValidRevision(const QString &revision) const
{
- return GitPlugin::client()->isValidRevision(revision);
+ return GitClient::instance()->isValidRevision(revision);
}
void GitEditorWidget::addChangeActions(QMenu *menu, const QString &change)
{
- m_currentChange = change;
- if (contentType() == OtherContent)
- return;
-
- menu->addAction(tr("Cherr&y-Pick Change %1").arg(change), this, [this] {
- GitPlugin::client()->synchronousCherryPick(sourceWorkingDirectory(), m_currentChange);
- });
- menu->addAction(tr("Re&vert Change %1").arg(change), this, [this] {
- GitPlugin::client()->synchronousRevert(sourceWorkingDirectory(), m_currentChange);
- });
- menu->addAction(tr("C&heckout Change %1").arg(change), this, [this] {
- GitPlugin::client()->checkout(sourceWorkingDirectory(), m_currentChange);
- });
- connect(menu->addAction(tr("&Interactive Rebase from Change %1...").arg(change)),
- &QAction::triggered, this, [this] {
- GitPlugin::startRebaseFromCommit(sourceWorkingDirectory(), m_currentChange);
- });
- menu->addAction(tr("&Log for Change %1").arg(change), this, [this] {
- GitPlugin::client()->log(sourceWorkingDirectory(), QString(), false, {m_currentChange});
- });
- menu->addAction(tr("Add &Tag for Change %1...").arg(change), this, [this] {
- QString output;
- QString errorMessage;
- GitPlugin::client()->synchronousTagCmd(sourceWorkingDirectory(), QStringList(),
- &output, &errorMessage);
-
- const QStringList tags = output.split('\n');
- BranchAddDialog dialog(tags, BranchAddDialog::Type::AddTag, Core::ICore::dialogParent());
-
- if (dialog.exec() == QDialog::Rejected)
- return;
-
- GitPlugin::client()->synchronousTagCmd(sourceWorkingDirectory(),
- {dialog.branchName(), m_currentChange},
- &output, &errorMessage);
- VcsOutputWindow::append(output);
- if (!errorMessage.isEmpty())
- VcsOutputWindow::append(errorMessage, VcsOutputWindow::MessageStyle::Error);
- });
-
- auto resetMenu = new QMenu(tr("&Reset to Change %1").arg(change), menu);
- resetMenu->addAction(tr("&Hard"), this, [this] { resetChange("hard"); });
- resetMenu->addAction(tr("&Mixed"), this, [this] { resetChange("mixed"); });
- resetMenu->addAction(tr("&Soft"), this, [this] { resetChange("soft"); });
- menu->addMenu(resetMenu);
+ if (contentType() != OtherContent)
+ GitClient::addChangeActions(menu, change, sourceWorkingDirectory());
}
QString GitEditorWidget::revisionSubject(const QTextBlock &inBlock) const
diff --git a/src/plugins/git/giteditor.h b/src/plugins/git/giteditor.h
index 18397d94975..0377c2d6806 100644
--- a/src/plugins/git/giteditor.h
+++ b/src/plugins/git/giteditor.h
@@ -58,7 +58,6 @@ private:
void applyDiffChunk(const VcsBase::DiffChunk& chunk, bool revert);
void init() override;
- void resetChange(const QByteArray &resetType);
void addDiffActions(QMenu *menu, const VcsBase::DiffChunk &chunk) override;
void aboutToOpen(const QString &fileName, const QString &realFileName) override;
QString changeUnderCursor(const QTextCursor &) const override;
@@ -73,7 +72,6 @@ private:
QString sourceWorkingDirectory() const;
mutable QRegExp m_changeNumberPattern;
- QString m_currentChange;
GitLogFilterWidget *m_logFilterWidget = nullptr;
};
diff --git a/src/plugins/git/gitgrep.cpp b/src/plugins/git/gitgrep.cpp
index 66e249fbf70..c413c6c2311 100644
--- a/src/plugins/git/gitgrep.cpp
+++ b/src/plugins/git/gitgrep.cpp
@@ -26,7 +26,6 @@
#include "gitgrep.h"
#include "gitclient.h"
#include "gitconstants.h"
-#include "gitplugin.h"
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/progressmanager/progressmanager.h>
@@ -187,7 +186,7 @@ public:
return QString(":!" + filter);
});
arguments << "--" << filterArgs << exclusionArgs;
- QScopedPointer<VcsCommand> command(GitPlugin::client()->createCommand(m_directory));
+ QScopedPointer<VcsCommand> command(GitClient::instance()->createCommand(m_directory));
command->addFlags(VcsCommand::SilentOutput | VcsCommand::SuppressFailMessage);
command->setProgressiveOutput(true);
QFutureWatcher<FileSearchResultList> watcher;
@@ -195,7 +194,7 @@ public:
connect(&watcher, &QFutureWatcher<FileSearchResultList>::canceled,
command.data(), &VcsCommand::cancel);
connect(command.data(), &VcsCommand::stdOutText, this, &GitGrepRunner::read);
- SynchronousProcessResponse resp = command->runCommand({GitPlugin::client()->vcsBinary(), arguments}, 0);
+ SynchronousProcessResponse resp = command->runCommand({GitClient::instance()->vcsBinary(), arguments}, 0);
switch (resp.result) {
case SynchronousProcessResponse::TerminatedAbnormally:
case SynchronousProcessResponse::StartFailed:
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 55f71643c42..be99e377d26 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -1760,11 +1760,11 @@ void GitPluginPrivate::updateCurrentBranch()
QObject *GitPlugin::remoteCommand(const QStringList &options, const QString &workingDirectory,
const QStringList &)
{
- if (!GitPlugin::client() || options.size() < 2)
+ if (options.size() < 2)
return nullptr;
if (options.first() == "-git-show")
- GitPlugin::client()->show(workingDirectory, options.at(1));
+ dd->m_gitClient.show(workingDirectory, options.at(1));
return nullptr;
}
diff --git a/src/plugins/git/gitsubmiteditor.cpp b/src/plugins/git/gitsubmiteditor.cpp
index 35f7892dd65..ebba5b19f37 100644
--- a/src/plugins/git/gitsubmiteditor.cpp
+++ b/src/plugins/git/gitsubmiteditor.cpp
@@ -88,8 +88,8 @@ CommitDataFetchResult CommitDataFetchResult::fetch(CommitType commitType, const
CommitDataFetchResult result;
result.commitData.commitType = commitType;
QString commitTemplate;
- result.success = GitPlugin::client()->getCommitData(workingDirectory, &commitTemplate,
- result.commitData, &result.errorMessage);
+ result.success = GitClient::instance()->getCommitData(
+ workingDirectory, &commitTemplate, result.commitData, &result.errorMessage);
return result;
}
@@ -202,15 +202,15 @@ void GitSubmitEditor::slotDiffSelected(const QList<int> &rows)
}
}
if (!unstagedFiles.empty() || !stagedFiles.empty())
- GitPlugin::client()->diffFiles(m_workingDirectory, unstagedFiles, stagedFiles);
+ GitClient::instance()->diffFiles(m_workingDirectory, unstagedFiles, stagedFiles);
if (!unmergedFiles.empty())
- GitPlugin::client()->merge(m_workingDirectory, unmergedFiles);
+ GitClient::instance()->merge(m_workingDirectory, unmergedFiles);
}
void GitSubmitEditor::showCommit(const QString &commit)
{
if (!m_workingDirectory.isEmpty())
- GitPlugin::client()->show(m_workingDirectory, commit);
+ GitClient::instance()->show(m_workingDirectory, commit);
}
void GitSubmitEditor::updateFileModel()
@@ -230,7 +230,7 @@ void GitSubmitEditor::updateFileModel()
Core::ProgressManager::addTask(m_fetchWatcher.future(), tr("Refreshing Commit Data"),
TASK_UPDATE_COMMIT);
- GitPlugin::client()->addFuture(m_fetchWatcher.future());
+ GitClient::instance()->addFuture(m_fetchWatcher.future());
}
void GitSubmitEditor::forceUpdateFileModel()
diff --git a/src/plugins/git/logchangedialog.cpp b/src/plugins/git/logchangedialog.cpp
index 25c59bbcb7f..d4b0a9602d3 100644
--- a/src/plugins/git/logchangedialog.cpp
+++ b/src/plugins/git/logchangedialog.cpp
@@ -24,7 +24,6 @@
****************************************************************************/
#include "logchangedialog.h"
-#include "gitplugin.h"
#include "gitclient.h"
#include <vcsbase/vcsoutputwindow.h>
@@ -79,7 +78,7 @@ bool LogChangeWidget::init(const QString &repository, const QString &commit, Log
return true;
if (!(flags & Silent)) {
VcsOutputWindow::appendError(
- GitPlugin::client()->msgNoCommits(flags & IncludeRemotes));
+ GitClient::instance()->msgNoCommits(flags & IncludeRemotes));
}
return false;
}
@@ -159,8 +158,10 @@ bool LogChangeWidget::populateLog(const QString &repository, const QString &comm
arguments << "--not" << "--remotes";
arguments << "--";
QString output;
- if (!GitPlugin::client()->synchronousLog(repository, arguments, &output, nullptr, VcsCommand::NoOutput))
+ if (!GitClient::instance()->synchronousLog(
+ repository, arguments, &output, nullptr, VcsCommand::NoOutput)) {
return false;
+ }
const QStringList lines = output.split('\n');
for (const QString &line : lines) {
const int colonPos = line.indexOf(':');
@@ -211,8 +212,8 @@ LogChangeDialog::LogChangeDialog(bool isReset, QWidget *parent) :
m_resetTypeComboBox->addItem(tr("Hard"), "--hard");
m_resetTypeComboBox->addItem(tr("Mixed"), "--mixed");
m_resetTypeComboBox->addItem(tr("Soft"), "--soft");
- m_resetTypeComboBox->setCurrentIndex(GitPlugin::client()->settings().intValue(
- GitSettings::lastResetIndexKey));
+ m_resetTypeComboBox->setCurrentIndex(
+ GitClient::instance()->settings().intValue(GitSettings::lastResetIndexKey));
popUpLayout->addWidget(m_resetTypeComboBox);
popUpLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Ignored));
}
@@ -239,8 +240,8 @@ bool LogChangeDialog::runDialog(const QString &repository,
if (QDialog::exec() == QDialog::Accepted) {
if (m_resetTypeComboBox) {
- GitPlugin::client()->settings().setValue(GitSettings::lastResetIndexKey,
- m_resetTypeComboBox->currentIndex());
+ GitClient::instance()->settings().setValue(
+ GitSettings::lastResetIndexKey, m_resetTypeComboBox->currentIndex());
}
return true;
}
diff --git a/src/plugins/git/mergetool.cpp b/src/plugins/git/mergetool.cpp
index d951200784c..adc5d1ce7b4 100644
--- a/src/plugins/git/mergetool.cpp
+++ b/src/plugins/git/mergetool.cpp
@@ -60,7 +60,7 @@ bool MergeTool::start(const QString &workingDirectory, const QStringList &files)
m_process->setWorkingDirectory(workingDirectory);
m_process->setProcessEnvironment(env);
m_process->setProcessChannelMode(QProcess::MergedChannels);
- const Utils::FilePath binary = GitPlugin::client()->vcsBinary();
+ const Utils::FilePath binary = GitClient::instance()->vcsBinary();
VcsOutputWindow::appendCommand(workingDirectory, {binary, arguments});
m_process->start(binary.toString(), arguments);
if (m_process->waitForStarted()) {
@@ -263,7 +263,7 @@ void MergeTool::done()
VcsOutputWindow::appendError(tr("Merge tool process terminated with exit code %1")
.arg(exitCode));
}
- GitPlugin::client()->continueCommandIfNeeded(workingDirectory, exitCode == 0);
+ GitClient::instance()->continueCommandIfNeeded(workingDirectory, exitCode == 0);
GitPlugin::emitRepositoryChanged(workingDirectory);
deleteLater();
}
diff --git a/src/plugins/git/remotedialog.cpp b/src/plugins/git/remotedialog.cpp
index b0e629f0643..912c1be4d9b 100644
--- a/src/plugins/git/remotedialog.cpp
+++ b/src/plugins/git/remotedialog.cpp
@@ -203,7 +203,7 @@ void RemoteDialog::pushToRemote()
const int row = indexList.at(0).row();
const QString remoteName = m_remoteModel->remoteName(row);
- GitPlugin::client()->push(m_remoteModel->workingDirectory(), {remoteName});
+ GitClient::instance()->push(m_remoteModel->workingDirectory(), {remoteName});
}
void RemoteDialog::fetchFromRemote()
@@ -214,7 +214,7 @@ void RemoteDialog::fetchFromRemote()
int row = indexList.at(0).row();
const QString remoteName = m_remoteModel->remoteName(row);
- GitPlugin::client()->fetch(m_remoteModel->workingDirectory(), remoteName);
+ GitClient::instance()->fetch(m_remoteModel->workingDirectory(), remoteName);
}
void RemoteDialog::updateButtonState()
diff --git a/src/plugins/git/remotemodel.cpp b/src/plugins/git/remotemodel.cpp
index 0a0f30c1b4e..da2e2fe2d71 100644
--- a/src/plugins/git/remotemodel.cpp
+++ b/src/plugins/git/remotemodel.cpp
@@ -24,7 +24,6 @@
****************************************************************************/
#include "remotemodel.h"
-#include "gitplugin.h"
#include "gitclient.h"
#include <utils/algorithm.h>
@@ -55,7 +54,7 @@ bool RemoteModel::removeRemote(int row)
{
QString output;
QString error;
- bool success = GitPlugin::client()->synchronousRemoteCmd(
+ bool success = GitClient::instance()->synchronousRemoteCmd(
m_workingDirectory, {"rm", remoteName(row)}, &output, &error);
if (success)
success = refresh(m_workingDirectory, &error);
@@ -69,7 +68,7 @@ bool RemoteModel::addRemote(const QString &name, const QString &url)
if (name.isEmpty() || url.isEmpty())
return false;
- bool success = GitPlugin::client()->synchronousRemoteCmd(
+ bool success = GitClient::instance()->synchronousRemoteCmd(
m_workingDirectory, {"add", name, url}, &output, &error);
if (success)
success = refresh(m_workingDirectory, &error);
@@ -80,7 +79,7 @@ bool RemoteModel::renameRemote(const QString &oldName, const QString &newName)
{
QString output;
QString error;
- bool success = GitPlugin::client()->synchronousRemoteCmd(
+ bool success = GitClient::instance()->synchronousRemoteCmd(
m_workingDirectory, {"rename", oldName, newName}, &output, &error);
if (success)
success = refresh(m_workingDirectory, &error);
@@ -91,7 +90,7 @@ bool RemoteModel::updateUrl(const QString &name, const QString &newUrl)
{
QString output;
QString error;
- bool success = GitPlugin::client()->synchronousRemoteCmd(
+ bool success = GitClient::instance()->synchronousRemoteCmd(
m_workingDirectory, {"set-url", name, newUrl}, &output, &error);
if (success)
success = refresh(m_workingDirectory, &error);
@@ -186,7 +185,7 @@ bool RemoteModel::refresh(const QString &workingDirectory, QString *errorMessage
// get list of remotes.
QMap<QString,QString> remotesList
- = GitPlugin::client()->synchronousRemotesList(workingDirectory, errorMessage);
+ = GitClient::instance()->synchronousRemotesList(workingDirectory, errorMessage);
beginResetModel();
m_remotes.clear();
diff --git a/src/plugins/git/stashdialog.cpp b/src/plugins/git/stashdialog.cpp
index ef1b324f58f..f33791549e8 100644
--- a/src/plugins/git/stashdialog.cpp
+++ b/src/plugins/git/stashdialog.cpp
@@ -161,7 +161,7 @@ void StashDialog::refresh(const QString &repository, bool force)
m_model->setStashes(QList<Stash>());
} else {
QList<Stash> stashes;
- GitPlugin::client()->synchronousStashList(m_repository, &stashes);
+ GitClient::instance()->synchronousStashList(m_repository, &stashes);
m_model->setStashes(stashes);
if (!stashes.isEmpty()) {
for (int c = 0; c < ColumnCount; c++)
@@ -177,7 +177,7 @@ void StashDialog::deleteAll()
if (!ask(title, tr("Do you want to delete all stashes?")))
return;
QString errorMessage;
- if (GitPlugin::client()->synchronousStashRemove(m_repository, QString(), &errorMessage))
+ if (GitClient::instance()->synchronousStashRemove(m_repository, QString(), &errorMessage))
refresh(m_repository, true);
else
warning(title, errorMessage);
@@ -194,7 +194,7 @@ void StashDialog::deleteSelection()
QStringList errors;
// Delete in reverse order as stashes rotate
for (int r = rows.size() - 1; r >= 0; r--)
- if (!GitPlugin::client()->synchronousStashRemove(m_repository, m_model->at(rows.at(r)).name, &errorMessage))
+ if (!GitClient::instance()->synchronousStashRemove(m_repository, m_model->at(rows.at(r)).name, &errorMessage))
errors.push_back(errorMessage);
refresh(m_repository, true);
if (!errors.isEmpty())
@@ -205,7 +205,7 @@ void StashDialog::showCurrent()
{
const int index = currentRow();
QTC_ASSERT(index >= 0, return);
- GitPlugin::client()->show(m_repository, QString(m_model->at(index).name));
+ GitClient::instance()->show(m_repository, QString(m_model->at(index).name));
}
// Suggest Branch name to restore 'stash@{0}' -> 'stash0-date'
@@ -266,7 +266,8 @@ bool StashDialog::promptForRestore(QString *stash,
{
const QString stashIn = *stash;
bool modifiedPromptShown = false;
- switch (GitPlugin::client()->gitStatus(m_repository, StatusMode(NoUntracked | NoSubmodules), nullptr, errorMessage)) {
+ switch (GitClient::instance()->gitStatus(
+ m_repository, StatusMode(NoUntracked | NoSubmodules), nullptr, errorMessage)) {
case GitClient::StatusFailed:
return false;
case GitClient::StatusChanged: {
@@ -274,13 +275,15 @@ bool StashDialog::promptForRestore(QString *stash,
case ModifiedRepositoryCancel:
return false;
case ModifiedRepositoryStash:
- if (GitPlugin::client()->synchronousStash(m_repository, QString(), GitClient::StashPromptDescription).isEmpty())
+ if (GitClient::instance()->synchronousStash(
+ m_repository, QString(), GitClient::StashPromptDescription).isEmpty()) {
return false;
+ }
*stash = nextStash(*stash); // Our stash id to be restored changed
QTC_ASSERT(!stash->isEmpty(), return false);
break;
case ModifiedRepositoryDiscard:
- if (!GitPlugin::client()->synchronousReset(m_repository))
+ if (!GitClient::instance()->synchronousReset(m_repository))
return false;
break;
}
@@ -317,7 +320,7 @@ void StashDialog::restoreCurrent()
// Make sure repository is not modified, restore. The command will
// output to window on success.
if (promptForRestore(&name, nullptr, &errorMessage)
- && GitPlugin::client()->synchronousStashRestore(m_repository, name)) {
+ && GitClient::instance()->synchronousStashRestore(m_repository, name)) {
refresh(m_repository, true); // Might have stashed away local changes.
} else if (!errorMessage.isEmpty()) {
warning(msgRestoreFailedTitle(name), errorMessage);
@@ -332,7 +335,7 @@ void StashDialog::restoreCurrentInBranch()
QString branch;
QString name = m_model->at(index).name;
if (promptForRestore(&name, &branch, &errorMessage)
- && GitPlugin::client()->synchronousStashRestore(m_repository, name, false, branch)) {
+ && GitClient::instance()->synchronousStashRestore(m_repository, name, false, branch)) {
refresh(m_repository, true); // git deletes the stash, unfortunately.
} else if (!errorMessage.isEmpty()) {
warning(msgRestoreFailedTitle(name), errorMessage);
diff --git a/src/plugins/languageclient/CMakeLists.txt b/src/plugins/languageclient/CMakeLists.txt
index d1910757dbc..abddb9cd968 100644
--- a/src/plugins/languageclient/CMakeLists.txt
+++ b/src/plugins/languageclient/CMakeLists.txt
@@ -1,5 +1,5 @@
add_qtc_plugin(LanguageClient
- DEPENDS LanguageServerProtocol Qt5::Core
+ PUBLIC_DEPENDS LanguageServerProtocol Qt5::Core
PLUGIN_DEPENDS ProjectExplorer Core TextEditor
SOURCES
client.cpp client.h
diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp
index ae2eca2ff63..54b9740809c 100644
--- a/src/plugins/languageclient/languageclientcompletionassist.cpp
+++ b/src/plugins/languageclient/languageclientcompletionassist.cpp
@@ -35,6 +35,7 @@
#include <texteditor/codeassist/genericproposal.h>
#include <texteditor/codeassist/genericproposalmodel.h>
#include <utils/algorithm.h>
+#include <utils/executeondestruction.h>
#include <utils/textutils.h>
#include <utils/utilsicons.h>
@@ -361,6 +362,9 @@ void LanguageClientCompletionAssistProcessor::cancel()
void LanguageClientCompletionAssistProcessor::handleCompletionResponse(
const CompletionRequest::Response &response)
{
+ LanguageClientCompletionProposal *proposal = nullptr;
+ // We must report back to the code assistant under all circumstances
+ Utils::ExecuteOnDestruction eod([this, proposal]() { setAsyncProposalAvailable(proposal); });
qCDebug(LOGLSPCOMPLETION) << QTime::currentTime() << " : got completions";
m_currentRequest = MessageId();
QTC_ASSERT(m_client, return);
@@ -383,12 +387,11 @@ void LanguageClientCompletionAssistProcessor::handleCompletionResponse(
model->loadContent(Utils::transform(items, [](const CompletionItem &item){
return static_cast<AssistProposalItemInterface *>(new LanguageClientCompletionItem(item));
}));
- auto proposal = new LanguageClientCompletionProposal(m_pos, model);
+ proposal = new LanguageClientCompletionProposal(m_pos, model);
proposal->m_document = m_document;
proposal->m_pos = m_pos;
proposal->setFragile(true);
proposal->setSupportsPrefix(false);
- setAsyncProposalAvailable(proposal);
qCDebug(LOGLSPCOMPLETION) << QTime::currentTime() << " : "
<< items.count() << " completions handled";
}
diff --git a/src/plugins/nim/project/nimrunconfiguration.cpp b/src/plugins/nim/project/nimrunconfiguration.cpp
index 808d36e101a..142e4344904 100644
--- a/src/plugins/nim/project/nimrunconfiguration.cpp
+++ b/src/plugins/nim/project/nimrunconfiguration.cpp
@@ -58,8 +58,8 @@ public:
setDisplayName(tr("Current Build Target"));
setDefaultDisplayName(tr("Current Build Target"));
- setUpdater([this] {
- auto buildConfiguration = qobject_cast<NimBuildConfiguration *>(activeBuildConfiguration());
+ setUpdater([this, target] {
+ auto buildConfiguration = qobject_cast<NimBuildConfiguration *>(target->activeBuildConfiguration());
QTC_ASSERT(buildConfiguration, return);
const QFileInfo outFileInfo = buildConfiguration->outFilePath().toFileInfo();
aspect<ExecutableAspect>()->setExecutable(FilePath::fromString(outFileInfo.absoluteFilePath()));
diff --git a/src/plugins/perfprofiler/perfprofilertool.cpp b/src/plugins/perfprofiler/perfprofilertool.cpp
index 5dc99eeceab..8176432c179 100644
--- a/src/plugins/perfprofiler/perfprofilertool.cpp
+++ b/src/plugins/perfprofiler/perfprofilertool.cpp
@@ -159,7 +159,7 @@ PerfProfilerTool::PerfProfilerTool()
tracePointsAction->setEnabled(m_startAction->isEnabled());
});
- connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::updateRunActions,
+ connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::runActionsUpdated,
this, &PerfProfilerTool::updateRunActions);
m_recordButton = new QToolButton;
diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp
index c777a61ee89..4f866490a10 100644
--- a/src/plugins/projectexplorer/appoutputpane.cpp
+++ b/src/plugins/projectexplorer/appoutputpane.cpp
@@ -779,7 +779,7 @@ void AppOutputPane::slotRunControlFinished2(RunControl *sender)
if (current && current == sender)
enableButtons(current);
- emit ProjectExplorerPlugin::instance()->updateRunActions();
+ ProjectExplorerPlugin::updateRunActions();
#ifdef Q_OS_WIN
const bool isRunning = Utils::anyOf(m_runControlTabs, [](const RunControlTab &rt) {
diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp
index ad9e980e011..a93a33d1aab 100644
--- a/src/plugins/projectexplorer/buildconfiguration.cpp
+++ b/src/plugins/projectexplorer/buildconfiguration.cpp
@@ -183,7 +183,7 @@ BuildConfiguration::BuildConfiguration(Target *target, Core::Id id)
connect(this, &BuildConfiguration::enabledChanged, this, [this] {
if (isActive() && project() == SessionManager::startupProject()) {
ProjectExplorerPlugin::updateActions();
- emit ProjectExplorerPlugin::instance()->updateRunActions();
+ ProjectExplorerPlugin::updateRunActions();
}
});
}
diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp
index 720b501681d..27c46a54a61 100644
--- a/src/plugins/projectexplorer/buildmanager.cpp
+++ b/src/plugins/projectexplorer/buildmanager.cpp
@@ -265,9 +265,6 @@ BuildManager::BuildManager(QObject *parent, QAction *cancelBuildAction)
connect(d->m_taskWindow, &Internal::TaskWindow::tasksChanged,
this, &BuildManager::updateTaskCount);
- connect(d->m_taskWindow, &Internal::TaskWindow::tasksCleared,
- this,&BuildManager::tasksCleared);
-
connect(&d->m_progressWatcher, &QFutureWatcherBase::canceled,
this, &BuildManager::cancel);
connect(&d->m_progressWatcher, &QFutureWatcherBase::finished,
@@ -457,7 +454,6 @@ void BuildManager::updateTaskCount()
{
const int errors = getErrorTaskCount();
ProgressManager::setApplicationLabel(errors > 0 ? QString::number(errors) : QString());
- emit m_instance->tasksChanged();
}
void BuildManager::finish()
diff --git a/src/plugins/projectexplorer/buildmanager.h b/src/plugins/projectexplorer/buildmanager.h
index 29351b2eb6c..d62786ed817 100644
--- a/src/plugins/projectexplorer/buildmanager.h
+++ b/src/plugins/projectexplorer/buildmanager.h
@@ -102,9 +102,6 @@ public slots:
signals:
void buildStateChanged(ProjectExplorer::Project *pro);
void buildQueueFinished(bool success);
- void tasksChanged();
- void taskAdded(const ProjectExplorer::Task &task);
- void tasksCleared();
private:
static void addToTaskWindow(const ProjectExplorer::Task &task, int linkedOutputLines, int skipLines);
diff --git a/src/plugins/projectexplorer/buildsystem.cpp b/src/plugins/projectexplorer/buildsystem.cpp
index f360ea6648b..ea299cd522d 100644
--- a/src/plugins/projectexplorer/buildsystem.cpp
+++ b/src/plugins/projectexplorer/buildsystem.cpp
@@ -316,7 +316,7 @@ void BuildSystem::emitBuildSystemUpdated()
QString BuildSystem::disabledReason(const QString &buildKey) const
{
- if (hasParsingData()) {
+ if (!hasParsingData()) {
QString msg = isParsing() ? tr("The project is currently being parsed.")
: tr("The project could not be fully parsed.");
const FilePath projectFilePath = buildTarget(buildKey).projectFilePath;
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index 2ab52663d08..9748b52f7fb 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -2053,6 +2053,7 @@ Utils::optional<QString> MsvcToolChain::generateEnvironmentSettings(const Utils:
}
if (Utils::HostOsInfo::isWindowsHost())
saver.write("chcp 65001\r\n");
+ saver.write("set VSCMD_SKIP_SENDTELEMETRY=1\r\n");
saver.write(call + "\r\n");
saver.write("@echo " + marker.toLocal8Bit() + "\r\n");
saver.write("set\r\n");
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 575543d77bd..af5973fb4b3 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -453,7 +453,7 @@ public:
void activeRunConfigurationChanged();
void activeBuildConfigurationChanged();
- void slotUpdateRunActions();
+ void doUpdateRunActions();
void currentModeChanged(Core::Id mode, Core::Id oldMode);
@@ -1714,8 +1714,6 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
connect(dd->m_projectTreeExpandAllAction, &QAction::triggered,
ProjectTree::instance(), &ProjectTree::expandAll);
- connect(this, &ProjectExplorerPlugin::updateRunActions,
- dd, &ProjectExplorerPluginPrivate::slotUpdateRunActions);
connect(this, &ProjectExplorerPlugin::settingsChanged,
dd, &ProjectExplorerPluginPrivate::updateRunWithoutDeployMenu);
@@ -2483,7 +2481,7 @@ void ProjectExplorerPluginPrivate::startRunControl(RunControl *runControl)
Qt::QueuedConnection);
++m_activeRunControlCount;
runControl->initiateStart();
- emit m_instance->updateRunActions();
+ doUpdateRunActions();
}
void ProjectExplorerPluginPrivate::showOutputPaneForRunControl(RunControl *runControl)
@@ -2540,7 +2538,7 @@ void ProjectExplorerPluginPrivate::buildQueueFinished(bool success)
m_delayedRunConfiguration = nullptr;
m_shouldHaveRunConfiguration = false;
m_runMode = Constants::NO_RUN_MODE;
- emit m_instance->updateRunActions();
+ doUpdateRunActions();
}
QList<QPair<QString, QString> > ProjectExplorerPluginPrivate::recentProjects() const
@@ -2903,7 +2901,8 @@ void ProjectExplorerPlugin::runRunConfiguration(RunConfiguration *rc,
dd->executeRunConfiguration(rc, runMode);
break;
}
- emit m_instance->updateRunActions();
+
+ dd->doUpdateRunActions();
}
QList<QPair<Runnable, Utils::ProcessHandle>> ProjectExplorerPlugin::runningRunControlProcesses()
@@ -3001,7 +3000,7 @@ void ProjectExplorerPluginPrivate::activeRunConfigurationChanged()
if (rc == previousRunConfiguration)
return;
updateActions();
- emit m_instance->updateRunActions();
+ doUpdateRunActions();
}
void ProjectExplorerPluginPrivate::activeBuildConfigurationChanged()
@@ -3015,7 +3014,7 @@ void ProjectExplorerPluginPrivate::activeBuildConfigurationChanged()
return;
updateActions();
- emit m_instance->updateRunActions();
+ doUpdateRunActions();
}
void ProjectExplorerPluginPrivate::updateDeployActions()
@@ -3064,7 +3063,7 @@ void ProjectExplorerPluginPrivate::updateDeployActions()
enableDeploySessionAction = false;
m_deploySessionAction->setEnabled(enableDeploySessionAction);
- emit m_instance->updateRunActions();
+ doUpdateRunActions();
}
bool ProjectExplorerPlugin::canRunStartupProject(Core::Id runMode, QString *whyNot)
@@ -3139,13 +3138,15 @@ bool ProjectExplorerPlugin::canRunStartupProject(Core::Id runMode, QString *whyN
return true;
}
-void ProjectExplorerPluginPrivate::slotUpdateRunActions()
+void ProjectExplorerPluginPrivate::doUpdateRunActions()
{
QString whyNot;
const bool state = ProjectExplorerPlugin::canRunStartupProject(Constants::NORMAL_RUN_MODE, &whyNot);
m_runAction->setEnabled(state);
m_runAction->setToolTip(whyNot);
m_runWithoutDeployAction->setEnabled(state);
+
+ emit m_instance->runActionsUpdated();
}
void ProjectExplorerPluginPrivate::addToRecentProjects(const QString &fileName, const QString &displayName)
@@ -4002,6 +4003,11 @@ void ProjectExplorerPlugin::removeFromRecentProjects(const QString &fileName,
dd->removeFromRecentProjects(fileName, displayName);
}
+void ProjectExplorerPlugin::updateRunActions()
+{
+ dd->doUpdateRunActions();
+}
+
QList<QPair<QString, QString> > ProjectExplorerPlugin::recentProjects()
{
return dd->recentProjects();
diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h
index 2c803aa7840..afc84671cb2 100644
--- a/src/plugins/projectexplorer/projectexplorer.h
+++ b/src/plugins/projectexplorer/projectexplorer.h
@@ -182,6 +182,8 @@ public:
static void clearRecentProjects();
static void removeFromRecentProjects(const QString &fileName, const QString &displayName);
+ static void updateRunActions();
+
signals:
void finishedInitialization();
@@ -193,7 +195,7 @@ signals:
void settingsChanged();
- void updateRunActions();
+ void runActionsUpdated();
private:
static bool coreAboutToClose();
diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp
index 8a6f7afaa4c..b1128896f65 100644
--- a/src/plugins/projectexplorer/runconfiguration.cpp
+++ b/src/plugins/projectexplorer/runconfiguration.cpp
@@ -203,11 +203,6 @@ RunConfiguration::RunConfiguration(Target *target, Core::Id id)
RunConfiguration::~RunConfiguration() = default;
-bool RunConfiguration::isActive() const
-{
- return target()->isActive() && target()->activeRunConfiguration() == this;
-}
-
QString RunConfiguration::disabledReason() const
{
BuildSystem *bs = activeBuildSystem();
@@ -252,11 +247,6 @@ QMap<Core::Id, QVariantMap> RunConfiguration::aspectData() const
return data;
}
-BuildConfiguration *RunConfiguration::activeBuildConfiguration() const
-{
- return target()->activeBuildConfiguration();
-}
-
BuildSystem *RunConfiguration::activeBuildSystem() const
{
return target()->buildSystem();
@@ -304,8 +294,10 @@ void RunConfiguration::update()
emit enabledChanged();
- if (isActive() && project() == SessionManager::startupProject())
- emit ProjectExplorerPlugin::instance()->updateRunActions();
+ const bool isActive = target()->isActive() && target()->activeRunConfiguration() == this;
+
+ if (isActive && project() == SessionManager::startupProject())
+ ProjectExplorerPlugin::updateRunActions();
}
BuildTargetInfo RunConfiguration::buildTargetInfo() const
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index f79001a571c..437d3f4ef03 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -128,8 +128,6 @@ class PROJECTEXPLORER_EXPORT RunConfiguration : public ProjectConfiguration
public:
~RunConfiguration() override;
- bool isActive() const;
-
virtual QString disabledReason() const;
virtual bool isEnabled() const;
@@ -179,8 +177,7 @@ signals:
protected:
RunConfiguration(Target *target, Core::Id id);
- /// convenience function to get current build configuration.
- BuildConfiguration *activeBuildConfiguration() const;
+ /// convenience function to get current build system. Try to avoid.
BuildSystem *activeBuildSystem() const;
using Updater = std::function<void()>;
diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp
index d7f0c92c84b..9548be05521 100644
--- a/src/plugins/projectexplorer/taskwindow.cpp
+++ b/src/plugins/projectexplorer/taskwindow.cpp
@@ -380,7 +380,6 @@ void TaskWindow::clearTasks(Core::Id categoryId)
d->m_model->clearTasks(categoryId);
emit tasksChanged();
- emit tasksCleared();
navigateStateChanged();
}
diff --git a/src/plugins/projectexplorer/taskwindow.h b/src/plugins/projectexplorer/taskwindow.h
index efefb72658f..7f11ca1fb1a 100644
--- a/src/plugins/projectexplorer/taskwindow.h
+++ b/src/plugins/projectexplorer/taskwindow.h
@@ -79,7 +79,6 @@ public:
signals:
void tasksChanged();
- void tasksCleared();
private:
void updateFilter() override;
diff --git a/src/plugins/qmldesigner/components/formeditor/lineeditaction.cpp b/src/plugins/qmldesigner/components/formeditor/lineeditaction.cpp
index 5f9e7f571ba..8f5dd75718d 100644
--- a/src/plugins/qmldesigner/components/formeditor/lineeditaction.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/lineeditaction.cpp
@@ -55,7 +55,7 @@ QWidget *LineEditAction::createWidget(QWidget *parent)
QFont font = lineEdit->font();
font.setPixelSize(Theme::instance()->smallFontPixelSize());
lineEdit->setFont(font);
- lineEdit->setValidator(new QIntValidator(0, 4096, this));
+ lineEdit->setValidator(new QIntValidator(0, 99999, this));
connect(lineEdit, &QLineEdit::textEdited, this, &LineEditAction::textChanged);
connect(this, &LineEditAction::lineEditTextClear, lineEdit, &QLineEdit::clear);
diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.cpp b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.cpp
index 3977eff168a..f379ec53289 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.cpp
+++ b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.cpp
@@ -57,7 +57,7 @@ void GradientPresetDefaultListModel::addAllPresets()
for (int i = 0; i < metaEnum.keyCount(); i++) {
auto preset = GradientPresetItem::Preset(metaEnum.value(i));
- if (preset < GradientPresetItem::Preset::NumPresets)
+ if (preset < GradientPresetItem::numPresets)
addItem(GradientPresetItem(preset));
}
}
diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.h b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.h
index 4cb5a519fbf..cec45bb4af0 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.h
+++ b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.h
@@ -42,7 +42,13 @@ public:
#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
using Preset = QGradient::Preset;
#else
- enum Preset { NumPresets = 0 };
+ enum Preset {};
+#endif
+
+#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
+ static const int numPresets = Preset::NumPresets;
+#else
+ static const int numPresets = 181;
#endif
explicit GradientPresetItem();
diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp
index c14d60d3842..274935b8a40 100644
--- a/src/plugins/qmlprofiler/qmlprofilertool.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp
@@ -243,7 +243,7 @@ QmlProfilerTool::QmlProfilerTool()
perspective->addToolBarWidget(d->m_displayFeaturesButton);
perspective->addToolBarWidget(d->m_timeLabel);
- connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::updateRunActions,
+ connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::runActionsUpdated,
this, &QmlProfilerTool::updateRunActions);
QmlProfilerTextMarkModel *model = d->m_profilerModelManager->textMarkModel();
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index e90af4d627f..8dd3ff712c8 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -646,6 +646,7 @@ public:
MarginSettings m_marginSettings;
// apply when making visible the first time, for the split case
bool m_fontSettingsNeedsApply = true;
+ bool m_wasNotYetShown = true;
BehaviorSettings m_behaviorSettings;
int extraAreaSelectionAnchorBlockNumber = -1;
@@ -4331,16 +4332,12 @@ void TextEditorWidgetPrivate::paintCurrentLineHighlight(const PaintEventData &da
QRectF lineRect = data.block.layout()->lineForTextPosition(data.textCursor.positionInBlock()).rect();
lineRect.moveTop(lineRect.top() + blockRect.top());
lineRect.setLeft(0);
- lineRect.setRight(data.viewportRect.width() - data.offset.x());
+ lineRect.setRight(data.viewportRect.width());
QColor color = m_document->fontSettings().toTextCharFormat(C_CURRENT_LINE).background().color();
// set alpha, otherwise we cannot see block highlighting and find scope underneath
color.setAlpha(128);
- if (!data.eventRect.contains(lineRect.toRect())) {
- QRect updateRect = data.eventRect;
- updateRect.setLeft(0);
- updateRect.setRight(data.viewportRect.width() - int(data.offset.x()));
- q->viewport()->update(updateRect);
- }
+ if (!data.eventRect.contains(lineRect.toRect()))
+ q->viewport()->update(lineRect.toRect());
painter.fillRect(lineRect, color);
}
@@ -7217,10 +7214,20 @@ void TextEditorWidget::encourageApply()
void TextEditorWidget::showEvent(QShowEvent* e)
{
triggerPendingUpdates();
+ // QPlainTextEdit::showEvent scrolls to make the cursor visible on first show
+ // which we don't want, since we restore previous states when
+ // opening editors, and when splitting/duplicating.
+ // So restore the previous state after that.
+ QByteArray state;
+ if (d->m_wasNotYetShown)
+ state = saveState();
QPlainTextEdit::showEvent(e);
+ if (d->m_wasNotYetShown) {
+ restoreState(state);
+ d->m_wasNotYetShown = false;
+ }
}
-
void TextEditorWidgetPrivate::applyFontSettingsDelayed()
{
m_fontSettingsNeedsApply = true;
diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp
index a6e5f078d6b..92ed908ac96 100644
--- a/src/plugins/valgrind/callgrindtool.cpp
+++ b/src/plugins/valgrind/callgrindtool.cpp
@@ -530,7 +530,7 @@ CallgrindToolPrivate::CallgrindToolPrivate()
m_perspective.addWindow(m_visualization, Perspective::SplitVertical, nullptr,
false, Qt::RightDockWidgetArea);
- connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::updateRunActions,
+ connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::runActionsUpdated,
this, &CallgrindToolPrivate::updateRunActions);
}
diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp
index 64475eba242..fd8025fc8b1 100644
--- a/src/plugins/valgrind/memchecktool.cpp
+++ b/src/plugins/valgrind/memchecktool.cpp
@@ -571,7 +571,7 @@ MemcheckToolPrivate::MemcheckToolPrivate()
m_perspective.addWindow(m_errorView, Perspective::SplitVertical, nullptr);
- connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::updateRunActions,
+ connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::runActionsUpdated,
this, &MemcheckToolPrivate::maybeActiveRunConfigurationChanged);
//
diff --git a/src/plugins/vcsbase/vcscommand.cpp b/src/plugins/vcsbase/vcscommand.cpp
index 76a53f06e6a..3b1697c1367 100644
--- a/src/plugins/vcsbase/vcscommand.cpp
+++ b/src/plugins/vcsbase/vcscommand.cpp
@@ -43,6 +43,7 @@ VcsCommand::VcsCommand(const QString &workingDirectory,
Core::ShellCommand(workingDirectory, environment),
m_preventRepositoryChanged(false)
{
+ VcsOutputWindow::setRepository(workingDirectory);
setOutputProxyFactory([this] {
auto proxy = new OutputProxy;
VcsOutputWindow *outputWindow = VcsOutputWindow::instance();