diff --git a/CMakeLists.txt b/CMakeLists.txt index a9dd559c4..a47558e9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ project(Plasma) # ECM setup include(FeatureSummary) -find_package(ECM 5.14.0 NO_MODULE) +find_package(ECM 5.15.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -20,8 +20,8 @@ include(ECMPackageConfigHelpers) include(ECMSetupVersion) include(KDEFrameworkCompilerSettings) -set(KF5_VERSION "5.15.0") # handled by release scripts -set(KF5_DEP_VERSION "5.14.0") # handled by release scripts +set(KF5_VERSION "5.16.0") # handled by release scripts +set(KF5_DEP_VERSION "5.15.0") # handled by release scripts ecm_setup_version(${KF5_VERSION} VARIABLE_PREFIX PLASMA diff --git a/src/declarativeimports/core/tooltip.cpp b/src/declarativeimports/core/tooltip.cpp index 3ffcdbae9..a5e223b8b 100644 --- a/src/declarativeimports/core/tooltip.cpp +++ b/src/declarativeimports/core/tooltip.cpp @@ -332,9 +332,12 @@ void ToolTip::hoverEnterEvent(QHoverEvent *event) // and ask to keep it open for a bit, so other items get the chance // to update the content before the tooltip hides -- this avoids // flickering - tooltipDialogInstance()->keepalive(); - //FIXME: showToolTip needs to be renamed in sync or something like that - showToolTip(); + // It need to be considered only when other items can deal with tooltip area + if (m_active) { + tooltipDialogInstance()->keepalive(); + //FIXME: showToolTip needs to be renamed in sync or something like that + showToolTip(); + } } else { m_showTimer->start(m_interval); } diff --git a/src/declarativeimports/plasmacomponents/qml/ToolBarLayout.qml b/src/declarativeimports/plasmacomponents/qml/ToolBarLayout.qml index 4206bed29..af59d8063 100644 --- a/src/declarativeimports/plasmacomponents/qml/ToolBarLayout.qml +++ b/src/declarativeimports/plasmacomponents/qml/ToolBarLayout.qml @@ -18,22 +18,27 @@ */ import QtQuick 2.1 -//import "." 2.0 +import QtQuick.Layouts 1.1 /** * ToolBarLayout is a container for items on a toolbar that automatically * implements an appropriate layout for its children. - * @inherit QtQuick.Row + * @inherit QtQuick.Layouts.RowLayout */ -Row { +RowLayout { id: root visible: false Item { - id: spacer - width: 10 - height: 10 + id: spacer1 + Layout.fillWidth: true + Layout.fillHeight: true + } + Item { + id: spacer2 + Layout.fillWidth: true + Layout.fillHeight: true } QtObject { @@ -41,26 +46,36 @@ Row { property bool layouting: false function layoutChildren() { - var numChildren = root.children.length - if (layouting || parent == null || - root.width == 0 || numChildren < 2) { - return + if (layouting) { + return; } - layouting = true - spacer.parent = null + layouting = true; - spacer.width = root.parent.width - root.childrenRect.width -10 + spacer1.parent = null; + spacer2.parent = null; - var last = root.children[numChildren-2] - last.parent = null - spacer.parent = root - last.parent = root - layouting = false + var children = Array(); + //seems there is no other way to create a copy of the array + //as children is not an actual JS array + for (var i = 0; i < root.children.length; ++i) { + children.push(root.children[i]); + } + var numChildren = children.length; + + spacer1.parent = root; + + for (var i = 1; i < numChildren-1; ++i) { + children[i].parent = null; + children[i].parent = root; + } + spacer2.parent = root; + children[numChildren-1].parent = null; + children[numChildren-1].parent = root; + layouting = false; } } Component.onCompleted: internal.layoutChildren() onChildrenChanged: internal.layoutChildren() - onWidthChanged: internal.layoutChildren() } diff --git a/src/plasma/applet.cpp b/src/plasma/applet.cpp index 3716a8328..895555c52 100644 --- a/src/plasma/applet.cpp +++ b/src/plasma/applet.cpp @@ -568,7 +568,7 @@ QList Applet::contextualActions() KActionCollection *Applet::actions() const { - return d->actions ? d->actions : new KActionCollection((QObject *)this); + return d->actions; } Types::FormFactor Applet::formFactor() const diff --git a/src/plasmaquick/dialog.cpp b/src/plasmaquick/dialog.cpp index 8d4f5085b..e995c2fc2 100644 --- a/src/plasmaquick/dialog.cpp +++ b/src/plasmaquick/dialog.cpp @@ -152,7 +152,7 @@ QRect DialogPrivate::availableScreenGeometryForPosition(const QPoint& pos) const // we simply iterate over the virtual screens and pick the one our QWindow // says it's at. QRect avail; - Q_FOREACH (QScreen *screen, q->screen()->virtualSiblings()) { + Q_FOREACH (QScreen *screen, QGuiApplication::screens()) { //we check geometry() but then take availableGeometry() //to reliably check in which screen a position is, we need the full //geometry, including areas for panels @@ -168,8 +168,10 @@ QRect DialogPrivate::availableScreenGeometryForPosition(const QPoint& pos) const * the screen should be correctly updated now on Qt 5.3+ so should be * more reliable anyways (could be tried to remove the whole Q_FOREACH * at this point) + * + * imporant: screen can be a nullptr... see bug 345173 */ - if (avail.isEmpty()) { + if (avail.isEmpty() && q->screen()) { avail = q->screen()->availableGeometry(); } @@ -1063,7 +1065,9 @@ void Dialog::showEvent(QShowEvent *event) bool Dialog::event(QEvent *event) { - if (event->type() == QEvent::Show) { + if (event->type() == QEvent::Expose) { + KWindowSystem::setState(winId(), NET::SkipTaskbar | NET::SkipPager); + } else if (event->type() == QEvent::Show) { d->updateVisibility(true); } else if (event->type() == QEvent::Hide) { d->updateVisibility(false); @@ -1161,11 +1165,7 @@ bool Dialog::event(QEvent *event) } } - const bool retval = QQuickWindow::event(event); - if (event->type() != QEvent::DeferredDelete) { - KWindowSystem::setState(winId(), NET::SkipTaskbar | NET::SkipPager); - } - return retval; + return QQuickWindow::event(event); } void Dialog::hideEvent(QHideEvent *event) diff --git a/src/tools/apply-stylesheet.sh b/src/tools/apply-stylesheet.sh new file mode 100755 index 000000000..96e59fb11 --- /dev/null +++ b/src/tools/apply-stylesheet.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +if [ $# -ne 1 ]; + then echo Usage: $0 file.svgz + exit 1 +fi + +if [ ! -f $1 ]; then + echo "you must specify a valid svg" + exit 1 +fi + + +file=`echo $1 | cut -d'.' --complement -f2-` +mv $1 $file.svg.gz +gunzip $file.svg.gz + +echo Processing $file + +stylesheet=' + .ColorScheme-Text { + color:#31363b; + } + .ColorScheme-Background { + color:#eff0f1; + } + .ColorScheme-Highlight { + color:#3daee9; + } + .ColorScheme-ViewText { + color:#31363b; + } + .ColorScheme-ViewBackground { + color:#fcfcfc; + } + .ColorScheme-ViewHover { + color:#93cee9; + } + .ColorScheme-ViewFocus{ + color:#3daee9; + } + .ColorScheme-ButtonText { + color:#31363b; + } + .ColorScheme-ButtonBackground { + color:#eff0f1; + } + .ColorScheme-ButtonHover { + color:#93cee9; + } + .ColorScheme-ButtonFocus{ + color:#3daee9; + } + ' +colors=(\#31363b \#eff0f1 \#3daee9 \#fcfcfc \#93cee9) +colorNames=(ColorScheme-Text ColorScheme-Background ColorScheme-Highlight ColorScheme-ViewBackground ColorScheme-ViewHover) + +xml ed --subnode "/svg:svg/svg:defs" -t elem -n "style" -v "$stylesheet"\ + --subnode "/svg:svg/svg:defs/style" -t attr -n "type" -v "text/css"\ + --subnode "/svg:svg/svg:defs/style" -t attr -n "id" -v "current-color-scheme" $file.svg > temp.svg + +for i in {0..4} +do + xml ed --subnode "//*/*[contains(@style, '${colors[i]}')]" -t attr -n "class" -v "${colorNames[i]}" temp.svg > temp2.svg + mv temp2.svg temp.svg + + echo sed -i 's/\(style=".*\)fill:'${colors[i]}'/\1fill:currentColor/g' temp.svg +done + +mv temp.svg $file.svgz +gzip $file.svg +mv $file.svg.gz $file.svgz diff --git a/tests/tooltip.qml b/tests/tooltip.qml index b153188e1..e36924fac 100644 --- a/tests/tooltip.qml +++ b/tests/tooltip.qml @@ -85,6 +85,26 @@ Rectangle { } } + PlasmaCore.ToolTipArea { + width: 300 + height: 50 + + active: false + + mainText: "A" + subText: "B" + + Rectangle { + color: "red" + anchors.fill: parent + } + + Text { + anchors.fill: parent + text: "tooltip exists but inactive" + } + } + PlasmaCore.ToolTipArea { width: 300 height: 50