Backport an upstream fix for GtkBuilder type name heuristics
This commit is contained in:
		
							parent
							
								
									60a0239fdc
								
							
						
					
					
						commit
						9bc3c674be
					
				
							
								
								
									
										119
									
								
								0001-GtkBuilder-Undo-the-type-name-heuristic-changes.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								0001-GtkBuilder-Undo-the-type-name-heuristic-changes.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,119 @@ | |||||||
|  | From 80226ca926c9986dc91686f5682d98f6fc84c748 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Matthias Clasen <mclasen@redhat.com> | ||||||
|  | Date: Fri, 3 Oct 2014 09:29:45 -0400 | ||||||
|  | Subject: [PATCH] GtkBuilder: Undo the type name heuristic changes | ||||||
|  | 
 | ||||||
|  | These turned out to break existing ui files, concretely | ||||||
|  | GWeatherLocationEntry was no longer guessed correctly. | ||||||
|  | 
 | ||||||
|  | Update the testcases to reflect this, and add a testcase | ||||||
|  | for GWeather. | ||||||
|  | ---
 | ||||||
|  |  gtk/gtkbuilder.c         | 17 +++++++++-------- | ||||||
|  |  testsuite/gtk/typename.c | 25 +++++++++---------------- | ||||||
|  |  2 files changed, 18 insertions(+), 24 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c
 | ||||||
|  | index 320c3e6..fbae031 100644
 | ||||||
|  | --- a/gtk/gtkbuilder.c
 | ||||||
|  | +++ b/gtk/gtkbuilder.c
 | ||||||
|  | @@ -372,23 +372,24 @@ gtk_builder_get_property (GObject    *object,
 | ||||||
|  |   * GtkWindow -> gtk_window_get_type | ||||||
|  |   * GtkHBox -> gtk_hbox_get_type | ||||||
|  |   * GtkUIManager -> gtk_ui_manager_get_type | ||||||
|  | - * GdkRGB -> gdk_rgb_get_type
 | ||||||
|  | + * GWeatherLocation -> gweather_location_get_type
 | ||||||
|  | + *
 | ||||||
|  | + * Keep in sync with testsuite/gtk/typename.c !
 | ||||||
|  |   */ | ||||||
|  |  static gchar * | ||||||
|  |  type_name_mangle (const gchar *name) | ||||||
|  |  { | ||||||
|  |    GString *symbol_name = g_string_new (""); | ||||||
|  | -  int i;
 | ||||||
|  | +  gint i;
 | ||||||
|  |   | ||||||
|  |    for (i = 0; name[i] != '\0'; i++) | ||||||
|  |      { | ||||||
|  |        /* skip if uppercase, first or previous is uppercase */ | ||||||
|  | -      if ((i > 0 && name[i]  == g_ascii_toupper (name[i]) &&
 | ||||||
|  | -                   (name[i-1] != g_ascii_toupper (name[i-1]) || i == 1)) ||
 | ||||||
|  | -          (i > 2 && name[i]   == g_ascii_toupper (name[i]) &&
 | ||||||
|  | -                    name[i-1] == g_ascii_toupper (name[i-1]) &&
 | ||||||
|  | -                    name[i-2] == g_ascii_toupper (name[i-2]) &&
 | ||||||
|  | -                    name[i+1] != 0 && name[i+1] != g_ascii_toupper (name[i+1])))
 | ||||||
|  | +      if ((name[i] == g_ascii_toupper (name[i]) &&
 | ||||||
|  | +           i > 0 && name[i-1] != g_ascii_toupper (name[i-1])) ||
 | ||||||
|  | +           (i > 2 && name[i]   == g_ascii_toupper (name[i]) &&
 | ||||||
|  | +           name[i-1] == g_ascii_toupper (name[i-1]) &&
 | ||||||
|  | +           name[i-2] == g_ascii_toupper (name[i-2])))
 | ||||||
|  |          g_string_append_c (symbol_name, '_'); | ||||||
|  |        g_string_append_c (symbol_name, g_ascii_tolower (name[i])); | ||||||
|  |      } | ||||||
|  | diff --git a/testsuite/gtk/typename.c b/testsuite/gtk/typename.c
 | ||||||
|  | index 7237631..f94c3ef 100644
 | ||||||
|  | --- a/testsuite/gtk/typename.c
 | ||||||
|  | +++ b/testsuite/gtk/typename.c
 | ||||||
|  | @@ -18,22 +18,21 @@
 | ||||||
|  |   | ||||||
|  |  #include <glib.h> | ||||||
|  |   | ||||||
|  | -/* keep in sync with gtkbuilder.c */
 | ||||||
|  | +/* Keep in sync with gtkbuilder.c ! */
 | ||||||
|  |  static gchar * | ||||||
|  |  type_name_mangle (const gchar *name) | ||||||
|  |  { | ||||||
|  |    GString *symbol_name = g_string_new (""); | ||||||
|  | -  int i;
 | ||||||
|  | +  gint i;
 | ||||||
|  |   | ||||||
|  |    for (i = 0; name[i] != '\0'; i++) | ||||||
|  |      { | ||||||
|  |        /* skip if uppercase, first or previous is uppercase */ | ||||||
|  | -      if ((i > 0 && name[i]  == g_ascii_toupper (name[i]) &&
 | ||||||
|  | -                   (name[i-1] != g_ascii_toupper (name[i-1]) || i == 1)) ||
 | ||||||
|  | -          (i > 2 && name[i]   == g_ascii_toupper (name[i]) &&
 | ||||||
|  | -                    name[i-1] == g_ascii_toupper (name[i-1]) &&
 | ||||||
|  | -                    name[i-2] == g_ascii_toupper (name[i-2]) && 
 | ||||||
|  | -                    name[i+1] != 0 && name[i+1] != g_ascii_toupper (name[i+1])))
 | ||||||
|  | +      if ((name[i] == g_ascii_toupper (name[i]) &&
 | ||||||
|  | +           i > 0 && name[i-1] != g_ascii_toupper (name[i-1])) ||
 | ||||||
|  | +           (i > 2 && name[i]   == g_ascii_toupper (name[i]) &&
 | ||||||
|  | +           name[i-1] == g_ascii_toupper (name[i-1]) &&
 | ||||||
|  | +           name[i-2] == g_ascii_toupper (name[i-2])))
 | ||||||
|  |          g_string_append_c (symbol_name, '_'); | ||||||
|  |        g_string_append_c (symbol_name, g_ascii_tolower (name[i])); | ||||||
|  |      } | ||||||
|  | @@ -55,13 +54,10 @@ check (const gchar *TN, const gchar *gtf)
 | ||||||
|  |  static void test_GtkWindow (void)    { check ("GtkWindow", "gtk_window_get_type"); } | ||||||
|  |  static void test_GtkHBox (void)      { check ("GtkHBox", "gtk_hbox_get_type"); } | ||||||
|  |  static void test_GtkUIManager (void) { check ("GtkUIManager", "gtk_ui_manager_get_type"); } | ||||||
|  | -static void test_GString (void)      { check ("GString", "g_string_get_type"); }
 | ||||||
|  |  static void test_GtkCList (void)     { check ("GtkCList", "gtk_clist_get_type"); } | ||||||
|  |  static void test_GtkIMContext (void) { check ("GtkIMContext", "gtk_im_context_get_type"); } | ||||||
|  | -static void test_GdkRGB (void)       { check ("GdkRGB", "gdk_rgb_get_type"); }
 | ||||||
|  | -static void test_GdkRGBA (void)      { check ("GdkRGBA", "gdk_rgba_get_type"); }
 | ||||||
|  |  static void test_Me2Shell (void)     { check ("Me2Shell", "me_2shell_get_type"); } | ||||||
|  | -static void test_E2Shell (void)      { check ("E2Shell", "e_2shell_get_type"); }
 | ||||||
|  | +static void test_GWeather (void)     { check ("GWeatherLocation", "gweather_location_get_type"); }
 | ||||||
|  |    | ||||||
|  |  int | ||||||
|  |  main (int argc, char *argv[]) | ||||||
|  | @@ -71,13 +67,10 @@ main (int argc, char *argv[])
 | ||||||
|  |    g_test_add_func ("/builder/get-type/GtkWindow",    test_GtkWindow); | ||||||
|  |    g_test_add_func ("/builder/get-type/GtkHBox",      test_GtkHBox); | ||||||
|  |    g_test_add_func ("/builder/get-type/GtkUIManager", test_GtkUIManager); | ||||||
|  | -  g_test_add_func ("/builder/get-type/GString",      test_GString);
 | ||||||
|  |    g_test_add_func ("/builder/get-type/GtkCList",     test_GtkCList); | ||||||
|  |    g_test_add_func ("/builder/get-type/GtkIMContext", test_GtkIMContext); | ||||||
|  | -  g_test_add_func ("/builder/get-type/GdkRGB",       test_GdkRGB);
 | ||||||
|  | -  g_test_add_func ("/builder/get-type/GdkRGBA",      test_GdkRGBA);
 | ||||||
|  |    g_test_add_func ("/builder/get-type/Me2Shell",     test_Me2Shell); | ||||||
|  | -  g_test_add_func ("/builder/get-type/E2Shell",      test_E2Shell);
 | ||||||
|  | +  g_test_add_func ("/builder/get-type/GWeather",     test_GWeather);
 | ||||||
|  |   | ||||||
|  |    return g_test_run (); | ||||||
|  |  } | ||||||
|  | -- 
 | ||||||
|  | 2.1.0 | ||||||
|  | 
 | ||||||
| @ -18,7 +18,7 @@ | |||||||
| Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X | Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X | ||||||
| Name: gtk3 | Name: gtk3 | ||||||
| Version: 3.14.1 | Version: 3.14.1 | ||||||
| Release: 1%{?dist} | Release: 2%{?dist} | ||||||
| License: LGPLv2+ | License: LGPLv2+ | ||||||
| Group: System Environment/Libraries | Group: System Environment/Libraries | ||||||
| URL: http://www.gtk.org | URL: http://www.gtk.org | ||||||
| @ -26,6 +26,8 @@ URL: http://www.gtk.org | |||||||
| 
 | 
 | ||||||
| Source: http://download.gnome.org/sources/gtk+/3.14/gtk+-%{version}.tar.xz | Source: http://download.gnome.org/sources/gtk+/3.14/gtk+-%{version}.tar.xz | ||||||
| 
 | 
 | ||||||
|  | Patch0: 0001-GtkBuilder-Undo-the-type-name-heuristic-changes.patch | ||||||
|  | 
 | ||||||
| BuildRequires: gnome-common autoconf automake intltool gettext | BuildRequires: gnome-common autoconf automake intltool gettext | ||||||
| BuildRequires: atk-devel >= %{atk_version} | BuildRequires: atk-devel >= %{atk_version} | ||||||
| BuildRequires: at-spi2-atk-devel | BuildRequires: at-spi2-atk-devel | ||||||
| @ -143,6 +145,7 @@ the functionality of the installed %{name} package. | |||||||
| 
 | 
 | ||||||
| %prep | %prep | ||||||
| %setup -q -n gtk+-%{version} | %setup -q -n gtk+-%{version} | ||||||
|  | %patch0 -p1 | ||||||
| 
 | 
 | ||||||
| %build | %build | ||||||
| 
 | 
 | ||||||
| @ -313,6 +316,9 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache | |||||||
| %{_datadir}/installed-tests | %{_datadir}/installed-tests | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Fri Oct 03 2014 Kalev Lember <kalevlember@gmail.com> - 3.14.1-2 | ||||||
|  | - Backport an upstream fix for GtkBuilder type name heuristics | ||||||
|  | 
 | ||||||
| * Tue Sep 30 2014 Kalev Lember <kalevlember@gmail.com> - 3.14.1-1 | * Tue Sep 30 2014 Kalev Lember <kalevlember@gmail.com> - 3.14.1-1 | ||||||
| - Update to 3.14.1 | - Update to 3.14.1 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user