[brasero] Fix #633375 - prepare for the demise of size_request Patch by Matthias Clasen



commit 8c97ee72501bbebc1677ac1ff5b173cccf190c00
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Mon Nov 8 19:48:53 2010 +0100

    Fix #633375 - prepare for the demise of size_request
    Patch by Matthias Clasen

 libbrasero-utils/brasero-jacket-view.c |   52 ++++++++++++++++++++++++++-----
 src/brasero-player-bacon.c             |   31 ++++++++++++++----
 2 files changed, 67 insertions(+), 16 deletions(-)
---
diff --git a/libbrasero-utils/brasero-jacket-view.c b/libbrasero-utils/brasero-jacket-view.c
index 5a84b49..35de456 100644
--- a/libbrasero-utils/brasero-jacket-view.c
+++ b/libbrasero-utils/brasero-jacket-view.c
@@ -1280,12 +1280,14 @@ brasero_jacket_view_realize (GtkWidget *widget)
 }
 
 static void
-brasero_jacket_view_size_request (GtkWidget *widget,
-				  GtkRequisition *request)
+brasero_jacket_view_get_preferred_width (GtkWidget *widget,
+                                         gint      *minimum,
+                                         gint      *natural)
 {
 	BraseroJacketViewPrivate *priv;
 	GtkWidget *toplevel;
 	gdouble resolution;
+        gint width;
 
 	priv = BRASERO_JACKET_VIEW_PRIVATE (widget);
 
@@ -1299,16 +1301,47 @@ brasero_jacket_view_size_request (GtkWidget *widget,
 	resolution = gdk_screen_get_resolution (gtk_window_get_screen (GTK_WINDOW (toplevel)));
 
 	if (priv->side == BRASERO_JACKET_FRONT) {
-		request->width = COVER_WIDTH_FRONT_INCH * resolution + BRASERO_JACKET_VIEW_MARGIN * 2.0;
-		request->height = COVER_HEIGHT_FRONT_INCH * resolution + BRASERO_JACKET_VIEW_MARGIN * 2.0;
+		width = COVER_WIDTH_FRONT_INCH * resolution + BRASERO_JACKET_VIEW_MARGIN * 2.0;
 	}
 	else if (priv->side == BRASERO_JACKET_BACK) {
-		request->width = COVER_WIDTH_BACK_INCH * resolution +
+		width = COVER_WIDTH_BACK_INCH * resolution +
 				 BRASERO_JACKET_VIEW_MARGIN * 2.0;
-		request->height = COVER_HEIGHT_BACK_INCH * resolution +
-				  COVER_WIDTH_SIDE_INCH * resolution +
-				  BRASERO_JACKET_VIEW_MARGIN * 3.0;
 	}
+
+        *minimum = *natural = width;
+}
+
+static void
+brasero_jacket_view_get_preferred_height (GtkWidget *widget,
+                                          gint      *minimum,
+                                          gint      *natural)
+{
+	BraseroJacketViewPrivate *priv;
+	GtkWidget *toplevel;
+	gdouble resolution;
+        gint height;
+
+	priv = BRASERO_JACKET_VIEW_PRIVATE (widget);
+
+	if (!gtk_widget_get_parent (widget))
+		return;
+
+	toplevel = gtk_widget_get_toplevel (widget);
+	if (!GTK_IS_WINDOW (toplevel))
+		return;
+
+	resolution = gdk_screen_get_resolution (gtk_window_get_screen (GTK_WINDOW (toplevel)));
+
+	if (priv->side == BRASERO_JACKET_FRONT) {
+		height = COVER_HEIGHT_FRONT_INCH * resolution + BRASERO_JACKET_VIEW_MARGIN * 2.0;
+	}
+	else if (priv->side == BRASERO_JACKET_BACK) {
+		height = COVER_HEIGHT_BACK_INCH * resolution +
+			 COVER_WIDTH_SIDE_INCH * resolution +
+			 BRASERO_JACKET_VIEW_MARGIN * 3.0;
+	}
+
+        *minimum = *natural = height;
 }
 
 static void
@@ -1507,7 +1540,8 @@ brasero_jacket_view_class_init (BraseroJacketViewClass *klass)
 	widget_class->draw = brasero_jacket_view_draw;
 	widget_class->realize = brasero_jacket_view_realize;
 	widget_class->size_allocate = brasero_jacket_view_size_allocate;
-	widget_class->size_request = brasero_jacket_view_size_request;
+	widget_class->get_preferred_width = brasero_jacket_view_get_preferred_width;
+	widget_class->get_preferred_height = brasero_jacket_view_get_preferred_height;
 
 	container_class->forall = brasero_jacket_view_container_forall;
 	container_class->remove = brasero_jacket_view_container_remove;
diff --git a/src/brasero-player-bacon.c b/src/brasero-player-bacon.c
index e9c93ab..49854a9 100644
--- a/src/brasero-player-bacon.c
+++ b/src/brasero-player-bacon.c
@@ -200,19 +200,35 @@ brasero_player_bacon_draw (GtkWidget *widget, cairo_t *cr)
 }
 
 static void
-brasero_player_bacon_size_request (GtkWidget *widget,
-				   GtkRequisition *requisition)
+brasero_player_bacon_get_preferred_width (GtkWidget *widget,
+                                          gint      *minimum,
+                                          gint      *natural)
 {
 	BraseroPlayerBacon *bacon;
 
 	g_return_if_fail (widget != NULL);
 	bacon = BRASERO_PLAYER_BACON (widget);
 
-	requisition->width = PLAYER_BACON_WIDTH;
-	requisition->height = PLAYER_BACON_HEIGHT;
+	*minimum = *natural = PLAYER_BACON_WIDTH;
 
-	if (GTK_WIDGET_CLASS (brasero_player_bacon_parent_class)->size_request)
-		GTK_WIDGET_CLASS (brasero_player_bacon_parent_class)->size_request (widget, requisition);
+	if (GTK_WIDGET_CLASS (brasero_player_bacon_parent_class)->get_preferred_width)
+		GTK_WIDGET_CLASS (brasero_player_bacon_parent_class)->get_preferred_width (widget, minimum, natural);
+}
+
+static void
+brasero_player_bacon_get_preferred_height (GtkWidget *widget,
+                                           gint      *minimum,
+                                          gint      *natural)
+{
+	BraseroPlayerBacon *bacon;
+
+	g_return_if_fail (widget != NULL);
+	bacon = BRASERO_PLAYER_BACON (widget);
+
+	*minimum = *natural = PLAYER_BACON_WIDTH;
+
+	if (GTK_WIDGET_CLASS (brasero_player_bacon_parent_class)->get_preferred_height)
+		GTK_WIDGET_CLASS (brasero_player_bacon_parent_class)->get_preferred_height (widget, minimum, natural);
 }
 
 static void
@@ -672,7 +688,8 @@ brasero_player_bacon_class_init (BraseroPlayerBaconClass *klass)
 	widget_class->draw = brasero_player_bacon_draw;
 	widget_class->realize = brasero_player_bacon_realize;
 	widget_class->unrealize = brasero_player_bacon_unrealize;
-	widget_class->size_request = brasero_player_bacon_size_request;
+        widget_class->get_preferred_width = brasero_player_bacon_get_preferred_width;
+        widget_class->get_preferred_height = brasero_player_bacon_get_preferred_height;
 	widget_class->size_allocate = brasero_player_bacon_size_allocate;
 
 	brasero_player_bacon_signals [STATE_CHANGED_SIGNAL] = 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]