Merge remote-tracking branch 'origin/4.11'

Change-Id: Ie9859185470ae46e49a25e732336c4a95eaad4ed
This commit is contained in:
Eike Ziller
2019-09-26 15:23:51 +02:00
7 changed files with 142 additions and 70 deletions

57
dist/changes-4.10.1.md vendored Normal file
View File

@@ -0,0 +1,57 @@
# Qt Creator 4.10.1
Qt Creator version 4.10.1 contains bug fixes.
The most important changes are listed in this document. For a complete
list of changes, see the Git log for the Qt Creator sources that
you can check out from the public Git repository. For example:
git clone git://code.qt.io/qt-creator/qt-creator.git
git log --cherry-pick --pretty=oneline origin/v4.10.0..v4.10.1
## Editing
* Fixed file saving with some text encodings
* Fixed `Preserve case` in advanced search and replace (QTCREATORBUG-19696)
* Fixed crash when changing editor font (QTCREATORBUG-22933)
## Help
* Fixed that text moved around when resizing and zooming (QTCREATORBUG-4756)
## Debugging
* Fixed more layout restoration issues (QTCREATORBUG-22286, QTCREATORBUG-22938)
### LLDB
* Fixed wrong empty command line argument when debugging (QTCREATORBUG-22975)
## Qt Quick Designer
* Removed transformations from list of unsupported types
* Fixed update of animation curve editor
## Platform Specific
### macOS
* Fixed window stacking order after closing file dialog (QTCREATORBUG-22906)
## Credits for these changes go to:
Aleksei German
Alexander Akulich
Andre Hartmann
André Pönitz
Christian Stenger
David Schulz
Eike Ziller
Knud Dollereder
Leena Miettinen
Lisandro Damián Nicanor Pérez Meyer
Nikolai Kosjar
Orgad Shaneh
Richard Weickelt
Thomas Hartmann

View File

@@ -83,6 +83,7 @@ class Dumper(DumperBase):
# 'communication', 'unwind', 'commands'])
#self.debugger.EnableLog('lldb', ['all'])
self.debugger.Initialize()
self.debugger.SetAsync(True)
self.debugger.HandleCommand('settings set auto-confirm on')
# FIXME: warn('DISABLING DEFAULT FORMATTERS')
@@ -863,10 +864,7 @@ class Dumper(DumperBase):
pass
else:
if self.useTerminal_:
self.ignoreStops = 2
else:
if self.useTerminal_:
self.ignoreStops = 1
self.ignoreStops = 1
if self.platform_:
self.debugger.SetCurrentPlatform(self.platform_)
@@ -895,7 +893,6 @@ class Dumper(DumperBase):
def prepare(self, args):
error = lldb.SBError()
listener = self.debugger.GetListener()
if self.attachPid_ > 0:
attachInfo = lldb.SBAttachInfo(self.attachPid_)
@@ -948,18 +945,23 @@ class Dumper(DumperBase):
if self.target is not None:
broadcaster = self.target.GetBroadcaster()
listener = self.debugger.GetListener()
broadcaster.AddListener(listener, lldb.SBProcess.eBroadcastBitStateChanged)
listener.StartListeningForEvents(broadcaster, lldb.SBProcess.eBroadcastBitStateChanged)
broadcaster.AddListener(listener, lldb.SBTarget.eBroadcastBitBreakpointChanged)
listener.StartListeningForEvents(broadcaster, lldb.SBTarget.eBroadcastBitBreakpointChanged)
def loop(self):
event = lldb.SBEvent()
broadcaster = self.target.GetBroadcaster()
listener = self.debugger.GetListener()
while True:
if listener.WaitForEvent(10000000, event):
sys.stdout.flush() # IMPORTANT! to receive process state changes with lldb 1100
while listener.GetNextEvent(event):
self.handleEvent(event)
else:
warn('TIMEOUT')
if listener.WaitForEventForBroadcaster(0, broadcaster, event):
self.handleEvent(event)
def describeError(self, error):
desc = lldb.SBStream()
@@ -1301,6 +1303,10 @@ class Dumper(DumperBase):
if lldb.SBBreakpoint.EventIsBreakpointEvent(event):
self.handleBreakpointEvent(event)
return
if not lldb.SBProcess.EventIsProcessEvent(event):
warn("UNEXPECTED event (%s)" % event.GetType())
return
out = lldb.SBStream()
event.GetDescription(out)
#warn("EVENT: %s" % event)
@@ -1793,7 +1799,7 @@ class Dumper(DumperBase):
expr = self.parseAndEvaluate(expr)
self.qqEditable[typeName](self, expr, value)
else:
lhs.SetValueFromCString(value, error)
self.parseAndEvaluate(expr + '=' + value)
self.reportResult(self.describeError(error), args)
def watchPoint(self, args):

View File

@@ -1,11 +1,11 @@
{
\"Name\" : \"%PluginName%\",
\"Version\" : \"0.0.1\",
\"CompatVersion\" : \"0.0.1\",
\"Vendor\" : \"%VendorName%\",
\"Copyright\" : \"%Copyright%\",
\"License\" : \"%License%\",
\"Description\" : \"%Description%\",
\"Url\" : \"%URL%\",
\\"Name\\" : \\"%PluginName%\\",
\\"Version\\" : \\"0.0.1\\",
\\"CompatVersion\\" : \\"0.0.1\\",
\\"Vendor\\" : \\"%VendorName%\\",
\\"Copyright\\" : \\"%Copyright%\\",
\\"License\\" : \\"%License%\\",
\\"Description\\" : \\"%Description%\\",
\\"Url\\" : \\"%URL%\\",
$$dependencyList
}

View File

@@ -553,6 +553,7 @@ void PerspectivePrivate::resetPerspective()
} else {
op.setupLayout();
op.dock->setVisible(op.visibleByDefault);
theMainWindow->d->m_persistentChangedDocks.remove(op.name());
qCDebug(perspectivesLog) << "SETTING " << op.name()
<< " TO ACTIVE: " << op.visibleByDefault;
}
@@ -937,12 +938,10 @@ void PerspectivePrivate::restoreLayout()
qCDebug(perspectivesLog) << "PERSPECTIVE STATE AVAILABLE BY FULL ID.";
}
if (state.isEmpty()) {
qCDebug(perspectivesLog) << "PERSPECTIVE " << m_id << "RESTORE NOT POSSIBLE, NO STORED STATE";
} else {
bool result = theMainWindow->restoreState(state);
qCDebug(perspectivesLog) << "PERSPECTIVE " << m_id << "RESTORED. SUCCESS: " << result;
}
// The order is important here: While QMainWindow can restore layouts with
// not-existing docks (some placeholders are used internally), later
// replacements with restoreDockWidget(dock) trigger a re-layout, resulting
// in different sizes. So make sure all docks exist first before restoring state.
qCDebug(perspectivesLog) << "PERSPECTIVE" << m_id << "RESTORING LAYOUT FROM " << settingsId();
for (DockOperation &op : m_dockOperations) {
@@ -955,6 +954,13 @@ void PerspectivePrivate::restoreLayout()
<< (active == op.visibleByDefault ? "DEFAULT USER" : "*** NON-DEFAULT USER");
}
}
if (state.isEmpty()) {
qCDebug(perspectivesLog) << "PERSPECTIVE " << m_id << "RESTORE NOT POSSIBLE, NO STORED STATE";
} else {
bool result = theMainWindow->restoreState(state);
qCDebug(perspectivesLog) << "PERSPECTIVE " << m_id << "RESTORED, SUCCESS: " << result;
}
}
void PerspectivePrivate::saveLayout()

View File

@@ -117,7 +117,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
{
m_viewerStack = new QStackedWidget;
if (style == ModeWidget)
if (supportsPages())
m_openPagesManager = new OpenPagesManager(this);
auto topLayout = new QVBoxLayout;
@@ -250,13 +250,10 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
connect(m_openOnlineDocumentationAction, &QAction::triggered, this, &HelpWidget::openOnlineDocumentation);
layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_openOnlineDocumentationAction, cmd));
if (style == ModeWidget) {
if (supportsPages()) {
layout->addWidget(new Utils::StyledSeparator(toolBar));
layout->addWidget(m_openPagesManager->openPagesComboBox(), 10);
} else {
layout->addWidget(new QLabel(), 10);
}
if (style != SideBarWidget) {
m_filterComboBox = new QComboBox;
m_filterComboBox->setMinimumContentsLength(15);
m_filterComboBox->setModel(LocalHelpManager::filterModel());
@@ -266,6 +263,8 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
LocalHelpManager::instance(), &LocalHelpManager::setFilterIndex);
connect(LocalHelpManager::instance(), &LocalHelpManager::filterIndexChanged,
m_filterComboBox, &QComboBox::setCurrentIndex);
} else {
layout->addWidget(new QLabel(), 10);
}
layout->addStretch();
@@ -308,16 +307,16 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
auto openMenu = new QMenu(openButton);
openButton->setMenu(openMenu);
if (m_switchToHelp)
openMenu->addAction(m_switchToHelp);
if (supportsPages()) {
QAction *openPage = openMenu->addAction(tr("Open in New Page"));
connect(openPage, &QAction::triggered, this, [this]() {
if (HelpViewer *viewer = currentViewer())
openNewPage(viewer->source());
});
}
if (style != ExternalWindow) {
if (m_switchToHelp)
openMenu->addAction(m_switchToHelp);
if (style == ModeWidget) {
QAction *openPage = openMenu->addAction(tr("Open in New Page"));
connect(openPage, &QAction::triggered, this, [this]() {
if (HelpViewer *viewer = currentViewer())
openNewPage(viewer->source());
});
}
QAction *openExternal = openMenu->addAction(tr("Open in Window"));
connect(openExternal, &QAction::triggered, this, [this]() {
if (HelpViewer *viewer = currentViewer()) {
@@ -326,20 +325,20 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
emit closeButtonClicked();
}
});
openMenu->addSeparator();
const Utils::Icon &icon = style == ModeWidget ? Utils::Icons::CLOSE_TOOLBAR
: Utils::Icons::CLOSE_SPLIT_RIGHT;
m_closeAction = new QAction(icon.icon(), QString(), toolBar);
connect(m_closeAction, &QAction::triggered, this, &HelpWidget::closeButtonClicked);
connect(m_closeAction, &QAction::triggered, this, [this] {
if (viewerCount() > 1)
closeCurrentPage();
});
button = new QToolButton;
button->setDefaultAction(m_closeAction);
layout->addWidget(button);
}
openMenu->addSeparator();
const Utils::Icon &icon = style == SideBarWidget ? Utils::Icons::CLOSE_SPLIT_RIGHT
: Utils::Icons::CLOSE_TOOLBAR;
m_closeAction = new QAction(icon.icon(), QString(), toolBar);
connect(m_closeAction, &QAction::triggered, this, &HelpWidget::closeButtonClicked);
connect(m_closeAction, &QAction::triggered, this, [this] {
if (viewerCount() > 1)
closeCurrentPage();
});
button = new QToolButton;
button->setDefaultAction(m_closeAction);
layout->addWidget(button);
QAction *reload = openMenu->addAction(tr("Reload"));
connect(reload, &QAction::triggered, this, [this]() {
@@ -402,11 +401,10 @@ void HelpWidget::addSideBar()
{
QMap<QString, Core::Command *> shortcutMap;
Core::Command *cmd;
bool supportsNewPages = (m_style == ModeWidget);
auto contentWindow = new ContentWindow;
auto contentItem = new Core::SideBarItem(contentWindow, Constants::HELP_CONTENTS);
contentWindow->setOpenInNewPageActionVisible(supportsNewPages);
contentWindow->setOpenInNewPageActionVisible(supportsPages());
contentWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_CONTENTS));
connect(contentWindow, &ContentWindow::linkActivated,
this, &HelpWidget::open);
@@ -418,7 +416,7 @@ void HelpWidget::addSideBar()
auto indexWindow = new IndexWindow();
auto indexItem = new Core::SideBarItem(indexWindow, Constants::HELP_INDEX);
indexWindow->setOpenInNewPageActionVisible(supportsNewPages);
indexWindow->setOpenInNewPageActionVisible(supportsPages());
indexWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_INDEX));
connect(indexWindow, &IndexWindow::linksActivated,
this, &HelpWidget::showLinks);
@@ -430,7 +428,7 @@ void HelpWidget::addSideBar()
auto bookmarkWidget = new BookmarkWidget(&LocalHelpManager::bookmarkManager());
bookmarkWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_BOOKMARKS));
bookmarkWidget->setOpenInNewPageActionVisible(supportsNewPages);
bookmarkWidget->setOpenInNewPageActionVisible(supportsPages());
auto bookmarkItem = new Core::SideBarItem(bookmarkWidget, Constants::HELP_BOOKMARKS);
connect(bookmarkWidget, &BookmarkWidget::linkActivated, this, &HelpWidget::setSource);
m_bookmarkAction = new QAction(tr("Activate Help Bookmarks View"), this);
@@ -450,17 +448,16 @@ void HelpWidget::addSideBar()
shortcutMap.insert(Constants::HELP_SEARCH, cmd);
Core::SideBarItem *openPagesItem = nullptr;
if (m_style == ModeWidget) {
QWidget *openPagesWidget = m_openPagesManager->openPagesWidget();
openPagesWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_OPENPAGES));
openPagesItem = new Core::SideBarItem(openPagesWidget, Constants::HELP_OPENPAGES);
m_openPagesAction = new QAction(tr("Activate Open Help Pages View"), this);
cmd = Core::ActionManager::registerAction(m_openPagesAction, Constants::HELP_OPENPAGES,
m_context->context());
cmd->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+O")
: tr("Ctrl+Shift+O")));
shortcutMap.insert(Constants::HELP_OPENPAGES, cmd);
}
QWidget *openPagesWidget = m_openPagesManager->openPagesWidget();
openPagesWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_OPENPAGES));
openPagesItem = new Core::SideBarItem(openPagesWidget, Constants::HELP_OPENPAGES);
m_openPagesAction = new QAction(tr("Activate Open Help Pages View"), this);
cmd = Core::ActionManager::registerAction(m_openPagesAction,
Constants::HELP_OPENPAGES,
m_context->context());
cmd->setDefaultKeySequence(
QKeySequence(Core::useMacShortcuts ? tr("Meta+O") : tr("Ctrl+Shift+O")));
shortcutMap.insert(Constants::HELP_OPENPAGES, cmd);
QList<Core::SideBarItem *> itemList = {contentItem, indexItem, bookmarkItem, searchItem};
if (openPagesItem)
@@ -546,7 +543,7 @@ HelpViewer *HelpWidget::insertViewer(int index, const QUrl &url, qreal zoom)
HelpViewer *viewer = HelpPlugin::createHelpViewer(zoom);
m_viewerStack->insertWidget(index, viewer);
viewer->setFocus(Qt::OtherFocusReason);
viewer->setActionVisible(HelpViewer::Action::NewPage, m_style == ModeWidget);
viewer->setActionVisible(HelpViewer::Action::NewPage, supportsPages());
viewer->setActionVisible(HelpViewer::Action::ExternalWindow, m_style != ExternalWindow);
connect(viewer, &HelpViewer::sourceChanged, this, [viewer, this](const QUrl &url) {
if (currentViewer() == viewer) {
@@ -741,10 +738,15 @@ void HelpWidget::saveState() const
}
}
bool HelpWidget::supportsPages() const
{
return m_style != SideBarWidget;
}
void HelpWidget::updateCloseButton()
{
if (m_style == ModeWidget) {
const bool closeOnReturn = LocalHelpManager::returnOnClose();
if (supportsPages()) {
const bool closeOnReturn = LocalHelpManager::returnOnClose() && m_style == ModeWidget;
m_closeAction->setEnabled(closeOnReturn || m_viewerStack->count() > 1);
}
}

View File

@@ -125,6 +125,7 @@ private:
void helpModeButtonClicked();
void closeCurrentPage();
void saveState() const;
bool supportsPages() const;
void goHome();
void addBookmark();