aboutsummaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* tst_focus: skip all tests on platforms without window activationMitch Curtis16 hours1-0/+7
| | | | | | | | | | | Also fail on warnings so that warnings like the ones printed by qWaitForWindowActive will be caught in the future. Fixes: QTBUG-124230 Pick-to: 6.5 6.7 Change-Id: Ieed327fab35707574afc4e2290958d86c3cddc63 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Move duplicate WindowActivation checks into a skip macroMitch Curtis16 hours8-105/+38
| | | | | | | | Task-number: QTBUG-124230 Pick-to: 6.5 6.7 Change-Id: I617f851cd2b2b1a4f4c3dada2e4ebdf5c4be18fd Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
* Add fillTransform property to ShapePathEirik Aavitsland25 hours6-0/+238
| | | | | | | This adds functionality corresponding to QBrush transform to QuickShapes. Change-Id: I2b5903f8c228adec65a6f5be64e3816143879302 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Add PlanarTransform object to facilitate 2D transformsEirik Aavitsland25 hours1-1/+3
| | | | | | | | | | | | | The existing function for creating a non-identity matrix4x4 requires all of the 16 values to be specified. That is needlessly cumbersome in the common case of a 2D (planar) transform. So add a new interface singleton object to hold invokable methods that simplify specifying such transforms in qml, avoiding exposing the full complexity of the underlying 4x4 matrix in the api. Change-Id: I8a94099da5c94f5483e6b46280c6101c6d3f6dc3 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Force active focus to target item in setFocusToTargetItemDoris Verria25 hours2-1/+47
| | | | | | | | | | | | | | | | It is not enough to call setFocus on the target item, as there may be other focus scopes currently holding the active focus. Call forceActiveFocus instead. Also, if the target item is the First or Last target, we want to explicitly set the focus to the first/last item of the window that can receive focus. If that item is a FocusScope we need to clear its previous subFocusItem. Task-number: QTBUG-121789 Change-Id: I99e5da5727dfd99c76bf2fc0baf7e9b8330f7c4d Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* V4: Slim down FunctionObjectUlf Hermann31 hours1-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most FunctionObjects do not actually need their custom jsCall members. They will only call the functions from the vtable anyway. FunctionObject can therefore be split into a static and a dynamic variant. Only the dyanmic variant needs to carry (and invoke) the extra pointer. The jsCallWithMetaTypes pointer is completely pointless because none of the dynamic functions actually implement it. Furthermore, the QV4::Function and QV4::ExecutionContext pointers in FunctionObject are only needed by actual JavaScript functions. The builtins that like to be dynamic functions never need them. Therefore, split out another class for this. In the generic FunctionObject, we need the capability to decide at run time whether the function shall be a constructor or not. Add a flag to replace the check for jsCallAsConstructor. Also, where we can, avoid the pessimization of checking whether a function is a constructor before trying to call it as constructor. Rather have the default implementation throw the exception. As a side effect, for most functions we don't need an ExecutionContext anymore. The engine is enough. Task-number: QTBUG-124662 Change-Id: Iac657fa71288dd6ec230a33de2986ba3bcf4628c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* ecmascripttests: Actually fail the test if the runner crashesUlf Hermann4 days1-2/+2
| | | | | | | | | | The runner can have a "normal" exit status but a non-zero exit code. That's still a crash. Amends commit 4e0cf9658a28b7d048a016b9d0ab5926964e9a60 Change-Id: Ia803a947b51c9ea5486d0ca5b6cdd9c01040c84f Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
* Fix header case issue following qtbase changeMårten Nordheim5 days1-7/+5
| | | | | | | | | | | We send headers as lower-case now. Though this also presents a potential incompat issue, if people are, for some reason, inspecting the headers we intend to send using hard-coded strings they will encounter the same issue... Change-Id: I1a423379939cc72c8c8cf321c7a0de93b4dee994 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* SplitView: fix resized item jumping in size when an item is hiddenMitch Curtis6 days1-8/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The logic that handles the item to the left of the handle being resized incorrectly used a hidden handle as the leftEdge. This would cause the item to get more space than it should because it thought it had more space to consume. Before the fix, leftEdge is 10 and accumulated is 0, so: // 390 400 0 10 const qreal rightStop = size - accumulated - pressedHandleSize; // 110 10 110 qreal leftStop = qMax(leftEdge, pressedHandlePos); // 110 110 110 390 const qreal newHandlePos = qBound(leftStop, pressedHandlePos, rightStop); // 100 110 10 const qreal newItemSize = newHandlePos - leftEdge; After the fix, leftEdge is 60 and accumulated is 0, so: // 390 400 0 10 const qreal rightStop = size - accumulated - pressedHandleSize; // 110 60 110 qreal leftStop = qMax(leftEdge, pressedHandlePos); // 110 110 110 390 const qreal newHandlePos = qBound(leftStop, pressedHandlePos, rightStop); // 50 110 60 const qreal newItemSize = newHandlePos - leftEdge; Fixes: QTBUG-125049 Pick-to: 6.5 6.7 Change-Id: I3cdf57693c71c1f367780eda0ff6794fea02d546 Reviewed-by: Kaj Grönholm <kaj.gronholm@qt.io>
* Match QFont::ContextFontMerging with Qt Quick APIEskil Abrahamsen Blomfeldt7 days1-0/+18
| | | | | | | | | | | | While we don't support all style strategy flags in Qt Quick, we do support selected ones as bools. QFont::ContextFontMerging is useful to be able to set per Text element, so it should be exposed through the QML APIs. Task-number: QTBUG-121131 Change-Id: If28a065aefc4e2043e830e31356b8bd98f6d4cd8 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* QML: Allow numeric separators in numeric literalsLuca Di Sera7 days1-0/+72
| | | | | | | | | | | | | | | | | | | | ES2021 introduced numeric separators in numeric literals to improve readability. For example, one billion can be written "1_000_000_000" where "_" are the numeric separators. Update the QML lexer to allow numeric separators, based on https://262.ecma-international.org/12.0/#prod-NumericLiteralSeparator. Add a non-exhaustive test case to `tst_qqmlparser` to track the behavior. Fixes: QTBUG-123792 Change-Id: Ie62d1f40fc8e0c7678e7dfea16408bdeeba6d150 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Dmitrii Akshintsev <dmitrii.akshintsev@qt.io>
* QtQml: Add a wrapper builtin for QJsonObjectLuca Di Sera7 days4-0/+24
| | | | | | | | | | | | | | Calling `qmllint` can produce warning for usages of the `QJsonObject` type, due to it not being found. Make `QJsonObject` a builtin type so that calls to `qmllint` will import and recognize the type. Add a test-case to ensure that the type is now recognized. Task-number: QTBUG-111015 Change-Id: I09afa006036059b826f6d76adb76fe802ba18f70 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* ComboBox: fix popup palette inheritanceMitch Curtis8 days3-0/+126
| | | | | | | | | | | | | 54a2a35f17d5e5d1793af63b76993a583e10ab41 fixed the theme/accent/primary inheritance of the Material and Universal style's ComboBox popups. This patch makes an equivalent fix for styles that use palettes. Now the Basic and Fusion ComboBox popups will have the correct colors in both light and dark modes. Fixes: QTBUG-124474 Pick-to: 6.5 6.7 Change-Id: I3e3fcdc9d6fe75f195cc4f4707eac6d30413121f Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Baseline tests: turn cursor off for text input controlsVolker Hilsheimer8 days2-0/+8
| | | | | | | | | Otherwise the blinking cursor might result in mismatches. Pick-to: 6.7 Change-Id: I2cd2c8984689986fa196d22bf65cc727e8adcc7f Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* qmlls: Add delta support for semantic highlightingSemih Yavuz8 days5-2/+213
| | | | | | | | | | | | | | | | | | | If the document is too big, a client might not want to reperform all highlights. Instead, they will request semanticTokens/delta to understand what has changed on top of the latest data. Server now holds a resultID string and the last encoded tokens. If the client requests a delta with the same resultID then the difference is computed and semanticeditstoken is populated. Else, servers' response will contain the full semantic tokens. Skip the module test for now as there is an unexpected behavior on handling of variants in the language server api. This issue is tracked with QTBUG-124870. Task-number: QTBUG-120000 Change-Id: I5ea6d7a8f892d0be101dcc8f799937654618d79c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* semantichighlighting: highlight for-declarationsSemih Yavuz8 days1-2/+0
| | | | | | | | | | | | | | Add declarationKindToken location in the pattern element node. This is required for semantic highlighting to highlight the type correctly within iteration statements. Add type identifier region for the declaration kind token in the for-declaration construct. Fixes: QTBUG-124677 Task-number: QTBUG-120000 Change-Id: I02520bdc6f1b9dfc5d47078cd7e5e8d2f40bf382 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* qmlls: Add range support for semantic highlightingSemih Yavuz8 days4-26/+107
| | | | | | | | | | | | Clients might ask only a range of the text document to be highlighted. Then, we should perform highlighting for that particular range. Introduce an optional data member m_range in the highlighting visitor. If m_range has value, then highlight the current item only by checking if it is overlapping with the requested range. Task-number: QTBUG-120000 Change-Id: I635765d3d8831f7717edb96331db414f3813308f Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* semantichighlighting: add highlighting for the script expressionsSemih Yavuz8 days2-0/+189
| | | | | | | | | | | | | | | | This is the final commit for the core functionality of the semantic highlighting. There is still a few issues which will be taken care by the follow up patches. Known issues: -- lambda expressions is not highlighted (QTBUG-124625) -- bool literals are mapped to keywords but they deserve their own custom color (QTBUG-124711) -- highlighting of variable declarations inside for loops (QTBUG-124677) Task-number: QTBUG-120000 Change-Id: Ice07a514c2ae3afaeb871e663bcc0b20624976c0 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* semantichighlighting: add highlight for identifiersSemih Yavuz8 days3-3/+112
| | | | | | | | | | | | | | | | | | | | Some identifiers cannot be handled in their containing dom type if they contains dot in their names. Js variables that are not special types are also highlighted here. Because an identifier can represent a few different types, semantic analysis are performed to resolve their actual types. Also, adapt the binding handler's highlighting. A binding identifier can be a property or a signal handler. In those cases, it should be colorized as methods. Pass built-in directory while creating the dom environment so that it will behave the same as the code model. Task-number: QTBUG-120000 Change-Id: Ifb8dda81ca7ef6f3150e68907c036387e32f279e Reviewed-by: Dmitrii Akshintsev <dmitrii.akshintsev@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* semantichighlighting: add highlighting for script literalsSemih Yavuz8 days2-1/+42
| | | | | | | | | | Implement the highlighting for the numbers, single and multiline strings, boolean and null literals. Task-number: QTBUG-120000 Change-Id: Ibb80563b27c9e77a347334fdf805b8d69475ab5d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* semantichighlighting: add highlights for methods and signalsSemih Yavuz8 days2-0/+44
| | | | | | | | Task-number: QTBUG-120000 Change-Id: Ic0eefe77c84a7fcd80176c560ee81f28c3787697 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Dmitrii Akshintsev <dmitrii.akshintsev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* semantichighlighting: add highlight for property definitionsSemih Yavuz8 days2-0/+54
| | | | | | | | | | | Also implement the modifiers that can change the highlighting color. Readonly is mapped to lsp's ReadOnly field, required is mapped to lsp's Abstract and default is mapped to lsp's DefaultLibrary. Task-number: QTBUG-120000 Change-Id: I68c6c151215631fa388a77aba47c9c4cf6949a16 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* semantichighlighting: add highlighting for qml objectsSemih Yavuz8 days2-0/+34
| | | | | | | | | | ... and inline components. Task-number: QTBUG-120000 Change-Id: Id421b534d3da3f250863e123796d9cb83b1a2a7c Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Dmitrii Akshintsev <dmitrii.akshintsev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* semantichighlighting: add highlighting for enums and pragmasSemih Yavuz8 days3-0/+50
| | | | | | | | | | | | Pragma is mapped to keyword token type, pragma name and values are mapped to variable highlighting token type. Enum has its own token types in the protocol. Identifier name in the enum declaration is mapped to Enum, enum items are mapped to EnumMember in the protocol. Task-number: QTBUG-120000 Change-Id: I257827e6db494c9c4e1865da9fb632130c46d321 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* semantichighlighting: add highlights for bindingsSemih Yavuz8 days2-0/+28
| | | | | | | | | | | | Bindings can be written either x:y or Behavior on x{} syntax. If binding identifier contains dot in its name, defer the highlighting operation to be handled when ScriptExpressionIdentifier is visited. Task-number: QTBUG-120000 Change-Id: I405ea42efe128817ff56f6d9c17c65a0ec6fe868 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Dmitrii Akshintsev <dmitrii.akshintsev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* semantichighlighting: add highlights for importsSemih Yavuz8 days2-0/+31
| | | | | | | | | | | | | | | Imports can have the syntax of "import <Module> [VersionNumer] [as Qualifer]. Module and Qualifier elements are mapped to Namespace field in the protocol. Version number will be colorized as number. If the import uri type is directory, then it should be colorized as strings. Task-number: QTBUG-1200000 Change-Id: I8674c8eba21d427e7df174db9753ccbcd2f46bdf Reviewed-by: Dmitrii Akshintsev <dmitrii.akshintsev@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* semantichighlighting: add highlights for commentsSemih Yavuz8 days3-0/+161
| | | | | | | | | | | | | Comments can be laying on multiple lines. Usually, lsp clients will not support multiline tokens. Therefore, introduce a utility function that splits the highlighting of multiline tokens into multiple highlighted tokens. Task-number: QTBUG-1200000 Change-Id: Ib81e2781e39c3bf952b17d788031384ccab91e7b Reviewed-by: Dmitrii Akshintsev <dmitrii.akshintsev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* qmlls: Add highlighting protocol with empty implementationSemih Yavuz8 days6-0/+537
| | | | | | | | | | | | | | | | | | | Add the non-functional semanticTokens protocol. Introduce the basic data structures and the utility functions that is widely going to be used during the rest of highlighting tasks. When semanticTokens is requested, collectTokens visits the entire domtree and accumulates the highlighting tokens. It is encoded to list of integers as specified by the protocol at the end of collectTokens. Add the utility tests in tst_qmlls_highlighting and module tests in tst_qmlls_modules::semantichighlightingFull. Task-number: QTBUG-1200000 Change-Id: I070251552a623eff4d4ff34e4201466b3ad2efab Reviewed-by: Dmitrii Akshintsev <dmitrii.akshintsev@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmldomcomments: include comment start string in the comment locationSemih Yavuz8 days2-0/+53
| | | | | | | | | | | | | | Parser doesn't take comment start strings into account. So, // or /* is not the part of the source location. Add this via this post-processing. The full comment region is required for semantic highlighting. This is obviously not the correct layer for a fix. The actual fix should go in the parser level which is tracked by QTBUG-124897. Task-number: QTBUG-124897 Task-number: QTBUG-120000 Change-Id: I1759edf512c21809955531ba6d5dfe4ec2f7d678 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Skip tst_QQuickApplicationWindow::attachedProperties on EGLFSŁukasz Matysiak9 days1-0/+4
| | | | | | | | | | | | | The tst_QQuickApplicationWindow::attachedProperties test uses multiple windows. When on EGLFS, creating multiple windows ends up in a QFATAL error message stating EGLFS: OpenGL windows cannot be mixed with others. Fix the problem by skipping the test when on EGLFS. Task-number: QTBUG-115777 Pick-to: 6.7 Change-Id: I5cf189715af7e64a27980fab238a9dcee20700f1 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* ecmascripttests: Fail test if the test runner crashesUlf Hermann9 days1-3/+13
| | | | | | Change-Id: I61c8a24cf25fef98df4ce274fb5f829867059922 Reviewed-by: Semih Yavuz <semih.yavuz@qt.io> Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
* More options for embedded images in QML generatorEskil Abrahamsen Blomfeldt9 days5-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | This adds a few options to the svgtoqml generator, to enable more control over how embedded images are stored. It adds the "keep-asset-paths" option. When this is set, the generator will check if an image reference was originally to a file on disk. Instead of duplicating this, the output will contain a relative reference to the original file instead. It adds the "asset-output-prefix" which overrides the default prefix of output files. And it adds the "asset-output-directory" which overrides the default target directory. The default target directory has also been changed to match the directory of the output QML instead of always saving to the currently active directory. In addition, this change makes the tool always output PNG files, since JPEG is a lossy format and should never be preferred. Previously, PNG was only preferred when the image had an alpha channel. Change-Id: I9a9b03eaea3ac511419789cfc5651d398ce42a5b Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Blacklist the baseline test for the busyIndicatorVolker Hilsheimer9 days1-0/+15
| | | | | | | | | | | | | The BusyIndicator control is animated in all styles, so the snapshot- grabbing never stabilizes. Ideally we could inject our own animation driver into the QML engine to control the progression, but that's not a priority for now, so rather than getting constant noise from the system for the tests failing, blacklist them. Change-Id: I6a37415d43eb318305b410d423182acee038610e Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
* Give focus to parent window when focus chain wrapsDoris Verria13 days3-0/+108
| | | | | | | | | | | | If the focus chain wraps when tabbing (prev == last && next == first), we need to give a chance to the parent window to gain focus so that the focus can be passed to the next/prev object in the focus chain. To give focus to the prev/next target, override new virtual setFocusToTarget for QQuickWindowPrivate. Task-number: QTBUG-121789 Change-Id: Ibe91af53ca622e7fe2b7fc662a95f1a5d7cb479b Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Do not try to rearrange if the width/height is < 0Jan Arve Sæther2024-04-301-0/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This also fixes a crash in this peculiar condition: Item { width: 0 height: 0 RowLayout { anchors.fill: parent anchors.leftMargin: 1 anchors.leftMargin: 1 } } Reason for crash: As a consequence the layout was rearranged with size == (-1, -1), (which happens to be the value of uninitialized QSizeF). This invalid size was passed down to QGridLayoutEngine::setGeometries() (in the contentsGeometry QRect), and again to ensureGeometries(). ensureGeometries() would return early because of the condition if (q_cachedSize == size) (q_cachedSize is an uninitialized QSizeF by default, and size == (-1, -1) This caused the q_xx, q_yy, q_widths, and q_height to not be properly initialized, and it would crash inside QGridLayoutEngine::setGeometries() when accessing the list: qreal x = q_xx.at(item->firstColumn()); Pick-to: 6.2 6.5 6.7 Fixes: QTBUG-124456 Change-Id: I2e3586389aa1728c3622e92bd589af87d11955ae Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
* Only apply QWindow::setVisibility() on first show or explicit requestTor Arne Vestbø2024-04-302-0/+41
| | | | | | | | | | | | | | | | | | | | | | | | | As a result of 16023fc77c423a267fcc48894ff942e94cf35b86 we were no longer calling QWindow::setVisible or setVisibility from the QQuickWindowQmlImpl overrides, but instead deferred them until applyWindowVisibility(). As a consequence, if the QWindow::Visibility of the QQuickWindowQmlImpl was left at AutomaticVisibility, we would always apply the window state when making the window visible or hidden, which is a major regression. We should only apply the window state on first show, if the window's visibility is AutomaticVisibility, or on explicit requests to set the window's visibility. This means a window with visibility: Window.Maximized will initially show as maximized, but if the user then resizes the window and then hides and shows it again, the window will show in the normal window state, instead of re-applying the Window.Maximized visibility, which matches the pre-6.7.0 behavior. Fixes: QTBUG-124363 Pick-to: 6.7 6.7.1 Change-Id: Idc2078c17bd56026425acbabdc40174fd12558ca Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix test compilation issues with QtLite configurationJari Helaakoski2024-04-3015-10/+100
| | | | | | | | | Now developer build tests compile, but some are not working. Functional fix will come later via separate tasks. Task-number: QTBUG-122999 Change-Id: I0a0dfcf7affb73f928b8be62b3576a6a51658488 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* windowembedding: Update project to use deployment scriptTor Arne Vestbø2024-04-291-10/+11
| | | | | | Change-Id: I5308fef4b50c5971f65fc6087dadde8c05f5a685 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* qmlls: adapt the qtlanguageserver changes in WorkspaceEditSami Shalayel2024-04-293-69/+61
| | | | | | | | | Adapt to the changes in WorkspaceEdit that makes the handling of the documentChanges variant easier in the tests. Task-number: QTBUG-114993 Change-Id: Ic092d8faccbe3fb32e81e8b08d5ecef22bad908a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QtQml: Properly enforce signatures of AOT-compiled functionsUlf Hermann2024-04-263-2/+31
| | | | | | | | | | | | | Pass the metatypes of the contained types rather than the stored types. [ChangeLog][QtQml][Important Behavior Changes] The AOT compiled code for type-annotated JavaScript functions does not let you pass or return values of the wrong type anymore. Fixes: QTBUG-119885 Change-Id: I685d398c0745d32a999a3abd76c622a2c0d6651f Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QML: Introduce aliases for builtin typesUlf Hermann2024-04-253-16/+16
| | | | | | | | | | | | | | | | | | | | | | This way we can express the relationship between qsizetype, qlonglong and int, as well as the equivalents for long, ulong, char, qreal. We consider aliases as equivalent to primitive types in qmltyperegistrar. Therefore, you can only do this with types that don't have a QMetaObject of their own. However, considering the use case, this is not a big restriction. When generating qmltypes, we propagate the aliases. When reading back the qmltypes, we insert the resulting QQmlJSScope under all its separate names. This makes all the aliases discernible, but actually equal types. Since we now record the original type names in the qmltypes, this changes a few test artifacts for qmltyperegistrar and qmllint. Task-number: QTBUG-122582 Task-number: QTBUG-124294 Change-Id: I571684e3020b9bc30f8819bdc39389646fd1ff54 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmltyperegistrar: Check properties, methods, enums for missing typesUlf Hermann2024-04-256-21/+62
| | | | | | | | | | | | | | | | | | | | | | If you have a property of an unknown type, that will create problems later on. The same holds for method arguments, return types and underlying types of enums. qmltyperegistrar now warns about those. When scanning the types, we consider a type potentially primitive if it is not the root type, but one of: a, a self-extending value type b, a type with a JavaScript extension c, a sequence type If those types are found to be "missing" later, we ignore them. All other missing types trigger warnings now. Since we use types from QPA headers in a few places, we now need to recognize QPA headers when looking for private Qt includes. Task-number: QTBUG-101143 Change-Id: Ic4350e8ed46212c0f4af6f10e86323514f710e1e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Automatically remove temporary files in svg manual testEskil Abrahamsen Blomfeldt2024-04-251-2/+0
| | | | | | | | To avoid cluttering the temp directory, temporary files should be deleted when they are closed. Change-Id: I2fe863f62e749b40aecb90e02fcfa91f1ec1a44f Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* gc: Fix stale pointers in WeakValuesFabian Kosmale2024-04-251-0/+44
| | | | | | | | | | | | | | | | | WeakValue::set shold normally not mark objects, given that a weak value is not supposed to keep an object alive. However, if we are past GCState::HandleQObjectWrappers, nothing will reset weak values referencing unmarked values, even if sweep collects the referenced value. That leads to stale pointers, and then most likely to crashes. To avoid this, we mark the objects under this special condition. The test is written in a way that would also allow for resetting the new weak values instead, but the current implementation treats memory usage for throughput and doesn't revisit weak values to reset them. Change-Id: I789f63c1d8609957711c2253d2e76b4bd3f9810a Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Correct am/pm indicators for en_AU to lowercaseEdward Welbourne2024-04-251-2/+4
| | | | | | | | | | | | | | | | | | | | Previously QLocale's digested form of CLDR-derived data for AM/PM indicators was processed through a mapping that always selected the upper-case form, the AP format. Since 6.3, the formatting (and parsing) code has understood an Ap format to select the locale-appropriate case, rather than obliging client code to pick the case regardless of the user's locale. However QLocale's data still selected the upper-case version instead of the "locale-appropriate" form for time and datetime formats. I recently fixed this in qtbase; it's now time for QML's Locale's test-cases to catch up. The en_AU locale inherits lower-case am/pm markers from en_001 ("world" English, rather than plain "en" USAish), so correct the tests that expected upper-case markers. Change-Id: Ie05f5e39278758ea8d9e3ea556c133a143070ab8 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Add autotest for dialing a non-squared DialJan Arve Sæther2024-04-251-0/+38
| | | | | | | | | | | | | | | | | | | | | | There was a bug where the Dial background would be aligned top-left on some styles (Universal). This caused issues with mouse/touch input because the Dial assumed that the Dial background was centered. This was especially noticeable when the Dial was much wider than taller, since the Dial background was unexpectedly at x == 0: If you tried to move the handle to almost the middle (e.g. width/2 - 1) it would move the handle towards its left side (but the mouse cursor was on the right side of the visual Dial background because it was left-aligned). Also, just clicking on the handle would cause it to jump to a different position in most cases. While investigating, this appears to have been fixed (probably with bb7ba7667b4cf3565aa1849d08cc71b9ac011e77 ), so my fix is not needed any longer. However, in order to avoid regressions, add the autotest. Change-Id: Iba9b599dd2945695a973e7de57f54f9907035a8d Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* VectorImage: support stroke styling for pathsHatem ElKharashy2024-04-254-0/+45
| | | | | | | | | SVG different stroke attibutes can be easily mapped to QQuickShapePath properties. Task-number: QTBUG-121650 Change-Id: Id52f3e7d99a81c84851b7a7645f75fdee1efbaeb Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* gc: Prevent recursing into gc from onDestroyedFabian Kosmale2024-04-252-0/+74
| | | | | | | | | We end up in a rather weird state otherwise. Also test that we don't mistakenly collect ObjectWrappers created in onDestroyed. Change-Id: Iab158e5b34510979c8ac9a51a75247a2cee100f3 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Do not assert when preferred{Width|Height} is infinityJan Arve Sæther2024-04-241-1/+13
| | | | | | | | | | This adds an autotest for the fix that landed in qtbase: (2a95ecf7e81fbdcfad50f8a1dd5c62b120e2ec27) Task-number: QTBUG-116577 Pick-to: 6.7 6.6 6.5 Change-Id: I143f969596c6ee7ccd3d8607cfa53d539566a0b5 Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
* cmake: fix .qmlls.ini generation for dotted urisSami Shalayel2024-04-248-0/+66
| | | | | | | | | | | | | | | | | | QML Modules with dotted URIs actually should not have .qmlls.ini point the QML modules build folder, but to the build folder from which qmlls can actually find the QML module. For example, a QML module called Dotted.Uri.Hello.World should have the build directory `<buildfolder>/` instead of `<buildfolder>/Dotted/Uri/Hello/World`. Add tests for that, and pick back to 6.7 where the feature was introduced. Pick-to: 6.7 Fixes: QTBUG-124521 Change-Id: I95cf8e0d5894c5ad2c6f3117224d0a1a76cf531f Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>