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
|
||||
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 <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
|
||||
- Update to 3.14.1
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user