From 9bc3c674bed4ba359085701a8bd89d06e5489e82 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Fri, 3 Oct 2014 17:25:23 +0200 Subject: [PATCH] Backport an upstream fix for GtkBuilder type name heuristics --- ...Undo-the-type-name-heuristic-changes.patch | 119 ++++++++++++++++++ gtk3.spec | 8 +- 2 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 0001-GtkBuilder-Undo-the-type-name-heuristic-changes.patch diff --git a/0001-GtkBuilder-Undo-the-type-name-heuristic-changes.patch b/0001-GtkBuilder-Undo-the-type-name-heuristic-changes.patch new file mode 100644 index 0000000..7caf3af --- /dev/null +++ b/0001-GtkBuilder-Undo-the-type-name-heuristic-changes.patch @@ -0,0 +1,119 @@ +From 80226ca926c9986dc91686f5682d98f6fc84c748 Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +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 + +-/* 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 + diff --git a/gtk3.spec b/gtk3.spec index 5ee6c09..48f2d7c 100644 --- a/gtk3.spec +++ b/gtk3.spec @@ -18,7 +18,7 @@ Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X Name: gtk3 Version: 3.14.1 -Release: 1%{?dist} +Release: 2%{?dist} License: LGPLv2+ Group: System Environment/Libraries 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 +Patch0: 0001-GtkBuilder-Undo-the-type-name-heuristic-changes.patch + BuildRequires: gnome-common autoconf automake intltool gettext BuildRequires: atk-devel >= %{atk_version} BuildRequires: at-spi2-atk-devel @@ -143,6 +145,7 @@ the functionality of the installed %{name} package. %prep %setup -q -n gtk+-%{version} +%patch0 -p1 %build @@ -313,6 +316,9 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache %{_datadir}/installed-tests %changelog +* Fri Oct 03 2014 Kalev Lember - 3.14.1-2 +- Backport an upstream fix for GtkBuilder type name heuristics + * Tue Sep 30 2014 Kalev Lember - 3.14.1-1 - Update to 3.14.1