diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index a8b0bf108a8..14a3d35a8fe 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -3227,7 +3227,10 @@ class DumperBase(): lbyte = ldata[i] else: lbyte = ldata[fieldOffset + fieldSize - 1 - i] - data += ord(lbyte) + if isinstance(lbyte, (str, bytes)): + data += ord(lbyte) + else: + data += lbyte data = data >> fieldBitpos data = data & ((1 << fieldBitsize) - 1) val.lvalue = data diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h index e3ae249755d..8bda11ddd27 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h @@ -27,6 +27,7 @@ #ifdef QUICK3D_MODULE +#include #include #include #include diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index 69128f0c3ab..8af22d48771 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -101,6 +101,7 @@ #include #include #include +#include #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) #include "../editor3d/qt5compat/qquick3darealight_p.h" #endif diff --git a/src/libs/languageserverprotocol/basemessage.cpp b/src/libs/languageserverprotocol/basemessage.cpp index 4e5f621ca01..ee0450010a3 100644 --- a/src/libs/languageserverprotocol/basemessage.cpp +++ b/src/libs/languageserverprotocol/basemessage.cpp @@ -37,6 +37,13 @@ namespace LanguageServerProtocol { Q_LOGGING_CATEGORY(parseLog, "qtc.languageserverprotocol.parse", QtWarningMsg) +constexpr char headerFieldSeparator[] = ": "; +constexpr char contentCharsetName[] = "charset"; +constexpr char defaultCharset[] = "utf-8"; +constexpr char contentLengthFieldName[] = "Content-Length"; +constexpr char headerSeparator[] = "\r\n"; +constexpr char contentTypeFieldName[] = "Content-Type"; + BaseMessage::BaseMessage() : mimeType(JsonRpcMessage::jsonRpcMimeType()) { } diff --git a/src/libs/languageserverprotocol/clientcapabilities.h b/src/libs/languageserverprotocol/clientcapabilities.h index bc6151a1740..93a7181de76 100644 --- a/src/libs/languageserverprotocol/clientcapabilities.h +++ b/src/libs/languageserverprotocol/clientcapabilities.h @@ -626,7 +626,7 @@ public: void clearWorkDoneProgress() { remove(workDoneProgressKey); } private: - constexpr static const char workDoneProgressKey[] = "workDoneProgress"; + constexpr static const char16_t workDoneProgressKey[] = u"workDoneProgress"; }; class LANGUAGESERVERPROTOCOL_EXPORT ClientCapabilities : public JsonObject diff --git a/src/libs/languageserverprotocol/jsonkeys.h b/src/libs/languageserverprotocol/jsonkeys.h index cc3d57ca614..efc05f629d7 100644 --- a/src/libs/languageserverprotocol/jsonkeys.h +++ b/src/libs/languageserverprotocol/jsonkeys.h @@ -27,220 +27,214 @@ namespace LanguageServerProtocol { -constexpr char actionsKey[] = "actions"; -constexpr char activeParameterKey[] = "activeParameter"; -constexpr char activeParameterSupportKey[] = "activeParameterSupport"; -constexpr char activeSignatureKey[] = "activeSignature"; -constexpr char addedKey[] = "added"; -constexpr char additionalTextEditsKey[] = "additionalTextEdits"; -constexpr char alphaKey[] = "alpha"; -constexpr char appliedKey[] = "applied"; -constexpr char applyEditKey[] = "applyEdit"; -constexpr char argumentsKey[] = "arguments"; -constexpr char blueKey[] = "blue"; -constexpr char cancellableKey[] = "cancellable"; -constexpr char capabilitiesKey[] = "capabilities"; -constexpr char chKey[] = "ch"; -constexpr char changeKey[] = "change"; -constexpr char changeNotificationsKey[] = "changeNotifications"; -constexpr char changesKey[] = "changes"; -constexpr char characterKey[] = "character"; -constexpr char childrenKey[] = "children"; -constexpr char clientInfoKey[] = "clientInfo"; -constexpr char codeActionKey[] = "codeAction"; -constexpr char codeActionKindKey[] = "codeActionKind"; -constexpr char codeActionKindsKey[] = "codeActionKinds"; -constexpr char codeActionLiteralSupportKey[] = "codeActionLiteralSupport"; -constexpr char codeActionProviderKey[] = "codeActionProvider"; -constexpr char codeKey[] = "code"; -constexpr char codeLensKey[] = "codeLens"; -constexpr char codeLensProviderKey[] = "codeLensProvider"; -constexpr char colorInfoKey[] = "colorInfo"; -constexpr char colorKey[] = "color"; -constexpr char colorProviderKey[] = "colorProvider"; -constexpr char commandKey[] = "command"; -constexpr char commandsKey[] = "commands"; -constexpr char commitCharacterSupportKey[] = "commitCharacterSupport"; -constexpr char commitCharactersKey[] = "commitCharacters"; -constexpr char completionItemKey[] = "completionItem"; -constexpr char completionItemKindKey[] = "completionItemKind"; -constexpr char completionKey[] = "completion"; -constexpr char completionProviderKey[] = "completionProvider"; -constexpr char configurationKey[] = "configuration"; -constexpr char containerNameKey[] = "containerName"; -constexpr char contentChangesKey[] = "contentChanges"; -constexpr char contentCharsetName[] = "charset"; -constexpr char contentFormatKey[] = "contentFormat"; -constexpr char contentKey[] = "value"; -constexpr char contentLengthFieldName[] = "Content-Length"; -constexpr char contentTypeFieldName[] = "Content-Type"; -constexpr char contentsKey[] = "contents"; -constexpr char contextKey[] = "context"; -constexpr char contextSupportKey[] = "contextSupport"; -constexpr char dataKey[] = "data"; -constexpr char defaultCharset[] = "utf-8"; -constexpr char definitionKey[] = "definition"; -constexpr char definitionProviderKey[] = "definitionProvider"; -constexpr char deleteCountKey[] = "deleteCount"; -constexpr char deltaKey[] = "delta"; -constexpr char deprecatedKey[] = "deprecated"; -constexpr char detailKey[] = "detail"; -constexpr char diagnosticsKey[] = "diagnostics"; -constexpr char didChangeConfigurationKey[] = "didChangeConfiguration"; -constexpr char didChangeWatchedFilesKey[] = "didChangeWatchedFiles"; -constexpr char didSaveKey[] = "didSave"; -constexpr char documentChangesKey[] = "documentChanges"; -constexpr char documentFormattingProviderKey[] = "documentFormattingProvider"; -constexpr char documentHighlightKey[] = "documentHighlight"; -constexpr char documentHighlightProviderKey[] = "documentHighlightProvider"; -constexpr char documentLinkKey[] = "documentLink"; -constexpr char documentLinkProviderKey[] = "documentLinkProvider"; -constexpr char documentRangeFormattingProviderKey[] = "documentRangeFormattingProvider"; -constexpr char documentSelectorKey[] = "documentSelector"; -constexpr char documentSymbolKey[] = "documentSymbol"; -constexpr char documentSymbolProviderKey[] = "documentSymbolProvider"; -constexpr char documentationFormatKey[] = "documentationFormat"; -constexpr char documentationKey[] = "documentation"; -constexpr char dynamicRegistrationKey[] = "dynamicRegistration"; -constexpr char editKey[] = "edit"; -constexpr char editsKey[] = "edits"; -constexpr char endKey[] = "end"; -constexpr char errorKey[] = "error"; -constexpr char eventKey[] = "event"; -constexpr char executeCommandKey[] = "executeCommand"; -constexpr char executeCommandProviderKey[] = "executeCommandProvider"; -constexpr char experimentalKey[] = "experimental"; -constexpr char filterTextKey[] = "filterText"; -constexpr char firstTriggerCharacterKey[] = "firstTriggerCharacter"; -constexpr char formatsKey[] = "formats"; -constexpr char formattingKey[] = "formatting"; -constexpr char fullKey[] = "full"; -constexpr char greenKey[] = "green"; -constexpr char headerFieldSeparator[] = ": "; -constexpr char headerSeparator[] = "\r\n"; -constexpr char hierarchicalDocumentSymbolSupportKey[] = "hierarchicalDocumentSymbolSupport"; -constexpr char hoverKey[] = "hover"; -constexpr char hoverProviderKey[] = "hoverProvider"; -constexpr char idKey[] = "id"; -constexpr char implementationKey[] = "implementation"; -constexpr char implementationProviderKey[] = "implementationProvider"; -constexpr char includeDeclarationKey[] = "includeDeclaration"; -constexpr char includeTextKey[] = "includeText"; -constexpr char initializationOptionsKey[] = "initializationOptions"; -constexpr char insertFinalNewlineKey[] = "insertFinalNewline"; -constexpr char insertSpaceKey[] = "insertSpace"; -constexpr char insertTextFormatKey[] = "insertTextFormat"; -constexpr char insertTextKey[] = "insertText"; -constexpr char isIncompleteKey[] = "isIncomplete"; -constexpr char itemsKey[] = "items"; -constexpr char jsonRpcVersionKey[] = "jsonrpc"; -constexpr char kindKey[] = "kind"; -constexpr char labelKey[] = "label"; -constexpr char languageIdKey[] = "languageId"; -constexpr char languageKey[] = "language"; -constexpr char legendKey[] = "legend"; -constexpr char limitKey[] = "limit"; -constexpr char lineKey[] = "line"; -constexpr char linesKey[] = "lines"; -constexpr char locationKey[] = "location"; -constexpr char messageKey[] = "message"; -constexpr char methodKey[] = "method"; -constexpr char moreTriggerCharacterKey[] = "moreTriggerCharacter"; -constexpr char multiLineTokenSupportKey[] = "multiLineTokenSupport"; -constexpr char nameKey[] = "name"; -constexpr char newNameKey[] = "newName"; -constexpr char newTextKey[] = "newText"; -constexpr char onTypeFormattingKey[] = "onTypeFormatting"; -constexpr char onlyKey[] = "only"; -constexpr char openCloseKey[] = "openClose"; -constexpr char optionsKey[] = "options"; -constexpr char overlappingTokenSupportKey[] = "overlappingTokenSupport"; -constexpr char parametersKey[] = "parameters"; -constexpr char paramsKey[] = "params"; -constexpr char patternKey[] = "pattern"; -constexpr char percentageKey[] = "percentage"; -constexpr char placeHolderKey[] = "placeHolder"; -constexpr char positionKey[] = "position"; -constexpr char prepareProviderKey[] = "prepareProvider"; -constexpr char prepareSupportKey[] = "prepareSupport"; -constexpr char previousResultIdKey[] = "previousResultId"; -constexpr char processIdKey[] = "processId"; -constexpr char queryKey[] = "query"; -constexpr char rangeFormattingKey[] = "rangeFormatting"; -constexpr char rangeKey[] = "range"; -constexpr char rangeLengthKey[] = "rangeLength"; -constexpr char reasonKey[] = "reason"; -constexpr char redKey[] = "red"; -constexpr char referencesKey[] = "references"; -constexpr char referencesProviderKey[] = "referencesProvider"; -constexpr char refreshSupportKey[] = "refreshSupport"; -constexpr char registerOptionsKey[] = "registerOptions"; -constexpr char registrationsKey[] = "registrations"; -constexpr char removedKey[] = "removed"; -constexpr char renameKey[] = "rename"; -constexpr char renameProviderKey[] = "renameProvider"; -constexpr char requestsKey[] = "requests"; -constexpr char resolveProviderKey[] = "resolveProvider"; -constexpr char resultIdKey[] = "resultId"; -constexpr char resultKey[] = "result"; -constexpr char retryKey[] = "retry"; -constexpr char rootPathKey[] = "rootPath"; -constexpr char rootUriKey[] = "rootUri"; -constexpr char saveKey[] = "save"; -constexpr char schemeKey[] = "scheme"; -constexpr char scopeUriKey[] = "scopeUri"; -constexpr char sectionKey[] = "section"; -constexpr char selectionRangeKey[] = "selectionRange"; -constexpr char semanticTokensKey[] = "semanticTokens"; -constexpr char semanticTokensProviderKey[] = "semanticTokensProvider"; -constexpr char serverInfoKey[] = "serverInfo"; -constexpr char settingsKey[] = "settings"; -constexpr char severityKey[] = "severity"; -constexpr char signatureHelpKey[] = "signatureHelp"; -constexpr char signatureHelpProviderKey[] = "signatureHelpProvider"; -constexpr char signatureInformationKey[] = "signatureInformation"; -constexpr char signaturesKey[] = "signatures"; -constexpr char snippetSupportKey[] = "snippetSupport"; -constexpr char sortTextKey[] = "sortText"; -constexpr char sourceKey[] = "source"; -constexpr char startKey[] = "start"; -constexpr char supportedKey[] = "supported"; -constexpr char symbolKey[] = "symbol"; -constexpr char symbolKindKey[] = "symbolKind"; -constexpr char syncKindKey[] = "syncKind"; -constexpr char synchronizationKey[] = "synchronization"; -constexpr char tabSizeKey[] = "tabSize"; -constexpr char tagsKey[] = "tags"; -constexpr char targetKey[] = "target"; -constexpr char textDocumentKey[] = "textDocument"; -constexpr char textDocumentSyncKey[] = "textDocumentSync"; -constexpr char textEditKey[] = "textEdit"; -constexpr char textKey[] = "text"; -constexpr char titleKey[] = "title"; -constexpr char tokenKey[] = "token"; -constexpr char tokenModifiersKey[] = "tokenModifiers"; -constexpr char tokenTypesKey[] = "tokenTypes"; -constexpr char traceKey[] = "trace"; -constexpr char triggerCharacterKey[] = "triggerCharacter"; -constexpr char triggerCharactersKey[] = "triggerCharacters"; -constexpr char triggerKindKey[] = "triggerKind"; -constexpr char trimFinalNewlinesKey[] = "trimFinalNewlines"; -constexpr char trimTrailingWhitespaceKey[] = "trimTrailingWhitespace"; -constexpr char typeDefinitionKey[] = "typeDefinition"; -constexpr char typeDefinitionProviderKey[] = "typeDefinitionProvider"; -constexpr char typeKey[] = "type"; -constexpr char unregistrationsKey[] = "unregistrations"; -constexpr char uriKey[] = "uri"; -constexpr char valueKey[] = "value"; -constexpr char valueSetKey[] = "valueSet"; -constexpr char versionKey[] = "version"; -constexpr char willSaveKey[] = "willSave"; -constexpr char willSaveWaitUntilKey[] = "willSaveWaitUntil"; -constexpr char windowKey[] = "window"; -constexpr char workDoneProgressKey[] = "workDoneProgress"; -constexpr char workspaceEditKey[] = "workspaceEdit"; -constexpr char workspaceFoldersKey[] = "workspaceFolders"; -constexpr char workspaceKey[] = "workspace"; -constexpr char workspaceSymbolProviderKey[] = "workspaceSymbolProvider"; +constexpr char16_t actionsKey[] = u"actions"; +constexpr char16_t activeParameterKey[] = u"activeParameter"; +constexpr char16_t activeParameterSupportKey[] = u"activeParameterSupport"; +constexpr char16_t activeSignatureKey[] = u"activeSignature"; +constexpr char16_t addedKey[] = u"added"; +constexpr char16_t additionalTextEditsKey[] = u"additionalTextEdits"; +constexpr char16_t alphaKey[] = u"alpha"; +constexpr char16_t appliedKey[] = u"applied"; +constexpr char16_t applyEditKey[] = u"applyEdit"; +constexpr char16_t argumentsKey[] = u"arguments"; +constexpr char16_t blueKey[] = u"blue"; +constexpr char16_t cancellableKey[] = u"cancellable"; +constexpr char16_t capabilitiesKey[] = u"capabilities"; +constexpr char16_t chKey[] = u"ch"; +constexpr char16_t changeKey[] = u"change"; +constexpr char16_t changeNotificationsKey[] = u"changeNotifications"; +constexpr char16_t changesKey[] = u"changes"; +constexpr char16_t characterKey[] = u"character"; +constexpr char16_t childrenKey[] = u"children"; +constexpr char16_t clientInfoKey[] = u"clientInfo"; +constexpr char16_t codeActionKey[] = u"codeAction"; +constexpr char16_t codeActionKindKey[] = u"codeActionKind"; +constexpr char16_t codeActionKindsKey[] = u"codeActionKinds"; +constexpr char16_t codeActionLiteralSupportKey[] = u"codeActionLiteralSupport"; +constexpr char16_t codeActionProviderKey[] = u"codeActionProvider"; +constexpr char16_t codeKey[] = u"code"; +constexpr char16_t codeLensKey[] = u"codeLens"; +constexpr char16_t codeLensProviderKey[] = u"codeLensProvider"; +constexpr char16_t colorInfoKey[] = u"colorInfo"; +constexpr char16_t colorKey[] = u"color"; +constexpr char16_t colorProviderKey[] = u"colorProvider"; +constexpr char16_t commandKey[] = u"command"; +constexpr char16_t commandsKey[] = u"commands"; +constexpr char16_t commitCharacterSupportKey[] = u"commitCharacterSupport"; +constexpr char16_t commitCharactersKey[] = u"commitCharacters"; +constexpr char16_t completionItemKey[] = u"completionItem"; +constexpr char16_t completionItemKindKey[] = u"completionItemKind"; +constexpr char16_t completionKey[] = u"completion"; +constexpr char16_t completionProviderKey[] = u"completionProvider"; +constexpr char16_t configurationKey[] = u"configuration"; +constexpr char16_t containerNameKey[] = u"containerName"; +constexpr char16_t contentChangesKey[] = u"contentChanges"; +constexpr char16_t contentFormatKey[] = u"contentFormat"; +constexpr char16_t contentKey[] = u"value"; +constexpr char16_t contentsKey[] = u"contents"; +constexpr char16_t contextKey[] = u"context"; +constexpr char16_t contextSupportKey[] = u"contextSupport"; +constexpr char16_t dataKey[] = u"data"; +constexpr char16_t definitionKey[] = u"definition"; +constexpr char16_t definitionProviderKey[] = u"definitionProvider"; +constexpr char16_t deleteCountKey[] = u"deleteCount"; +constexpr char16_t deltaKey[] = u"delta"; +constexpr char16_t deprecatedKey[] = u"deprecated"; +constexpr char16_t detailKey[] = u"detail"; +constexpr char16_t diagnosticsKey[] = u"diagnostics"; +constexpr char16_t didChangeConfigurationKey[] = u"didChangeConfiguration"; +constexpr char16_t didChangeWatchedFilesKey[] = u"didChangeWatchedFiles"; +constexpr char16_t didSaveKey[] = u"didSave"; +constexpr char16_t documentChangesKey[] = u"documentChanges"; +constexpr char16_t documentFormattingProviderKey[] = u"documentFormattingProvider"; +constexpr char16_t documentHighlightKey[] = u"documentHighlight"; +constexpr char16_t documentHighlightProviderKey[] = u"documentHighlightProvider"; +constexpr char16_t documentLinkKey[] = u"documentLink"; +constexpr char16_t documentLinkProviderKey[] = u"documentLinkProvider"; +constexpr char16_t documentRangeFormattingProviderKey[] = u"documentRangeFormattingProvider"; +constexpr char16_t documentSelectorKey[] = u"documentSelector"; +constexpr char16_t documentSymbolKey[] = u"documentSymbol"; +constexpr char16_t documentSymbolProviderKey[] = u"documentSymbolProvider"; +constexpr char16_t documentationFormatKey[] = u"documentationFormat"; +constexpr char16_t documentationKey[] = u"documentation"; +constexpr char16_t dynamicRegistrationKey[] = u"dynamicRegistration"; +constexpr char16_t editKey[] = u"edit"; +constexpr char16_t editsKey[] = u"edits"; +constexpr char16_t endKey[] = u"end"; +constexpr char16_t errorKey[] = u"error"; +constexpr char16_t eventKey[] = u"event"; +constexpr char16_t executeCommandKey[] = u"executeCommand"; +constexpr char16_t executeCommandProviderKey[] = u"executeCommandProvider"; +constexpr char16_t experimentalKey[] = u"experimental"; +constexpr char16_t filterTextKey[] = u"filterText"; +constexpr char16_t firstTriggerCharacterKey[] = u"firstTriggerCharacter"; +constexpr char16_t formatsKey[] = u"formats"; +constexpr char16_t formattingKey[] = u"formatting"; +constexpr char16_t fullKey[] = u"full"; +constexpr char16_t greenKey[] = u"green"; +constexpr char16_t hierarchicalDocumentSymbolSupportKey[] = u"hierarchicalDocumentSymbolSupport"; +constexpr char16_t hoverKey[] = u"hover"; +constexpr char16_t hoverProviderKey[] = u"hoverProvider"; +constexpr char16_t idKey[] = u"id"; +constexpr char16_t implementationKey[] = u"implementation"; +constexpr char16_t implementationProviderKey[] = u"implementationProvider"; +constexpr char16_t includeDeclarationKey[] = u"includeDeclaration"; +constexpr char16_t includeTextKey[] = u"includeText"; +constexpr char16_t initializationOptionsKey[] = u"initializationOptions"; +constexpr char16_t insertFinalNewlineKey[] = u"insertFinalNewline"; +constexpr char16_t insertSpaceKey[] = u"insertSpace"; +constexpr char16_t insertTextFormatKey[] = u"insertTextFormat"; +constexpr char16_t insertTextKey[] = u"insertText"; +constexpr char16_t isIncompleteKey[] = u"isIncomplete"; +constexpr char16_t itemsKey[] = u"items"; +constexpr char16_t jsonRpcVersionKey[] = u"jsonrpc"; +constexpr char16_t kindKey[] = u"kind"; +constexpr char16_t labelKey[] = u"label"; +constexpr char16_t languageIdKey[] = u"languageId"; +constexpr char16_t languageKey[] = u"language"; +constexpr char16_t legendKey[] = u"legend"; +constexpr char16_t limitKey[] = u"limit"; +constexpr char16_t lineKey[] = u"line"; +constexpr char16_t linesKey[] = u"lines"; +constexpr char16_t locationKey[] = u"location"; +constexpr char16_t messageKey[] = u"message"; +constexpr char16_t methodKey[] = u"method"; +constexpr char16_t moreTriggerCharacterKey[] = u"moreTriggerCharacter"; +constexpr char16_t multiLineTokenSupportKey[] = u"multiLineTokenSupport"; +constexpr char16_t nameKey[] = u"name"; +constexpr char16_t newNameKey[] = u"newName"; +constexpr char16_t newTextKey[] = u"newText"; +constexpr char16_t onTypeFormattingKey[] = u"onTypeFormatting"; +constexpr char16_t onlyKey[] = u"only"; +constexpr char16_t openCloseKey[] = u"openClose"; +constexpr char16_t optionsKey[] = u"options"; +constexpr char16_t overlappingTokenSupportKey[] = u"overlappingTokenSupport"; +constexpr char16_t parametersKey[] = u"parameters"; +constexpr char16_t paramsKey[] = u"params"; +constexpr char16_t patternKey[] = u"pattern"; +constexpr char16_t percentageKey[] = u"percentage"; +constexpr char16_t placeHolderKey[] = u"placeHolder"; +constexpr char16_t positionKey[] = u"position"; +constexpr char16_t prepareProviderKey[] = u"prepareProvider"; +constexpr char16_t prepareSupportKey[] = u"prepareSupport"; +constexpr char16_t previousResultIdKey[] = u"previousResultId"; +constexpr char16_t processIdKey[] = u"processId"; +constexpr char16_t queryKey[] = u"query"; +constexpr char16_t rangeFormattingKey[] = u"rangeFormatting"; +constexpr char16_t rangeKey[] = u"range"; +constexpr char16_t rangeLengthKey[] = u"rangeLength"; +constexpr char16_t reasonKey[] = u"reason"; +constexpr char16_t redKey[] = u"red"; +constexpr char16_t referencesKey[] = u"references"; +constexpr char16_t referencesProviderKey[] = u"referencesProvider"; +constexpr char16_t refreshSupportKey[] = u"refreshSupport"; +constexpr char16_t registerOptionsKey[] = u"registerOptions"; +constexpr char16_t registrationsKey[] = u"registrations"; +constexpr char16_t removedKey[] = u"removed"; +constexpr char16_t renameKey[] = u"rename"; +constexpr char16_t renameProviderKey[] = u"renameProvider"; +constexpr char16_t requestsKey[] = u"requests"; +constexpr char16_t resolveProviderKey[] = u"resolveProvider"; +constexpr char16_t resultIdKey[] = u"resultId"; +constexpr char16_t resultKey[] = u"result"; +constexpr char16_t retryKey[] = u"retry"; +constexpr char16_t rootPathKey[] = u"rootPath"; +constexpr char16_t rootUriKey[] = u"rootUri"; +constexpr char16_t saveKey[] = u"save"; +constexpr char16_t schemeKey[] = u"scheme"; +constexpr char16_t scopeUriKey[] = u"scopeUri"; +constexpr char16_t sectionKey[] = u"section"; +constexpr char16_t selectionRangeKey[] = u"selectionRange"; +constexpr char16_t semanticTokensKey[] = u"semanticTokens"; +constexpr char16_t semanticTokensProviderKey[] = u"semanticTokensProvider"; +constexpr char16_t serverInfoKey[] = u"serverInfo"; +constexpr char16_t settingsKey[] = u"settings"; +constexpr char16_t severityKey[] = u"severity"; +constexpr char16_t signatureHelpKey[] = u"signatureHelp"; +constexpr char16_t signatureHelpProviderKey[] = u"signatureHelpProvider"; +constexpr char16_t signatureInformationKey[] = u"signatureInformation"; +constexpr char16_t signaturesKey[] = u"signatures"; +constexpr char16_t snippetSupportKey[] = u"snippetSupport"; +constexpr char16_t sortTextKey[] = u"sortText"; +constexpr char16_t sourceKey[] = u"source"; +constexpr char16_t startKey[] = u"start"; +constexpr char16_t supportedKey[] = u"supported"; +constexpr char16_t symbolKey[] = u"symbol"; +constexpr char16_t symbolKindKey[] = u"symbolKind"; +constexpr char16_t syncKindKey[] = u"syncKind"; +constexpr char16_t synchronizationKey[] = u"synchronization"; +constexpr char16_t tabSizeKey[] = u"tabSize"; +constexpr char16_t tagsKey[] = u"tags"; +constexpr char16_t targetKey[] = u"target"; +constexpr char16_t textDocumentKey[] = u"textDocument"; +constexpr char16_t textDocumentSyncKey[] = u"textDocumentSync"; +constexpr char16_t textEditKey[] = u"textEdit"; +constexpr char16_t textKey[] = u"text"; +constexpr char16_t titleKey[] = u"title"; +constexpr char16_t tokenKey[] = u"token"; +constexpr char16_t tokenModifiersKey[] = u"tokenModifiers"; +constexpr char16_t tokenTypesKey[] = u"tokenTypes"; +constexpr char16_t traceKey[] = u"trace"; +constexpr char16_t triggerCharacterKey[] = u"triggerCharacter"; +constexpr char16_t triggerCharactersKey[] = u"triggerCharacters"; +constexpr char16_t triggerKindKey[] = u"triggerKind"; +constexpr char16_t trimFinalNewlinesKey[] = u"trimFinalNewlines"; +constexpr char16_t trimTrailingWhitespaceKey[] = u"trimTrailingWhitespace"; +constexpr char16_t typeDefinitionKey[] = u"typeDefinition"; +constexpr char16_t typeDefinitionProviderKey[] = u"typeDefinitionProvider"; +constexpr char16_t typeKey[] = u"type"; +constexpr char16_t unregistrationsKey[] = u"unregistrations"; +constexpr char16_t uriKey[] = u"uri"; +constexpr char16_t valueKey[] = u"value"; +constexpr char16_t valueSetKey[] = u"valueSet"; +constexpr char16_t versionKey[] = u"version"; +constexpr char16_t willSaveKey[] = u"willSave"; +constexpr char16_t willSaveWaitUntilKey[] = u"willSaveWaitUntil"; +constexpr char16_t windowKey[] = u"window"; +constexpr char16_t workDoneProgressKey[] = u"workDoneProgress"; +constexpr char16_t workspaceEditKey[] = u"workspaceEdit"; +constexpr char16_t workspaceFoldersKey[] = u"workspaceFolders"; +constexpr char16_t workspaceKey[] = u"workspace"; +constexpr char16_t workspaceSymbolProviderKey[] = u"workspaceSymbolProvider"; } // namespace LanguageServerProtocol diff --git a/src/libs/languageserverprotocol/jsonobject.cpp b/src/libs/languageserverprotocol/jsonobject.cpp index 75edb76de3b..47d2bb7824c 100644 --- a/src/libs/languageserverprotocol/jsonobject.cpp +++ b/src/libs/languageserverprotocol/jsonobject.cpp @@ -37,12 +37,12 @@ JsonObject &JsonObject::operator=(JsonObject &&other) return *this; } -QJsonObject::iterator JsonObject::insert(const QString &key, const JsonObject &object) +QJsonObject::iterator JsonObject::insert(const QStringView key, const JsonObject &object) { return m_jsonObject.insert(key, object.m_jsonObject); } -QJsonObject::iterator JsonObject::insert(const QString &key, const QJsonValue &value) +QJsonObject::iterator JsonObject::insert(const QStringView key, const QJsonValue &value) { return m_jsonObject.insert(key, value); } diff --git a/src/libs/languageserverprotocol/jsonobject.h b/src/libs/languageserverprotocol/jsonobject.h index 9f27b478cd1..9dd172bbeff 100644 --- a/src/libs/languageserverprotocol/jsonobject.h +++ b/src/libs/languageserverprotocol/jsonobject.h @@ -67,88 +67,88 @@ public: const_iterator end() const { return m_jsonObject.end(); } protected: - iterator insert(const QString &key, const JsonObject &value); - iterator insert(const QString &key, const QJsonValue &value); + iterator insert(const QStringView key, const JsonObject &value); + iterator insert(const QStringView key, const QJsonValue &value); template - iterator insertVariant(const QString &key, const V &variant); + iterator insertVariant(const QStringView key, const V &variant); template - iterator insertVariant(const QString &key, const V &variant); + iterator insertVariant(const QStringView key, const V &variant); // QJSonObject redirections - QJsonValue value(const QString &key) const { return m_jsonObject.value(key); } - bool contains(const QString &key) const { return m_jsonObject.contains(key); } - iterator find(const QString &key) { return m_jsonObject.find(key); } - const_iterator find(const QString &key) const { return m_jsonObject.find(key); } - void remove(const QString &key) { m_jsonObject.remove(key); } + QJsonValue value(const QStringView key) const { return m_jsonObject.value(key); } + bool contains(const QStringView key) const { return m_jsonObject.contains(key); } + iterator find(const QStringView key) { return m_jsonObject.find(key); } + const_iterator find(const QStringView key) const { return m_jsonObject.find(key); } + void remove(const QStringView key) { m_jsonObject.remove(key); } QStringList keys() const { return m_jsonObject.keys(); } // convenience value access template - T typedValue(const QString &key) const; + T typedValue(const QStringView key) const; template - Utils::optional optionalValue(const QString &key) const; + Utils::optional optionalValue(const QStringView key) const; template - LanguageClientValue clientValue(const QString &key) const; + LanguageClientValue clientValue(const QStringView key) const; template - Utils::optional> optionalClientValue(const QString &key) const; + Utils::optional> optionalClientValue(const QStringView key) const; template - QList array(const QString &key) const; + QList array(const QStringView key) const; template - Utils::optional> optionalArray(const QString &key) const; + Utils::optional> optionalArray(const QStringView key) const; template - LanguageClientArray clientArray(const QString &key) const; + LanguageClientArray clientArray(const QStringView key) const; template - Utils::optional> optionalClientArray(const QString &key) const; + Utils::optional> optionalClientArray(const QStringView key) const; template - void insertArray(const QString &key, const QList &array); + void insertArray(const QStringView key, const QList &array); template - void insertArray(const QString &key, const QList &array); + void insertArray(const QStringView key, const QList &array); private: QJsonObject m_jsonObject; }; template -JsonObject::iterator JsonObject::insertVariant(const QString &key, const V &variant) +JsonObject::iterator JsonObject::insertVariant(const QStringView key, const V &variant) { return Utils::holds_alternative(variant) ? insert(key, Utils::get(variant)) : end(); } template -JsonObject::iterator JsonObject::insertVariant(const QString &key, const V &variant) +JsonObject::iterator JsonObject::insertVariant(const QStringView key, const V &variant) { auto result = insertVariant(key, variant); return result != end() ? result : insertVariant(key, variant); } template -T JsonObject::typedValue(const QString &key) const +T JsonObject::typedValue(const QStringView key) const { return fromJsonValue(value(key)); } template -Utils::optional JsonObject::optionalValue(const QString &key) const +Utils::optional JsonObject::optionalValue(const QStringView key) const { const QJsonValue &val = value(key); return val.isUndefined() ? Utils::nullopt : Utils::make_optional(fromJsonValue(val)); } template -LanguageClientValue JsonObject::clientValue(const QString &key) const +LanguageClientValue JsonObject::clientValue(const QStringView key) const { return LanguageClientValue(value(key)); } template -Utils::optional> JsonObject::optionalClientValue(const QString &key) const +Utils::optional> JsonObject::optionalClientValue(const QStringView key) const { return contains(key) ? Utils::make_optional(clientValue(key)) : Utils::nullopt; } template -QList JsonObject::array(const QString &key) const +QList JsonObject::array(const QStringView key) const { if (const Utils::optional> &array = optionalArray(key)) return *array; @@ -157,7 +157,7 @@ QList JsonObject::array(const QString &key) const } template -Utils::optional> JsonObject::optionalArray(const QString &key) const +Utils::optional> JsonObject::optionalArray(const QStringView key) const { const QJsonValue &jsonValue = value(key); if (jsonValue.isUndefined()) @@ -166,13 +166,13 @@ Utils::optional> JsonObject::optionalArray(const QString &key) const } template -LanguageClientArray JsonObject::clientArray(const QString &key) const +LanguageClientArray JsonObject::clientArray(const QStringView key) const { return LanguageClientArray(value(key)); } template -Utils::optional> JsonObject::optionalClientArray(const QString &key) const +Utils::optional> JsonObject::optionalClientArray(const QStringView key) const { const QJsonValue &val = value(key); return !val.isUndefined() ? Utils::make_optional(LanguageClientArray(value(key))) @@ -180,7 +180,7 @@ Utils::optional> JsonObject::optionalClientArray(const QS } template -void JsonObject::insertArray(const QString &key, const QList &array) +void JsonObject::insertArray(const QStringView key, const QList &array) { QJsonArray jsonArray; for (const T &item : array) @@ -189,7 +189,7 @@ void JsonObject::insertArray(const QString &key, const QList &array) } template -void JsonObject::insertArray(const QString &key, const QList &array) +void JsonObject::insertArray(const QStringView key, const QList &array) { QJsonArray jsonArray; for (const JsonObject &item : array) diff --git a/src/libs/languageserverprotocol/workspace.h b/src/libs/languageserverprotocol/workspace.h index 235ddbe9a59..6179cd70005 100644 --- a/src/libs/languageserverprotocol/workspace.h +++ b/src/libs/languageserverprotocol/workspace.h @@ -188,7 +188,7 @@ public: QString query() const { return typedValue(queryKey); } void setQuery(const QString &query) { insert(queryKey, query); } - void setLimit(int limit) { insert("limit", limit); } // clangd extension + void setLimit(int limit) { insert(u"limit", limit); } // clangd extension bool isValid() const override { return contains(queryKey); } }; diff --git a/src/libs/utils/icon.cpp b/src/libs/utils/icon.cpp index bdf8601dcc2..a4ae9b81ed2 100644 --- a/src/libs/utils/icon.cpp +++ b/src/libs/utils/icon.cpp @@ -169,23 +169,27 @@ Icon::Icon(const FilePath &imageFileName) QIcon Icon::icon() const { - if (m_iconSourceList.isEmpty()) { + if (m_iconSourceList.isEmpty()) return QIcon(); - } else if (m_style == None) { - return QIcon(m_iconSourceList.constFirst().first.toString()); - } else { - QIcon result; - const int maxDpr = qRound(qApp->devicePixelRatio()); - for (int dpr = 1; dpr <= maxDpr; dpr++) { - const MasksAndColors masks = masksAndColors(m_iconSourceList, dpr); - const QPixmap combinedMask = Utils::combinedMask(masks, m_style); - result.addPixmap(masksToIcon(masks, combinedMask, m_style)); - const QColor disabledColor = creatorTheme()->color(Theme::IconsDisabledColor); - result.addPixmap(maskToColorAndAlpha(combinedMask, disabledColor), QIcon::Disabled); - } - return result; + if (m_style == None) + return QIcon(m_iconSourceList.constFirst().first.toString()); + + const int maxDpr = qRound(qApp->devicePixelRatio()); + if (maxDpr == m_lastDevicePixelRatio) + return m_lastIcon; + + m_lastDevicePixelRatio = maxDpr; + m_lastIcon = QIcon(); + for (int dpr = 1; dpr <= maxDpr; dpr++) { + const MasksAndColors masks = masksAndColors(m_iconSourceList, dpr); + const QPixmap combinedMask = Utils::combinedMask(masks, m_style); + m_lastIcon.addPixmap(masksToIcon(masks, combinedMask, m_style)); + + const QColor disabledColor = creatorTheme()->color(Theme::IconsDisabledColor); + m_lastIcon.addPixmap(maskToColorAndAlpha(combinedMask, disabledColor), QIcon::Disabled); } + return m_lastIcon; } QPixmap Icon::pixmap(QIcon::Mode iconMode) const diff --git a/src/libs/utils/icon.h b/src/libs/utils/icon.h index 417bbf6c5de..c27a7d98bc9 100644 --- a/src/libs/utils/icon.h +++ b/src/libs/utils/icon.h @@ -86,6 +86,8 @@ public: private: QVector m_iconSourceList; IconStyleOptions m_style = None; + mutable int m_lastDevicePixelRatio = -1; + mutable QIcon m_lastIcon; }; } // namespace Utils diff --git a/src/plugins/clangcodemodel/clangdast.cpp b/src/plugins/clangcodemodel/clangdast.cpp index dbfaabea8c0..cc4f9708985 100644 --- a/src/plugins/clangcodemodel/clangdast.cpp +++ b/src/plugins/clangcodemodel/clangdast.cpp @@ -40,8 +40,8 @@ using namespace Utils; namespace ClangCodeModel::Internal { -static constexpr char roleKey[] = "role"; -static constexpr char arcanaKey[] = "arcana"; +static constexpr char16_t roleKey[] = u"role"; +static constexpr char16_t arcanaKey[] = u"arcana"; QString ClangdAstNode::role() const { return typedValue(roleKey); } QString ClangdAstNode::kind() const { return typedValue(kindKey); } diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index d8841a6880b..2994be350f7 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -111,7 +111,7 @@ class SymbolDetails : public JsonObject public: using JsonObject::JsonObject; - static constexpr char usrKey[] = "usr"; + static constexpr char16_t usrKey[] = u"usr"; // the unqualified name of the symbol QString name() const { return typedValue(nameKey); } @@ -190,8 +190,8 @@ class DiagnosticsCapabilities : public JsonObject { public: using JsonObject::JsonObject; - void enableCategorySupport() { insert("categorySupport", true); } - void enableCodeActionsInline() {insert("codeActionsInline", true);} + void enableCategorySupport() { insert(u"categorySupport", true); } + void enableCodeActionsInline() {insert(u"codeActionsInline", true);} }; class ClangdTextDocumentClientCapabilities : public TextDocumentClientCapabilities @@ -201,7 +201,7 @@ public: void setPublishDiagnostics(const DiagnosticsCapabilities &caps) - { insert("publishDiagnostics", caps); } + { insert(u"publishDiagnostics", caps); } }; static qint64 getRevision(const TextDocument *doc) @@ -1338,7 +1338,7 @@ void ClangdClient::Private::handleSemanticTokens(TextDocument *doc, Utils::optional > ClangdDiagnostic::codeActions() const { - auto actions = optionalArray("codeActions"); + auto actions = optionalArray(u"codeActions"); if (!actions) return actions; static const QStringList badCodeActions{ @@ -1355,7 +1355,7 @@ Utils::optional > ClangdDiagnostic::codeActions() const QString ClangdDiagnostic::category() const { - return typedValue("category"); + return typedValue(u"category"); } MessageId ClangdClient::Private::getAndHandleAst(const TextDocOrFile &doc, diff --git a/src/plugins/clangcodemodel/clangdcompletion.cpp b/src/plugins/clangcodemodel/clangdcompletion.cpp index 6109477270f..5bcf6a9f26f 100644 --- a/src/plugins/clangcodemodel/clangdcompletion.cpp +++ b/src/plugins/clangcodemodel/clangdcompletion.cpp @@ -633,7 +633,7 @@ IAssistProposal *ClangdFunctionHintProcessor::perform(const AssistInterface *int ClangdCompletionCapabilities::ClangdCompletionCapabilities(const JsonObject &object) : TextDocumentClientCapabilities::CompletionCapabilities(object) { - insert("editsNearCursor", true); // For dot-to-arrow correction. + insert(u"editsNearCursor", true); // For dot-to-arrow correction. if (Utils::optional completionItemCaps = completionItem()) { completionItemCaps->setSnippetSupport(false); setCompletionItem(*completionItemCaps); diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp index bd6f493714c..4fb31804fe4 100644 --- a/src/plugins/clangcodemodel/clangtextmark.cpp +++ b/src/plugins/clangcodemodel/clangtextmark.cpp @@ -277,7 +277,7 @@ Task createTask(const ClangDiagnostic &diagnostic) return Task(taskType, diagnosticCategoryPrefixRemoved(diagnostic.text), - FilePath::fromString(diagnostic.location.targetFilePath.toString()), + diagnostic.location.targetFilePath, diagnostic.location.targetLine, Constants::TASK_CATEGORY_DIAGNOSTICS, icon, @@ -295,7 +295,7 @@ ClangdTextMark::ClangdTextMark(const FilePath &filePath, , m_diagnostic(convertDiagnostic(ClangdDiagnostic(diagnostic), filePath)) , m_client(client) { - setSettingsPage(CppEditor::Constants::CPP_CODE_MODEL_SETTINGS_ID); + setSettingsPage(CppEditor::Constants::CPP_CLANGD_SETTINGS_ID); const bool isError = diagnostic.severity() && *diagnostic.severity() == DiagnosticSeverity::Error; @@ -310,31 +310,32 @@ ClangdTextMark::ClangdTextMark(const FilePath &filePath, client->addTask(createTask(m_diagnostic)); } - // Copy to clipboard action - QVector actions; - QAction *action = new QAction(); - action->setIcon(QIcon::fromTheme("edit-copy", Icons::COPY.icon())); - action->setToolTip(tr("Copy to Clipboard", "Clang Code Model Marks")); - QObject::connect(action, &QAction::triggered, [diag = m_diagnostic]() { - const QString text = ClangDiagnosticWidget::createText({diag}, - ClangDiagnosticWidget::InfoBar); - setClipboardAndSelection(text); - }); - actions << action; - - // Remove diagnostic warning action - Project *project = projectForCurrentEditor(); - if (project && isDiagnosticConfigChangable(project, m_diagnostic)) { - action = new QAction(); - action->setIcon(Icons::BROKEN.icon()); - action->setToolTip(tr("Disable Diagnostic in Current Project")); - QObject::connect(action, &QAction::triggered, [diag = m_diagnostic]() { - disableDiagnosticInCurrentProjectConfig(diag); + setActionsProvider([diag = m_diagnostic] { + // Copy to clipboard action + QList actions; + QAction *action = new QAction(); + action->setIcon(QIcon::fromTheme("edit-copy", Icons::COPY.icon())); + action->setToolTip(tr("Copy to Clipboard", "Clang Code Model Marks")); + QObject::connect(action, &QAction::triggered, [diag] { + const QString text = ClangDiagnosticWidget::createText({diag}, + ClangDiagnosticWidget::InfoBar); + setClipboardAndSelection(text); }); actions << action; - } - setActions(actions); + // Remove diagnostic warning action + Project *project = projectForCurrentEditor(); + if (project && isDiagnosticConfigChangable(project, diag)) { + action = new QAction(); + action->setIcon(Icons::BROKEN.icon()); + action->setToolTip(tr("Disable Diagnostic in Current Project")); + QObject::connect(action, &QAction::triggered, [diag] { + disableDiagnosticInCurrentProjectConfig(diag); + }); + actions << action; + } + return actions; + }); } bool ClangdTextMark::addToolTipContent(QLayout *target) const diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index c85ee98e1cf..b98ad7e91be 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -76,15 +76,14 @@ QString diagnosticCategoryPrefixRemoved(const QString &text) // Prefixes are taken from $LLVM_SOURCE_DIR/tools/clang/lib/Frontend/TextDiagnostic.cpp, // function TextDiagnostic::printDiagnosticLevel (llvm-3.6.2). static const QStringList categoryPrefixes = { - QStringLiteral("note"), - QStringLiteral("remark"), - QStringLiteral("warning"), - QStringLiteral("error"), - QStringLiteral("fatal error") + QStringLiteral("note: "), + QStringLiteral("remark: "), + QStringLiteral("warning: "), + QStringLiteral("error: "), + QStringLiteral("fatal error: ") }; - for (const QString &prefix : categoryPrefixes) { - const QString fullPrefix = prefix + QStringLiteral(": "); + for (const QString &fullPrefix : categoryPrefixes) { if (theText.startsWith(fullPrefix)) { theText.remove(0, fullPrefix.length()); return theText; diff --git a/src/plugins/clangtools/diagnosticmark.cpp b/src/plugins/clangtools/diagnosticmark.cpp index 37dd7693921..985d917b80d 100644 --- a/src/plugins/clangtools/diagnosticmark.cpp +++ b/src/plugins/clangtools/diagnosticmark.cpp @@ -54,28 +54,28 @@ DiagnosticMark::DiagnosticMark(const Diagnostic &diagnostic) setIcon(markIcon.isNull() ? Utils::Icons::CODEMODEL_WARNING.icon() : markIcon); setToolTip(createDiagnosticToolTipString(diagnostic, Utils::nullopt, true)); setLineAnnotation(diagnostic.description); + setActionsProvider([diagnostic] { + // Copy to clipboard action + QList actions; + QAction *action = new QAction(); + action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon())); + action->setToolTip(tr("Copy to Clipboard")); + QObject::connect(action, &QAction::triggered, [diagnostic]() { + const QString text = createFullLocationString(diagnostic.location) + + ": " + + diagnostic.description; + Utils::setClipboardAndSelection(text); + }); + actions << action; - // Copy to clipboard action - QVector actions; - QAction *action = new QAction(); - action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon())); - action->setToolTip(tr("Copy to Clipboard")); - QObject::connect(action, &QAction::triggered, [diagnostic]() { - const QString text = createFullLocationString(diagnostic.location) - + ": " - + diagnostic.description; - Utils::setClipboardAndSelection(text); + // Disable diagnostic action + action = new QAction(); + action->setIcon(Utils::Icons::BROKEN.icon()); + action->setToolTip(tr("Disable Diagnostic")); + QObject::connect(action, &QAction::triggered, [diagnostic] { disableChecks({diagnostic}); }); + actions << action; + return actions; }); - actions << action; - - // Disable diagnostic action - action = new QAction(); - action->setIcon(Utils::Icons::BROKEN.icon()); - action->setToolTip(tr("Disable Diagnostic")); - QObject::connect(action, &QAction::triggered, [diagnostic] { disableChecks({diagnostic}); }); - actions << action; - - setActions(actions); } void DiagnosticMark::disable() diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp index 77328ff29dc..5bee2c72f0e 100644 --- a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp +++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp @@ -434,6 +434,7 @@ public: private: void updateQchFilePath(); + void reload(); CMakeToolItemModel *m_model; QLineEdit *m_displayNameLineEdit; @@ -479,8 +480,8 @@ CMakeToolItemConfigWidget::CMakeToolItemConfigWidget(CMakeToolItemModel *model) connect(m_binaryChooser, &PathChooser::rawPathChanged, this, [this]() { updateQchFilePath(); - m_qchFileChooser->setBaseDirectory(m_binaryChooser->filePath().parentDir()); store(); + reload(); }); connect(m_qchFileChooser, &PathChooser::rawPathChanged, this, &CMakeToolItemConfigWidget::store); connect(m_displayNameLineEdit, &QLineEdit::textChanged, this, &CMakeToolItemConfigWidget::store); @@ -504,6 +505,18 @@ void CMakeToolItemConfigWidget::updateQchFilePath() m_qchFileChooser->setFilePath(CMakeTool::searchQchFile(m_binaryChooser->filePath())); } +void CMakeToolItemConfigWidget::reload() +{ + if (!m_id.isValid()) + return; + + const CMakeToolTreeItem *item = m_model->cmakeToolItem(m_id); + if (!item) + return; + + load(item); +} + void CMakeToolItemConfigWidget::load(const CMakeToolTreeItem *item) { m_loadingItem = true; // avoid intermediate signal handling diff --git a/src/plugins/coco/cocolanguageclient.cpp b/src/plugins/coco/cocolanguageclient.cpp index 45cb39e9f74..c26bd83bc45 100644 --- a/src/plugins/coco/cocolanguageclient.cpp +++ b/src/plugins/coco/cocolanguageclient.cpp @@ -260,7 +260,7 @@ public: void enableCodecoverageSupport() { JsonObject coverageSupport(QJsonObject{{"codeCoverageSupport", true}}); - insert("publishDiagnostics", coverageSupport); + insert(u"publishDiagnostics", coverageSupport); } }; diff --git a/src/plugins/cppcheck/cppchecktextmark.cpp b/src/plugins/cppcheck/cppchecktextmark.cpp index d42c81388f4..fa2a563bed6 100644 --- a/src/plugins/cppcheck/cppchecktextmark.cpp +++ b/src/plugins/cppcheck/cppchecktextmark.cpp @@ -79,19 +79,20 @@ CppcheckTextMark::CppcheckTextMark (const Diagnostic &diagnostic) setToolTip(toolTipText(diagnostic.severityText)); setLineAnnotation(diagnostic.message); setSettingsPage(Constants::OPTIONS_PAGE_ID); - - // Copy to clipboard action - QAction *action = new QAction(); - action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon())); - action->setToolTip(TextMark::tr("Copy to Clipboard")); - QObject::connect(action, &QAction::triggered, [diagnostic]() { - const QString text = QString("%1:%2: %3") - .arg(diagnostic.fileName.toUserOutput()) - .arg(diagnostic.lineNumber) - .arg(diagnostic.message); - Utils::setClipboardAndSelection(text); + setActionsProvider([diagnostic] { + // Copy to clipboard action + QAction *action = new QAction; + action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon())); + action->setToolTip(TextMark::tr("Copy to Clipboard")); + QObject::connect(action, &QAction::triggered, [diagnostic]() { + const QString text = QString("%1:%2: %3") + .arg(diagnostic.fileName.toUserOutput()) + .arg(diagnostic.lineNumber) + .arg(diagnostic.message); + Utils::setClipboardAndSelection(text); + }); + return QList{action}; }); - setActions({action}); } QString CppcheckTextMark::toolTipText(const QString &severityText) const diff --git a/src/plugins/languageclient/diagnosticmanager.cpp b/src/plugins/languageclient/diagnosticmanager.cpp index 7422f5890ab..3f1290eb0ba 100644 --- a/src/plugins/languageclient/diagnosticmanager.cpp +++ b/src/plugins/languageclient/diagnosticmanager.cpp @@ -145,14 +145,16 @@ TextEditor::TextMark *DiagnosticManager::createTextMark(const FilePath &filePath { static const auto icon = QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon()); static const QString tooltip = tr("Copy to Clipboard"); - QAction *action = new QAction(); - action->setIcon(icon); - action->setToolTip(tooltip); - QObject::connect(action, &QAction::triggered, [text = diagnostic.message()]() { - setClipboardAndSelection(text); - }); auto mark = new TextMark(filePath, diagnostic, m_client->id()); - mark->setActions({action}); + mark->setActionsProvider([text = diagnostic.message()] { + QAction *action = new QAction(); + action->setIcon(icon); + action->setToolTip(tooltip); + QObject::connect(action, &QAction::triggered, [text] { + setClipboardAndSelection(text); + }); + return QList{action}; + }); return mark; } diff --git a/src/plugins/languageclient/lspinspector.cpp b/src/plugins/languageclient/lspinspector.cpp index 97ef86b3316..051e168f263 100644 --- a/src/plugins/languageclient/lspinspector.cpp +++ b/src/plugins/languageclient/lspinspector.cpp @@ -549,7 +549,7 @@ QString LspLogMessage::displayText() const if (!m_displayText.has_value()) { m_displayText = QString(time.toString("hh:mm:ss.zzz") + '\n'); m_displayText->append( - message.toJsonObject().value(QString{methodKey}).toString(id().toString())); + message.toJsonObject().value(methodKey).toString(id().toString())); } return *m_displayText; } diff --git a/src/plugins/qmldesigner/designercore/model/propertyparser.cpp b/src/plugins/qmldesigner/designercore/model/propertyparser.cpp index eab05e0adc4..21fcc0fa566 100644 --- a/src/plugins/qmldesigner/designercore/model/propertyparser.cpp +++ b/src/plugins/qmldesigner/designercore/model/propertyparser.cpp @@ -249,14 +249,11 @@ QVariant read(int variantType, const QString &str) if (str == "false") return false; - auto tmp = QVariant(str); - conversionOk = tmp.isValid(); - value = QVariant(tmp); + if (auto f = QVariant(str).toDouble(&conversionOk); conversionOk) + return f; + else if (auto c = colorFromString(str, &conversionOk); conversionOk) + return c; - if (tmp.canConvert(QMetaType::Double)) - value.convert(QMetaType::Double); - else if (tmp.canConvert(QMetaType::QColor)) - value.convert(QMetaType::QColor); break; } case QMetaType::QPoint: diff --git a/src/plugins/texteditor/textdocument.cpp b/src/plugins/texteditor/textdocument.cpp index d01bf4a5680..b581bd804f5 100644 --- a/src/plugins/texteditor/textdocument.cpp +++ b/src/plugins/texteditor/textdocument.cpp @@ -970,6 +970,13 @@ void TextDocument::updateLayout() const documentLayout->requestUpdate(); } +void TextDocument::scheduleUpdateLayout() const +{ + auto documentLayout = qobject_cast(d->m_document.documentLayout()); + QTC_ASSERT(documentLayout, return); + documentLayout->scheduleUpdate(); +} + TextMarks TextDocument::marks() const { return d->m_marksCache; @@ -999,7 +1006,7 @@ bool TextDocument::addMark(TextMark *mark) bool fullUpdate = !documentLayout->hasMarks; documentLayout->hasMarks = true; if (fullUpdate) - documentLayout->requestUpdate(); + documentLayout->scheduleUpdate(); else documentLayout->requestExtraAreaUpdate(); return true; @@ -1056,7 +1063,7 @@ void TextDocument::removeMark(TextMark *mark) removeMarkFromMarksCache(mark); emit markRemoved(mark); mark->setBaseTextDocument(nullptr); - updateLayout(); + scheduleUpdateLayout(); } void TextDocument::updateMark(TextMark *mark) @@ -1068,7 +1075,7 @@ void TextDocument::updateMark(TextMark *mark) userData->removeMark(mark); userData->addMark(mark); } - updateLayout(); + scheduleUpdateLayout(); } void TextDocument::moveMark(TextMark *mark, int previousLine) diff --git a/src/plugins/texteditor/textdocument.h b/src/plugins/texteditor/textdocument.h index b66046c076b..b11d1a3a588 100644 --- a/src/plugins/texteditor/textdocument.h +++ b/src/plugins/texteditor/textdocument.h @@ -112,6 +112,7 @@ public: TextMarks marksAt(int line) const; void removeMark(TextMark *mark); void updateLayout() const; + void scheduleUpdateLayout() const; void updateMark(TextMark *mark); void moveMark(TextMark *mark, int previousLine); void removeMarkFromMarksCache(TextMark *mark); diff --git a/src/plugins/texteditor/textdocumentlayout.cpp b/src/plugins/texteditor/textdocumentlayout.cpp index 64a7375f369..beabf503dfd 100644 --- a/src/plugins/texteditor/textdocumentlayout.cpp +++ b/src/plugins/texteditor/textdocumentlayout.cpp @@ -638,6 +638,20 @@ void TextDocumentLayout::updateMarksBlock(const QTextBlock &block) } } +void TextDocumentLayout::scheduleUpdate() +{ + if (m_updateScheduled) + return; + m_updateScheduled = true; + QMetaObject::invokeMethod(this, &TextDocumentLayout::requestUpdateNow, Qt::QueuedConnection); +} + +void TextDocumentLayout::requestUpdateNow() +{ + m_updateScheduled = false; + requestUpdate(); +} + QRectF TextDocumentLayout::blockBoundingRect(const QTextBlock &block) const { QRectF boundingRect = QPlainTextDocumentLayout::blockBoundingRect(block); diff --git a/src/plugins/texteditor/textdocumentlayout.h b/src/plugins/texteditor/textdocumentlayout.h index 21f8800e396..bcc283ba6a5 100644 --- a/src/plugins/texteditor/textdocumentlayout.h +++ b/src/plugins/texteditor/textdocumentlayout.h @@ -236,6 +236,11 @@ public: void documentReloaded(TextMarks marks, TextDocument *baseextDocument); void updateMarksLineNumber(); void updateMarksBlock(const QTextBlock &block); + void scheduleUpdate(); + void requestUpdateNow(); + +private: + bool m_updateScheduled = false; signals: void updateExtraArea(); diff --git a/src/plugins/texteditor/textmark.cpp b/src/plugins/texteditor/textmark.cpp index 36489fcd88b..6fedd4b7465 100644 --- a/src/plugins/texteditor/textmark.cpp +++ b/src/plugins/texteditor/textmark.cpp @@ -96,9 +96,6 @@ TextMark::TextMark(const FilePath &fileName, int lineNumber, Id category) TextMark::~TextMark() { - qDeleteAll(m_actions); - m_actions.clear(); - delete m_settingsAction; if (!m_fileName.isEmpty()) TextMarkRegistry::remove(this); if (m_baseTextDocument) @@ -241,7 +238,7 @@ void TextMark::removedFromEditor() void TextMark::updateMarker() { if (m_baseTextDocument) - m_baseTextDocument->updateLayout(); + m_baseTextDocument->scheduleUpdateLayout(); } void TextMark::setPriority(TextMark::Priority prioriy) @@ -300,19 +297,29 @@ void TextMark::addToToolTipLayout(QGridLayout *target) const target->addLayout(contentLayout, row, 1); // Right column: action icons/button - QVector actions = m_actions; - if (m_settingsAction) - actions << m_settingsAction; + QList actions{m_actions.begin(), m_actions.end()}; + if (m_actionsProvider) + actions = m_actionsProvider(); + if (m_settingsPage.isValid()) { + auto settingsAction = new QAction; + settingsAction->setIcon(Utils::Icons::SETTINGS_TOOLBAR.icon()); + settingsAction->setToolTip(tr("Show Diagnostic Settings")); + QObject::connect(settingsAction, &QAction::triggered, Core::ICore::instance(), + [id = m_settingsPage] { Core::ICore::showOptionsDialog(id); }, + Qt::QueuedConnection); + actions.append(settingsAction); + } if (!actions.isEmpty()) { auto actionsLayout = new QHBoxLayout; QMargins margins = actionsLayout->contentsMargins(); margins.setLeft(margins.left() + 5); actionsLayout->setContentsMargins(margins); for (QAction *action : qAsConst(actions)) { - QTC_ASSERT(!action->icon().isNull(), continue); + QTC_ASSERT(!action->icon().isNull(), delete action; continue); auto button = new QToolButton; button->setIcon(action->icon()); button->setToolTip(action->toolTip()); + action->setParent(button); QObject::connect(button, &QToolButton::clicked, action, &QAction::triggered); QObject::connect(button, &QToolButton::clicked, []() { Utils::ToolTip::hideImmediately(); @@ -414,15 +421,14 @@ void TextMark::setActions(const QVector &actions) m_actions = actions; } +void TextMark::setActionsProvider(const std::function()> &actionsProvider) +{ + m_actionsProvider = actionsProvider; +} + void TextMark::setSettingsPage(Id settingsPage) { - delete m_settingsAction; - m_settingsAction = new QAction; - m_settingsAction->setIcon(Utils::Icons::SETTINGS.icon()); - m_settingsAction->setToolTip(tr("Show Diagnostic Settings")); - QObject::connect(m_settingsAction, &QAction::triggered, Core::ICore::instance(), - [settingsPage] { Core::ICore::showOptionsDialog(settingsPage); }, - Qt::QueuedConnection); + m_settingsPage = settingsPage; } TextMarkRegistry::TextMarkRegistry(QObject *parent) diff --git a/src/plugins/texteditor/textmark.h b/src/plugins/texteditor/textmark.h index 0e94728103c..51126942569 100644 --- a/src/plugins/texteditor/textmark.h +++ b/src/plugins/texteditor/textmark.h @@ -130,6 +130,7 @@ public: QVector actions() const; void setActions(const QVector &actions); // Takes ownership + void setActionsProvider(const std::function()> &actionsProvider); // Takes ownership protected: void setSettingsPage(Utils::Id settingsPage); @@ -150,8 +151,9 @@ private: QString m_toolTip; std::function m_toolTipProvider; QString m_defaultToolTip; - QVector m_actions; - QAction *m_settingsAction = nullptr; + QVector m_actions; // FIXME Remove in master + std::function()> m_actionsProvider; + Utils::Id m_settingsPage; }; } // namespace TextEditor diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index b4dbe279c05..f682d6165e6 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -4251,7 +4251,7 @@ void tst_Dumpers::dumper_data() //+ Check("var72", "", "@QVariant (QRegion)") FIXME + Check("var73", "", "@QVariant (QBitmap)") + Check("var74", "", "@QVariant (QCursor)") - + Check("var75", "", "@QVariant (QKeySequence)") % NoLldbEngine // FIXME + + Check("var75", "(0x0, 0x0, 0x0, 0x0)", "@QVariant (QKeySequence)") + Check("var76", "", "@QVariant (QPen)") + Check("var77", "", "@QVariant (QTextLength)") //+ Check("var78", Value5(""), "@QVariant (QTextFormat)") diff --git a/tests/auto/tracing/flamegraphview/tst_flamegraphview.cpp b/tests/auto/tracing/flamegraphview/tst_flamegraphview.cpp index 4ceaa48380c..800b8543e82 100644 --- a/tests/auto/tracing/flamegraphview/tst_flamegraphview.cpp +++ b/tests/auto/tracing/flamegraphview/tst_flamegraphview.cpp @@ -105,20 +105,20 @@ void tst_FlameGraphView::testZoom() QWindow *window = widget.windowHandle(); QCOMPARE(selectedTypeId(), -1); - QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(widget.width() - 15, - widget.height() - 15)); + QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(widget.width() - 25, + widget.height() - 25)); QTRY_VERIFY(selectedTypeId() != -1); const int typeId1 = selectedTypeId(); - QTest::mouseDClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(15, widget.height() - 15)); + QTest::mouseDClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(25, widget.height() - 25)); QTRY_VERIFY(selectedTypeId() != typeId1); QVERIFY(selectedTypeId() != -1); QTest::mouseDClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(widget.width() / 2, widget.height() / 2)); QTRY_COMPARE(selectedTypeId(), -1); - QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(widget.width() - 15, - widget.height() - 15)); + QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(widget.width() - 25, + widget.height() - 25)); QTRY_COMPARE(selectedTypeId(), typeId1); }