392 Commits

Author SHA1 Message Date
Kai Uwe Broulik
3e284c2404 HTML-escape applet name in undo notification 2017-08-28 16:51:48 +02:00
Kai Uwe Broulik
b4c1c9cdfa Drop remains of "locolor" themes
It's not being set to anything anymore and people typically don't have 256 color displays these days.

Differential Revision: https://phabricator.kde.org/D7516
2017-08-25 10:37:35 +02:00
Kai Uwe Broulik
cf8ae465e4 [Theme] Use KConfig SimpleConfig
We're passing it an absolute path to a file in our install directory anyway,
so we probably don't want inheritance.

Differential Revision: https://phabricator.kde.org/D7362
2017-08-17 12:17:15 +02:00
Marco Martin
bbcb217b48 actually delete old theme caches
Summary:
QStandardPaths doesn't do file search by wildcards,
that code was never actually functional

Test Plan: old kcache and rects cache files get correctly removed

Reviewers: #plasma, sitter

Reviewed By: sitter

Subscribers: davidedmundson, sitter, apol, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D4925
2017-03-07 14:13:57 +01:00
Marco Martin
2b3e8dfe86 move setImagePath logic into updateFrameData()
Summary:
make sure the framedata creation/destruction is
completely in updateFrameData, makes easier to track
and possible to use the repaintsblocked logic.
now only one framedata instance should be created at startup.

CCBUG:376754

Test Plan:
* autotests pass, plasma runs ok, crash on 376754 not reproducible anymore
* possible to have a plasmashell session start without the creation of a single svg renderer (startups after the first when the cache is generated)
* on qml profiler, framesvgitem creation is ~12 msecs the first one created, ~2-300 musecs the subsequent ones, seems to be a bit better than before the whole refactor started
* tried against the latest patches that remove the binding loops, still correct rendering and no binding loop
* tried with both empty and existing cache in place

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: davidedmundson, plasma-devel, #frameworks

Tags: #frameworks, #plasma

Differential Revision: https://phabricator.kde.org/D4707
2017-02-28 13:35:09 +01:00
Martin Klapetek
2fea7077c8 Make the dataengine alignment timer more precise
It can and does happen that in case of two clocks, one with seconds and one without, the one without gets 1s behind. That's because the alignment is not corrected when the difference is 1s, however in case of the clock this 1s is cruicial.

REVIEW: 123300
2017-02-26 00:58:55 +01:00
David Edmundson
e301b63685 Fix binding loop regression in FrameSVGItem
Summary:
d8a1a9eb084b19e552c789244267f7346e1b27a8 introduces an unintended code
change, resizeFrame() updates the margins and in turns calls
repaintNeeded. This isn't needed and is a binding loop if we ever have a
frameSVGItem whose size depends on it's own margins.

resizeFrame is different from setEnabledBorders / setElementPrefix /
theme changes because even though we need to create a new FrameData we
know any hints and margins won't change. FrameSvgItem::updateSizes
doesn't depend on the size in any way, so always gives the same result
as before. We still, however, need to call updateSizes to populate our
FrameData structure even if the results will be the same as the previous
FrameData.

This patch that introduces a flag to updateFrameData to determine if we
should emit that size hints may have changed or not.

Test Plan:
GDB showed where the loop was.

Read the old code, and looked for differences

Ran plasmashell, checked I had no binding loop, frames including button
which have
composeOverBorder which need the new FrameData all rendered correctly.

Reviewers: #plasma, #frameworks, mart

Subscribers: mart, broulik, plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D4713
2017-02-22 12:31:44 +00:00
Marco Martin
d8a1a9eb08 don't regenerate frames when setting every property
Summary:
give frameSvg the concept of repaintBlocked(), that enables and
disables the regeneration of the frame data when a property is set.
the use case is when often, a lot of properties are set one after
the other (such as prefix, enabled borders, size)
collapse the formely similar, but a bit different logic of frame
regeneration is a single function for better maintanability.
QML FrameSvgItem sets repaintblocked when it starts and releases it just on oncomponentCompleted

Test Plan:
plasmashell still starts, autotests still work, all frames are rendered correctly
the destruction of old frames is cutted by 50%. in the qml profiler
the creation time of a framesvgitem slightly improved, on this machine from around 26 msecs to around 21, can still be improved, but at least the code is a bit simpler

Reviewers: #plasma

Subscribers: davidedmundson, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D4414
2017-02-07 13:08:27 +01:00
Marco Martin
46c87d5ac3 it must also be possible for the status to be decreased again
this fixes the autohide panel being broken the first time an applet
like kickoff opens. when it closes again, the status has to be
decreased again
2017-01-19 14:30:13 +01:00
Marco Martin
47ec9b84db correctly forward status from applets to containment
Summary:
unfortunately hiddenvisibility is the "biggest" status
that makes computing the proper status tricky.
if an applet in the containment is hidden, we must not mark as
hidden the whole containment, because it's as if hidden was
(as it should be) the smallest in the enum

BUG:372062

Test Plan: touchpad plasmoid no longer hides the systray

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D4174
2017-01-17 18:07:10 +01:00
Kevin Funk
f8a7b418d5 Prefer nullptr over Q_NULLPTR 2017-01-16 18:17:34 +01:00
David Edmundson
760fb53e7d Check for metadata validty in settingsFileChanged
settingsFileChanged is called if the plugin metadata file changes, and
reloads the theme if the version changes.

However, if the metadata file now doesn't exist we need to check before
calling .version() otherwise it will assert.

If it doesn't exist, we want to reload the theme so that it will load
the correct thing.

BUG: 372651
REVIEW: 129436
2016-11-22 10:44:07 +00:00
David Edmundson
c246588999 Don't show "Alternatives" menu by default
And only enable it in the contextMenuAboutToShow connection.

We currently enable/disable the menu in this slot, but we default to it
on. This meant other users of actions() that can't correctly emit
contextMenuAboutToShow gain an extra entry which might not be relevant.

REVIEW: 129263
2016-10-26 12:36:59 +01:00
Aleix Pol
ba9a8a16ab Fix loading plasmoids by absolute path
We were not looking into the plugin directory when figuring out the applet
path.
Fixes configmodeltest

REVIEW: 129143
2016-10-11 15:22:41 +02:00
Marco Martin
014979d8bf Revert "Fix loading plasmoids by absolute path"
This reverts commit 2ed819f37dd44cc6c4a24624f76938347ceb8e95.

panel loading was completely broken, the patch idea was fine,
but has to be redone and tested better.

CCMAIL:aleixpol@kde.org
2016-10-10 23:31:37 +02:00
Aleix Pol
2ed819f37d Fix loading plasmoids by absolute path
We were not looking into the plugin directory when figuring out the applet
path when it's load from an absolute path.
Fixes configmodeltest

REVIEW: 129101
2016-10-10 21:30:02 +02:00
Aleix Pol
0ebe2ca1fa Don't enforce metadata.desktop, cleanup constructor
Makes it possible to use plugins that offer a metadata.json file.
Define the service type when falling back to the desktop file parser, so
the type system is proper.
Don't destroy a KPluginMetadata tuple to instanciate it right away.

REVIEW: 129102
2016-10-10 16:28:13 +02:00
Aleix Pol
bd970141ce Simplify plugin construction by relying exclusively on KPluginMetaData
REVIEW: 129057
2016-10-04 23:56:17 +02:00
David Edmundson
048d5243f0 Update applet alternatives menu entry visibility on demand
It's reasnoble to expect people to download an applet just before trying
to change an existing applet using the alternatives system.

Therefore doing the check at applet initialisation time is semantically
wrong. Especially as it doesn't just disable the action but also skips
creating it.

Finally this gives a startup performance boost; loading all the applets
metadata takes a small amount of time (~20 milliseconds) not really
noticable when you're doing it once, but it adds up if you're doing it
over multiple applets sequentially.
2016-10-03 01:46:33 +01:00
Aleix Pol
7429791309 Improve timetracker output
Show times where 0 is the beginning of the process
Use QDebug to get QVariant's values
Delay constructor print so that we know which class is being constructed
Use QJsonObject instead of going back and forth with QVariantMap

Reviewed by David Edmundson
2016-09-29 12:32:11 +02:00
David Edmundson
494c690b18 Don't include kdeglobals when dealing with a cache config
The svg elements cache isn't really a "configuration" and it's not
something that should be overridden by global config settings.

Loading it as a simple config skips the cascading and saves reparsing
kdeglobals.

REVIEW: 128966
2016-09-21 11:43:50 +01:00
David Edmundson
22ba8186f0 When marking a containment as deleted, also mark all sub-applets as deleted - fixes system tray container configs not being deleted
This allows a custom applet to do cleanup (like the system tray, to
delete the inner containment)

REVIEW: 128754
2016-08-25 17:48:23 +01:00
Marco Martin
e1a0299a46 don't manually delete applets
applets will be deleted by the parent, as they are
acontainment's children. by not deleting them by hand
also every signal will be disconnected, not causing appletRemoved
to be emitted, so not causing removal of config
pieces at shutdown, this removes the need of the
explicit disconnect in aboutToQuit from contaiment interface

Change-Id: Iddf6ded60ae849ca03c363be6e736da496310b82
reviewed-by: David Edmundson
2016-08-08 15:07:10 +02:00
Aleix Pol
67d882037c Define Plasma PackageStructure as regular KPackage PackageStructure plugins
This way we can use kpackagetool5 against them (see RR 128590).

REVIEW: 128596
2016-08-04 19:23:59 +02:00
Kai Uwe Broulik
d91127ca58 [Containment] Treat HiddenStatus as low status
The containment's status is the max of all applets.

Unfortunately, HiddenStatus, while semantically lower, has the highest value,
so as soon as there's a hidden applet (eg. pager with just one virtual desktop),
the panel will always auto-hide even when popups are open as its status will be HiddenStatus.

REVIEW: 128301
2016-07-22 08:32:52 +02:00
Allen Winter
a04f0c3f8f plasma/private/timetracker.cpp - -Wpedantic 2016-06-15 13:08:39 -04:00
Marco Martin
6f5816fc57 ensure the scriptengine is here
ensure the scriptengine gets created also for c++ applets
that have a valid scriptengine, move the script init
out of applet::init that can be reimplemented.
remove the second appletscript constructor that is
not necessary anymore

REVIEWED-BY: Kai Uwe Broulik
2016-06-15 11:04:21 +02:00
Aleix Pol
9575b8c009 Let Plasma::Corona load the layout on all cases
We either load the existing layout or we load a default one.
With this, it could be removed from ShellCorona.

REVIEW: 127850
2016-06-07 15:23:13 +02:00
Marco Martin
4de0dd2e90 rename state property in status
emergency change: in Qml the name "state" for a property
is reserved for the internal state machine, so any object that
exposes a "state" property on its own would automatically
break the state machine
2016-06-01 14:47:56 +02:00
Marco Martin
f3c05034d9 Selected state for Plasma::Svg and IconItem
Like KIconloader, support a Selected state, in IconItem,
as in all generic svgs/framesvg
it replaces the text color with HighlightedText and the
background color with HighlightColor

Change-Id: Id97a527405d2c3feed75a172f05547defdbf440c
REVIEW:127975
2016-05-31 11:10:47 +02:00
Marco Martin
3bffad8c42 relicense few files
license to LGPL2+ as in frameworks licensing policy
The old license in the files was actually wrong, because:
servicejob_p.h : splitted from servicejob.cpp (already 2+)
in 89b71cd9f195da51993533f7fc2329ddc08a7de4

package_p.h: splitted from package.cpp (already 2+)
in 9cb9cfe65ec5e835f562a5b33d135fa129f52ffd

packagestructure_p.h: created by me in a629fe4d8f78a762a4148bf1e3fb9a2dbe865d0c
(by copy/paste of the header)
2016-05-19 17:44:43 +02:00
Marco Martin
2b7543c343 reload selected color scheme on colors changed 2016-05-10 17:18:48 +02:00
Marco Martin
f0c119696d highlight/highlightedText from proper color group
lately the highlight color of plasma became a very
washed-out blue, (since it switched to use the
global system colors) that was because it actually
taken the highlight color (and highlightedText)
from the wrong source.
there is a correct color group in kcolorscheme for
that, that is Selection, take those two colors
from that (also means highlight and highlightedtext
always be the same in all plasma::theme::colorgroups
but that's not a problem)

update test to reflect that

REVIEW:127842
2016-05-05 12:22:44 +02:00
Wolfgang Bauer
d884119f5a Always write the theme name to plasmarc, also if the default theme is chosen
Currently, the "name" key is deleted from plasmarc when you select the
default theme (breeze) in the desktop theme KCM.
This leads to unexpected behaviour: If you set e.g. oxygen as look&feel,
and then set breeze as desktop theme, Plasma actually uses Air (the
default desktop theme in the oxygen l&f) on next login instead of
breeze. In other words, it is impossible to configure breeze as desktop
theme when using a different look&feel as breeze.

This fixes the problem by removing the check whether the default theme
is selected and always writes the "name" config key to plasmarc.

REVIEW: 127698
2016-04-22 19:23:35 +02:00
Marco Martin
1cf145861b add Positive, Neutral, Negative text colors
add named colors for positive (usually green)
neutral(usually yellow) negative(usually red)
foreground objects, such as text or parts of
svg icons/themes

REVIEW:127696
Change-Id: I646306339f1684cdc062da3d3af1489af6092372
2016-04-20 18:25:50 +02:00
Marco Martin
553a9bfe53 bind highlightedText color in Plasma::Theme
we have a color in the Plasma theme "highlight" that is basically
an accent color used around.. but one of the uses is to use it as
a background, such as highlighted text. in that case we don't know
what color would be safe for contrasting on top of it for things
like the highlighted text color (plasma style used the background
color for that, which is incorrect)

REVIEW:127637
2016-04-13 12:28:53 +02:00
Friedrich W. H. Kossebau
9f48b41507 Fix unsetting associated application/urls for Plasma::Applets
Summary:
Avoids a crash and a bogus menu entry.

Current code does not properly handle any resetting, which results
in Applet::hasValidAssociatedApplication() still returning true
when urls have been set to an empty list and the application name
to an empty string.
Also are connections to the "destroyed" signal collected on
repeated set calls.
This patch fixes that.

This fixes "Run the Associated Application" menu entry showing up with widgets.

It also prevents the crash in associatedapplicationmanager.cpp:76, which assumes
url lists to be non-empty:
const QString mimeType = mimeDb.mimeTypeForUrl(i.value().first()).name();

Not happy yet with the signal/slot connection management,
improvement proposals welcome.

Reviewers: mart

Reviewed By: mart

Subscribers: plasma-devel

Projects: #plasma

Differential Revision: https://phabricator.kde.org/D1372
2016-04-12 01:09:44 +02:00
Friedrich W. H. Kossebau
d2fdde4002 Don't expose symbols of private class DataEngineManager
Internal class since first release of plasma-frameworks
2016-04-11 14:19:57 +02:00
Martin Gräßlin
035e061e13 Add nullptr-check for iconTheme
KIconLoader::global()->theme() might return null. Thus we need to
guard for this case (happens e.g. on build.kde.org).

This results in iconThemeMetadataPath not being set, which is fine
as that condition is handled later on.

CCMAIL: notmart@gmail.com
Reviewed-By: Bhushan Shah
2016-04-05 10:06:27 +02:00
Marco Martin
944c7e60dc cache svg icons from icon theme
cache as well svg icons from the icon theme
(invalidating as well when the icon theme is updated)

REVIEW:127260
2016-04-04 17:47:30 +02:00
David Edmundson
ca98250d0c add missing const on private member
REVIEW: 127549
2016-04-03 23:01:23 +01:00
Kai Uwe Broulik
bd354ecf70 [Svg] Don't reparse configuration in response to Theme::applicationPaletteChanged
Plasma::Theme emits the applicationPaletteChanged signal after it has fetched the
colors from KColorScheme and scheduled the caches to be nuked. There's no need to do
the same exact thing from every single Svg out there.

This speeds up Plasma picking up color scheme changes significantly and is now
on a par with other opened applications.

REVIEW: 127426
2016-03-20 11:30:58 +01:00
Marco Martin
2661cd701c reintroduce busy property in Applet
both the comic and weather applet have to pick out the
_plasma_graphicsObject to access the AppletInterface
object just to set the busy property on it.
this reintroduces the busy proeprty in Applet too,
both setting it to Applet or AppletInterface
will keep them in sync

REVIEW:127411
2016-03-17 18:27:06 +01:00
Aleix Pol
c23f2415bb Make it possible for an applet to offer a test object
Makes it possible for plasmoids to test themselves in the different shells
by providing API to extract the object that will test the plasmoid
instance.

REVIEW: 127345
2016-03-16 12:32:25 +01:00
Marco Martin
917b2768a8 org.kde.plasma:force-create in Containment
so much for removing sytray-related hacks.. :/
when the widgets are locked, must be possible to add/remove
widgets in the sytemtray anyways, as their creation/destruction
can depend from dbus activation (or the first time you launch
plasma with the new systray and it must be populated)

Change-Id: I8095ebf831ae57e1306a4d623b253c2a10ef219f
REVIEW:127373
2016-03-15 16:35:13 +01:00
David Rosca
974a2b5071 FrameSvg: Fix dangling pointers in sharedFrames when theme changes
Store theme pointer in FrameData and set it when adding to sharedFrames.

REVIEW: 127344
2016-03-12 13:02:34 +01:00
Kai Uwe Broulik
3decfdd869 [Applet] Don't overwrite "Persistent" flag of Undo notification
The setFlags(SkipGrouping) all overwrites the Persistent flag set in the constructor

Reviewed-By: drosca
2016-03-09 18:39:02 +01:00
Anthony Fieroni
6bb02c88eb [Applet] Don't crash on remove panel
REVIEW: 127240
CCBUG: 345723

Signed-off-by: Anthony Fieroni <bvbfan@abv.bg>
2016-03-04 21:06:30 +02:00
David Rosca
60af310cfc Theme: Discard pixmap cache when changing theme
Changing theme also changes color scheme making the pixmap cache
invalid for monochrome icons.

CCBUG: 359924
REVIEW: 127226
2016-03-01 00:06:15 +01:00
Marco Martin
f55e20cc5f properties configurationRequired and reason
unbreak api of Applet::SetConfigurationRequired + add bindings to
appletInterface as properties.
new properties configurationRequired and configurationRequiredReason

Change-Id: I18ff01df94c1a0c5fac79ff801bfa76714c9f986
REVIEW:127218
2016-02-29 14:26:52 +01:00