Discover current minimum height of applet labels in hidden
view and apply it for all of them when they are shown
inside hidden applets view. This implementation provides
always only the maximum needed label height based on label
contents.
BUG: 438347
FIXED-IN: 5.24.3
The prefered is to show context menu on mouse pressed event, not click,
but this causes few issues for SNI.
Some legacy applications still relies on XEmbed to show tray icon.
We use xembedsniproxy to relay the mouse press signals to the XEmbed client
but some applications (including GTK) validate the mouse state.
Mouse released state is expected, but as it is still pressed context
menu does not show.
BUG: 409768
FIXED-IN: 5.24.3
The MouseArea in AbstractItem needs to be above applets
when it's in the grid hidden area so that it can receive
hover events while the mouse is over an applet
But when the applet is shown as an icon on the regular
systray it needs to be below so the PlasmoidItem `onClick`
takes precedence and systray collapsing works.
BUG: 449533
FIXED-IN: 5.24
Allow the Panel to get active keyboard focus via a kwyboard shortcut which will cycle between all panels.
When a panel has focus, the active focus can be navigated around either with tab/backtab or arrow keys.
Simple popup applets which only display an icon will work automatically,
Complex applets like the System tray or the taskbar will have focus that can navigate on all their sub-elements, to activate a particular systray applet or activate a particular window
Co-authored with Benjamin Port<benjamin.port@enioka.com>
CCBUG: 352476
Applets in PlasmoidItem were blocking events from reaching the
ToolTipArea, so I moved the on hover logic to the AbstractItem's
MouseArea and put the MouseArea over the iconContainer. The
iconContainer is the parent of applets. Presses tend to hit the center,
which is where the applet is, preventing ToolTipArea::containsMouse from
being true and preventing the highlight from moving to the pressed item.
Hopefully this doesn't cause duplicate actions when events reach the
applet. I tested the patch on the nightcolor applet and all the other
default applets and didn't see anything wrong. I think this may be
because the signals are sending QML MouseEvents to the applets, causing
them to be accepted if the applet can accept them. Then when the signal
handlers are done, since the events are already accepted, they should
not move beyond the MouseArea and cause another round of event handling.
An input type agnostic way to activate systray items was needed. This
signal will be used for keyboard, mouse and touch navigation.
There was an activated() function that just started an animation which
has been renamed to startActivatedAnimation().
The context property version is slower to access and won't be supported
in Qt6. Let's port away from it and use the singleton version instead.
Here was my full process for making this change:
1. Made the change with `find . -name '*.qml' | xargs perl -pi -e 's/units\./PlasmaCore\.Units\./g'`
2. Verified no more occurrences with `grep -r " units."`
3. Made sure this didn't change any comments in a silly way by inspecting the output of `git diff | grep "+ " | grep "//"`
4. Manually inspected the full git diff to make sure there were no other unintentional or silly changes (there were none)
5. verified that all changed files have the PlasmaCore import with the correct name with `for FILE in `git status | grep modified | cut -d ":" -f 3`; do grep -q "as PlasmaCore" $FILE || echo "$FILE needs the PlasmaCore import"; done`
Refactor and simply logic of "expanded" state when dialog with active applet or list of hidden applets is shown.
Fixes a problem with keyboard shortcut activation.
It also fixes a bug when dialog closes on "go-back" button click.
BUG: 427685
FIXED-IN: 5.21
CCBUG: 400278
This begins the process of porting plasma-workspace to PlasmaComponents3. At
this point, only the relatively easy work is done. Every file not ported
now has been given the reason for still using PC2 in a comment on the import
line so you can see at a glance what the blocker is by running
`grep -r "org.kde.plasma.components 2.0"` in the repo.
Everything is tested and there are no breakages or functional regressions. In
the process, a few unused imports are removed.
Here are the remaining PC3 omissions blocking what's left from getting easily
ported:
- No Highlight
- No ListItem
- No PageStack
- No ContextMenu
- No QueryDialog
- No ModelContextMenu
- TabBar has no left and right tab states
- ToolButton has no built-in method to show a menu when clicked
This makes sure that the text doesn't touch the edges of the highlight
rect with languages that have very long words, like German and Brazilian
Portuguese.
--systemtray items are now using a rectangular form
in order to specify their hit area. So they take into
account the panel thickness in order to calculate
properly their cell length and thickness to
respect Fitt's Law. Items that are nearer to the
screen edge can now trigger all their events when
the user uses its mouse at the farest of the screen edge.
This improves the applet in a variety of ways:
- Much more touch friendly than the current skinny list view
- Many more items can be displayed without needing to scroll
- Substantial code simplification
- UI improvement from no longer sometimes showing an awkward vertical
strip of icons that was invisibly scrollable but some of whose items
ate scroll events, and which pushed the header over to the left in a
somewhat random-looking way
BUG: 402681
FIXED-IN: 5.20
Add configuration UI for setting maximum icon size. This utilizes existing configuration parameter. It is a maximum allowed icon size, if panel is smaller, icon will fit to closest smaller size.
BUG: 360333
BUG: 355587
FIXED-IN: 5.20.0
Summary:
It was decided in T12778 to remove icons from tooltips for panel widgets and system tray
items. This patch implements that for system tray items, and removes the supporting code
from the backend.
Test Plan:
Apply patch
Hover the cursor over system tray items, either in the compat applet or the expanded
representation
No more redundant or inconsistent icons visible
Reviewers: #plasma, davidre, broulik, kmaterka
Reviewed By: kmaterka
Subscribers: plasma-devel
Tags: #plasma
Maniphest Tasks: T12778
Differential Revision: https://phabricator.kde.org/D28631
Summary: This change simplifies icon size logic - now it is controled only in one place: AbstractItem. This gives additional benefits, like icons perfectly centered.
Test Plan: Highlights should always be centered
Reviewers: #plasma_workspaces, #plasma, ngraham, broulik, davidedmundson, apol
Reviewed By: #plasma_workspaces, #plasma, ngraham, broulik
Subscribers: mart, davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D28109
Summary: The `effectiveStatus` parameter was passed as a copy, use proper binding.
Test Plan: No visible impact
Reviewers: #plasma_workspaces, #plasma, ngraham, broulik, davidedmundson, apol
Reviewed By: ngraham
Subscribers: apol, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D28185
Summary:
Use the unified data model everywhere, not just in configuration. This simplifies UI code, separetes presentation from data.
This requires the use of ListView and GridView.
This change enables the implementation of more advanced sorting algorithms for systemtray items.
Test Plan: Affects almost all areas of system tray.
Reviewers: #plasma_workspaces, #plasma, davidedmundson, ngraham, broulik
Reviewed By: #plasma_workspaces, #plasma, davidedmundson, ngraham
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D26992
Summary:
Few unrelated fixes, bunched together:
* move some code from main.qml to PlasmoidItem where it belongs
* easier to understand item size calculation
* where possible, replace parent.parent comparisons with a property in AbstractItem
* get rid of marginHints
* Qt 5.14 compatibility fix in configuration
* formatting etc
Test Plan: Everything should work as before, this is just refactoring.
Reviewers: #plasma_workspaces, #plasma, davidedmundson, ngraham, broulik
Reviewed By: ngraham
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D27085
Summary:
Combines settings of SNI icons and plasmoids in one list. Ability to disable whole section is removed.
Initial idea was proposed by Nicolas Fella (D22176).
BUG: 360307
FIXED-IN: 5.18.0
{F7880936}
Test Plan:
1. Disable/enable plasmoids
2. Set Shown/Hidden for plasmoid
3. Set shortcut for plasmoid
4. Previously hidden categories are shown
5. Show all icons and revert
6. Set Auto/Shown/Hidden for SNI icons
Reviewers: #plasma_workspaces, #plasma, davidedmundson, broulik, ngraham, mart
Reviewed By: #plasma_workspaces, #plasma, ngraham, mart
Subscribers: ahiemstra, mart, meven, nicolasfella, plasma-devel, ngraham
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D26586
Summary: Both for plasmoids and SNI
Test Plan: Now there's some kind of feedback when pressing the icons
Reviewers: #plasma, ngraham
Reviewed By: ngraham
Subscribers: filipf, broulik, anthonyfieroni, davidedmundson, ngraham, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D19947
Summary:
@mart dislikes idea of manually ordering the systray (D11233, D11292) but prefers auto
ordering instead. To make my opinion I hacked up this and started testing on myself.
Current version breaks if two items have the same category and text (I guess this
should not happen but...).
Note that category order is more or less randomly chosen (I do believe someone else
has an opinion what the correct order is).
This is mutually exclusive with D11292.
Reviewers: #vdg, #plasma, mart, ngraham
Reviewed By: #vdg, #plasma, mart, ngraham
Subscribers: kmaterka, ognarb, ngraham, wsdfhjxc, mart, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D11352
Summary:
System Tray sends two "ContextMenu" events which breaks focus.
One is send on mouse pressed, second on mouse clicked. As a result
right click on the system tray icon causes focus to lock on the icon.
If later user clicks somewhere else event is send to the first icon.
BUG: 376277
BUG: 409768
FIXED-IN: 5.17.0
Test Plan:
The best to test with Skype for Linux with SNI bridge.
To reproduce:
* Right click on the Skype icon, click on menu item (can be Show Skype)
* Right click on any other icon in system tray (or even any other place on the panel)
* Skype menu will appear
After fix:
* Right click on the Skype icon, click on menu item (can be Show Skype)
* Right click on any other icon in system tray (or even any other place on the panel)
* Correct menu should show
Reviewers: #plasma, broulik, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: broulik, apol, plasma-devel, #plasma_workspaces
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D22804
Summary:
System tray widget had the following UX problem:
Icons are laid out in a Flow QML layout, using minimal amount of
space, thus not filling the height/width of the task bar. In other
words: user can only click directly on an icon, not over or under it.
Consider the following scenario:
Given icon size X and task bar of height 1.5 * X located at the bottom;
User moves pointer down to the limit and tries to click the icon.
Expected outcome: applet is activated.
Actual outcome: nothing happens, because icon (together with mouse
area) floats slightly above the bottom.
Which is inconvenient, especially when most other widgets tend to fill
up the space.
This patch fixes aforementioned problem by refactoring layouts using
modern GridLayout, RowLayout et al., so that icons are arranged in
rows and columns based on their number, and each one fills up its
cell. I also made a handful of minor internal refactorings and fixes.
Unfortunately, due to tight coupling, almost all files needed changes
anyway.
Special note on 'CompactApplet.location': it didn't seem to affect
anything at all, so removed it.
At the end of the day no visual changes should be noticeable. Layout
works in both vertical and horizontal form-factor an all four sides of
the desktop.
Test Plan: Please, check whether 'LayoutMirroring' works properly.
Reviewers: #vdg, #plasma, broulik, mart, hein, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: aacid, davidre, davidedmundson, ngraham, ndavis, anthonyfieroni, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D19745
Summary: This way we can open the context menu from touch
Test Plan: Tapped and hold on my screen
Reviewers: #plasma, ngraham
Reviewed By: ngraham
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D19946
Instead of calling it in response to any of the properties it depends on.
This also saves some calls to this function on startup (80 instead of 90 for me with 14 tray icons)
and keeps plasmoids from shifting around just because their status changed from e.g. Active
to AcceptingInput (like touchpad when it asks for whether you really want to disable touchpad
with no mouse attached) although the item's effective visibility didn't actually change.
BUG: 375112
CCBUG: 365630
FIXED-IN: 5.10.0
Differential Revision: https://phabricator.kde.org/D4488
This part reverts commit b9af991403 which
changes plasmoids and SNI items to activate on mouse release instead of
mouse click.
This messes with xembedsniproxy which is relaying the mouse press
signals to the exembed client. Now at the time of relay, if the client
application queries the mouse state itself it's going to be wrong and
that breaks GTK.
BUG: 375930
FIXED-IN: 5.9.2
Reviewed-By: David Edmundson
Summary:
it's very rare that the icon list in the hidden area
of the systray is long enough to get a scrollbar, but
when it does it had a couple of issues:
sometimes it gets an horizontal scrollbar too and
the wheel events gets eaten:
always disable the horizontal scrollbar and
ignore wheel events over the label.
wheel events over the icon are still managed by
the applet (so still possible to for instance
adjusting the volume on pa applet)
BUG:372050
Test Plan:
hidden all the cions to enable scrollbar: wheel over
the text scrolls the view, over the icon adjusts the volume
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3263
Summary:
it's very rare that the icon list in the hidden area
of the systray is long enough to get a scrollbar, but
when it does it had a couple of issues:
sometimes it gets an horizontal scrollbar too and
the wheel events gets eaten:
always disable the horizontal scrollbar and
ignore wheel events over the label.
wheel events over the icon are still managed by
the applet (so still possible to for instance
adjusting the volume on pa applet)
BUG:372050
Test Plan:
hidden all the cions to enable scrollbar: wheel over
the text scrolls the view, over the icon adjusts the volume
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3263
This prevents the entire list item to zoom in and out when a NeedsAttention
item is forcefully hidden in the popup.
Differential Revision: https://phabricator.kde.org/D2099
This ensures contents of the popup gets mirrored and the sidebar is moved to the
right and applets don't overlap it.
The expander arrow is not (yet) adjusted as this is much more complicated to solve.
Differential revision: https://phabricator.kde.org/D2048
Summary:
Width should not include top and bottom margins
BUG: 364543
FIXED-IN: 5.7
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D1966
When you click an item it might show a menu of some sort which will grab the mouse
and the ToolTipArea never gets a leave event causing the tooltip to show up above
the menu.
Differential Revision: https://phabricator.kde.org/D1847
it's way simpler and more reliable than using it trough ObjectModel
ObjectModel seems good enough if items are always owned by one
but not when going back and forth between 2 models