Pick up a few upstream fixes
This commit is contained in:
parent
3238d3d0ae
commit
b9b5e3932c
@ -0,0 +1,36 @@
|
||||
From 54c97f3ba2358c60fcc32404b67716e44384fb52 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Clasen <mclasen@redhat.com>
|
||||
Date: Wed, 2 Feb 2011 00:40:02 -0500
|
||||
Subject: [PATCH 1/2] Fix another GtkFixed regression, in gtk_fixed_forall()
|
||||
|
||||
b3f6f67c changed the loop from while() to for() in gtk_fixed_forall(),
|
||||
but that's wrong since the callback can have side-effects on the list,
|
||||
in case the current child gets removed. And that's the case when the
|
||||
widget is destroyed.
|
||||
|
||||
Patch by Vincent Untz
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=641196
|
||||
---
|
||||
gtk/gtkfixed.c | 4 +++-
|
||||
1 files changed, 3 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/gtk/gtkfixed.c b/gtk/gtkfixed.c
|
||||
index fd92cd7..e453005 100644
|
||||
--- a/gtk/gtkfixed.c
|
||||
+++ b/gtk/gtkfixed.c
|
||||
@@ -540,9 +540,11 @@ gtk_fixed_forall (GtkContainer *container,
|
||||
GtkFixedChild *child;
|
||||
GList *children;
|
||||
|
||||
- for (children = priv->children; children; children = children->next)
|
||||
+ children = priv->children;
|
||||
+ while (children)
|
||||
{
|
||||
child = children->data;
|
||||
+ children = children->next;
|
||||
|
||||
(* callback) (child->widget, callback_data);
|
||||
}
|
||||
--
|
||||
1.7.3.5
|
||||
|
120
buildable-regression.patch
Normal file
120
buildable-regression.patch
Normal file
@ -0,0 +1,120 @@
|
||||
diff --git a/gtk/gtkcelllayout.c b/gtk/gtkcelllayout.c
|
||||
index d0ff6ca..3fd59ad 100644
|
||||
--- a/gtk/gtkcelllayout.c
|
||||
+++ b/gtk/gtkcelllayout.c
|
||||
@@ -807,37 +807,35 @@ cell_packing_end_element (GMarkupParseContext *context,
|
||||
CellPackingSubParserData *parser_data = (CellPackingSubParserData*)user_data;
|
||||
GtkCellArea *area;
|
||||
|
||||
- /* Append the translated strings */
|
||||
- if (parser_data->string->len)
|
||||
- {
|
||||
- area = gtk_cell_layout_get_area (parser_data->cell_layout);
|
||||
+ area = gtk_cell_layout_get_area (parser_data->cell_layout);
|
||||
|
||||
- if (area)
|
||||
+ if (area)
|
||||
+ {
|
||||
+ /* translate the string */
|
||||
+ if (parser_data->string->len && parser_data->translatable)
|
||||
{
|
||||
- if (parser_data->translatable)
|
||||
- {
|
||||
- gchar *translated;
|
||||
- const gchar* domain;
|
||||
-
|
||||
- domain = gtk_builder_get_translation_domain (parser_data->builder);
|
||||
-
|
||||
- translated = _gtk_builder_parser_translate (domain,
|
||||
- parser_data->context,
|
||||
- parser_data->string->str);
|
||||
- g_string_set_size (parser_data->string, 0);
|
||||
- g_string_append (parser_data->string, translated);
|
||||
- }
|
||||
-
|
||||
- gtk_cell_layout_buildable_set_cell_property (area,
|
||||
- parser_data->builder,
|
||||
- parser_data->renderer,
|
||||
- parser_data->cell_prop_name,
|
||||
- parser_data->string->str);
|
||||
+ gchar *translated;
|
||||
+ const gchar* domain;
|
||||
+
|
||||
+ domain = gtk_builder_get_translation_domain (parser_data->builder);
|
||||
+
|
||||
+ translated = _gtk_builder_parser_translate (domain,
|
||||
+ parser_data->context,
|
||||
+ parser_data->string->str);
|
||||
+ g_string_set_size (parser_data->string, 0);
|
||||
+ g_string_append (parser_data->string, translated);
|
||||
}
|
||||
- else
|
||||
- g_warning ("%s does not have an internal GtkCellArea class and cannot apply child cell properties",
|
||||
- g_type_name (G_OBJECT_TYPE (parser_data->cell_layout)));
|
||||
+
|
||||
+ if (parser_data->cell_prop_name)
|
||||
+ gtk_cell_layout_buildable_set_cell_property (area,
|
||||
+ parser_data->builder,
|
||||
+ parser_data->renderer,
|
||||
+ parser_data->cell_prop_name,
|
||||
+ parser_data->string->str);
|
||||
}
|
||||
+ else
|
||||
+ g_warning ("%s does not have an internal GtkCellArea class and cannot apply child cell properties",
|
||||
+ g_type_name (G_OBJECT_TYPE (parser_data->cell_layout)));
|
||||
|
||||
g_string_set_size (parser_data->string, 0);
|
||||
g_free (parser_data->cell_prop_name);
|
||||
diff --git a/gtk/gtkcontainer.c b/gtk/gtkcontainer.c
|
||||
index 5bf6f4d..18f046c 100644
|
||||
--- a/gtk/gtkcontainer.c
|
||||
+++ b/gtk/gtkcontainer.c
|
||||
@@ -643,30 +643,28 @@ attributes_end_element (GMarkupParseContext *context,
|
||||
{
|
||||
PackingPropertiesData *parser_data = (PackingPropertiesData*)user_data;
|
||||
|
||||
- /* Append the translated strings */
|
||||
- if (parser_data->string->len)
|
||||
+ /* translate the string */
|
||||
+ if (parser_data->string->len && parser_data->translatable)
|
||||
{
|
||||
- if (parser_data->translatable)
|
||||
- {
|
||||
- gchar *translated;
|
||||
- const gchar* domain;
|
||||
-
|
||||
- domain = gtk_builder_get_translation_domain (parser_data->builder);
|
||||
-
|
||||
- translated = _gtk_builder_parser_translate (domain,
|
||||
- parser_data->context,
|
||||
- parser_data->string->str);
|
||||
- g_string_set_size (parser_data->string, 0);
|
||||
- g_string_append (parser_data->string, translated);
|
||||
- }
|
||||
-
|
||||
- gtk_container_buildable_set_child_property (parser_data->container,
|
||||
- parser_data->builder,
|
||||
- parser_data->child,
|
||||
- parser_data->child_prop_name,
|
||||
+ gchar *translated;
|
||||
+ const gchar* domain;
|
||||
+
|
||||
+ domain = gtk_builder_get_translation_domain (parser_data->builder);
|
||||
+
|
||||
+ translated = _gtk_builder_parser_translate (domain,
|
||||
+ parser_data->context,
|
||||
parser_data->string->str);
|
||||
+ g_string_set_size (parser_data->string, 0);
|
||||
+ g_string_append (parser_data->string, translated);
|
||||
}
|
||||
|
||||
+ if (parser_data->child_prop_name)
|
||||
+ gtk_container_buildable_set_child_property (parser_data->container,
|
||||
+ parser_data->builder,
|
||||
+ parser_data->child,
|
||||
+ parser_data->child_prop_name,
|
||||
+ parser_data->string->str);
|
||||
+
|
||||
g_string_set_size (parser_data->string, 0);
|
||||
g_free (parser_data->child_prop_name);
|
||||
g_free (parser_data->context);
|
@ -19,6 +19,8 @@ URL: http://www.gtk.org
|
||||
Source: http://download.gnome.org/sources/gtk+/2.99/gtk+-%{version}.tar.bz2
|
||||
Source1: im-cedilla.conf
|
||||
Patch0: gtk3-build-fix.patch
|
||||
Patch1: 0001-Fix-another-GtkFixed-regression-in-gtk_fixed_forall.patch
|
||||
Patch2: buildable-regression.patch
|
||||
|
||||
BuildRequires: gnome-common autoconf automake intltool gettext
|
||||
BuildRequires: atk-devel >= %{atk_version}
|
||||
@ -112,6 +114,8 @@ widget toolkit.
|
||||
%prep
|
||||
%setup -q -n gtk+-%{version}
|
||||
%patch0 -p1 -b .build-fix
|
||||
%patch1 -p1 -b .fixed-destroy
|
||||
%patch2 -p1 -b .buildable-regression
|
||||
|
||||
%build
|
||||
|
||||
@ -157,6 +161,7 @@ install -D %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/X11/xinit/xinput.d/im-cedill
|
||||
rm $RPM_BUILD_ROOT%{_libdir}/*.la
|
||||
rm $RPM_BUILD_ROOT%{_libdir}/gtk-3.0/*/*.la
|
||||
rm $RPM_BUILD_ROOT%{_libdir}/gtk-3.0/%{bin_version}/*/*.la
|
||||
rm $RPM_BUILD_ROOT%{_libdir}/gtk-3.0/%{bin_version}/engines/libpixmap.so
|
||||
|
||||
touch $RPM_BUILD_ROOT%{_libdir}/gtk-3.0/%{bin_version}/immodules.cache
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user