diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/coreplugin/icore.cpp | 11 | ||||
-rw-r--r-- | src/plugins/coreplugin/icore.h | 11 | ||||
-rw-r--r-- | src/plugins/coreplugin/mainwindow.cpp | 24 | ||||
-rw-r--r-- | src/plugins/coreplugin/mainwindow.h | 6 | ||||
-rw-r--r-- | src/plugins/cppeditor/cpphoverhandler.cpp | 1 | ||||
-rw-r--r-- | src/plugins/help/helpplugin.cpp | 77 | ||||
-rw-r--r-- | src/plugins/texteditor/basehoverhandler.cpp | 12 | ||||
-rw-r--r-- | src/plugins/texteditor/basehoverhandler.h | 2 | ||||
-rw-r--r-- | src/plugins/texteditor/images/f1.png | bin | 590 -> 0 bytes | |||
-rw-r--r-- | src/plugins/texteditor/images/f1.svg | 175 | ||||
-rw-r--r-- | src/plugins/texteditor/texteditor.cpp | 2 | ||||
-rw-r--r-- | src/plugins/texteditor/texteditor.qrc | 1 |
12 files changed, 82 insertions, 240 deletions
diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 6bb5ca9190..1efea803ec 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -528,19 +528,20 @@ void ICore::raiseWindow(QWidget *widget) } } -void ICore::updateAdditionalContexts(const Context &remove, const Context &add) +void ICore::updateAdditionalContexts(const Context &remove, const Context &add, + ContextPriority priority) { - m_mainwindow->updateAdditionalContexts(remove, add); + m_mainwindow->updateAdditionalContexts(remove, add, priority); } -void ICore::addAdditionalContext(const Context &context) +void ICore::addAdditionalContext(const Context &context, ContextPriority priority) { - m_mainwindow->updateAdditionalContexts(Context(), context); + m_mainwindow->updateAdditionalContexts(Context(), context, priority); } void ICore::removeAdditionalContext(const Context &context) { - m_mainwindow->updateAdditionalContexts(context, Context()); + m_mainwindow->updateAdditionalContexts(context, Context(), ContextPriority::Low); } void ICore::addContextObject(IContext *context) diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index 783753ebb7..6f5e98ddd8 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -65,6 +65,11 @@ class CORE_EXPORT ICore : public QObject ~ICore(); public: + enum class ContextPriority { + High, + Low + }; + // This should only be used to acccess the signals, so it could // theoretically return an QObject *. For source compatibility // it returns a ICore. @@ -107,8 +112,10 @@ public: static IContext *currentContextObject(); // Adds and removes additional active contexts, these contexts are appended // to the currently active contexts. - static void updateAdditionalContexts(const Context &remove, const Context &add); - static void addAdditionalContext(const Context &context); + static void updateAdditionalContexts(const Context &remove, const Context &add, + ContextPriority priority = ContextPriority::Low); + static void addAdditionalContext(const Context &context, + ContextPriority priority = ContextPriority::Low); static void removeAdditionalContext(const Context &context); static void addContextObject(IContext *context); static void removeContextObject(IContext *context); diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index ddb32436e3..1c6ab39548 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -112,7 +112,7 @@ enum { debugMainWindow = 0 }; MainWindow::MainWindow() : AppMainWindow(), m_coreImpl(new ICore(this)), - m_additionalContexts(Constants::C_GLOBAL), + m_lowPrioAdditionalContexts(Constants::C_GLOBAL), m_settingsDatabase(new SettingsDatabase(QFileInfo(PluginManager::settings()->fileName()).path(), QLatin1String("QtCreator"), this)), @@ -985,23 +985,27 @@ void MainWindow::writeSettings() m_navigationWidget->saveSettings(settings); } -void MainWindow::updateAdditionalContexts(const Context &remove, const Context &add) +void MainWindow::updateAdditionalContexts(const Context &remove, const Context &add, + ICore::ContextPriority priority) { foreach (const Id id, remove) { if (!id.isValid()) continue; - - int index = m_additionalContexts.indexOf(id); + int index = m_lowPrioAdditionalContexts.indexOf(id); + if (index != -1) + m_lowPrioAdditionalContexts.removeAt(index); + index = m_highPrioAdditionalContexts.indexOf(id); if (index != -1) - m_additionalContexts.removeAt(index); + m_highPrioAdditionalContexts.removeAt(index); } foreach (const Id id, add) { if (!id.isValid()) continue; - - if (!m_additionalContexts.contains(id)) - m_additionalContexts.prepend(id); + Context &cref = (priority == ICore::ContextPriority::High ? m_highPrioAdditionalContexts + : m_lowPrioAdditionalContexts); + if (!cref.contains(id)) + cref.prepend(id); } updateContext(); @@ -1009,12 +1013,12 @@ void MainWindow::updateAdditionalContexts(const Context &remove, const Context & void MainWindow::updateContext() { - Context contexts; + Context contexts = m_highPrioAdditionalContexts; foreach (IContext *context, m_activeContext) contexts.add(context->context()); - contexts.add(m_additionalContexts); + contexts.add(m_lowPrioAdditionalContexts); Context uniquecontexts; for (int i = 0; i < contexts.size(); ++i) { diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index b931f2652c..dff6096f81 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -103,7 +103,8 @@ public: IContext * currentContextObject() const; QStatusBar *statusBar() const; - void updateAdditionalContexts(const Context &remove, const Context &add); + void updateAdditionalContexts(const Context &remove, const Context &add, + ICore::ContextPriority priority); void setSuppressNavigationWidget(bool suppress); @@ -151,7 +152,8 @@ private: void writeSettings(); ICore *m_coreImpl; - Context m_additionalContexts; + Context m_highPrioAdditionalContexts; + Context m_lowPrioAdditionalContexts; SettingsDatabase *m_settingsDatabase; mutable QPrinter *m_printer; WindowSupport *m_windowSupport; diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp index f5e5e5214d..94ed9efa9c 100644 --- a/src/plugins/cppeditor/cpphoverhandler.cpp +++ b/src/plugins/cppeditor/cpphoverhandler.cpp @@ -119,7 +119,6 @@ void CppHoverHandler::decorateToolTip() prefix = QLatin1String("enum "); setToolTip(prefix + help.helpId()); } - addF1ToToolTip(); } } diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index b8a83150c2..c51d5aa721 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -78,6 +78,7 @@ #include <utils/qtcassert.h> #include <utils/styledbar.h> #include <utils/theme/theme.h> +#include <utils/tooltip/tooltip.h> #include <QDir> #include <QFileInfo> @@ -101,6 +102,7 @@ using namespace Help::Internal; static const char kExternalWindowStateKey[] = "Help/ExternalWindowState"; +static const char kToolTipHelpContext[] = "Help.ToolTip"; using namespace Core; using namespace Utils; @@ -169,6 +171,13 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error) connect(HelpManager::instance(), SIGNAL(collectionFileChanged()), this, SLOT(setupHelpEngineIfNeeded())); + connect(ToolTip::instance(), &ToolTip::shown, ICore::instance(), []() { + ICore::addAdditionalContext(Context(kToolTipHelpContext), ICore::ContextPriority::High); + }); + connect(ToolTip::instance(), &ToolTip::hidden,ICore::instance(), []() { + ICore::removeAdditionalContext(Context(kToolTipHelpContext)); + }); + Command *cmd; QAction *action; @@ -185,7 +194,8 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error) connect(action, SIGNAL(triggered()), this, SLOT(activateIndex())); action = new QAction(tr("Context Help"), this); - cmd = ActionManager::registerAction(action, Help::Constants::CONTEXT_HELP); + cmd = ActionManager::registerAction(action, Help::Constants::CONTEXT_HELP, + Context(kToolTipHelpContext, Core::Constants::C_GLOBAL)); ActionManager::actionContainer(Core::Constants::M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP); cmd->setDefaultKeySequence(QKeySequence(Qt::Key_F1)); connect(action, SIGNAL(triggered()), this, SLOT(showContextHelp())); @@ -560,40 +570,43 @@ static QUrl findBestLink(const QMap<QString, QUrl> &links, QString *highlightId) void HelpPlugin::showContextHelp() { // Find out what to show - QMap<QString, QUrl> links; - QString idFromContext; - if (IContext *context = ICore::currentContextObject()) { - idFromContext = context->contextHelpId(); - links = HelpManager::linksForIdentifier(idFromContext); - // Maybe the id is already an URL - if (links.isEmpty() && LocalHelpManager::isValidUrl(idFromContext)) - links.insert(idFromContext, idFromContext); - } + QString contextHelpId = Utils::ToolTip::contextHelpId(); + IContext *context = ICore::currentContextObject(); + if (contextHelpId.isEmpty() && context) + contextHelpId = context->contextHelpId(); + + // get the viewer after getting the help id, + // because a new window might be opened and therefore focus be moved + HelpViewer *viewer = viewerForContextHelp(); + QTC_ASSERT(viewer, return); - if (HelpViewer *viewer = viewerForContextHelp()) { - QUrl source = findBestLink(links, &m_contextHelpHighlightId); - if (!source.isValid()) { - // No link found or no context object - viewer->setSource(QUrl(Help::Constants::AboutBlank)); - viewer->setHtml(tr("<html><head><title>No Documentation</title>" - "</head><body><br/><center>" - "<font color=\"%1\"><b>%2</b></font><br/>" - "<font color=\"%3\">No documentation available.</font>" - "</center></body></html>") - .arg(creatorTheme()->color(Theme::TextColorNormal).name()) - .arg(idFromContext) - .arg(creatorTheme()->color(Theme::TextColorNormal).name())); + QMap<QString, QUrl> links = HelpManager::linksForIdentifier(contextHelpId); + // Maybe the id is already an URL + if (links.isEmpty() && LocalHelpManager::isValidUrl(contextHelpId)) + links.insert(contextHelpId, contextHelpId); + + QUrl source = findBestLink(links, &m_contextHelpHighlightId); + if (!source.isValid()) { + // No link found or no context object + viewer->setSource(QUrl(Help::Constants::AboutBlank)); + viewer->setHtml(tr("<html><head><title>No Documentation</title>" + "</head><body><br/><center>" + "<font color=\"%1\"><b>%2</b></font><br/>" + "<font color=\"%3\">No documentation available.</font>" + "</center></body></html>") + .arg(creatorTheme()->color(Theme::TextColorNormal).name()) + .arg(contextHelpId) + .arg(creatorTheme()->color(Theme::TextColorNormal).name())); + } else { + const QUrl &oldSource = viewer->source(); + if (source != oldSource) { + viewer->stop(); + viewer->setSource(source); // triggers loadFinished which triggers id highlighting } else { - const QUrl &oldSource = viewer->source(); - if (source != oldSource) { - viewer->stop(); - viewer->setSource(source); // triggers loadFinished which triggers id highlighting - } else { - viewer->scrollToAnchor(source.fragment()); - } - viewer->setFocus(); - ICore::raiseWindow(viewer); + viewer->scrollToAnchor(source.fragment()); } + viewer->setFocus(); + ICore::raiseWindow(viewer); } } diff --git a/src/plugins/texteditor/basehoverhandler.cpp b/src/plugins/texteditor/basehoverhandler.cpp index 08e1bbcdb3..b76250a422 100644 --- a/src/plugins/texteditor/basehoverhandler.cpp +++ b/src/plugins/texteditor/basehoverhandler.cpp @@ -82,13 +82,6 @@ void BaseHoverHandler::appendToolTip(const QString &extension) m_toolTip.append(extension); } -void BaseHoverHandler::addF1ToToolTip() -{ - m_toolTip = QString::fromLatin1("<table><tr><td valign=middle>%1</td><td> " - "<img src=\":/texteditor/images/f1.png\"></td>" - "</tr></table>").arg(m_toolTip); -} - void BaseHoverHandler::setIsDiagnosticTooltip(bool isDiagnosticTooltip) { m_diagnosticTooltip = isDiagnosticTooltip; @@ -133,7 +126,6 @@ void BaseHoverHandler::decorateToolTip() if (!contents.isEmpty()) { setToolTip(toolTip().toHtmlEscaped()); appendToolTip(contents); - addF1ToToolTip(); } } } @@ -143,7 +135,9 @@ void BaseHoverHandler::operateTooltip(TextEditorWidget *editorWidget, const QPoi if (m_toolTip.isEmpty()) Utils::ToolTip::hide(); else - Utils::ToolTip::show(point, m_toolTip, editorWidget); + Utils::ToolTip::show(point, m_toolTip, editorWidget, m_lastHelpItemIdentified.isValid() + ? m_lastHelpItemIdentified.helpId() + : QString()); } } // namespace TextEditor diff --git a/src/plugins/texteditor/basehoverhandler.h b/src/plugins/texteditor/basehoverhandler.h index 00accf05b7..eff2b75a06 100644 --- a/src/plugins/texteditor/basehoverhandler.h +++ b/src/plugins/texteditor/basehoverhandler.h @@ -59,8 +59,6 @@ protected: void appendToolTip(const QString &extension); const QString &toolTip() const; - void addF1ToToolTip(); - void setIsDiagnosticTooltip(bool isDiagnosticTooltip); bool isDiagnosticTooltip() const; diff --git a/src/plugins/texteditor/images/f1.png b/src/plugins/texteditor/images/f1.png Binary files differdeleted file mode 100644 index 6332719c07..0000000000 --- a/src/plugins/texteditor/images/f1.png +++ /dev/null diff --git a/src/plugins/texteditor/images/f1.svg b/src/plugins/texteditor/images/f1.svg deleted file mode 100644 index 468594cb77..0000000000 --- a/src/plugins/texteditor/images/f1.svg +++ /dev/null @@ -1,175 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="24" - height="24" - id="svg2411" - sodipodi:version="0.32" - inkscape:version="0.46" - version="1.0" - sodipodi:docname="f1.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape"> - <defs - id="defs2413"> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient001" - id="linearGradient3201" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(3.6285394,0,0,3.6290105,-1258.7023,-359.38242)" - spreadMethod="pad" - x1="375.31006" - y1="88.869247" - x2="466.8873" - y2="180.4346" /> - <linearGradient - id="linearGradient001"> - <stop - id="stop608" - offset="0.000000" - style="stop-color:#cfcfcf;stop-opacity:1;" /> - <stop - id="stop609" - offset="1.000000" - style="stop-color:#efefef;stop-opacity:1;" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient001" - id="linearGradient3207" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(3.8401167,0,0,3.8424815,-1348.031,-388.46373)" - spreadMethod="pad" - x1="470.3931" - y1="136.23064" - x2="374.90988" - y2="136.23064" /> - <linearGradient - id="linearGradient002"> - <stop - id="stop566" - offset="0.000000" - style="stop-color:#9d9d9f;stop-opacity:1;" /> - <stop - id="stop567" - offset="1.000000" - style="stop-color:#e5e5e5;stop-opacity:1;" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient002" - id="linearGradient2419" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(3.6611924,0,0,3.6628816,-1231.7325,-383.72165)" - spreadMethod="pad" - x1="471.00525" - y1="201.05208" - x2="348.94803" - y2="79.051147" /> - <inkscape:perspective - sodipodi:type="inkscape:persp3d" - inkscape:vp_x="0 : 526.18109 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_z="744.09448 : 526.18109 : 1" - inkscape:persp3d-origin="372.04724 : 350.78739 : 1" - id="perspective2419" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="11.2" - inkscape:cx="22.801892" - inkscape:cy="10.456883" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="963" - inkscape:window-height="667" - inkscape:window-x="207" - inkscape:window-y="207" /> - <metadata - id="metadata2416"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Ebene 1" - inkscape:groupmode="layer" - id="layer1"> - <g - transform="matrix(4.3636364e-2,0,0,4.3636364e-2,0,6.1090908)" - id="g2404"> - <rect - inkscape:export-ydpi="90" - inkscape:export-xdpi="90" - y="-140" - x="2.4832567e-14" - width="550" - style="font-size:12px;fill:#b0b0b0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.81658993pt;stroke-opacity:1" - ry="81.511414" - id="rect621" - height="550" /> - <rect - inkscape:export-ydpi="90" - inkscape:export-xdpi="90" - inkscape:export-filename="c:\Documents and Settings\aportale\Desktop\rect621.png" - y="-128.55069" - x="11.458333" - width="527.08331" - style="font-size:12px;fill:url(#linearGradient2419);fill-rule:evenodd;stroke:none;stroke-width:1.03125;stroke-miterlimit:4;stroke-dasharray:none" - ry="78.116447" - id="rect2417" - height="527.09235" /> - <rect - inkscape:export-ydpi="90" - inkscape:export-xdpi="90" - inkscape:export-filename="c:\Documents and Settings\aportale\Desktop\rect621.png" - y="-71.25" - x="68.950378" - width="412.29962" - style="font-size:12px;fill:url(#linearGradient3207);fill-rule:evenodd;stroke:none;stroke-width:2.4979167;stroke-miterlimit:4;stroke-dasharray:none" - ry="39.785442" - rx="34.514793" - id="rect3205" - height="412.5" /> - <rect - inkscape:export-ydpi="90" - inkscape:export-xdpi="90" - inkscape:export-filename="c:\Documents and Settings\aportale\Desktop\rect621.png" - y="-59.791668" - x="80.208336" - width="389.58334" - style="font-size:12px;fill:url(#linearGradient3201);fill-rule:evenodd;stroke:none;stroke-width:25.41458321;stroke-miterlimit:4;stroke-dasharray:none" - ry="25.400656" - rx="22.902761" - id="rect3199" - height="389.58334" /> - <path - sodipodi:nodetypes="ccccccccccccccccsccc" - inkscape:export-ydpi="90" - inkscape:export-xdpi="90" - inkscape:export-filename="c:\Documents and Settings\aportale\Desktop\rect621.png" - id="text3219" - d="M 137.5,157.91667 L 137.5,-2.4752517 L 229.16667,-2.5 L 229.16667,20.416667 L 160.41667,20.416667 L 160.41667,66.25 L 206.25,66.25 L 206.25,89.166667 L 160.41667,89.166667 L 160.41667,157.91667 L 137.5,157.91667 z M 320.89291,157.91667 L 297.91667,157.91667 L 297.91667,40.04211 C 284.08134,48.574912 275.21133,59.2993 252.08333,66.25 L 252.08333,47.355939 C 263.04835,44.807707 286.00818,25.67917 293.48823,18.312241 C 300.9682,10.945593 306.26379,4.4293192 309.375,-2.5 L 320.83333,-2.5 L 320.89291,157.91667 z" - style="font-size:261.65481567px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" /> - </g> - </g> -</svg> diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 582b52fdcb..ea968f8e6a 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -3127,7 +3127,7 @@ bool TextEditorWidget::viewportEvent(QEvent *event) RefactorMarker refactorMarker = d->m_refactorOverlay->markerAt(pos); if (refactorMarker.isValid() && !refactorMarker.tooltip.isEmpty()) { ToolTip::show(he->globalPos(), refactorMarker.tooltip, - viewport(), refactorMarker.rect); + viewport(), QString(), refactorMarker.rect); return true; } diff --git a/src/plugins/texteditor/texteditor.qrc b/src/plugins/texteditor/texteditor.qrc index c58205cd2c..7f829e9159 100644 --- a/src/plugins/texteditor/texteditor.qrc +++ b/src/plugins/texteditor/texteditor.qrc @@ -4,6 +4,5 @@ <file>images/finddirectory.png</file> <file>images/refactormarker.png</file> <file>images/snippet.png</file> - <file>images/f1.png</file> </qresource> </RCC> |