Blob Blame History Raw
From 3c9e3e1850f0690a02f351c4d8fac23bc5234cde Mon Sep 17 00:00:00 2001
From: Benjamin Otte <otte@redhat.com>
Date: Wed, 27 Nov 2013 19:04:14 +0100
Subject: [PATCH] fail-whale-dialog: Implement hfw size requests

In case of the failure dialog, height-for-width size requests should
not behave differently from regular size requests, so implement
those methods to avoid falling back to GtkBin's implementation,
which results in a mispositioned dialog.
---
 gnome-session/gsm-fail-whale-dialog.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnome-session/gsm-fail-whale-dialog.c b/gnome-session/gsm-fail-whale-dialog.c
index f35be6a..0703f24 100644
--- a/gnome-session/gsm-fail-whale-dialog.c
+++ b/gnome-session/gsm-fail-whale-dialog.c
@@ -195,6 +195,19 @@ gsm_fail_whale_dialog_get_preferred_width (GtkWidget *widget,
 }
 
 static void
+gsm_fail_whale_dialog_get_preferred_width_for_height (GtkWidget *widget,
+                                                      gint       for_height,
+                                                      gint      *minimal_width,
+                                                      gint      *natural_width)
+{
+        GtkRequisition requisition;
+
+        gsm_fail_whale_dialog_size_request (widget, &requisition);
+
+        *minimal_width = *natural_width = requisition.width;
+}
+
+static void
 gsm_fail_whale_dialog_get_preferred_height (GtkWidget *widget,
                                             gint      *minimal_height,
                                             gint      *natural_height)
@@ -207,6 +220,19 @@ gsm_fail_whale_dialog_get_preferred_height (GtkWidget *widget,
 }
 
 static void
+gsm_fail_whale_dialog_get_preferred_height_for_width (GtkWidget *widget,
+                                                      gint       for_width,
+                                                      gint      *minimal_height,
+                                                      gint      *natural_height)
+{
+        GtkRequisition requisition;
+
+        gsm_fail_whale_dialog_size_request (widget, &requisition);
+
+        *minimal_height = *natural_height = requisition.height;
+}
+
+static void
 gsm_fail_whale_dialog_class_init (GsmFailWhaleDialogClass *klass)
 {
         GtkWidgetClass *widget_class;
@@ -217,6 +243,8 @@ gsm_fail_whale_dialog_class_init (GsmFailWhaleDialogClass *klass)
         widget_class->unrealize = gsm_fail_whale_dialog_unrealize;
         widget_class->get_preferred_width = gsm_fail_whale_dialog_get_preferred_width;
         widget_class->get_preferred_height = gsm_fail_whale_dialog_get_preferred_height;
+        widget_class->get_preferred_width_for_height = gsm_fail_whale_dialog_get_preferred_width_for_height;
+        widget_class->get_preferred_height_for_width = gsm_fail_whale_dialog_get_preferred_height_for_width;
 
         g_type_class_add_private (klass, sizeof (GsmFailWhaleDialogPrivate));
 }
-- 
1.8.4.2