* Set content margins to take shadow effects into account
* Fix behavior when showing the QMenu not as `Qt::Popup`
* Prevent polishing as it would wrongly override our window flags
* Use the background color from the application's palette as the
background color from the QMenu itself is changed by the Windows 11
style
* Remember new size after user resized the window
* Remember new position after user repositioned window and using explicit
coordinates has been configured in the appearance settings
This might be useful on Wayland where positioning the popup is otherwise
not possible at all. Combined with a session restoration mechanism this
might actually be a feasible workaround. The user just needed to position
the popup once wherever it is wanted to show up and then the compositor
could remember that position.
Especially the resizing would also be useful on other platforms (and is by
the way also already possible when using the Plasmoid showing it as part of
the system tray Plasmoid).
* Remove experimental pinning feature again and instead allow using a
normal window
* Pinning made it inconvenient to close the (frameless) window again
* Pinning required hiding/showing the window which didn't look very
nice (and setting flags directly via `QWindow` didn't work as well)
* As normal application/window positioning issues on Wayland are less
problematic (and those aren't going to be fixed any time soon, if at all)
So far the backend libraries' include paths were relative within this
repository. This means the header files could not be used at their
installed location.
This change replaces them with "<>" includes to fix that problem and adds
a new include directory so building everything at once still works.
With this change it should be easier to actually split some parts into
another repository if this one would become too big.
This includes refactoring TrayWidget::applySettings() which
is now a member function and only affects the current instance.
This prevents applying settings on every instance every time
a new tray widget is created.
To apply settings for all tray widgets, the static function
TrayWidget::applySettingsOnAllInstances() is used instead.