Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.2:Update
plasma-framework
new-bool-to-use-activated-signal-as-toggle.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File new-bool-to-use-activated-signal-as-toggle.patch of Package plasma-framework
From: Roman Gilg <subdiff@gmail.com> Date: Wed, 19 Oct 2016 16:51:15 +0000 Subject: New bool to use activated signal as toggle of expanded X-Git-Url: http://quickgit.kde.org/?p=plasma-framework.git&a=commitdiff&h=65706d3878d556c7a1eac18984ec41b1a1d96d56 --- New bool to use activated signal as toggle of expanded The launcher applets couldn't be closed with Meta alone and on Wayland in general by any global shortcut, since we used for that the focusOutEvent triggered only on X and only on global shortcuts (on default Alt+F1). This patch introduces the new bool activationTogglesExpanded, which allowes QML applets to decide if they wish to use the activated signal also to end their expanded state. The default value is false, in order to not break any legacy applets. REVIEW: 129204 BUG: 367685 --- --- a/src/plasmaquick/appletquickitem.cpp +++ b/src/plasmaquick/appletquickitem.cpp @@ -48,7 +48,8 @@ switchWidth(-1), switchHeight(-1), applet(a), - expanded(false) + expanded(false), + activationTogglesExpanded(false) { } @@ -727,6 +728,20 @@ emit expandedChanged(expanded); } +bool AppletQuickItem::isActivationTogglesExpanded() const +{ + return d->activationTogglesExpanded; +} + +void AppletQuickItem::setActivationTogglesExpanded(bool activationTogglesExpanded) +{ + if (d->activationTogglesExpanded == activationTogglesExpanded) { + return; + } + d->activationTogglesExpanded = activationTogglesExpanded; + emit activationTogglesExpandedChanged(activationTogglesExpanded); +} + ////////////Internals KDeclarative::QmlObject *AppletQuickItem::qmlObject() --- a/src/plasmaquick/appletquickitem.h +++ b/src/plasmaquick/appletquickitem.h @@ -81,6 +81,12 @@ Q_PROPERTY(bool expanded WRITE setExpanded READ isExpanded NOTIFY expandedChanged) /** + * True when the applet wants the activation signal act in toggle mode, i.e. while being expanded + * the signal shrinks the applet to its not exanded state instead of reexpanding it. + */ + Q_PROPERTY(bool activationTogglesExpanded WRITE setActivationTogglesExpanded READ isActivationTogglesExpanded NOTIFY activationTogglesExpandedChanged) + + /** * the applet root QML item: sometimes is the same as fullRepresentationItem * if a fullrepresentation was not declared explicitly */ @@ -126,6 +132,9 @@ bool isExpanded() const; void setExpanded(bool expanded); + bool isActivationTogglesExpanded() const; + void setActivationTogglesExpanded(bool activationTogglesExpanded); + ////NEEDED BY QML TO CREATE ATTACHED PROPERTIES static AppletQuickItem *qmlAttachedProperties(QObject *object); @@ -135,6 +144,7 @@ void switchHeightChanged(int height); void expandedChanged(bool expanded); + void activationTogglesExpandedChanged(bool activationTogglesExpanded); void compactRepresentationChanged(QQmlComponent *compactRepresentation); void fullRepresentationChanged(QQmlComponent *fullRepresentation); --- a/src/plasmaquick/private/appletquickitem_p.h +++ b/src/plasmaquick/private/appletquickitem_p.h @@ -104,6 +104,7 @@ Plasma::Package containmentPackage; bool expanded : 1; + bool activationTogglesExpanded : 1; static QHash<QObject *, AppletQuickItem *> s_rootObjects; }; --- a/src/scriptengines/qml/plasmoid/appletinterface.cpp +++ b/src/scriptengines/qml/plasmoid/appletinterface.cpp @@ -142,11 +142,16 @@ emit busyChanged(); applet()->updateConstraints(Plasma::Types::UiReadyConstraint); + connect(applet(), &Plasma::Applet::activated, [ = ]() { - setExpanded(true); + // in case the applet doesn't want to get shrinked on reactivation, + // we always expand it again (only in order to conform with legacy behaviour) + bool activate = !( isExpanded() && isActivationTogglesExpanded() ); + + setExpanded(activate); if (QQuickItem *i = qobject_cast<QQuickItem *>(fullRepresentationItem())) { - i->setFocus(true, Qt::ShortcutFocusReason); + i->setFocus(activate, Qt::ShortcutFocusReason); } });
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor