Merge lp:~osomon/unity-2d/one-panel-per-screen into lp:unity-2d/3.0

Proposed by Olivier Tilloy
Status: Merged
Approved by: Aurélien Gâteau
Approved revision: 508
Merged at revision: 549
Proposed branch: lp:~osomon/unity-2d/one-panel-per-screen
Merge into: lp:unity-2d/3.0
Diff against target: 81 lines (+32/-12)
2 files modified
panel/app/panelmanager.cpp (+31/-11)
panel/applets/appname/appnameapplet.cpp (+1/-1)
To merge this branch: bzr merge lp:~osomon/unity-2d/one-panel-per-screen
Reviewer Review Type Date Requested Status
Aurélien Gâteau (community) Approve
Review via email: mp+59089@code.launchpad.net

Commit message

[panel] Always show the main panel on the leftmost monitor, not the primary one.
The main panel is the one that contains the Ubuntu button that invokes the dash, and hosts the legacy systray icons.

Also fix the window controls to be displayed only on one panel for maximized windows.

To post a comment you must log in.
Revision history for this message
Aurélien Gâteau (agateau) wrote :

Great work!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'panel/app/panelmanager.cpp'
2--- panel/app/panelmanager.cpp 2011-04-04 16:44:29 +0000
3+++ panel/app/panelmanager.cpp 2011-04-26 15:35:40 +0000
4@@ -75,13 +75,13 @@
5 panel->setPalette(getPalette());
6 panel->setFixedHeight(24);
7
8- int primary = QApplication::desktop()->primaryScreen();
9- if (screen == primary) {
10+ int leftmost = QApplication::desktop()->screenNumber(QPoint());
11+ if (screen == leftmost) {
12 panel->addWidget(new HomeButtonApplet);
13 panel->addWidget(createSeparator());
14 }
15 panel->addWidget(new AppNameApplet);
16- if (screen == primary) {
17+ if (screen == leftmost) {
18 /* It doesn’t make sense to have more than one instance of the systray,
19 XEmbed’ed windows can be displayed only once anyway. */
20 panel->addWidget(new LegacyTrayApplet);
21@@ -111,19 +111,39 @@
22 void
23 PanelManager::onScreenCountChanged(int newCount)
24 {
25- QDesktopWidget* desktop = QApplication::desktop();
26- int size = m_panels.size();
27- /* Update the position of existing panels, and instantiate new panels. */
28- for (int i = 0; i < newCount; ++i) {
29+ if (newCount > 0) {
30+ QDesktopWidget* desktop = QApplication::desktop();
31+ int size = m_panels.size();
32 Unity2dPanel* panel;
33- if (i < size) {
34- panel = m_panels[i];
35+
36+ /* The first panel is always the one on the leftmost screen. */
37+ int leftmost = desktop->screenNumber(QPoint());
38+ if (size > 0) {
39+ panel = m_panels[0];
40 } else {
41- panel = instantiatePanel(i);
42+ panel = instantiatePanel(leftmost);
43 m_panels.append(panel);
44 }
45 panel->show();
46- panel->move(desktop->screenGeometry(i).topLeft());
47+ panel->move(desktop->screenGeometry(leftmost).topLeft());
48+
49+ /* Update the position of other existing panels, and instantiate new
50+ panels as needed. */
51+ int i = 1;
52+ for (int screen = 0; screen < newCount; ++screen) {
53+ if (screen == leftmost) {
54+ continue;
55+ }
56+ if (i < size) {
57+ panel = m_panels[i];
58+ } else {
59+ panel = instantiatePanel(screen);
60+ m_panels.append(panel);
61+ }
62+ panel->show();
63+ panel->move(desktop->screenGeometry(screen).topLeft());
64+ ++i;
65+ }
66 }
67 /* Remove extra panels if any. */
68 while (m_panels.size() > newCount) {
69
70=== modified file 'panel/applets/appname/appnameapplet.cpp'
71--- panel/applets/appname/appnameapplet.cpp 2011-03-30 16:21:18 +0000
72+++ panel/applets/appname/appnameapplet.cpp 2011-04-26 15:35:40 +0000
73@@ -227,7 +227,7 @@
74 );
75 bool showLabel = !(isMaximized && showMenu) && isUserVisibleApp && isOnSameScreen;
76
77- d->m_windowButtonWidget->setVisible(isMaximized);
78+ d->m_windowButtonWidget->setVisible(isOnSameScreen && isMaximized);
79
80 d->m_label->setVisible(showLabel);
81 if (showLabel) {

Subscribers

People subscribed via source and target branches