=== modified file 'libunity-2d-private/src/unity2dpanel.cpp' --- libunity-2d-private/src/unity2dpanel.cpp 2011-09-22 09:55:59 +0000 +++ libunity-2d-private/src/unity2dpanel.cpp 2012-07-26 08:36:07 +0000 @@ -48,6 +48,7 @@ QPropertyAnimation* m_slideOutAnimation; bool m_useStrut; int m_delta; + int m_screen; bool m_manualSliding; void setStrut(ulong* struts) @@ -96,8 +97,9 @@ void updateGeometry() { + QDesktopWidget* desktop = QApplication::desktop(); - const QRect screen = desktop->screenGeometry(q); + const QRect screen = desktop->screenGeometry(m_screen); const QRect available = desktop->availableGeometry(q); QRect rect; @@ -151,6 +153,7 @@ d->q = this; d->m_edge = Unity2dPanel::TopEdge; d->m_indicatorsManager = 0; + d->m_screen = 0; d->m_useStrut = true; d->m_delta = 0; d->m_manualSliding = false; @@ -178,8 +181,9 @@ } else { setAutoFillBackground(true); } - + connect(QApplication::desktop(), SIGNAL(workAreaResized(int)), SLOT(slotWorkAreaResized(int))); + connect(QApplication::desktop(), SIGNAL(resized(int)), SLOT(slotResized(int))); } Unity2dPanel::~Unity2dPanel() @@ -198,6 +202,11 @@ } } +void Unity2dPanel::setScreen(int screen) +{ + d->m_screen = screen; +} + Unity2dPanel::Edge Unity2dPanel::edge() const { return d->m_edge; @@ -222,6 +231,7 @@ void Unity2dPanel::resizeEvent(QResizeEvent* event) { QWidget::resizeEvent(event); + d->updateEdge(); d->m_slideOutAnimation->setEndValue(-panelSize()); } @@ -232,6 +242,13 @@ } } +void Unity2dPanel::slotResized(int screen) +{ + if (x11Info().screen() == screen) { + d->updateEdge(); + } +} + void Unity2dPanel::paintEvent(QPaintEvent* event) { // Necessary because Oxygen thinks it knows better what to paint in the background === modified file 'libunity-2d-private/src/unity2dpanel.h' --- libunity-2d-private/src/unity2dpanel.h 2011-09-29 16:58:34 +0000 +++ libunity-2d-private/src/unity2dpanel.h 2012-07-26 08:37:11 +0000 @@ -58,6 +58,7 @@ ~Unity2dPanel(); void setEdge(Edge); + void setScreen(int); Edge edge() const; void addWidget(QWidget*); @@ -96,6 +97,7 @@ private Q_SLOTS: void slotWorkAreaResized(int screen); + void slotResized(int screen); private: Q_DISABLE_COPY(Unity2dPanel) === modified file 'panel/app/panelmanager.cpp' --- panel/app/panelmanager.cpp 2011-09-29 16:58:34 +0000 +++ panel/app/panelmanager.cpp 2012-06-20 07:48:35 +0000 @@ -144,6 +144,7 @@ panel->setAccessibleName("Top Panel"); panel->setEdge(Unity2dPanel::TopEdge); panel->setFixedHeight(24); + panel->setScreen(screen); QPoint p; if (QApplication::isRightToLeft()) { @@ -230,7 +231,7 @@ QDesktopWidget* desktop = QApplication::desktop(); int screen = desktop->screenNumber(QCursor::pos()); Unity2dPanel* panel; - + if (screen >= m_panels.size()) { return; }