Currently we are very inconsistent with how we handle our various X11 dependencies.
Some places check whether specific sub-libraries are found and disable parts of the code accordingly.
Sometimes this is controlled by whether X11 is found at all, sometimes it depends on the sublibrary being present.
Some of this is obviously broken, e.g. in one like we check whether X11 is there and then use it unconditionally a few lines down.
Instead of the current system of optional deps and deps being conditional on other deps I propose that we introduce an explicit build option that controls the X11 support.
If on (the default) then all X11 libs are required.
If off then no X11 libs are searched for. Currently this results in a broken build since some places use X11 stuff unconditionally, but it gives us an easier way to test and fix those cases.
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:
On Wayland if Plasma had no focus when the shortcut was invoked
- the menu window is created as toplevel because it has no parent and
there is no current focusWindow
- the application can't know the currrent cursor position
We use a newly introduced request on plasma_surface to open under the cursor.
As it can only be called before mapping a buffer to a surface, the menu is hidden
before being shown again.
BUG:436249
FIXED-IN:5.25
libklipper_common_SRCS are compiled into the libklipper_common_static
library and then linked for the Klipper application. The same sources
are also compiled again to build plasma_engine_clipboard via
plasma_engine_clipboard_SRCS. This results in almost double the
compile time and repeated diagnostic messages (if there are any).
Use the previously built static library for linking the data engine.
Combine the "Text selection only", "Ignore selection" and "Ignore images"
options into separate sets of radio buttons for text and images, to make
their functions explicit.
Remove the "Prevent empty clipboard" option (but leave it as a hidden
config file setting), it was difficult to explain and it is unclear if it
ever had a use case.
Convert the page to a QFormLayout, and add explanatory text to existing
controls where appropriate.
GUI:
I18N:
7bd9bea072 started using Prison
unconditionally via QML import. So if Prison isn't installed the
clipboard applet stops working, complaining that "org.kde.prison is
not installed".
While it would certainly be possible to add another call to
"find_package(KF5Prison)" with TYPE RUNTIME, the result in
feature_summary would be very confusing, because OPTIONAL has a higher
priority and the runtime hint would vanish if you build with e.g.
-DCMAKE_DISABLE_FIND_PACKAGE_KF5Prison=TRUE.
Summary:
Wayland has an entire new protocol for getting and setting clipboard
when we don't have focus. Unfortunately this means reinventing
QClipboard from the QPA.
Not mergable as-is, especially the hardcoded line in CMakeLists but
uploaded to show direction.
It uses the newly agreed approach of using QtWayland generated classes
in clients directly rather than writing full pimpl API-fixed wrappers
first,
as ultimately that didn't really help do anything.
Code is written so that it can be moved to KWindowSystem if needed by
KDEConnect or others.
Test Plan: Copying and pasting all over the place
Summary:
kde4_add_app_icon is fairly deprecated. additionally the call itself
was madness because it actually pulls the icon out of oxygen in the install
location. that is assuming the icon theme is even installed at build time
(which is probably always not true in our binary factorization
environments). lastly the app_icon helper is only useful to pick up
icons for osx and windows, neither are target platforms for plasma.
remove the app_icon call entirely until a use for it arises, which should
be... never... unless we decide that we want to replace explorer.exe ;)
Reviewers: davidedmundson
Reviewed By: davidedmundson
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D21766
Launching .desktop files using KProcess skips handling that should be done
when launching apps. E.g. opening an URL with Firefox will make the new window
open in background if Firefox is already running, because startup notification
hasn't been handled at all. And KProcess is useless in this case anyway,
as Klipper doesn't care about stdout of Firefox.
Summary:
...for more consistency and also drop the comment, which has become
obsolete. Prison has been released with KDE Frameworks 5.29.0.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D4568
Summary:
Klipper shows a notification when the shortcuts next/prev history item
gets triggered. This notification used to be implemented in the class
KlipperTray. With the switch from SNI based clipper to a Plasmoid the
notification got lost as the Plasmoid doesn't use the KlipperTray class
at all.
This change moves the notification handling from KlipperTray to Klipper
so that it gets emitted for both SNI and Plasmoid based klipper.
BUG: 368808
FIXED-IN: 5.8.1
Test Plan: Set the shortcuts, triggered them and verified the notification gets shown.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2942
By invoking saveHistory after each change we ensure that the clipboard
doesn't lose data in case klipper (or in dataengine mode plasmashell)
crashes.
To not cause stalls, the saving is performed in a thread using
QtConcurrentRun. As klipper itself is not thread save a Mutex is
used to lock changes in the HistoryModel.
To not overload the system the save operations are delayed and queued.
Each save is delayed by five seconds since the last clipboard change.
So if the clipboard is changed multiple times in a short interval it
doesn't get synced to the disk till the interaction has settled.
BUG: 343333
FIXED-IN: 5.3.0
REVIEW: 122382
When clicking the barcode button, the view is changed to just show
the barcode instead of opening a dialog. By default a QR Code is
displayed.
A tool button is added which allows to change the barcode type, with
the following barcodes being supported:
* QR
* Data Matrix
* Code 39
* Code 93
REVIEW: 122402
As Prison no longer provides a QWidget based API, we need to do the
mapping to a QWidget ourself.
Note: for the plasmoid I'm considering switching to a non-widget based
solution.
REVIEW: 122386
The ClipboardEngine provides a service which in turn starts a
ClipboardJob. The following operations are globally supported:
* configureKlipper
* clearHistory
And the following operations are supported on uuid (base64):
* select
* remove
* edit
* barcode
* action
barcode is only supported if klipper gets compiled with prison support,
this is announced as data element "supportsBarcodes" in the "clipboard"
source of the DataEngine.