- Update to recent gtk (FTBFS)
This commit is contained in:
parent
04373e4587
commit
366c643e74
372
clutter-gtk-0.91.4-no-size-request.patch
Normal file
372
clutter-gtk-0.91.4-no-size-request.patch
Normal file
@ -0,0 +1,372 @@
|
|||||||
|
From 5dce4bd149935ad039b4aa1e33eb96a461b36818 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Emmanuele Bassi <ebassi@linux.intel.com>
|
||||||
|
Date: Wed, 01 Dec 2010 17:09:33 +0000
|
||||||
|
Subject: window: Do not use size-request
|
||||||
|
|
||||||
|
---
|
||||||
|
diff --git a/clutter-gtk/gtk-clutter-window.c b/clutter-gtk/gtk-clutter-window.c
|
||||||
|
index 1087cb1..d572d70 100644
|
||||||
|
--- a/clutter-gtk/gtk-clutter-window.c
|
||||||
|
+++ b/clutter-gtk/gtk-clutter-window.c
|
||||||
|
@@ -63,24 +63,31 @@ gtk_clutter_window_finalize (GObject *self)
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-gtk_clutter_window_size_request (GtkWidget *self,
|
||||||
|
- GtkRequisition *requisition)
|
||||||
|
+gtk_clutter_window_get_preferred_width (GtkWidget *self,
|
||||||
|
+ gint *minimum,
|
||||||
|
+ gint *natural)
|
||||||
|
{
|
||||||
|
- GtkClutterWindowPrivate *priv;
|
||||||
|
+ GtkClutterWindowPrivate *priv = GTK_CLUTTER_WINDOW (self)->priv;
|
||||||
|
GtkWidget *bin;
|
||||||
|
|
||||||
|
- g_return_if_fail (GTK_CLUTTER_IS_WINDOW (self));
|
||||||
|
- priv = GTK_CLUTTER_WINDOW (self)->priv;
|
||||||
|
-
|
||||||
|
bin = gtk_clutter_actor_get_widget (GTK_CLUTTER_ACTOR (priv->actor));
|
||||||
|
+ gtk_widget_get_preferred_width (gtk_bin_get_child (GTK_BIN (bin)),
|
||||||
|
+ minimum,
|
||||||
|
+ natural);
|
||||||
|
+}
|
||||||
|
|
||||||
|
- /* find out what the preferred size of the bin contents are, since we
|
||||||
|
- * can't ask Clutter for some reason (it always returns the allocated
|
||||||
|
- * size -- why?). This means things like any scaling applied to the actor
|
||||||
|
- * won't make the window change size (feature?) */
|
||||||
|
- gtk_widget_get_preferred_size (gtk_bin_get_child (GTK_BIN (bin)),
|
||||||
|
- requisition,
|
||||||
|
- NULL);
|
||||||
|
+static void
|
||||||
|
+gtk_clutter_window_get_preferred_height (GtkWidget *self,
|
||||||
|
+ gint *minimum,
|
||||||
|
+ gint *natural)
|
||||||
|
+{
|
||||||
|
+ GtkClutterWindowPrivate *priv = GTK_CLUTTER_WINDOW (self)->priv;
|
||||||
|
+ GtkWidget *bin;
|
||||||
|
+
|
||||||
|
+ bin = gtk_clutter_actor_get_widget (GTK_CLUTTER_ACTOR (priv->actor));
|
||||||
|
+ gtk_widget_get_preferred_height (gtk_bin_get_child (GTK_BIN (bin)),
|
||||||
|
+ minimum,
|
||||||
|
+ natural);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -230,7 +237,8 @@ gtk_clutter_window_class_init (GtkClutterWindowClass *klass)
|
||||||
|
|
||||||
|
gobject_class->finalize = gtk_clutter_window_finalize;
|
||||||
|
|
||||||
|
- widget_class->size_request = gtk_clutter_window_size_request;
|
||||||
|
+ widget_class->get_preferred_width = gtk_clutter_window_get_preferred_width;
|
||||||
|
+ widget_class->get_preferred_height = gtk_clutter_window_get_preferred_height;
|
||||||
|
|
||||||
|
/* connect all of the container methods up to our bin */
|
||||||
|
container_class->add = gtk_clutter_window_add;
|
||||||
|
--
|
||||||
|
cgit v0.8.3.1-30-gff3a
|
||||||
|
From 7f1e7e2ae81591e24009b369263d641379f296f9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Emmanuele Bassi <ebassi@linux.intel.com>
|
||||||
|
Date: Wed, 01 Dec 2010 17:10:11 +0000
|
||||||
|
Subject: offscreen: Do not use size-request
|
||||||
|
|
||||||
|
Still, something in either Clutter or GTK+ master broke the widget
|
||||||
|
embedding.
|
||||||
|
---
|
||||||
|
diff --git a/clutter-gtk/gtk-clutter-offscreen.c b/clutter-gtk/gtk-clutter-offscreen.c
|
||||||
|
index 752cebf..826e06f 100644
|
||||||
|
--- a/clutter-gtk/gtk-clutter-offscreen.c
|
||||||
|
+++ b/clutter-gtk/gtk-clutter-offscreen.c
|
||||||
|
@@ -20,39 +20,31 @@ static void
|
||||||
|
gtk_clutter_offscreen_add (GtkContainer *container,
|
||||||
|
GtkWidget *child)
|
||||||
|
{
|
||||||
|
- GtkClutterOffscreen *offscreen;
|
||||||
|
-
|
||||||
|
- g_return_if_fail (GTK_CLUTTER_IS_OFFSCREEN (container));
|
||||||
|
-
|
||||||
|
- offscreen = GTK_CLUTTER_OFFSCREEN (container);
|
||||||
|
+ GtkClutterOffscreen *offscreen = GTK_CLUTTER_OFFSCREEN (container);
|
||||||
|
|
||||||
|
GTK_CONTAINER_CLASS (_gtk_clutter_offscreen_parent_class)->add (container, child);
|
||||||
|
|
||||||
|
- if (CLUTTER_ACTOR_IS_VISIBLE (offscreen->actor))
|
||||||
|
+ if (offscreen->actor != NULL &&
|
||||||
|
+ CLUTTER_ACTOR_IS_VISIBLE (offscreen->actor))
|
||||||
|
{
|
||||||
|
/* force a relayout */
|
||||||
|
- clutter_actor_set_size (offscreen->actor, -1, -1);
|
||||||
|
clutter_actor_queue_relayout (offscreen->actor);
|
||||||
|
}
|
||||||
|
-
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_clutter_offscreen_remove (GtkContainer *container,
|
||||||
|
GtkWidget *child)
|
||||||
|
{
|
||||||
|
- GtkClutterOffscreen *offscreen;
|
||||||
|
-
|
||||||
|
- g_return_if_fail (GTK_CLUTTER_IS_OFFSCREEN (container));
|
||||||
|
-
|
||||||
|
- offscreen = GTK_CLUTTER_OFFSCREEN (container);
|
||||||
|
+ GtkClutterOffscreen *offscreen = GTK_CLUTTER_OFFSCREEN (container);
|
||||||
|
|
||||||
|
GTK_CONTAINER_CLASS (_gtk_clutter_offscreen_parent_class)->remove (container, child);
|
||||||
|
|
||||||
|
- if (offscreen->actor != NULL && CLUTTER_ACTOR_IS_VISIBLE (offscreen->actor))
|
||||||
|
+ if (offscreen->actor != NULL &&
|
||||||
|
+ CLUTTER_ACTOR_IS_VISIBLE (offscreen->actor))
|
||||||
|
{
|
||||||
|
/* force a relayout */
|
||||||
|
- clutter_actor_set_size (offscreen->actor, -1, -1);
|
||||||
|
+ clutter_actor_queue_relayout (offscreen->actor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -61,16 +53,19 @@ gtk_clutter_offscreen_check_resize (GtkContainer *container)
|
||||||
|
{
|
||||||
|
GtkClutterOffscreen *offscreen = GTK_CLUTTER_OFFSCREEN (container);
|
||||||
|
|
||||||
|
+ /* queue a relayout only if we're not in the middle of an
|
||||||
|
+ * allocation
|
||||||
|
+ */
|
||||||
|
if (offscreen->actor != NULL && !offscreen->in_allocation)
|
||||||
|
clutter_actor_queue_relayout (offscreen->actor);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-offscreen_window_to_parent (GdkWindow *offscreen_window,
|
||||||
|
- double offscreen_x,
|
||||||
|
- double offscreen_y,
|
||||||
|
- double *parent_x,
|
||||||
|
- double *parent_y,
|
||||||
|
+offscreen_window_to_parent (GdkWindow *offscreen_window,
|
||||||
|
+ double offscreen_x,
|
||||||
|
+ double offscreen_y,
|
||||||
|
+ double *parent_x,
|
||||||
|
+ double *parent_y,
|
||||||
|
GtkClutterOffscreen *offscreen)
|
||||||
|
{
|
||||||
|
ClutterVertex point, vertex;
|
||||||
|
@@ -84,14 +79,15 @@ offscreen_window_to_parent (GdkWindow *offscreen_window,
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-offscreen_window_from_parent (GdkWindow *window,
|
||||||
|
- double parent_x,
|
||||||
|
- double parent_y,
|
||||||
|
- double *offscreen_x,
|
||||||
|
- double *offscreen_y,
|
||||||
|
+offscreen_window_from_parent (GdkWindow *window,
|
||||||
|
+ double parent_x,
|
||||||
|
+ double parent_y,
|
||||||
|
+ double *offscreen_x,
|
||||||
|
+ double *offscreen_y,
|
||||||
|
GtkClutterOffscreen *offscreen)
|
||||||
|
{
|
||||||
|
gfloat x, y;
|
||||||
|
+
|
||||||
|
if (clutter_actor_transform_stage_point (offscreen->actor,
|
||||||
|
parent_x,
|
||||||
|
parent_y,
|
||||||
|
@@ -118,20 +114,21 @@ gtk_clutter_offscreen_realize (GtkWidget *widget)
|
||||||
|
GdkWindowAttr attributes;
|
||||||
|
gint attributes_mask;
|
||||||
|
guint border_width;
|
||||||
|
- GtkWidget *parent;
|
||||||
|
+ GtkWidget *parent, *child;
|
||||||
|
|
||||||
|
gtk_widget_set_realized (widget, TRUE);
|
||||||
|
|
||||||
|
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||||
|
|
||||||
|
gtk_widget_get_allocation (widget, &allocation);
|
||||||
|
+
|
||||||
|
attributes.x = allocation.x + border_width;
|
||||||
|
attributes.y = allocation.y + border_width;
|
||||||
|
attributes.width = allocation.width - 2 * border_width;
|
||||||
|
attributes.height = allocation.height - 2 * border_width;
|
||||||
|
attributes.window_type = GDK_WINDOW_OFFSCREEN;
|
||||||
|
- attributes.event_mask = gtk_widget_get_events (widget) |
|
||||||
|
- GDK_EXPOSURE_MASK;
|
||||||
|
+ attributes.event_mask = gtk_widget_get_events (widget)
|
||||||
|
+ | GDK_EXPOSURE_MASK;
|
||||||
|
attributes.visual = gtk_widget_get_visual (widget);
|
||||||
|
attributes.wclass = GDK_INPUT_OUTPUT;
|
||||||
|
|
||||||
|
@@ -140,14 +137,21 @@ gtk_clutter_offscreen_realize (GtkWidget *widget)
|
||||||
|
parent = gtk_widget_get_parent (widget);
|
||||||
|
|
||||||
|
window = gdk_window_new (gdk_screen_get_root_window (gdk_window_get_screen (gtk_widget_get_window (parent))),
|
||||||
|
- &attributes, attributes_mask);
|
||||||
|
+ &attributes,
|
||||||
|
+ attributes_mask);
|
||||||
|
gtk_widget_set_window (widget, window);
|
||||||
|
gdk_window_set_user_data (window, widget);
|
||||||
|
|
||||||
|
g_signal_connect (window, "to-embedder",
|
||||||
|
- G_CALLBACK (offscreen_window_to_parent), widget);
|
||||||
|
+ G_CALLBACK (offscreen_window_to_parent),
|
||||||
|
+ widget);
|
||||||
|
g_signal_connect (window, "from-embedder",
|
||||||
|
- G_CALLBACK (offscreen_window_from_parent), widget);
|
||||||
|
+ G_CALLBACK (offscreen_window_from_parent),
|
||||||
|
+ widget);
|
||||||
|
+
|
||||||
|
+ child = gtk_bin_get_child (GTK_BIN (widget));
|
||||||
|
+ if (child != NULL)
|
||||||
|
+ gtk_widget_set_parent_window (child, window);
|
||||||
|
|
||||||
|
gtk_widget_style_attach (widget);
|
||||||
|
style = gtk_widget_get_style (widget);
|
||||||
|
@@ -156,7 +160,6 @@ gtk_clutter_offscreen_realize (GtkWidget *widget)
|
||||||
|
if (offscreen->active)
|
||||||
|
_gtk_clutter_embed_set_child_active (GTK_CLUTTER_EMBED (parent),
|
||||||
|
widget, TRUE);
|
||||||
|
-
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -172,25 +175,56 @@ gtk_clutter_offscreen_unrealize (GtkWidget *widget)
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-gtk_clutter_offscreen_size_request (GtkWidget *widget,
|
||||||
|
- GtkRequisition *requisition)
|
||||||
|
+gtk_clutter_offscreen_get_preferred_width (GtkWidget *widget,
|
||||||
|
+ gint *minimum,
|
||||||
|
+ gint *natural)
|
||||||
|
{
|
||||||
|
+ GtkBin *bin = GTK_BIN (widget);
|
||||||
|
GtkWidget *child;
|
||||||
|
- guint border_width;
|
||||||
|
+ gint border_width;
|
||||||
|
|
||||||
|
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||||
|
- requisition->width = (border_width * 2);
|
||||||
|
- requisition->height = (border_width * 2);
|
||||||
|
|
||||||
|
- child = gtk_bin_get_child (GTK_BIN (widget));
|
||||||
|
- if (child && gtk_widget_get_visible (child))
|
||||||
|
+ *minimum = border_width * 2;
|
||||||
|
+ *natural = border_width * 2;
|
||||||
|
+
|
||||||
|
+ child = gtk_bin_get_child (bin);
|
||||||
|
+
|
||||||
|
+ if (child != NULL && gtk_widget_get_visible (child))
|
||||||
|
+ {
|
||||||
|
+ gint child_min, child_nat;
|
||||||
|
+
|
||||||
|
+ gtk_widget_get_preferred_width (child, &child_min, &child_nat);
|
||||||
|
+
|
||||||
|
+ *minimum += child_min;
|
||||||
|
+ *natural += child_nat;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+gtk_clutter_offscreen_get_preferred_height (GtkWidget *widget,
|
||||||
|
+ gint *minimum,
|
||||||
|
+ gint *natural)
|
||||||
|
+{
|
||||||
|
+ GtkBin *bin = GTK_BIN (widget);
|
||||||
|
+ GtkWidget *child;
|
||||||
|
+ gint border_width;
|
||||||
|
+
|
||||||
|
+ border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||||
|
+
|
||||||
|
+ *minimum = border_width * 2;
|
||||||
|
+ *natural = border_width * 2;
|
||||||
|
+
|
||||||
|
+ child = gtk_bin_get_child (bin);
|
||||||
|
+
|
||||||
|
+ if (child != NULL && gtk_widget_get_visible (child))
|
||||||
|
{
|
||||||
|
- GtkRequisition child_requisition;
|
||||||
|
+ gint child_min, child_nat;
|
||||||
|
|
||||||
|
- gtk_widget_get_preferred_size (child, &child_requisition, NULL);
|
||||||
|
+ gtk_widget_get_preferred_height (child, &child_min, &child_nat);
|
||||||
|
|
||||||
|
- requisition->width += child_requisition.width;
|
||||||
|
- requisition->height += child_requisition.height;
|
||||||
|
+ *minimum += child_min;
|
||||||
|
+ *natural += child_nat;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -198,24 +232,22 @@ static void
|
||||||
|
gtk_clutter_offscreen_size_allocate (GtkWidget *widget,
|
||||||
|
GtkAllocation *allocation)
|
||||||
|
{
|
||||||
|
- GtkClutterOffscreen *offscreen;
|
||||||
|
- GtkAllocation widget_allocation;
|
||||||
|
- GtkWidget *child;
|
||||||
|
- guint border_width;
|
||||||
|
+ GtkAllocation old_allocation;
|
||||||
|
|
||||||
|
- offscreen = GTK_CLUTTER_OFFSCREEN (widget);
|
||||||
|
- gtk_widget_get_allocation (widget, &widget_allocation);
|
||||||
|
+ gtk_widget_get_allocation (widget, &old_allocation);
|
||||||
|
|
||||||
|
/* some widgets call gtk_widget_queue_resize() which triggers a
|
||||||
|
- * size-request/size-allocate cycle.
|
||||||
|
+ * size request/allocate cycle.
|
||||||
|
+ *
|
||||||
|
* Calling gdk_window_move_resize() triggers an expose-event of the entire
|
||||||
|
* widget tree, so we only want to do it if the allocation has changed in
|
||||||
|
- * some way, otherwise we can just ignore it. */
|
||||||
|
+ * some way, otherwise we can just ignore it.
|
||||||
|
+ */
|
||||||
|
if (gtk_widget_get_realized (widget) &&
|
||||||
|
- (allocation->x != widget_allocation.x ||
|
||||||
|
- allocation->y != widget_allocation.y ||
|
||||||
|
- allocation->width != widget_allocation.width ||
|
||||||
|
- allocation->height != widget_allocation.height))
|
||||||
|
+ (allocation->x != old_allocation.x ||
|
||||||
|
+ allocation->y != old_allocation.y ||
|
||||||
|
+ allocation->width != old_allocation.width ||
|
||||||
|
+ allocation->height != old_allocation.height))
|
||||||
|
{
|
||||||
|
gdk_window_move_resize (gtk_widget_get_window (widget),
|
||||||
|
0, 0,
|
||||||
|
@@ -223,25 +255,7 @@ gtk_clutter_offscreen_size_allocate (GtkWidget *widget,
|
||||||
|
allocation->height);
|
||||||
|
}
|
||||||
|
|
||||||
|
- gtk_widget_set_allocation (widget, allocation);
|
||||||
|
- border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||||
|
-
|
||||||
|
- child = gtk_bin_get_child (GTK_BIN (offscreen));
|
||||||
|
- if (child && gtk_widget_get_visible (child))
|
||||||
|
- {
|
||||||
|
- GtkAllocation child_allocation;
|
||||||
|
-
|
||||||
|
- child_allocation.x = border_width;
|
||||||
|
- child_allocation.y = border_width;
|
||||||
|
-
|
||||||
|
- child_allocation.width = MAX (1, allocation->width -
|
||||||
|
- border_width * 2);
|
||||||
|
- child_allocation.height = MAX (1, allocation->height -
|
||||||
|
- border_width * 2);
|
||||||
|
-
|
||||||
|
- gtk_widget_size_allocate (gtk_bin_get_child (GTK_BIN (widget)),
|
||||||
|
- &child_allocation);
|
||||||
|
- }
|
||||||
|
+ GTK_WIDGET_CLASS (_gtk_clutter_offscreen_parent_class)->size_allocate (widget, allocation);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
@@ -267,7 +281,8 @@ _gtk_clutter_offscreen_class_init (GtkClutterOffscreenClass *klass)
|
||||||
|
|
||||||
|
widget_class->realize = gtk_clutter_offscreen_realize;
|
||||||
|
widget_class->unrealize = gtk_clutter_offscreen_unrealize;
|
||||||
|
- widget_class->size_request = gtk_clutter_offscreen_size_request;
|
||||||
|
+ widget_class->get_preferred_width = gtk_clutter_offscreen_get_preferred_width;
|
||||||
|
+ widget_class->get_preferred_height = gtk_clutter_offscreen_get_preferred_height;
|
||||||
|
widget_class->size_allocate = gtk_clutter_offscreen_size_allocate;
|
||||||
|
|
||||||
|
container_class->add = gtk_clutter_offscreen_add;
|
||||||
|
--
|
||||||
|
cgit v0.8.3.1-30-gff3a
|
@ -2,13 +2,14 @@
|
|||||||
|
|
||||||
Name: clutter-gtk
|
Name: clutter-gtk
|
||||||
Version: 0.91.4
|
Version: 0.91.4
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: A basic GTK clutter widget
|
Summary: A basic GTK clutter widget
|
||||||
|
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
License: LGPLv2+
|
License: LGPLv2+
|
||||||
URL: http://www.clutter-project.org
|
URL: http://www.clutter-project.org
|
||||||
Source0: http://www.clutter-project.org/sources/%{name}/%{clutter_version}/%{name}-%{version}.tar.bz2
|
Source0: http://www.clutter-project.org/sources/%{name}/%{clutter_version}/%{name}-%{version}.tar.bz2
|
||||||
|
Patch0: %{name}-0.91.4-no-size-request.patch
|
||||||
|
|
||||||
BuildRequires: gtk3-devel
|
BuildRequires: gtk3-devel
|
||||||
BuildRequires: clutter-devel
|
BuildRequires: clutter-devel
|
||||||
@ -32,6 +33,7 @@ clutter-gtk
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
%patch0 -p1 -b .no-size-request
|
||||||
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -64,6 +66,9 @@ find %{buildroot} -name '*.la' -exec rm -f {} ';'
|
|||||||
%{_datadir}/gtk-doc/html/clutter-gtk
|
%{_datadir}/gtk-doc/html/clutter-gtk
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Dec 22 2010 Dan Horák <dan[at]danny.cz> - 0.91.4-2
|
||||||
|
- Update to recent gtk (FTBFS)
|
||||||
|
|
||||||
* Thu Nov 11 2010 Matthias Clasen <mclasen@redhat.com> - 0.91.4-1
|
* Thu Nov 11 2010 Matthias Clasen <mclasen@redhat.com> - 0.91.4-1
|
||||||
- Update to 0.91.4
|
- Update to 0.91.4
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user