Commit Graph

667 Commits

Author SHA1 Message Date
Montel Laurent
d14d50a668 Add more explicit 2017-12-13 07:52:10 +01:00
Montel Laurent
7f0c023d3f Use nullptr + add explicit 2017-12-13 07:36:22 +01:00
Eike Hein
a570254e1a Don't update when the underlying FrameSvg is repaint-blocked
Summary:
When the component completes `FrameSvg::setRepaintBlocked(false)`
is called, which calls `updateFrameData`, which emits
`repaintNeeded`, which is connected to `doUpdate` anyway.

This saves one `doUpdate` per instanciation. The reason for that
is as follows:
* The concept or repaint blocking is implemented in `FrameSvg`,
  which inherits from `Svg`.
* The `repaintNeeded` signal connected to `doUpdate` is the one
  in `Svg`.
* `Svg` code emits `repaintNeeded` liberally even when repaints
  are blocked, since it doesn't know anything about this.

Hence we check if repaints are blocked in doUpdate and abort,
implementing the QQmlParserStatus interface in the right class.

Reviewers: #plasma, davidedmundson, mart

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D9138
2017-12-04 00:12:11 +09:00
Kai Uwe Broulik
ab8915bc12 [FrameSvgItem] Don't create unneccessary nodes
If a border isn't enabled there's no point in creating a node for itIf a border isn't enabled there's no point in creating a node for it.

Differential Revision: https://phabricator.kde.org/D9121
2017-12-03 12:40:31 +01:00
Ben Cooksley
df09180d31 The #warning directive is not universal and in particular is NOT supported by MSVC
Remove the directive to restore compilation on Windows.
Ref D9108

CCMAIL: aleixpol@kde.org
2017-12-03 07:03:09 +13:00
Kai Uwe Broulik
f8e3a16040 [IconItem] Use ItemSceneHasChanged rather than connect on windowChanged
Saves a connection and also only schedule if we actually have a window.

Differential Revision: https://phabricator.kde.org/D9111
2017-12-02 18:13:19 +01:00
Kai Uwe Broulik
da2b6e270f [Icon Item] Explicitly emit overlaysChanged in the setter rather than connecting to it
There's literally just one place where this thing changes so just emit the signal
there and call it a day.

Differential Revision: https://phabricator.kde.org/D9112
2017-12-02 18:13:19 +01:00
Aleix Pol
1f9b5ed657 Performance
Summary:
Remove splitting + joining of a string just to remove the beginning of a
string.
Remove double look-up.
Solves Clazy warnings

Reviewers: #frameworks, #plasma, hein

Reviewed By: #plasma, hein

Subscribers: hein, plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D9109
2017-12-02 16:22:03 +01:00
Aleix Pol
b8b8a69fd1 Remove implicit string casting
Summary: Follow the KF5 guidelines

Test Plan: Plasma shell starts

Reviewers: #plasma, #frameworks, sebas

Reviewed By: #plasma, sebas

Subscribers: plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D9108
2017-12-02 15:44:14 +01:00
Aleix Pol
f8047e86b2 Reduce the amount of spurious property changes on ColorScope
Summary:
At the moment whenever something changed we were emitting colorGroupChanged
and then every color would recompute. This would end up being emitted
over 10 times at plasma startup so far.
This patch makes sure that the property will only be emitted if the color
group actually changes.

Test Plan:
Ran plasma, didn't notice issues.
I don't see all of the changes on the property anymore

Reviewers: #plasma, mart, davidedmundson

Reviewed By: #plasma, mart

Subscribers: davidedmundson, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D8917
2017-12-02 12:45:57 +01:00
Kai Uwe Broulik
9066c232b4 [Icon Item] Emit validChanged only if it actually changed
Differential Revision: https://phabricator.kde.org/D9102
2017-12-02 11:40:02 +01:00
Montel Laurent
5d9aa6816f We depend against 5.7 2017-11-29 21:10:48 +01:00
Aleix Pol
28d9c7146e Remove double lookup 2017-11-20 16:13:46 +01:00
Aleix Pol
3e17a2d0a2 Remove duplicate boilerplate code
Summary: Don't replicate logic present in ::colorGroup for every color() call

Reviewers: #plasma, #frameworks, mart

Reviewed By: #plasma, mart

Subscribers: plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D8914
2017-11-20 16:12:41 +01:00
Aleix Pol
11c9206bf6 Reduce spurious signal emissions
Summary:
We were reporting that the margins were changing whenever anything changed
in a FrameSvg, this patch makes sure we are only reporting the changes
when it actually changes.
This also fixes a binding loop in Desktop.qml from plasma-desktop.

BUG: 382233

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: broulik, davidedmundson, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D8809
2017-11-16 16:18:04 +01:00
Kai Uwe Broulik
3ebdd64e6b Optimize SortFilterModel role names
* Reserve m_roleIds
* Avoid double lookup contains+value but use default value argument
* Constify

Differential Revision: https://phabricator.kde.org/D8639
2017-11-06 15:17:42 +01:00
Kai Uwe Broulik
d51456bdfc Remove DataModel::roleNameToId
It is unused and returned -1 whereas SortFilterModel would return Qt::DisplayRole

Differential Revision: https://phabricator.kde.org/D8638
2017-11-06 15:17:15 +01:00
Kai Uwe Broulik
c1e432065f sceneGraphBackend() is new in Qt 5.9 2017-09-29 10:48:37 +02:00
Kai Uwe Broulik
bb6b170516 [FrameSvgItem] Iterate child nodes properly
Documentation says "Children are stored internally as a linked list, so iterating over the children via the index is suboptimal."

Differential Revision: https://phabricator.kde.org/D8046
2017-09-28 23:05:36 +02:00
Marco Martin
9e7d02cde2 pick up the proper positive/neutral/negative colors 2017-09-28 16:14:33 +02:00
David Edmundson
daef5c8b6b Fix FrameSVGItem with the software renderer
Summary:
Software rendering (at time of writing Qt5.10) doesn't seem to like our
tiling/stretching in the 9-tiles.
Also when using QPainter it's arguably faster to create and cache
pixmaps of the whole frame, which is what the slow path of FrameSVGItem
does.

Test Plan: Ran FrameSVG test then plasma shell with scene device set

Reviewers: #plasma, broulik

Reviewed By: #plasma, broulik

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D8013
2017-09-27 15:50:49 +01:00
David Edmundson
94235482f9 Don't animate IconItem in software mode
Summary:
IconItem uses a gorgeous shader to fade between two states. This doesn't
work with software rendering.

Given software rendering is a second class citizen, just skip the
animation.

Test Plan:
Hovered over kickoff.
Went from one to the other, without temporarily disappearing

Reviewers: #plasma, broulik

Reviewed By: #plasma, broulik

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D8014
2017-09-27 15:50:44 +01:00
Marco Martin
b62118c90c possibility to set an attached colorscope to not inherit
this makes an easy bridging between the plasma and kirigami theming
reviewed-by:Eike Hein
2017-09-19 16:42:08 +02:00
Marco Martin
48e27b5493 register revision 1 for QQuickItem
make the base properties of revision 1 available
2017-09-13 11:29:04 +02:00
Kai Uwe Broulik
a963302926 [Icon Item] Don't needlessly unset imagePath
We'll eventually delete the Plasma::Svg anyway if we failed to find an appropriate icon.
Just need to make sure we don't use isValid with the old source set but this is only done with
m_usesPlasmaTheme, hence the new check there, also optimizes the non-themed case.

Differential Revision: https://phabricator.kde.org/D7584
2017-08-30 16:39:53 +02:00
Kai Uwe Broulik
a8ce2e85ec [FrameSvgItem] Create margins/fixedMargins object on demand
On my machine I end up creating 490 margins and 490 fixed margin objects.
After this change I only create 171 margin objects and 20 fixed margin objects.

Differential Revision: https://phabricator.kde.org/D7582
2017-08-29 11:10:19 +02:00
Volker Krause
0a8d1f9cd4 Fix compilation on Yocto
Summary:
By default, Qt is built without accessibility there, which is what
would indirectly include the needed QColor with a "normal" Qt build
here.

Reviewers: #frameworks, broulik

Reviewed By: broulik

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D7117
2017-08-03 22:19:29 +02:00
Kai Uwe Broulik
c00069c43d Use new connect syntax in more places
Especially in frequently created items. Shoves off a couple of milliseconds of startup time.

Differential Revision: https://phabricator.kde.org/D6614
2017-07-10 22:24:50 +02:00
Friedrich W. H. Kossebau
0e1219d03b API dox: use @param for normal parameter listing, not @arg 2017-07-03 16:24:20 +02:00
Marco Martin
eab4aa9909 Make sure size is final after showEvent
Summary:
* make sure after a showevent the size is final and the
dialog can be safely repositioned.
* set mainItem visible in :setVisible() so that is executed before showEvent:
   resizing windows in their show event is definitely not enough, causes events to arrive to
   reset to the old geometry in race with the setgeometry done there, don't know yet
   if it's the qpa, qwindow, or the windowmanager
* make synctomaintem and updatelayoutparameters working even if
the dialog is not visible as we need to resize beforehand
* move the plasmasurface window also in the show event as if there was no moveevent
  after an hide/show, its position would be resetted to 0,0

Test Plan:
current dialog users behave the same (like pre-D6216 notifications applet), tests still pass
notifications applet reworked to use this works as expected

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: sebas, hein, davidedmundson, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D6215
2017-06-21 13:29:26 +02:00
David Edmundson
8fdbfa6980 Emit usedPrefixChanged when prefix is empty
As found by Fabian Vogt
2017-06-07 19:46:19 +01:00
Marco Martin
bf1d1cc6b2 don't switch colors on new themes
new themes as breeze aren't supposed to just use the button graphics
on top, that also mean, don't switch palette on top if the new prefix
is there
2017-06-07 18:24:33 +02:00
Aleix Pol
3b303d7363 Small improvements in IconItem
Summary:
Don't construct a QUrl for every source strings. Check it's a file url
first (which is the only kind of url we support at the moment)
When extracting the path, use toLocalFile, so it works on platforms where
path!=toLocalPath (e.g. windows)
Don't split a string and get a chunk, but just extract the chunk we need
with section. Reduces allocations that are automatically discarded.
Narrow iconPath scope

Test Plan: Tests still pass, plasmashell still works

Reviewers: #frameworks, #plasma, mart

Reviewed By: #plasma, mart

Subscribers: plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D6014
2017-05-29 19:10:37 +02:00
Marco Martin
32e67a591e minimize dialog resizes/moves
Summary:
take into account size hints also when adjusting with synctomainitemsize
which sometimes has to be executed right before adjusting from the layout
hints, giving one wrong resize

introduce geometryUpdatesBlocked, which stops the dialog
from syncing which is useful when both visual parent and item
contents gets updated in one go (the tooltip) it is not
yet exported to qml and it shouldn't as is dangerous, but
kicker may make use of it between changing the submenu model and
the visualparent

alternative implementations may be:
* a method that takes both main item and visual parent
* delaying with a timer setGeometry (ouch)
this part can also be left behind for now and see if the rest is good enough

Test Plan:
no visual glitches visible anymore in wayland when moving the tooltip
in the taskbar, x11 ok too

Reviewers: #plasma, hein, davidedmundson

Reviewed By: #plasma, hein, davidedmundson

Subscribers: broulik, davidedmundson, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D5912
2017-05-25 11:21:50 +02:00
Marco Martin
fd2e850156 recreate plasmashellsurf on exposed, destoy on hidden
Summary:
every time the window gets shown the wayland surfaces
get created, when hidden, they get destroyed

showevent is too early for it as they aren't there yet,
use :Exposed instead, but only the first time when the surface
isn't there yet

Test Plan:
popup applets always have correct blur in a wayland
session

Reviewers: #plasma, #plasma_on_wayland, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: davidedmundson, plasma-devel, #frameworks

Tags: #frameworks, #plasma_on_wayland

Differential Revision: https://phabricator.kde.org/D5745
2017-05-12 16:58:21 +02:00
Marco Martin
85699c8d2f reload icon when usesPlasmaTheme changes
Summary:
when usesPlasmaTheme gets changed, make sure to
invalidate the svg icon if there, to reload the
icon from the proper source, being either from
the plasma theme or the system icon theme.

Test Plan:
cuttlefish now reloads dynamically the proper icons
when the monochrome checkbox is ticked

Reviewers: #plasma, sebas

Reviewed By: #plasma, sebas

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D5721
2017-05-05 22:40:27 +02:00
Eike Hein
4f48901b05 Introduce units.iconSizeHints.* to provide user-configurable icon size hints
Summary:
In effect this is meant to resurrect the "Panel" icon size setting from
the Icons -> Advanced KCM in System Settings, for use as a ceiling on
panel icons to avoid them taking up too much space, especially in wide
vertical panels.

Previously, the actually-unused "Desktop" size hint was added to the
iconSizes map. I believe this was in error, as the size hints are
semantically different from the size classes. This patch marks the
"desktop" iconSizes map entry as deprecated and makes it available
under iconSizeHints instead.

The soon-to-be-updated D5592 will demonstrate this API in use.

CCBUG:378443

Reviewers: #plasma, mart

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D5593
2017-04-26 20:41:06 +09:00
Aleix Pol
328cd681a7 Update qmltypes 2017-04-10 16:02:23 +02:00
Aleix Pol
2df613f938 Generate plugins.qmltypes files for the plugins we install
Reviewers: #plasma, #frameworks, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: davidedmundson, hein, plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D5088
2017-04-10 15:09:57 +02:00
Marco Martin
e1aa250e70 remove some debug
now with fallback is common to have prefixes that are not present and fail.
this generates a lot of debug that is not really useful, as is an OK
thing.
2017-04-05 13:40:46 +02:00
Marco Martin
fb8ed07651 if the user did set an implicit size, keep it
Summary:
if the user code did something like
IconItem {
   implicitWidth: 32
   implicitHeight: 32
}

then never automatically update implicitWidth or height.
this favors compatibility and fixes the desktop
toolbox appearance

Test Plan:
textbox works, other icon items in plasmashell seems properly sized.
applet alternatives fix is still needed

Reviewers: #plasma, hein

Reviewed By: #plasma, hein

Subscribers: hein, davidedmundson, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D5243
2017-04-03 16:07:18 +02:00
Kai Uwe Broulik
611a4b5920 [Icon Item] Make "smooth" property actually do something
We had m_smooth but never actually used it in the texture node.
With Plasma SVG icons this shouldn't be used but when passing custom pixmaps
or raster graphics (e.g. custom icon in Kicker, thumbnails in Folder View)

Differential Revision: https://phabricator.kde.org/D5214
2017-03-28 13:44:53 +02:00
Marco Martin
8a42b06042 sensible implicit size for svgs
if the icon is an svg, try to get the implicit size
baked into the file, in

reviewed-by:Eike Hein
2017-03-28 12:51:12 +02:00
Kai Uwe Broulik
7487e208b6 [Default Tooltip] Fix icon size
We overwrite implicit size based on the icon loaded nowadays which breaks this.
Also, while at it, added an explicit "valid" check for the icon.

Differential Revision: https://phabricator.kde.org/D5202
2017-03-28 11:05:06 +02:00
Eike Hein
bc33f0470d Set implicit size from source size for image/SVG URL sources.
Summary:
This allows users of IconItem to know the aspect ratio of the
source document, which can be used to size the item or set
applet size hints to accomodate non-square images better.

This will be used in a patch to Kicker/Dashboard that ports
a use of Image in its CompactRepresentation to IconItem to
get the hover highlight effect even for a custom button image.

Reviewers: #plasma, mart, davidedmundson

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D5160
2017-03-24 06:34:24 +09:00
David Edmundson
547a34d346 Handle applyPrefixes with an empty string
Summary:
When setting an empty QStringList as prefix, it can lead to unexpected results, such as the prefix not changing.

BUG: 377441

Reviewers: #plasma

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D5000
2017-03-10 09:50:24 +00:00
David Edmundson
f8bedf84b7 Use initialiser list
Test Plan: Ran

Reviewers: #plasma, mart

Reviewed By: mart

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D4857
2017-03-06 00:13:22 +00:00
David Edmundson
23b70f4d45 Implement FadingMaterial frag/vert shaders on core profile
Summary:
Like all the inbuilt shaders this now has a separate GLS source file which
works with a newer version without requiring compatibility.

Was https://git.reviewboard.kde.org/r/128426/

Test Plan:
Ran plasmashell with ForceGlCoreProfile set in the config
Hovered an icon in the task manager and it animated to the correct one
correctly.
Ran glslangValidator on both files. No warnings.

Reviewers: #plasma, mart

Reviewed By: mart

Subscribers: mart, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D4851
2017-03-05 23:44:56 +00:00
David Edmundson
3b05f569ac Split frag and vert code of FadingNode into separate files
Summary:
This matches what Qt does internally, it's easier to read and gives us
syntax highlighting on the shader files, but more importantly in future
we will get Qt's automatic loading of core profile shaders.

Test Plan:
Opened QML with IconItem, made the icon switch.
Still looks the same

Reviewers: #plasma, mart

Reviewed By: mart

Subscribers: mart, broulik, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D4848
2017-03-05 23:44:50 +00:00
David Rosca
af2b27d1b8 IconItem: Add roundToIconSize property
Disabling this property makes it possible to show icon of arbitrary size.

Differential Revision: https://phabricator.kde.org/D4689
2017-02-28 11:18:17 +01:00