GNOME Bugzilla – Bug 743816
"Apply" button on mirror setup greyed out for no obvious reason(?)
Last modified: 2015-02-23 18:41:46 UTC
Example setup: Monitor 1: Primary Monitor: at native resolution 1366x768 (but 1024x768 is supported with upscaling) Monitor 2: Secondary Monitor: turned off, native resolution 1024x768 Steps to reproduce: 1. Open settings 2. Click "Displays" on the "All Settings" overview page 3. Choose "Monitor 2" (important) 4. Click "Mirror". It will default to 1024x768 resolution. Expected result: "Apply" button is clickable, and clicking it will 1.) change the primary monitor to 1024x768, 2.) turn on monitor 2 at 1024x768 3.) enable mirror mode Actual result: "Apply" button is greyed out.
The culprit might be that I am trying to initiate mirror mode through Monitor 2, while that would cause a resolution change at Monitor 1. (it works fine the other way round, by going to "Monitor 1" and picking 1024x768 as Mirror resolution and clicking "Apply") However, as a user I couldn't care less. Just let me click "Apply" and make stuff work by initiating mirror mode at the selected resolution, unless another involved display doesn't support the resolution at all (which was not the case).
Created attachment 297289 [details] [review] display: In clone mode, set geometry of all outputs when one changes Otherwise we could fail to validate the new configuration depending on which output we're initializing mirror mode from. gnome_rr_config_applicable() creates a temporary array of outputs for validation and, in clone mode, all of them are assigned the same geometry but since it lacks context about which output the user is currently on it just uses the first one's geometry for all of them. If this first output isn't the one the user is changing in the UI then we never called _set_geometry() on it with a clone mode geometry and thus the validation would fail because the geometry used is that output's current mode which might not match the clone mode's. -- Ok, this one was tricky but this patch should fix it.
Review of attachment 297289 [details] [review]: make_clone_setup() in gsd-xrandr-manager.c does something similar. > geometry but since it lacks context about which output the user is > currently on it just uses the first one's geometry for all of them. If Missing some commas: geometry but, since it lacks context about which output the user is currently on, it just uses the first one's geometry for all of them. If
Pushing with the commas, thanks Attachment 297289 [details] pushed as 511265e - display: In clone mode, set geometry of all outputs when one changes