Compare commits

...

2 commits

3 changed files with 25 additions and 1 deletions

View file

@ -185,7 +185,25 @@ void XPanelWindow::setFocusable(bool focusable) {
emit this->focusableChanged();
}
void XPanelWindow::xInit() { this->updateDimensions(); }
void XPanelWindow::xInit() {
if (this->window == nullptr || this->window->handle() == nullptr) return;
this->updateDimensions();
auto* conn = x11Connection();
// Stick to every workspace
auto desktop = 0xffffffff;
xcb_change_property(
conn,
XCB_PROP_MODE_REPLACE,
this->window->winId(),
XAtom::_NET_WM_DESKTOP.atom(),
XCB_ATOM_CARDINAL,
32,
1,
&desktop
);
}
void XPanelWindow::connectScreen() {
if (this->mTrackedScreen != nullptr) {
@ -214,6 +232,9 @@ void XPanelWindow::updateDimensions() {
// we only care about windows below us
if (panel == this) break;
// we only care about windows in the same layer
if (panel->mAboveWindows != this->mAboveWindows) continue;
int side = -1;
quint32 exclusiveZone = 0;
panel->getExclusion(side, exclusiveZone);

View file

@ -23,11 +23,13 @@ xcb_connection_t* x11Connection() {
// NOLINTBEGIN
XAtom XAtom::_NET_WM_STRUT {};
XAtom XAtom::_NET_WM_STRUT_PARTIAL {};
XAtom XAtom::_NET_WM_DESKTOP {};
// NOLINTEND
void XAtom::initAtoms() {
_NET_WM_STRUT.init("_NET_WM_STRUT");
_NET_WM_STRUT_PARTIAL.init("_NET_WM_STRUT_PARTIAL");
_NET_WM_DESKTOP.init("_NET_WM_DESKTOP");
}
void XAtom::init(const QByteArray& name) {

View file

@ -15,6 +15,7 @@ public:
// NOLINTBEGIN
static XAtom _NET_WM_STRUT;
static XAtom _NET_WM_STRUT_PARTIAL;
static XAtom _NET_WM_DESKTOP;
// NOLINTEND
static void initAtoms();