The "return" in "#define QCOMPARE(actual, expected)" does not allow us
to delete the new-ed objects. This raises clangd "konsole/src/autotests/TerminalTest.cpp:28:5:
Potential leak of memory pointed to by 'display' [clang-analyzer-cplusplus.NewDeleteLeaks]"
and PVS-Studio V773.
The "return" in "#define QCOMPARE(actual, expected)" does not allow us
to delete the new-ed objects.
This raises clangd
"Potential leak of memory pointed to by 'X' [clang-analyzer-cplusplus.NewDeleteLeaks]"
and PVS-Studio V773.
The split-view actions define a shortcut using `Konsole::ACCEL`, which
since !609 expands to `Qt::CTRL | Qt::SHIFT` on systems that aren't
macOS. This breaks the shortcut for the split-view actions however as
`Qt::Key_ParenLeft` and `Qt::Key_ParenRight` do not work with the
`Qt::SHIFT` modifier.
Using `Qt::CTRL` (Cmd on macOS, Ctrl everywhere else) as the base
accelerator for these two actions makes splitting views work again as
expected.
ecm_set_disabled_deprecation_versions() in versions < 5.96 was brokwn
when it comes to SHOW_DEPRECATIONS, warnings for newer deprecations
were disabled if the flag was set or not.
Starting with ECM 5.96 the macro now enables warnings by default,
so the flag is no longer needed.
GIT_SILENT
This change removes some application attributes that are not necessary anymore (like disabling the global menu bar) or make Konsole behave slightly different when used from a KPart (e.g. inside Kate), and changes some keyboard shortcuts around (mainly using Command instead of Ctrl+Shift now.)
Unfortunately this does not resolve the requirement for the special keytab file for macOS; it looks like Qt does something funny with the QKeyEvents here: on Linux these have a `text` attribute set to e.g. `\u0003` for `^C`, that attribute is empty on macOS.
Note this could impact shortcut changes on non-macOS systems.
This flag is used for cells where the background is not drawn
unlike RE_CONCEAL, which draws background, but not foreground.
This flag is used for cells where an unmanaged image is placed.
And rename DefaultPropertyNames to DefaultProperties.
Default profile properties are now specified in the DefaultProperties
container directly, which simplifies creating the Built-in profile, and
keeps the properties info in one place.
- Name, Path: are empty by default, and set to the special values of the
built-in profile in useBuiltin()
- Some properties have to be set at runtime, rather than compile time e.g.
Command, Font, DefaultEncoding.
To prevent URIs inside parentheses from getting extended to the closing
parenthesis, only recognize URIs with balanced parentheses in regname,
path, query and/or fragment. We still allow unbalanced parenthesis in
userInfo, since the postfix @ should prevent most ambiguous situations,
and the parenthesis can be part of a password.
CCBUG: 455166
This way we don't run the same migration stuff at every start.
This also fixes an issue with the widget colorscheme config entry; if the
old WindowColorScheme key isn't found an empty string is used to write the
new UiSettings/ColorScheme key.
Inspired by similar code in KIO (SystemBookMarks related code) and Dolphin.
When a line is reflowed then the vertical position of all
graphics placements above or below it (as appropriate) are
adjusted, so they remain in the same place relative to the
text lines.
A vector doesn't decay to pointer, so we can iterate over it with range-for
in Profile and ProfileReader/Writer without using pointers to array
elements, and a while loop that checks for the special element at the end
of the array to stop the loop. Also remove that dud element at the end of
DefaultPropertyNames.
std::array is a viable option, but the downside is we'd have to specify the
number of elements in it (as that's part of its type), and keeping that
number in sync when adding new properties could be problematic.
RegExpFilter::process() was going through all the screen lines for every
match. Instead, the second and next matches can start from the line
were the last match was found.
The query and fragment components can include question marks in them. As
an example, LDAP URIs have queries of the form:
["?" [attributes] ["?" [scope] ["?" [filter] ["?" extensions]]]]]]
so the following:
ldap://[2001:db8::7]/c=GB?objectClass?one
does a one-level deep query to the LDAP server at IPv6 address
2001:db8::7 for the children of object c=GB and returns their
objectClass attribute.