This commit allows the theme designer to just enable and disable the
effect (enable=true). If no color values are set, values are picked
based on the background color. This essentially restores the hardcoded
values in some other places, and makes them available as sensible
defaults to other themes.
Also, make sure colors are read before the effect is applied (as we need
the new bg color to decide whether it's light or dark).
From its api docs:
This method allows Plasma to enable and disable the background
contrast effect for a given theme, improving readability. The
value is read from the "enabled" key in the "ContrastEffect"
group in the Theme's metadata file.
The configuration in the metadata.desktop file of the theme
could look like this (for a lighter background):
[ContrastEffect]
enabled=true
contrast=0.45
intensity=0.45
saturation=1.7
The minimumWidth of a plasma button is based on the paintedWidth
of the text item. There is no way to work out the correct width it
should be if we set the text to elide.
(except for the hack of using a hidden fake text item)
We should always fit contents. This won't cause any problems unless a
developer has a broken layout, at which point that should be fixed
REVIEW: 115500
to avoid possible collisions, use the private looking name "_plasma_graphicObject" for the dynamic property of Applet that represents the AppletInterface* pointer
This patch makes two changes:
1) don't rely on window()->screen() it's rubbish.
2) if the dialog is parented to a desktop, we want to position
inside the parent, not outside the parent object
REVIEW: 115448
BUG: 330546
this ports revision c03052935b082 on kdelibs
improve cache file dropping
* fix regression: version the image cache file name
* version the svg elements
* drop old svg elements files
* respond to changes at runtime by watching the theme's metadata.desktop for changes
* move creation of the svg elements file into ThemePrivate::useCache()
REVIEW:115397
This reads the global animation duration value from plasmarc, and gets
notified of changes: change the file, all animations are updated
automatically.
Put this into your plasmarc to disable animations globally:
[Units]
longDuration=0
As you might guess, other values will work as well.
shortDuration will always be 1/5 of this. (For now.)
This may sound a bit weird, but we can't just switch off everything, as
in some cases, the animation is not just eye-candy, but carries
important semantics of the UI -- examples are BusyIndicator and
ProgressBar. Behaviour for those is restored.
These centralize the duration of animations, currently set to 250 and 50
milliseconds. They're notifiable since we want to be able to switch off
animations at runtime.
CCMAIL:plasma-devel@kde.org
Uninstall previously only took plugin names. This is unfortunate, since
it made uninstallation from a package file impossible, leaving it to the
user to figure out the plugin name before a package can be uninstalled.
So let's read the plugin name from the zip prior to uninstalling.
ShellCorona reads the theme from the LookAndFeel package, (defaults,
group "Theme", key name), looks into plasmarc if the LNF theme should be
overridden, and if either exists, it sets the new theme on startup of
plasma-shell.
This aligns the config files and groups, and adds a KDirWatch in the
shared Plasma::Theme private object in order to nofity when the
configured theme changes.
It's a bit rough, doesn't cover all corner cases and needs polishing.
For the WidgetExplorer we want to show the tooltips to the right of the
scrollbar in the view, not to the right of the delegate the tooltip is
for.
This patch checks if the visualParent is in a dock. If so the popup is
positioned outside
I have also introduced a manual test for Dialog Positioning, and
includied some fixes in the original logic.
REVIEW: 115393
QWindow::screen() never ever changes if the window is moved across
virtual screens (normal two screens with X), this seems to be
intentional as it's explicitly mentioned in the docs.
Until that's changed or some more proper way of howto get the current
QScreen for given QWindow is found, we simply iterate over the virtual
screens and pick the one our QWindow says it's at.
This also fixes the OSD having proper shadows in multiscreen environment
As we decided to make the OSD available only for certain things, the API
is intentionally limited to very particular set of things. The list is
not complete yet I believe, but it's definitely a finite and a small set
Also as it's not a public service, I left it under org.kde.plasma_shell
on D-Bus.
And we're still missing all the icons except volume, but Jens is on it.
REVIEW: 115301
This is used nowhere, so better get rid of it before someone gets the
idea.
Leaves us with only one non-scaled icon size. Maybe worth considering to
get rid of this as well, and let Folderview decide?
This is still pretty rough. It seems to work fine for larger icons, but
smaller ones get misaligned. This will need some corrections, such as
locking the smaller sizes to 16, 22, 32, 48, 64, which should take care
of this issue.
With this change, parts of Plasma scale depending on the DPI. This is
noticeable in Kickoff.
It was an int already anyway, so let's be true about this and also
return an int. This reflects pixel-alignment in the API, not just in the
implementation.
QWindow::setFlags is manipulating the same X property as
KWindowSystem::setType. Thus our setType never succeeded as the
setFlags overwrote the window type again. In the same way we
have to call setFlags when reverting to the default Normal type.
REVIEW: 115258
The last bits have moved out of ThemeProxy, units is used for iconSizes,
which means we can finally directly use Plasma::Theme, and don't need a
ThemeProxy class anymore.
This is means two things:
- icon sizes have moved from theme.iconSizes.* to units.iconSizes.*,
will provide porting script and update docs
- we can kill PlasmaCore's ThemeProxy now. Icon sizing and dpi handling
is kept outside of Plasma::Theme for now, as it pulls in too many
deps.
This change does two things:
- it increases the gridUnit to 11 pixel on 102DPI, 18 on 170DPI. This
means on the one hand larger sizing, but aligns gridUnit and
theme.largeSpacing consistently, and thus makes these types work
together better.
- it scales the gridUnit with the DPI. The width of the font's bounding
box doesn't change on the displays I've tried, the height does.
As a result, gridUnit now scales linearly with the DPI setting.
The outputOnly property allows to specify that the dialog should not
accept any input. Thus it's an output only window which supports click
through. This is obviously platform specific and so far it is only
implemented for the X11 platform using the shape extension.
The input shape needs to be set once the window is visible and thus
the functionality is bound to the visible changed signal. The code
ensures that the required shape extension version is present and only
fetches it once.
REVIEW: 115139
- check some guards as qobject_cast may fail.
- destroyed() is emitted too late, the slot managing it can only access a QObject, Containment members aren't valid anymore
The QQmlPropertyMap isn't moved with this commit, this needs a bit more
changing, so we do a separate one for that, once the more trivial stuff
is moved out.
This removes the last dependency from plasma-framework on kde4support.
This change is a bit more involved than other kde4support removals because
QSharedPointer does not provide a count() method. I therefore reworked the code
to store the SharedSvgRenderer as a QWeakPointer in s_renderers, making it
possible to detect when the last one goes away by creating a QWeakPointer guard
in SvgPrivate::eraseRenderer().
REVIEW: 114912
ToolTipArea.containsMouse allows the use to update the tooltip way
before it's shown, or when the contents of the tooltip should change
within an open dialog.
dismiss() and keepalive() allow handing over the tooltip dialog to
another item, in order to allow for a smoother handover when a new item
recycles the tooltipdialog. This avoids flickering when the tooltip
moves from one item to another.
Instead of registering WidgetExplorer inside the shell, create a new qml
plugin in the org.kde.plasma.private namespace.
This is useful for running widgetexplorer in qmlscene.
This makes testing, debugging and profiling considerably easier.
REVIEW: 114914
Saves quite a lot of roundtrips to the XServer. Most important we
fetch the atom only once which means we don't have to refetch when
checking the property notify events.
REVIEW: 112445
- Derive from MouseEventListener as to let input through
- react to target changes: reparent the MEL accordingly
- kill a bunch of warnings
This "helps" a bit, but still filters out input events since the MEL
only passes events down to children, but the tooltip's target becomes
its parent.
Reparenting the target crashes, and it seems a pretty ugly thing to do,
anyway, since we don't want to mess with the scenegraph structure just
to filter events out for tooltips. Grmblz.
Delete KDeclarativeMouseEvent when emitted
Do not leak KDeclarativeMouseEvent press and hold events when the mouse
moves.
Do not create KDeclarativeMouseEvent when the mouse is hovered. It's
pointless.
... instead of overriding the property.
Removes a warning whenever the implicit width and height changes, and
reduces the API footprint of AppletInterface.
The larger headings are a bit softened, to make their stick out less,
the font is meant to take care of this. Result: visually more consistent
colouring, strangely. Human eyes are beautifully complex things.
same rules of sharing and memory management apply.
The model will be shared between all visualizations and deleted when nobody is connected to the source anymore
Since we are checking if the width() is out of bounds we should also use
width() to correct the position.
Other cases might need change as well, but I think we better go in a case
by case bases to fix all possible issues.
It is up to the Containment to decide if the user is allowed or not
to lock/unluck the widgets, so corona should not add one when there is none
(user is not allow) and it shouldn't add another one when there is already
one.
Fixes duplicated action in toolbox.
I'm not sure for what reason this was changed but it is clearly wrong,
we don't want to create a new action but rather re-add (as the hack says)
the action we took before.
Fixes "Empty action" in toolbox.
The panel would be one pixel above the bottom edge, which prevents us
from using the invisible space beyond the panel. This makes the panel
flush with the bottom edge.
- We would only check for the available screen, but not for the location
when applying borders. Fix that.
- Cache dialog geometry when going fullscreen, so we can restore it when
we're not fullscreen anymore.
- Remove temporary var l, we have m_location for that.
The amount of warnings that plasma-shell has, makes it super hard to
make use of tools like journalctl or to grep ~/.xsession-errors.
We need these tools to diagnose possible bugs in the session start or
any other software that redirects stderr or those places.
We can remove this option once all the Warnings are fixed, specially
the one in Qt: https://codereview.qt-project.org/#change,73943
CCMAIL: plasma-devel@kde.org
This is needed to let KLauncher know that Plasma Shell has been
executed.
We are using plasma_shell because there is a bug in KDBusService
that prevents us from using plasma-shell. Fix is already done
but repositoiries at this very moment are frozen.
This is a needless duplication of the property, and it causes bugs.
Removing it, and porting all users to the flags property from QWindow
magically makes layering and resizability bugs vanish.
One problem is left: the dialog dismisses too easily, it should not
dismiss when being resized, moved or when a child dialog or QMenu opens
from it.
Interestingly, this hack yields the correct behaviour in my system. We
quickly set the always on top hint once we're supposed to hide, so the
window stays on top for the duration of the animation -- without
apparent side effects on the positioning and resizability.
CCMAIL:mgraesslin@kde.org
Previously shells, activities, shellcorona and corona all tried to
manage
which screen a containment was on.
This version moves all screen management into ShellCorona so we have a
central place for keeping tracking of containments, activities and
screens.
This allows to control whether to automatically close panel popups when
they lose focus. Applets can set this to false in case they want to keep
the popup open (even temporarily).