diff options
author | Mohammed Sadiq <sadiqpkp@gmail.com> | 2019-07-20 02:22:03 +0000 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2019-07-20 02:22:03 +0000 |
commit | e1cd43cb4819fc2deb773593c1121bc469d2da66 (patch) | |
tree | 8a2e5383f4b1cb0dc372557bbd56ce48c267074b | |
parent | 197d261df3fd0ac4dc03a56b796cc53bccc511ca (diff) | |
download | gnome-control-center-e1cd43cb4819fc2deb773593c1121bc469d2da66.tar.gz |
background: Get Preview aspect ratio from primary monitor
Get the aspect ratio from Primary monitor, and allow the preview
to have smaller size, so that it works well on smaller screens
-rw-r--r-- | panels/background/cc-background-panel.ui | 43 | ||||
-rw-r--r-- | panels/background/cc-background-preview.c | 53 | ||||
-rw-r--r-- | panels/background/cc-background-preview.ui | 6 |
3 files changed, 82 insertions, 20 deletions
diff --git a/panels/background/cc-background-panel.ui b/panels/background/cc-background-panel.ui index 25cc62ea5..3cde1aa78 100644 --- a/panels/background/cc-background-panel.ui +++ b/panels/background/cc-background-panel.ui @@ -11,26 +11,35 @@ <property name="orientation">vertical</property> <child> - <object class="GtkBox"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="spacing">24</property> - <property name="margin">32</property> - <property name="halign">center</property> - <child> - <object class="CcBackgroundPreview" id="desktop_preview"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="halign">end</property> - <property name="valign">center</property> - </object> - </child> + <object class="HdyColumn"> + <property name="visible">1</property> + <property name="maximum_width">600</property> + <property name="linear_growth_width">400</property> <child> - <object class="CcBackgroundPreview" id="lock_screen_preview"> + <object class="GtkBox"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="is-lock-screen">True</property> - <property name="valign">center</property> + <property name="spacing">24</property> + <property name="margin-start">12</property> + <property name="margin-end">12</property> + <property name="margin-top">18</property> + <property name="margin-bottom">18</property> + <property name="hexpand">True</property> + <child> + <object class="CcBackgroundPreview" id="desktop_preview"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="valign">center</property> + </object> + </child> + <child> + <object class="CcBackgroundPreview" id="lock_screen_preview"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="is-lock-screen">True</property> + <property name="valign">center</property> + </object> + </child> </object> </child> </object> diff --git a/panels/background/cc-background-preview.c b/panels/background/cc-background-preview.c index 14717377d..a4fa31233 100644 --- a/panels/background/cc-background-preview.c +++ b/panels/background/cc-background-preview.c @@ -247,6 +247,55 @@ cc_background_preview_set_property (GObject *object, } } +static GtkSizeRequestMode +cc_background_preview_get_request_mode (GtkWidget *widget) +{ + return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH; +} + +static gfloat +get_primary_monitor_aspect_ratio (void) +{ + GdkDisplay *display; + GdkMonitor *primary_monitor; + gfloat aspect_ratio; + + display = gdk_display_get_default (); + primary_monitor = gdk_display_get_primary_monitor (display); + aspect_ratio = 16.0 / 9.0; + + if (primary_monitor) + { + GdkRectangle monitor_layout; + gdk_monitor_get_geometry (primary_monitor, &monitor_layout); + aspect_ratio = monitor_layout.width / (gfloat) monitor_layout.height; + } + + return aspect_ratio; +} + +static void +cc_background_preview_get_preferred_height_for_width (GtkWidget *widget, + gint width, + gint *minimum, + gint *natural) +{ + gfloat aspect_ratio = get_primary_monitor_aspect_ratio (); + + *minimum = *natural = MAX (2, width / aspect_ratio); +} + +static void +cc_background_preview_get_preferred_width_for_height (GtkWidget *widget, + gint height, + gint *minimum, + gint *natural) +{ + gfloat aspect_ratio = get_primary_monitor_aspect_ratio (); + + *minimum = *natural = MAX (2, height * aspect_ratio); +} + static void cc_background_preview_class_init (CcBackgroundPreviewClass *klass) { @@ -257,6 +306,10 @@ cc_background_preview_class_init (CcBackgroundPreviewClass *klass) object_class->get_property = cc_background_preview_get_property; object_class->set_property = cc_background_preview_set_property; + widget_class->get_request_mode = cc_background_preview_get_request_mode; + widget_class->get_preferred_height_for_width = cc_background_preview_get_preferred_height_for_width; + widget_class->get_preferred_width_for_height = cc_background_preview_get_preferred_width_for_height; + properties[PROP_IS_LOCK_SCREEN] = g_param_spec_boolean ("is-lock-screen", "Lock screen", "Whether the preview is of the lock screen", diff --git a/panels/background/cc-background-preview.ui b/panels/background/cc-background-preview.ui index c9a8d61f9..da1f23943 100644 --- a/panels/background/cc-background-preview.ui +++ b/panels/background/cc-background-preview.ui @@ -4,9 +4,8 @@ <template class="CcBackgroundPreview" parent="GtkBox"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="expand">False</property> - <property name="width-request">384</property> - <property name="height-request">208</property> + <property name="hexpand">True</property> + <property name="vexpand">False</property> <style> <class name="frame" /> </style> @@ -15,6 +14,7 @@ <object class="GtkOverlay"> <property name="visible">True</property> <property name="can-focus">False</property> + <property name="hexpand">True</property> <!-- Wallpaper --> <child> |