In panelview.cpp, the old window focus is restored when switching to
Passive status. This fixes the behavior by setting the panel status to a
status that is not AcceptingInputStatus.
BUG: 454729
CCBUG: 352476
FIXED-IN: 5.25
(cherry picked from commit 47acfaff51)
Otherwise the user needs to manually tab over to the Unlock button
first, which is annoying. And they may not even think to do it at all.
The `forceActiveFocus()` is because the stack view does not manually pass focus
to the item you push onto it; this needs to be handled manually.
BUG: 454707
(cherry picked from commit 370976d715)
The delimiter might change if the settings are changed.
By having a member variable, we still avoid re-creating the same regex for every time the runner is queried.
BUG: 454596
(cherry picked from commit a5378b5282)
screenpooltest.cpp:73:38: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]
73 | ScreenPoolTester screenPoolTester();
| ^~
screenpooltest.cpp:73:38: note: remove parentheses to default-initialize a variable
73 | ScreenPoolTester screenPoolTester();
| ^~
| --
screenpooltest.cpp:73:38: note: or replace parentheses with braces to value-initialize a variable
(cherry picked from commit 2785774fc089d56986497b950035f82001e434f0)
When the lockscreen is in the screensaver mode we want the keyboard key
pressed to wake the screen to go to the password box textfield. This did
work correctly, but a code path also reset it when we get the first
prompt.
In the (currently hypothetical) case of multiple prompts we would want
to clear anything in the prompt.
This uses the existing boolean flag to handle that appropriately.
BUG: 454108
(cherry picked from commit 74a80aaac7)
Some actions, such as middle click to mute, trigger only on press. Some applets
also need a pressed-click because of some legacy autoclose on focus change
bug.
Unfortunately, QML does not disambiguate the "pressed" property and "pressed(mouse)"
signal with argument, so this has to be done awkwardly through QMetaObject on C++ side.
BUG: 426646
BUG: 452893
FIXED-IN: 5.25.0
(cherry picked from commit f045cf306c)
We can not use the required properties, because it breaks the property binding.
ec79af7396 apparently fixes that, however
it is not released as part of Qt6 or is part of the KDE patch collection.
This reverts commit f3293bc59e.
BUG: 453226
(cherry picked from commit 90d36545ea)
On the `load()` method emit the signals to notify that the properties
regarding accent colors have changed, so the UI gets updated accordingly.
They're emitted unconditionally since the minimal performance improvement
wouldn't compense the extra code complexity to check for changes here.
(cherry picked from commit 2b55732fb7)
This partially reverts commit d2bb480706.
Something unhealthy is going on with that lastIndex that prevents it
from functioning normally when currentIndex is bound to it from the
beginning. Maybe it just needs an on*Changed() signal, so that the
instantiator has already created its objects by that time? Session button
is different from keyboard layouts button which uses pre-baked QList as
its model.
This is the remaining part of the Klipper configuration dialogue,
the "Actions Configuration" page. Now that the options have been
moved to the "Popup" page, this is a simple tree view with action
buttons. The explanations and help links have been moved to the
"Edit Action" page, because that is where they are most applicable.
The "Action Properties" dialogue uses a QFormLayout, and includes
explanation text for the "Automatic" check box and the regexp help link.
Instead of editing in place, the "Edit" button opens a further dialogue
to edit the current entry. This is more discoverable and should be easier
on small displays than editing in place, although a double click is still
accepted. This dialogue has explanation text for substitutions.
The icon for a command can be set explicitly, for those cases where the
automatic detection (from the first word of the command) does not work.
Confirmation is requested when deleting a command or an action.
GUI:
I18N:
In the refactor we correctly made it so passwordless users were not
prompted for passwords.
This is in the right direction but the UX was still slightly off as it
meant wiggling the mouse unlocked the screen, not an explicit action.
This patch adds an explicit button that must be pressed if no other
prompts were given during the authentication process.
BUG: 440055
Use icu transliterator to convert i18n'ed name into ascii for initial
character grouping. Since AppsModel does not use group(), just use group
to store this value for convenience.
Relevant qt feature request for having a new mode for section:
https://bugreports.qt.io/browse/QTBUG-91258
Strategy used by this code mainly focused on CJK language.
1. Japanese locale will group all Han script together.
Katakana will be converted to hiragana.
2. Hangul will decompose and use consonant as group name.
3. Han will use icu "Han-Latin" transliteration to convert to pinyin.
BUG: 433297
Component.onCompleted blocks were unnecessary and redundant.
This patch also cleans up QML code style, and swaps visible/text lines to
make both buttons code more similar.
"Tablet Mode" is jargon that can confuse users. In this mode, things
become larger as an optimization for touch usage, but the word "tablet"
could easily refer to a drawing tablet, for which no touch
optimizations make sense.
Let's change the UI text here to call it "Touch Mode" instead.
This allows me to build without the Qalculate dependency which is only
used for the calculator runner. Not having Qalculate installed will still
be an error unless the user explicitly passes
`-DCMAKE_DISABLE_FIND_PACKAGE_Qalculate=True`.
We can only access the QWidget's QWindow after it's been shown,
otherwise it's nullptr.
*8 QObject::installEventFilter(QObject*) (this=0x0, obj=0x561e5d7c6420) at qtbase/src/corelib/kernel/qobject.cpp:2218
*9 0x00007efbc06170dd in Klipper::showPopupMenu(QMenu*) (this=0x561e5d7c6420, menu=0x561e5fbb7c90) at plasma-workspace/klipper/klipper.cpp:407
BUG: 427530
Hunting this one down since mid-March...
In "native" Plasma containments like the panel, desktop, and plasmawindowed, the `LogindSessionBackend` in `libkworkspace` enters the "Ready" state nearly instantly, before any signals can even be attached. In other containments like Latte Dock and plasmoidviewer, however, the initialization takes some time to complete (unsure why). RootModel was not watching or waiting to check what the session backend's state was, resulting in validity checks being done too soon and never checked again.
kscreenlocker has a fallback UI loaded if the main QML from the LNF
fails.
As the main code is in a loader the lockscreen /always/ loads even if
the main contents can't be loaded. It also
contributes to a black flicker when loading the lockscreen.
The rationale for the loader was to make the window appear faster. This
hopefully isn't needed now we have the logind integration delaying the
sleep.
If it turns out this is feature desired it would be far more productive
to do this in the greeterapp c++ code. Show an empty QtQuick window and
then set the source on it later. It'd be far faster which would help towards
the original goal and allow us to check the loading.
This patch also removes the opacity fade as there's already an opacity
fade on contents when one moves the mouse when the "screensaver" like
code looks smoother.
BUG: 370676
FIXED-IN: 5.25