From c862d81db1e0ae1ce1f62a3aac1d915f5036c81c Mon Sep 17 00:00:00 2001 From: Victor Kareh Date: Thu, 1 Feb 2018 09:20:32 -0500 Subject: Add HiDPI support for lock screen (#148) * Password dialog is now scaled * Background of lock screen is now scaled --- src/gs-lock-plug.c | 32 +++++++++++++++++++++++++++++--- src/gs-manager.c | 6 ++++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/gs-lock-plug.c b/src/gs-lock-plug.c index 07993c5..5bea72a 100644 --- a/src/gs-lock-plug.c +++ b/src/gs-lock-plug.c @@ -980,6 +980,30 @@ set_face_image (GSLockPlug *plug) return TRUE; } +static void +gs_lock_plug_get_preferred_width (GtkWidget *widget, gint *minimum_width, gint *natural_width) +{ + gint scale; + + GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->get_preferred_width (widget, minimum_width, natural_width); + + scale = gtk_widget_get_scale_factor (widget); + *minimum_width /= scale; + *natural_width /= scale; +} + +static void +gs_lock_plug_get_preferred_height_for_width (GtkWidget *widget, gint width, gint *minimum_height, gint *natural_height) +{ + gint scale; + + GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->get_preferred_height_for_width (widget, width, minimum_height, natural_height); + + scale = gtk_widget_get_scale_factor (widget); + *minimum_height /= scale; + *natural_height /= scale; +} + static void gs_lock_plug_show (GtkWidget *widget) { @@ -1251,9 +1275,11 @@ gs_lock_plug_class_init (GSLockPlugClass *klass) object_class->get_property = gs_lock_plug_get_property; object_class->set_property = gs_lock_plug_set_property; - widget_class->style_set = gs_lock_plug_style_set; - widget_class->show = gs_lock_plug_show; - widget_class->hide = gs_lock_plug_hide; + widget_class->style_set = gs_lock_plug_style_set; + widget_class->show = gs_lock_plug_show; + widget_class->hide = gs_lock_plug_hide; + widget_class->get_preferred_width = gs_lock_plug_get_preferred_width; + widget_class->get_preferred_height_for_width = gs_lock_plug_get_preferred_height_for_width; klass->close = gs_lock_plug_close; diff --git a/src/gs-manager.c b/src/gs-manager.c index 130227b..36bb752 100644 --- a/src/gs-manager.c +++ b/src/gs-manager.c @@ -1309,6 +1309,7 @@ apply_background_to_window (GSManager *manager, GdkScreen *screen; int width; int height; + gint scale; mate_bg_load_from_preferences (manager->priv->bg); @@ -1320,8 +1321,9 @@ apply_background_to_window (GSManager *manager, display = gs_window_get_display (window); screen = gdk_display_get_default_screen (display); - width = WidthOfScreen (gdk_x11_screen_get_xscreen (screen)); - height = HeightOfScreen (gdk_x11_screen_get_xscreen (screen)); + scale = gdk_window_get_scale_factor (gdk_screen_get_root_window (screen)); + width = WidthOfScreen (gdk_x11_screen_get_xscreen (screen)) / scale; + height = HeightOfScreen (gdk_x11_screen_get_xscreen (screen)) / scale; gs_debug ("Creating background w:%d h:%d", width, height); surface = mate_bg_create_surface (manager->priv->bg, gs_window_get_gdk_window (window), -- cgit v1.2.1