KWindowSystem::workArea() gives us the whole workarea, which in case of dual screens is the whole virtual desktop. QApplication::desktop()->availableGeometry(id) gives the full screen geometry for the given screen. So we just intersect them and have a proper availableScreenRect().
This is just a temporary method until the patch in [1] is merged in Qt
and released, then we can revert back to the commented method.
[1] - https://codereview.qt-project.org/#change,80606
BUG: 331968
and bury behind a weakpointer
BUG:332015
in some cases seems a crash still happens, but is completely unrelated with the one in 332015, so should be a separate bug
This fixes the bug where kglobalaccel "eats" the | character, what
was actually happening is that Qt::Key_Control + Qt::Key_F12 was
producing a valit KeySquence which was Shift+\, and Shit+\ is what
you use in US keymaps to make |.
QScreen::availableGeometry() returns screen size minus the struts, which is fine on first Plasma start. But if Plasma crashes, the struts set on the startup are not cleared and then when Plasma autorestarts, availableGeometry() gives it rect with the old struts to which Plasma adds one more panel height (so the total strut height is panel.height()*(numberOfCrashes+1)).
Using QScreen::virtualGeometry() gives us the whole screen including
struts and the new struts are computed and set properly.
Reviewed-by: Marco Martin
Qt's xcb plugin updates _NET_WM_STATE and ignores anything we set,
thus we need to ensure that our additional states are set after Qt
set the state. Luckily KWindowSystem does not remove the state which
is already set.
Reviewed-By: Marco Martin
In PanelView screenChanged is redeclared in order to create a property.
However this signal is not the one that is emitted.
This fixes the confif following the panels when moving between screens
Reviewed-by: Aleix Pol
Never use the window size to figure out the thickness: This is bad because
sometimes this will get called before the move hasn't been effective, which
results in full-screen struts. Use the thickness method from KConfig
instead.
REVIEW: 116614
Don't call setPosition and resize, but do it all at once in a setGeometry
call. It simplifies the life of the QPA and WM, also it's quite faster as
we reduce the calls to the WM by half (both setPosition and resize are
syntax-sugar for setGeometry)
REVIEW: 116614