forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/4.11'
Change-Id: Ie9859185470ae46e49a25e732336c4a95eaad4ed
This commit is contained in:
57
dist/changes-4.10.1.md
vendored
Normal file
57
dist/changes-4.10.1.md
vendored
Normal 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
|
||||||
|
|
@@ -83,6 +83,7 @@ class Dumper(DumperBase):
|
|||||||
# 'communication', 'unwind', 'commands'])
|
# 'communication', 'unwind', 'commands'])
|
||||||
#self.debugger.EnableLog('lldb', ['all'])
|
#self.debugger.EnableLog('lldb', ['all'])
|
||||||
self.debugger.Initialize()
|
self.debugger.Initialize()
|
||||||
|
self.debugger.SetAsync(True)
|
||||||
self.debugger.HandleCommand('settings set auto-confirm on')
|
self.debugger.HandleCommand('settings set auto-confirm on')
|
||||||
|
|
||||||
# FIXME: warn('DISABLING DEFAULT FORMATTERS')
|
# FIXME: warn('DISABLING DEFAULT FORMATTERS')
|
||||||
@@ -863,10 +864,7 @@ class Dumper(DumperBase):
|
|||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if self.useTerminal_:
|
if self.useTerminal_:
|
||||||
self.ignoreStops = 2
|
self.ignoreStops = 1
|
||||||
else:
|
|
||||||
if self.useTerminal_:
|
|
||||||
self.ignoreStops = 1
|
|
||||||
|
|
||||||
if self.platform_:
|
if self.platform_:
|
||||||
self.debugger.SetCurrentPlatform(self.platform_)
|
self.debugger.SetCurrentPlatform(self.platform_)
|
||||||
@@ -895,7 +893,6 @@ class Dumper(DumperBase):
|
|||||||
|
|
||||||
def prepare(self, args):
|
def prepare(self, args):
|
||||||
error = lldb.SBError()
|
error = lldb.SBError()
|
||||||
listener = self.debugger.GetListener()
|
|
||||||
|
|
||||||
if self.attachPid_ > 0:
|
if self.attachPid_ > 0:
|
||||||
attachInfo = lldb.SBAttachInfo(self.attachPid_)
|
attachInfo = lldb.SBAttachInfo(self.attachPid_)
|
||||||
@@ -948,18 +945,23 @@ class Dumper(DumperBase):
|
|||||||
if self.target is not None:
|
if self.target is not None:
|
||||||
broadcaster = self.target.GetBroadcaster()
|
broadcaster = self.target.GetBroadcaster()
|
||||||
listener = self.debugger.GetListener()
|
listener = self.debugger.GetListener()
|
||||||
|
broadcaster.AddListener(listener, lldb.SBProcess.eBroadcastBitStateChanged)
|
||||||
|
listener.StartListeningForEvents(broadcaster, lldb.SBProcess.eBroadcastBitStateChanged)
|
||||||
broadcaster.AddListener(listener, lldb.SBTarget.eBroadcastBitBreakpointChanged)
|
broadcaster.AddListener(listener, lldb.SBTarget.eBroadcastBitBreakpointChanged)
|
||||||
listener.StartListeningForEvents(broadcaster, lldb.SBTarget.eBroadcastBitBreakpointChanged)
|
listener.StartListeningForEvents(broadcaster, lldb.SBTarget.eBroadcastBitBreakpointChanged)
|
||||||
|
|
||||||
|
|
||||||
def loop(self):
|
def loop(self):
|
||||||
event = lldb.SBEvent()
|
event = lldb.SBEvent()
|
||||||
|
broadcaster = self.target.GetBroadcaster()
|
||||||
listener = self.debugger.GetListener()
|
listener = self.debugger.GetListener()
|
||||||
while True:
|
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)
|
self.handleEvent(event)
|
||||||
else:
|
if listener.WaitForEventForBroadcaster(0, broadcaster, event):
|
||||||
warn('TIMEOUT')
|
self.handleEvent(event)
|
||||||
|
|
||||||
|
|
||||||
def describeError(self, error):
|
def describeError(self, error):
|
||||||
desc = lldb.SBStream()
|
desc = lldb.SBStream()
|
||||||
@@ -1301,6 +1303,10 @@ class Dumper(DumperBase):
|
|||||||
if lldb.SBBreakpoint.EventIsBreakpointEvent(event):
|
if lldb.SBBreakpoint.EventIsBreakpointEvent(event):
|
||||||
self.handleBreakpointEvent(event)
|
self.handleBreakpointEvent(event)
|
||||||
return
|
return
|
||||||
|
if not lldb.SBProcess.EventIsProcessEvent(event):
|
||||||
|
warn("UNEXPECTED event (%s)" % event.GetType())
|
||||||
|
return
|
||||||
|
|
||||||
out = lldb.SBStream()
|
out = lldb.SBStream()
|
||||||
event.GetDescription(out)
|
event.GetDescription(out)
|
||||||
#warn("EVENT: %s" % event)
|
#warn("EVENT: %s" % event)
|
||||||
@@ -1793,7 +1799,7 @@ class Dumper(DumperBase):
|
|||||||
expr = self.parseAndEvaluate(expr)
|
expr = self.parseAndEvaluate(expr)
|
||||||
self.qqEditable[typeName](self, expr, value)
|
self.qqEditable[typeName](self, expr, value)
|
||||||
else:
|
else:
|
||||||
lhs.SetValueFromCString(value, error)
|
self.parseAndEvaluate(expr + '=' + value)
|
||||||
self.reportResult(self.describeError(error), args)
|
self.reportResult(self.describeError(error), args)
|
||||||
|
|
||||||
def watchPoint(self, args):
|
def watchPoint(self, args):
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
\"Name\" : \"%PluginName%\",
|
\\"Name\\" : \\"%PluginName%\\",
|
||||||
\"Version\" : \"0.0.1\",
|
\\"Version\\" : \\"0.0.1\\",
|
||||||
\"CompatVersion\" : \"0.0.1\",
|
\\"CompatVersion\\" : \\"0.0.1\\",
|
||||||
\"Vendor\" : \"%VendorName%\",
|
\\"Vendor\\" : \\"%VendorName%\\",
|
||||||
\"Copyright\" : \"%Copyright%\",
|
\\"Copyright\\" : \\"%Copyright%\\",
|
||||||
\"License\" : \"%License%\",
|
\\"License\\" : \\"%License%\\",
|
||||||
\"Description\" : \"%Description%\",
|
\\"Description\\" : \\"%Description%\\",
|
||||||
\"Url\" : \"%URL%\",
|
\\"Url\\" : \\"%URL%\\",
|
||||||
$$dependencyList
|
$$dependencyList
|
||||||
}
|
}
|
||||||
|
@@ -553,6 +553,7 @@ void PerspectivePrivate::resetPerspective()
|
|||||||
} else {
|
} else {
|
||||||
op.setupLayout();
|
op.setupLayout();
|
||||||
op.dock->setVisible(op.visibleByDefault);
|
op.dock->setVisible(op.visibleByDefault);
|
||||||
|
theMainWindow->d->m_persistentChangedDocks.remove(op.name());
|
||||||
qCDebug(perspectivesLog) << "SETTING " << op.name()
|
qCDebug(perspectivesLog) << "SETTING " << op.name()
|
||||||
<< " TO ACTIVE: " << op.visibleByDefault;
|
<< " TO ACTIVE: " << op.visibleByDefault;
|
||||||
}
|
}
|
||||||
@@ -937,12 +938,10 @@ void PerspectivePrivate::restoreLayout()
|
|||||||
qCDebug(perspectivesLog) << "PERSPECTIVE STATE AVAILABLE BY FULL ID.";
|
qCDebug(perspectivesLog) << "PERSPECTIVE STATE AVAILABLE BY FULL ID.";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.isEmpty()) {
|
// The order is important here: While QMainWindow can restore layouts with
|
||||||
qCDebug(perspectivesLog) << "PERSPECTIVE " << m_id << "RESTORE NOT POSSIBLE, NO STORED STATE";
|
// not-existing docks (some placeholders are used internally), later
|
||||||
} else {
|
// replacements with restoreDockWidget(dock) trigger a re-layout, resulting
|
||||||
bool result = theMainWindow->restoreState(state);
|
// in different sizes. So make sure all docks exist first before restoring state.
|
||||||
qCDebug(perspectivesLog) << "PERSPECTIVE " << m_id << "RESTORED. SUCCESS: " << result;
|
|
||||||
}
|
|
||||||
|
|
||||||
qCDebug(perspectivesLog) << "PERSPECTIVE" << m_id << "RESTORING LAYOUT FROM " << settingsId();
|
qCDebug(perspectivesLog) << "PERSPECTIVE" << m_id << "RESTORING LAYOUT FROM " << settingsId();
|
||||||
for (DockOperation &op : m_dockOperations) {
|
for (DockOperation &op : m_dockOperations) {
|
||||||
@@ -955,6 +954,13 @@ void PerspectivePrivate::restoreLayout()
|
|||||||
<< (active == op.visibleByDefault ? "DEFAULT USER" : "*** NON-DEFAULT USER");
|
<< (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()
|
void PerspectivePrivate::saveLayout()
|
||||||
|
@@ -117,7 +117,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
|||||||
{
|
{
|
||||||
m_viewerStack = new QStackedWidget;
|
m_viewerStack = new QStackedWidget;
|
||||||
|
|
||||||
if (style == ModeWidget)
|
if (supportsPages())
|
||||||
m_openPagesManager = new OpenPagesManager(this);
|
m_openPagesManager = new OpenPagesManager(this);
|
||||||
|
|
||||||
auto topLayout = new QVBoxLayout;
|
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);
|
connect(m_openOnlineDocumentationAction, &QAction::triggered, this, &HelpWidget::openOnlineDocumentation);
|
||||||
layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_openOnlineDocumentationAction, cmd));
|
layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_openOnlineDocumentationAction, cmd));
|
||||||
|
|
||||||
if (style == ModeWidget) {
|
if (supportsPages()) {
|
||||||
layout->addWidget(new Utils::StyledSeparator(toolBar));
|
layout->addWidget(new Utils::StyledSeparator(toolBar));
|
||||||
layout->addWidget(m_openPagesManager->openPagesComboBox(), 10);
|
layout->addWidget(m_openPagesManager->openPagesComboBox(), 10);
|
||||||
} else {
|
|
||||||
layout->addWidget(new QLabel(), 10);
|
|
||||||
}
|
|
||||||
if (style != SideBarWidget) {
|
|
||||||
m_filterComboBox = new QComboBox;
|
m_filterComboBox = new QComboBox;
|
||||||
m_filterComboBox->setMinimumContentsLength(15);
|
m_filterComboBox->setMinimumContentsLength(15);
|
||||||
m_filterComboBox->setModel(LocalHelpManager::filterModel());
|
m_filterComboBox->setModel(LocalHelpManager::filterModel());
|
||||||
@@ -266,6 +263,8 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
|||||||
LocalHelpManager::instance(), &LocalHelpManager::setFilterIndex);
|
LocalHelpManager::instance(), &LocalHelpManager::setFilterIndex);
|
||||||
connect(LocalHelpManager::instance(), &LocalHelpManager::filterIndexChanged,
|
connect(LocalHelpManager::instance(), &LocalHelpManager::filterIndexChanged,
|
||||||
m_filterComboBox, &QComboBox::setCurrentIndex);
|
m_filterComboBox, &QComboBox::setCurrentIndex);
|
||||||
|
} else {
|
||||||
|
layout->addWidget(new QLabel(), 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
layout->addStretch();
|
layout->addStretch();
|
||||||
@@ -308,16 +307,16 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
|||||||
auto openMenu = new QMenu(openButton);
|
auto openMenu = new QMenu(openButton);
|
||||||
openButton->setMenu(openMenu);
|
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 (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"));
|
QAction *openExternal = openMenu->addAction(tr("Open in Window"));
|
||||||
connect(openExternal, &QAction::triggered, this, [this]() {
|
connect(openExternal, &QAction::triggered, this, [this]() {
|
||||||
if (HelpViewer *viewer = currentViewer()) {
|
if (HelpViewer *viewer = currentViewer()) {
|
||||||
@@ -326,20 +325,20 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
|||||||
emit closeButtonClicked();
|
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"));
|
QAction *reload = openMenu->addAction(tr("Reload"));
|
||||||
connect(reload, &QAction::triggered, this, [this]() {
|
connect(reload, &QAction::triggered, this, [this]() {
|
||||||
@@ -402,11 +401,10 @@ void HelpWidget::addSideBar()
|
|||||||
{
|
{
|
||||||
QMap<QString, Core::Command *> shortcutMap;
|
QMap<QString, Core::Command *> shortcutMap;
|
||||||
Core::Command *cmd;
|
Core::Command *cmd;
|
||||||
bool supportsNewPages = (m_style == ModeWidget);
|
|
||||||
|
|
||||||
auto contentWindow = new ContentWindow;
|
auto contentWindow = new ContentWindow;
|
||||||
auto contentItem = new Core::SideBarItem(contentWindow, Constants::HELP_CONTENTS);
|
auto contentItem = new Core::SideBarItem(contentWindow, Constants::HELP_CONTENTS);
|
||||||
contentWindow->setOpenInNewPageActionVisible(supportsNewPages);
|
contentWindow->setOpenInNewPageActionVisible(supportsPages());
|
||||||
contentWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_CONTENTS));
|
contentWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_CONTENTS));
|
||||||
connect(contentWindow, &ContentWindow::linkActivated,
|
connect(contentWindow, &ContentWindow::linkActivated,
|
||||||
this, &HelpWidget::open);
|
this, &HelpWidget::open);
|
||||||
@@ -418,7 +416,7 @@ void HelpWidget::addSideBar()
|
|||||||
|
|
||||||
auto indexWindow = new IndexWindow();
|
auto indexWindow = new IndexWindow();
|
||||||
auto indexItem = new Core::SideBarItem(indexWindow, Constants::HELP_INDEX);
|
auto indexItem = new Core::SideBarItem(indexWindow, Constants::HELP_INDEX);
|
||||||
indexWindow->setOpenInNewPageActionVisible(supportsNewPages);
|
indexWindow->setOpenInNewPageActionVisible(supportsPages());
|
||||||
indexWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_INDEX));
|
indexWindow->setWindowTitle(HelpPlugin::tr(Constants::SB_INDEX));
|
||||||
connect(indexWindow, &IndexWindow::linksActivated,
|
connect(indexWindow, &IndexWindow::linksActivated,
|
||||||
this, &HelpWidget::showLinks);
|
this, &HelpWidget::showLinks);
|
||||||
@@ -430,7 +428,7 @@ void HelpWidget::addSideBar()
|
|||||||
|
|
||||||
auto bookmarkWidget = new BookmarkWidget(&LocalHelpManager::bookmarkManager());
|
auto bookmarkWidget = new BookmarkWidget(&LocalHelpManager::bookmarkManager());
|
||||||
bookmarkWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_BOOKMARKS));
|
bookmarkWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_BOOKMARKS));
|
||||||
bookmarkWidget->setOpenInNewPageActionVisible(supportsNewPages);
|
bookmarkWidget->setOpenInNewPageActionVisible(supportsPages());
|
||||||
auto bookmarkItem = new Core::SideBarItem(bookmarkWidget, Constants::HELP_BOOKMARKS);
|
auto bookmarkItem = new Core::SideBarItem(bookmarkWidget, Constants::HELP_BOOKMARKS);
|
||||||
connect(bookmarkWidget, &BookmarkWidget::linkActivated, this, &HelpWidget::setSource);
|
connect(bookmarkWidget, &BookmarkWidget::linkActivated, this, &HelpWidget::setSource);
|
||||||
m_bookmarkAction = new QAction(tr("Activate Help Bookmarks View"), this);
|
m_bookmarkAction = new QAction(tr("Activate Help Bookmarks View"), this);
|
||||||
@@ -450,17 +448,16 @@ void HelpWidget::addSideBar()
|
|||||||
shortcutMap.insert(Constants::HELP_SEARCH, cmd);
|
shortcutMap.insert(Constants::HELP_SEARCH, cmd);
|
||||||
|
|
||||||
Core::SideBarItem *openPagesItem = nullptr;
|
Core::SideBarItem *openPagesItem = nullptr;
|
||||||
if (m_style == ModeWidget) {
|
QWidget *openPagesWidget = m_openPagesManager->openPagesWidget();
|
||||||
QWidget *openPagesWidget = m_openPagesManager->openPagesWidget();
|
openPagesWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_OPENPAGES));
|
||||||
openPagesWidget->setWindowTitle(HelpPlugin::tr(Constants::SB_OPENPAGES));
|
openPagesItem = new Core::SideBarItem(openPagesWidget, Constants::HELP_OPENPAGES);
|
||||||
openPagesItem = new Core::SideBarItem(openPagesWidget, Constants::HELP_OPENPAGES);
|
m_openPagesAction = new QAction(tr("Activate Open Help Pages View"), this);
|
||||||
m_openPagesAction = new QAction(tr("Activate Open Help Pages View"), this);
|
cmd = Core::ActionManager::registerAction(m_openPagesAction,
|
||||||
cmd = Core::ActionManager::registerAction(m_openPagesAction, Constants::HELP_OPENPAGES,
|
Constants::HELP_OPENPAGES,
|
||||||
m_context->context());
|
m_context->context());
|
||||||
cmd->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+O")
|
cmd->setDefaultKeySequence(
|
||||||
: tr("Ctrl+Shift+O")));
|
QKeySequence(Core::useMacShortcuts ? tr("Meta+O") : tr("Ctrl+Shift+O")));
|
||||||
shortcutMap.insert(Constants::HELP_OPENPAGES, cmd);
|
shortcutMap.insert(Constants::HELP_OPENPAGES, cmd);
|
||||||
}
|
|
||||||
|
|
||||||
QList<Core::SideBarItem *> itemList = {contentItem, indexItem, bookmarkItem, searchItem};
|
QList<Core::SideBarItem *> itemList = {contentItem, indexItem, bookmarkItem, searchItem};
|
||||||
if (openPagesItem)
|
if (openPagesItem)
|
||||||
@@ -546,7 +543,7 @@ HelpViewer *HelpWidget::insertViewer(int index, const QUrl &url, qreal zoom)
|
|||||||
HelpViewer *viewer = HelpPlugin::createHelpViewer(zoom);
|
HelpViewer *viewer = HelpPlugin::createHelpViewer(zoom);
|
||||||
m_viewerStack->insertWidget(index, viewer);
|
m_viewerStack->insertWidget(index, viewer);
|
||||||
viewer->setFocus(Qt::OtherFocusReason);
|
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);
|
viewer->setActionVisible(HelpViewer::Action::ExternalWindow, m_style != ExternalWindow);
|
||||||
connect(viewer, &HelpViewer::sourceChanged, this, [viewer, this](const QUrl &url) {
|
connect(viewer, &HelpViewer::sourceChanged, this, [viewer, this](const QUrl &url) {
|
||||||
if (currentViewer() == viewer) {
|
if (currentViewer() == viewer) {
|
||||||
@@ -741,10 +738,15 @@ void HelpWidget::saveState() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool HelpWidget::supportsPages() const
|
||||||
|
{
|
||||||
|
return m_style != SideBarWidget;
|
||||||
|
}
|
||||||
|
|
||||||
void HelpWidget::updateCloseButton()
|
void HelpWidget::updateCloseButton()
|
||||||
{
|
{
|
||||||
if (m_style == ModeWidget) {
|
if (supportsPages()) {
|
||||||
const bool closeOnReturn = LocalHelpManager::returnOnClose();
|
const bool closeOnReturn = LocalHelpManager::returnOnClose() && m_style == ModeWidget;
|
||||||
m_closeAction->setEnabled(closeOnReturn || m_viewerStack->count() > 1);
|
m_closeAction->setEnabled(closeOnReturn || m_viewerStack->count() > 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -125,6 +125,7 @@ private:
|
|||||||
void helpModeButtonClicked();
|
void helpModeButtonClicked();
|
||||||
void closeCurrentPage();
|
void closeCurrentPage();
|
||||||
void saveState() const;
|
void saveState() const;
|
||||||
|
bool supportsPages() const;
|
||||||
|
|
||||||
void goHome();
|
void goHome();
|
||||||
void addBookmark();
|
void addBookmark();
|
||||||
|
Submodule src/shared/qbs updated: 8c290c624d...94fe404a5a
Reference in New Issue
Block a user