Comment 5 for bug 735937

Revision history for this message
Olivier Tilloy (osomon) wrote :

Fixing the position of the panels (the launcher is also a panel internally) is easy enough: instead of using moveLeft(m_delta) and moveTop(m_delta), the computation of the geometry should add up m_delta to the x/y coordinate, depending on the edge of the panel.

However reserving the struts correctly is slightly more complicated: struts always live at the edge of a screen, so in the case described above, if the panel shows up on the screen on the left, the top strut for it should be screen.y() + panel.height(). But when doing so, the subsequent calculations of the destkop’s available geometry always return a null rectangle, and therefore the other panels (like the launcher) never show up. The computation of the desktop’s available geometry uses _NET_WORKAREA, which on my setup completely excludes the leftmost part of the virtual desktop that contains the first screen.