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
Plasma Framework
Foundational libraries, components, and tools of the Plasma workspaces
Introduction
The plasma framework provides the following:
- QML components
- A C++ library: libplasma
- Script engines
QML components
org.kde.plasma.core
Bindings for libplasma functionality, such as DataEngine and FrameSvg, see @ref core.
org.kde.plasma.components
Graphical components for common items such as buttons, lineedits, tabbars and so on. Compatible subset of the MeeGo components used on the N9, see @ref plasmacomponents.
org.kde.plasma.extras
Extra graphical components that extend org.kde.plasma.components but are not in the standard api, see @ref plasmaextracomponents.
org.kde.plasma.plasmoid
Attached properties for manipulating the current applet or containment, see @ref libplasmaquick
libplasma
This C++ library provides:
- rendering of SVG themes
- loading of files from a certain filesystem structure: packages
- data access through data engines
- loading of the plugin structure of the workspace: containments and applets
See @ref libplasma.
Script engines
Provides support to create applets or containments in various scripting languages.
Description
Languages
C++
63.9%
QML
29.4%
CMake
3.3%
Shell
1.3%
Python
1%
Other
1%