MultiMonitor Behavior: Screen corners/edges are not correctly identified by Compiz when using multiple monitors with different resolutions

Bug #1011167 reported by MC Return
20
This bug affects 4 people
Affects Status Importance Assigned to Milestone
Compiz
New
Low
Unassigned

Bug Description

When using a 1920x1200 (left) and a 1280x1024 (right) monitor for example either the bottom right corner or the top right corner (for Screen bindings) will not be correctly identified by Compiz depending on the Ubuntu Displays settings (see attached screenies).
A maximum of 3 corners will be available, while one edge on the monitor with smaller resolution will not be available to trigger shortcuts.

[Test Case]

1. Ensure you have a 2 monitor setup, with one having a smaller resolution than the other
2. Open CCSM->General Options->Key bindings tab
3. Click the "Show Desktop" Monitor Mouse Binding button (set to none by default)
4. Test all combinations (8) by activating them (best all at once)
5. Now move the mouse to test all edges/corners of your setup and trigger "Show Desktop" (if it worked move the mouse to the spot again to restore your windows)
6. Test all edges and corners of your multimonitor setup one by one

Expected result:
You should be able to set all corners (4) and edges (4) and to successfully trigger those.
2 corners and 3 edges should be working per monitor (no matter if horizontal or vertical config).

Actual result:
Your monitor with the smaller resolution will just have 1 corner working and just 2 edges will work there.

Note: This test is describing a common dual monitor setup (laptop && external monitor with other resolution for example).

Probably the virtual screen size (which is 3200x1200 in this case) is used to calculate the edges and corners.
It seems the code to calculate them is in src/screen.cpp, line 2299+: PrivateScreen::updateScreenEdges ()

Revision history for this message
MC Return (mc-return) wrote :
Revision history for this message
MC Return (mc-return) wrote :
Changed in compiz:
milestone: none → 0.9.8.0
importance: Undecided → Medium
MC Return (mc-return)
tags: added: amd64 compiz-0.9 precise running-unity ubuntu
Changed in compiz:
milestone: 0.9.8.0 → 0.9.8.1
Changed in compiz:
milestone: 0.9.8.2 → 0.9.8.4
Changed in compiz:
milestone: 0.9.8.4 → 0.9.9.0
MC Return (mc-return)
description: updated
summary: - MultiMonitor Behavior: Screen edges are not correctly identified by
- Compiz when using multiple monitors with different resolutions
+ MultiMonitor Behavior: Screen corners/edges are not correctly identified
+ by Compiz when using multiple monitors with different resolutions
MC Return (mc-return)
description: updated
Changed in compiz:
milestone: 0.9.9.0 → 0.9.9.2
Changed in compiz:
milestone: 0.9.9.2 → 0.9.10.0
Revision history for this message
Sam Spilsbury (smspillaz) wrote :

I tried working on this in the past and I remember that it was quite tricky to get right. There's a bunch of difficulty that comes from handling such exotic configurations, namely what happens when you have a situation where there is more than one edge for another perpendicular axis, for example

-----| |----
| | | |
| ----- |
| |
| |----| |
|---- -----

There are two possible versions of each screen corner - which one should be the corner for the purposes of the corner actions?

Its probably fixable, its just going to take such a huge amount of time that I don't think I'll be the one doing it.

Revision history for this message
Sam Spilsbury (smspillaz) wrote :

(To clarify that diagram without whitespace, which launchpad removes)

-----|sssss|-------
|ssss|sssss |sss|
|ssss|----- |ssss|
|ssssssssssssss|
|ssss|------|ssss|
|----ssssss|-----|

Revision history for this message
MC Return (mc-return) wrote :

Yeah, it is really tricky - not an easy task to get this one right...

Revision history for this message
MC Return (mc-return) wrote :

Do you know where I could get the information which monitor is where ?

I mean the xorg.conf stuff isLeftOf isRightOf...

Then it could be doable, we just would have to allow and define multiple bottom/top edges for a horizontal dual-screen config for example... The logic would then not be that complicated even. But a quick look just revealed the virtual size to me, which is quite useless as it is always bigger...

We can check *really* exotic cases, like in your diagram ;) first and fall back to the virtual screen size for the corner/edge calculation in this case...
Our main case would be horizontal-display config with 2 or 3 devices with different resolutions, as for same resolutions the virtual size will work just fine...

Revision history for this message
MC Return (mc-return) wrote :

I've set Priority to "Low", because in the worst case scenario the user just misses 1 corner and 1 edge shortcut.

Changed in compiz:
importance: Medium → Low
MC Return (mc-return)
Changed in compiz:
milestone: 0.9.10.0 → 0.9.11.0
Revision history for this message
Didier L (l-farquaad) wrote :

I didn't understand what was going on at first in my setup, then I understood it could be a bug like this.

In my case compiz actually misses 2 edges because the screen resolutions differ (1920×1080 vs 1680×1050) and I aligned them to match their physical position. My setup is thus like this:

...................╔══════════════════╗
╔══════════════════╝..................║
║.....................................║
║.....................................║
║.....................................║
║..................╔══════════════════╝
╚══════════════════╝...................

Which make the shortcuts of both the top edge of the left screen and the bottom edge of the right screen non-working.

Stephen M. Webb (bregma)
Changed in compiz:
milestone: 0.9.11.0 → 0.9.12.1
Stephen M. Webb (bregma)
Changed in compiz:
milestone: 0.9.12.1 → 0.9.12.2
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.