Review Request 129204: Add toggle signal for applet de-/activation in order to fix non-closing launchers on Meta (and also on Active Screenedges)

Roman Gilg subdiff at gmail.com
Mon Oct 17 18:40:12 UTC 2016


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/129204/
-----------------------------------------------------------

(Updated Okt. 17, 2016, 8:40 nachm.)


Review request for Plasma and Martin Gräßlin.


Changes
-------

Changed structure completely in order to support legacy applets and the asynced releases of Plasma and Frameworks. The new structure also reduces the extent of changes to other components. For example we don't need any changes anymore in KWin and Plasma-Workspace. The solution now works like this:

- A qml based applet can decide if it wants to use legacy behaviour of activation, which means while being activated it will NOT trigger shrinking or if it wants to let the shortcut work like a switch of the expanded state
- The default value of this behaviour is false in order to not break legacy applets
- The launchers set it to true, in case of kicker only if it's not in Dash mode (maybe we could use the new system here too, but it shouldn't be part of this diff)


Bugs: 367685
    http://bugs.kde.org/show_bug.cgi?id=367685


Repository: plasma-framework


Description
-------

# The new Meta-key support for launcher opening doesn't work for closing at the moment. My analysis of the problem was as follows:

- KWin calls Applet::activated() over DBus
- Applet::activated() is connected to AppletInterface::activated()
- AppletInterface::activated() is connected to setExpanded(true), which can only expand the launcher, but not the other way around

# Q: Why is Alt+F1 working though?
A: The launchers seem to inherit the reimplemented function Dialog::focusOutEvent(..). Atleast when you delete line 1094 in dialog.cpp, which sets the visibility to false, it's not working anymore. Alt+F1 triggers the focusOutEvent(..) as a global shortcut.

# Q: Why is it working with the Dashboard though?
A: The dashboard doesn't use the expanded feature of the plasmoid, but rather connects directly to the AppletInterface::activated() signal and shows/hides an independent widget when this signal gets triggered.

# Solution:
Create new toggled() signal chain in KWin, Applet, AppletInterface, which tests the current expanded state and sets it afterwards accordingly to the opposite. This diff here in plasma-framework is the first one, which the others depend on. The others are on Phabricator:

- kwin: https://phabricator.kde.org/D3077
- plasma-workspace: https://phabricator.kde.org/D3078
- plasma-desktop: https://phabricator.kde.org/D3079

# Need feedback regarding:

- Should we remove the activated() signal chain? Is it used somewhere else than KWin?
- Could a race condition occur if we deexpand the applet while at the same time setting the visibility to false through focusOutEvent()? My tests until now don't suggest it, but I haven't yet looked into it extensively.


Diffs (updated)
-----

  src/plasmaquick/appletquickitem.h 943e227 
  src/plasmaquick/appletquickitem.cpp 2f100b8 
  src/plasmaquick/private/appletquickitem_p.h 1436935 
  src/scriptengines/qml/plasmoid/appletinterface.cpp 1cd6934 

Diff: https://git.reviewboard.kde.org/r/129204/diff/


Testing
-------


Thanks,

Roman Gilg

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20161017/7e6ea0cf/attachment-0001.html>


More information about the Plasma-devel mailing list