fix #155,fix availableScreenRect of latte corona

--this is based on the plasma implementation
v0.6
Michail Vourlakos 8 years ago
parent 0b844f6193
commit f9fe1206a5

@ -178,6 +178,9 @@ QRect DockCorona::screenGeometry(int id) const
QRegion DockCorona::availableScreenRegion(int id) const
{
//FIXME::: availableGeometry is probably broken
// in Qt, so this have to be updated as plasma is doing it
// for example the availableScreenRect
const auto screens = qGuiApp->screens();
if (id >= 0 && id < screens.count()) {
@ -191,11 +194,42 @@ QRect DockCorona::availableScreenRect(int id) const
{
const auto screens = qGuiApp->screens();
QScreen *mScreen = 0;
if (id >= 0 && id < screens.count()) {
return screens[id]->availableGeometry();
mScreen = screens[id];
} else {
mScreen = qGuiApp->primaryScreen();
}
return qGuiApp->primaryScreen()->availableGeometry();
QRect r = mScreen->geometry();
foreach (DockView *v, m_dockViews) {
if (v->isVisible() && v->screen() && v->containment()
&& v->screen() == mScreen && v->visibility()->mode() != Latte::Dock::AutoHide) {
switch (v->containment()->location()) {
case Plasma::Types::LeftEdge:
r.setLeft(r.left() + v->normalThickness());
break;
case Plasma::Types::RightEdge:
r.setRight(r.right() - v->normalThickness());
break;
case Plasma::Types::TopEdge:
r.setTop(r.top() + v->normalThickness());
break;
case Plasma::Types::BottomEdge:
r.setBottom(r.bottom() - v->normalThickness());
default:
break;
}
}
}
return r;
}
int DockCorona::primaryScreenId() const

Loading…
Cancel
Save