Commit graph

212 commits

Author SHA1 Message Date
Alice Mikhaylenko
df06d76eab display: Port to AdwNavigationView and AdwToolbarView
Duplicate the apply titlebar between pages. This should really be
redesigned.
2023-08-25 08:00:43 +00:00
Robert Ancell
c7ce4e8962 display: Fix name of parent class variable 2023-06-06 07:54:38 +00:00
Timotej Šulík
8bf042cf56 display: Fix invalid panel state after canceling changes
When switching from Mirror mode to Join mode
and opening a monitor leaflet child by clicking
its row, clicking Cancel on the title bar would
get the UI into an invalid state.

Closes #2513.
2023-06-01 08:30:20 +00:00
Robert Ancell
f756184e3b display: Do signal handlers in swapped form 2023-05-30 08:36:22 +00:00
Timotej Šulík
4102a16b40 display: Fix stuck window subtitle in the Displays panel
In case an inapplicable display configuration
is attempted, and the issue is then resolved,
the warning window subtitle remains displayed
even under the "Apply Changes?" title.

Closes #2512.
2023-05-30 00:58:16 +02:00
Timotej Šulík
4fe26944d8 display: Fix gaps when numbering unusable displays 2023-05-28 22:16:10 +00:00
Timotej Šulík
4ed1af010a display: Allow mirroring for any number of displays 2023-05-25 21:35:30 +00:00
Chris Mayo
92c4b6a706 Fix panel crashes due to unknown types in UI descriptions
Error building template class 'CcSearchPanel' for an instance of type 'CcSearchPanel': .:0:0 Invalid object type 'CcListRow'

Error building template class 'CcDisplayPanel' for an instance of type 'CcDisplayPanel': .:0:0 Invalid object type 'CcListRow'

Error building template class 'CcMousePanel' for an instance of type 'CcMousePanel': .:0:0 Invalid object type 'CcIllustratedRow'

Error building template class 'CcKeyboardPanel' for an instance of type 'CcKeyboardPanel': .:0:0 Invalid object type 'CcListRow'

Error building template class 'CcRegionPanel' for an instance of type 'CcRegionPanel': .:0:0 Invalid object type 'CcListRow'

Error building template class 'CcUaPanel' for an instance of type 'CcUaPanel': .:0:0 Invalid object type 'CcListRow'

Error building template class 'CcUserPanel' for an instance of type 'CcUserPanel': .:0:0 Invalid object type 'CcAvatarChooser'
Error building template class 'CcUserPanel' for an instance of type 'CcUserPanel': .:0:0 Invalid object type 'CcListRow'

Error building template class 'CcDateTimePanel' for an instance of type 'CcDateTimePanel': .:0:0 Invalid object type 'CcTzDialog'
cc_tz_dialog_get_selected_location: assertion 'CC_IS_TZ_DIALOG (self)' failed
dumped core
Error building template class 'CcDateTimePanel' for an instance of type 'CcDateTimePanel': .:0:0 Invalid object type 'CcListRow'

Error building template class 'CcInfoOverviewPanel' for an instance of type 'CcInfoOverviewPanel': .:0:0 Invalid object type 'CcHostnameEntry'
2023-04-17 12:14:58 +00:00
Timotej Šulík
4702757b93 display: Fix display enabled toggle visibility 2023-04-11 12:16:54 +00:00
Emilia Daria Majewska
4218aa6e4b display: Remove the monitor argument for cc_display_config_snap_output
The function tries to snap all the outputs anyway,
so might as well remove the unnecessary argument.
2023-03-23 15:52:15 +00:00
Marco Trevisan (Treviño)
852b39cdc6 dispaly: Allow configuring all monitors and apply settings at once
When multiple monitors are available, it's not possible anymore to
configure them all and eventually apply all the changed parameters.

To make this possible again, add a back button in the apply titlebar
that is shown only when we are in the display-settings child.

See: https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/2012043
2023-03-21 15:33:16 +00:00
Marco Melorio
acadd521b1 display: Remove deprecated gtk_widget_show/hide usage 2023-01-02 22:10:39 +00:00
Mohammed Sadiq
a850a7260b display: Use CcListRow for rows with go-next icon 2022-11-25 20:59:02 +05:30
Felipe Borges
37921f8a46 display: Fix primary monitor selection issue with AdwComboRow
We were connecting to the selected-index property when AdwComboRow
actually has a selected-item property. This is the same as
issue #2025

Fixes #2028
2022-08-24 11:18:35 +02:00
Mpho Jele
5782c7312c display: remove unused night light dialog code 2022-08-15 08:14:27 +00:00
Carlos Garnacho
4eb075e5a5 display: Set a smaller width to display arrangement widget
This default size happens to expand the panel content horizontally,
this is seen as small jumps changing between joined and cloned views.
With this slightly smaller size, no further size jumps happen.
2022-07-08 13:41:30 -03:00
Carlos Garnacho
e8fcfc05a6 display: Make "Mirror" option show a single configuration for all displays
Since all displays are constrained to the same options, promote one so it's
shown in the main panel, the rest does work itself out.

Closes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1849
2022-07-08 13:41:30 -03:00
Carlos Garnacho
dc8eb2c22c display: Set "Multiple Displays" option on top
And make the display arrangements widget a row of the displays
preferences group, as per the latest mockups.

Closes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1851
2022-07-08 13:41:30 -03:00
Jonas Ådahl
9e4f15353c display: Use virtual clone modes when mirroring
These are not real modes, but just as place holders when generating
'mirror' configurations. The clone modes will be just to match the
flag/dimension, while the actual mode applied will be individual for
each monitor.

This allows monitors to have their own refresh rates, which is possible
since a few mutter versions back. This also matches how mutter itself
generates mirror modes when doing so via the key binding.
2022-06-27 14:06:16 +00:00
Georges Basile Stavracas Neto
e5a49dcf7b display: Return to main page after applying changes
After applying a change, it is useful to see the new state of the
monitors, so move back to the 'displays' page after applying.
2022-04-16 11:47:11 +00:00
Georges Basile Stavracas Neto
ced1386fcd display: Update header title when setting output
Instead of updating the titlebar of the monitor preferences page in
the row clicked callback, update it in set_current_output(). This
ensures that the title of the page is always in sync with the monitor
it's displaying.
2022-04-16 11:47:11 +00:00
Alberts Muktupāvels
a581395221 display: fix monitor labels
has-toplevel-focus property has been removed from GTK 4:
0ce9f26dc5

https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1697
2022-03-18 22:08:49 +00:00
Jonas Ådahl
21862c3e48 display: Only display configuration options if apply is allowed
org.gnome.Mutter.DisplayConfig contains a new property that tells
whether apply will be allowed to be called or not. Whether it is true or
not depends on policy stored in any of its monitors.xml configuration
files.

In order to make it clearer that configuration is not possible, except
for night light, make sure to hide the unconfigurable parts, leaving
only night light.
2022-01-25 16:43:26 +00:00
Georges Basile Stavracas Neto
b756f1e07a display: Rework titlebar handling entirely
Move all titlebars to the panel itself. Add an overlay with
the apply titlebar, which shows the apply / cancel titlebar
above whatever current titlebar is visible.

Add titlebars to the Night Light, and display settings pages.
2022-01-20 02:23:42 +00:00
Georges Basile Stavracas Neto
4300a4a290 panels: Use new CcPanel helpers for title widgets
This should significantly simplify these panels, by not forcing
them to override GObject.constructed all the time. Most panels
were quite straightfoward.
2022-01-20 02:23:42 +00:00
Georges Basile Stavracas Neto
9d324452c5 display: Use AdwLeaflet in CcDisplayPanel
This makes the transition between the main page, night light,
and display preferences more inline with other GNOME apps
using GTK4.
2022-01-18 17:03:14 +00:00
Georges Basile Stavracas Neto
06caebd0ba display: Remove SINGLE mode
We control monitors individually now, making the SINGLE mode
unnecessary.

Remove the SINGLE monitor mode, and replace it with JOIN if
required.
2022-01-18 17:03:14 +00:00
Georges Basile Stavracas Neto
1d6bab12cf display: Add enabled switch to CcDisplaySettings
This allow enabling and disabling each display individually.
2022-01-18 17:03:14 +00:00
Georges Basile Stavracas Neto
de758cc962 display: Show monitor settings in main page when single
When there's only one display, there's no need to redirect
users to another page. In this case, simply move the settings
widget to the main page.
2022-01-18 17:03:14 +00:00
Georges Basile Stavracas Neto
67e8c7f5c6 display: Add monitor rows to display settings group
They allow selecting a monitor to config, and navigating to
the monitor settings page.
2022-01-18 17:03:14 +00:00
Georges Basile Stavracas Neto
7091ddee49 display: Remove display section from main page
We'll soon replace this by rows, so let's remove these widgets
now. They accounted for a lot of the complexity of the panel!
2022-01-18 17:03:14 +00:00
Georges Basile Stavracas Neto
8c8e123690 display: Add row to switch to Night Light page
This adds a new listbox with a single row, as per
mockups, to switch to the Night Light page; and
also adds a back button to switch back to the main
page.
2022-01-18 17:03:14 +00:00
Georges Basile Stavracas Neto
07c4e0f6d3 display: Rename variable
The config_type_switcher_group preferences group now handles
more than config_type_switcher_row, so adjust the naming to
match that.
2022-01-18 17:03:14 +00:00
Georges Basile Stavracas Neto
2a838f8684 display: Move primary display row to display type group
As per mockup. Over the next commits, more parts of the
display panel will be moved to this group.
2022-01-18 17:03:14 +00:00
Georges Basile Stavracas Neto
f598fb3ed6 display: Port to GTK4 2021-12-14 22:34:21 -03:00
Guido Günther
8868510e33 display: Use ComboBox when folded
On small window sizes the ButtonBox can overflow the panel. This is
especially true in single display mode when no other elemnts prevent
shrinking to e.g. 360px width on phones. Use the ComboBox introduced in
632cb3c907 in these cases.

For that we introduce cc_display_settings_refresh_layout() to refresh
the layout when the folded state changes. This can later on be used for
more tweaks to shrink to smaller sizes.
2021-09-25 19:05:28 +00:00
Marco Trevisan (Treviño)
ca884dc666 display-panel: Clear the variant builder if not showing an OSD
When we've only one monitor active we are not showing the OSD but we're
leaking the variant used to request the shell to show the OSDs.
2021-06-15 17:30:36 +00:00
Guido Günther
5d4c7c5ee0 display-panel: Allow for smaller display sizes
This makes scaling work e.g. on the Librem 5's built-in display which
has a 720x1440 resolution. It's scaled to 200% by default so currently
hitting the 100% button makes it scale to 100% but then the 200% button
vanishes due to assumed too small resultion. Fix that by allowing for
360x720 as well.
2021-02-11 02:44:19 +00:00
vitorramos
e5b68871f8 display:Fix null pointer dereference 2020-12-13 22:51:09 +00:00
Benjamin Berg
43b444fba3 display: Try harder to select a good and working scale
When swicthing configurations, we should ensure that the selected scale
is valid. This is complicated by the fact that it depends on other
factors whether we need a single global scale or not.

Try to retain the scale that monitors have if possible. If that does not
work, try to use the old scale of the primary monitor everywhere. This
should result in a good behaviour in most situations.

Co-authored-by: Stéphane Travostino <steph@combo.cc>

Fixes: #1038
2020-10-29 20:27:29 +00:00
Benjamin Berg
66c81d8128 display: Fix possible recursion when configuration type changes
The UI rebuilding code may change the configuration type, which in turn
can trigger a UI rebuild. This should not be done if we are already
updating the UI (but must be done otherwise, as that means the user has
chosen to change the configuration).

Fixes: #1141
2020-10-12 03:22:15 +00:00
Carlos Garnacho
6782bc07db display: Hook to PanelOrientationManaged for accelerometer checks
This property gives means for Mutter to determine who is in charge of
display rotation for the built-in panel (us or Mutter). The UI must
reflect this change.

Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1018
2020-09-05 08:03:44 +00:00
Adrien Plazas
fd60c313df Stop using HANDY_USE_UNSTABLE_API
It isn't needed anymore since libhandy 0.90.0.
2020-08-18 02:51:04 +00:00
Robert Ancell
c0cfbeccff display: Connect signals with g_signal_connect_object in swapped form 2020-03-30 16:18:50 +13:00
Robert Ancell
f00a5e20cb display: Fix wrong widget type used 2020-03-30 01:45:57 +00:00
Robert Ancell
73469d3ba2 display: Replace GtkStack child names with widget references
The child names are easier to break if widgets are changed - this can't be
detected by the compiler.
2020-03-30 01:45:57 +00:00
Robert Ancell
93b14a4339 panel: Move shared GCancellable code into panel class
Make the panel class provide a cancellable that will be cancelled when the panel
is destroyed. Panel implementations can use this and not have to mangage the
cancellable themselves. Consolidate cases where panels had multiple cancellables
that were all being used for this behaviour.
2020-02-03 09:36:24 +13:00
Robert Ancell
19ccad96ae Whitespace fixes for g_autoptr coding style 2019-11-08 09:42:10 +13:00
Robert Ancell
9a2e821fe5 Initialize autoptr values to NULL.
These cases were safe, but if the code changed this risked freeing uninitialized
memory.
2019-10-03 10:58:38 +13:00
Benjamin Berg
4e800cc558 display: Consider monitors in landscape mode for minimum size
Some devices have panels with a native resolution in portrait mode. In
these cases the monitor will likely be used in landscape mode.

Accept the modes as if they are landscape rather than portrait. A
further improvement would be to restrict the orientation setting.

Fixes #639
2019-08-27 13:43:29 +00:00