diff options
author | Martin Jansa <Martin.Jansa@gmail.com> | 2011-09-30 17:33:41 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-10-14 13:18:08 +0100 |
commit | 1eebf67cbf96d61096b4c3ec2ef6a1acd720720a (patch) | |
tree | a57a0808468eff75b5251c6d30d13654bc013ede /meta/recipes-gnome/gtk+/gtk+-2.24.6 | |
parent | da0798420ea1b98bd383e4bad7f748bfaa96f18b (diff) | |
download | poky-1eebf67cbf96d61096b4c3ec2ef6a1acd720720a.tar.gz |
gtk+: upgrade to 2.24.6
* older version doesn't build with glib-2.30.0
(From OE-Core rev: 782ba4d473ee39545a9b464b96564e52de35142e)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-gnome/gtk+/gtk+-2.24.6')
10 files changed, 468 insertions, 0 deletions
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.24.6/0001-bgo-584832-Duplicate-the-exec-string-returned-by-gtk.patch b/meta/recipes-gnome/gtk+/gtk+-2.24.6/0001-bgo-584832-Duplicate-the-exec-string-returned-by-gtk.patch new file mode 100644 index 0000000000..354f0ab376 --- /dev/null +++ b/meta/recipes-gnome/gtk+/gtk+-2.24.6/0001-bgo-584832-Duplicate-the-exec-string-returned-by-gtk.patch | |||
@@ -0,0 +1,30 @@ | |||
1 | From 69b9441eab2a7215509687dc22b48b6f212d22aa Mon Sep 17 00:00:00 2001 | ||
2 | From: Rob Bradford <rob@linux.intel.com> | ||
3 | Date: Thu, 4 Jun 2009 15:43:20 +0100 | ||
4 | Subject: [PATCH] =?utf-8?q?bgo#584832=20=E2=80=93=20Duplicate=20the=20exec=20string=20returned=20by=20gtk=5Frecent=5Finfo=5Fget=5Fapplication=5Finfo?= | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=utf-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | This function states that the caller is responsible for freeing the string | ||
10 | passed returned by reference. Unfortunately if you do this you get a crash | ||
11 | since the internal value is returned without being duplicated. | ||
12 | --- | ||
13 | gtk/gtkrecentmanager.c | 2 +- | ||
14 | 1 files changed, 1 insertions(+), 1 deletions(-) | ||
15 | |||
16 | Upstream-Status: Pending | ||
17 | |||
18 | Index: gtk+-2.21.2/gtk/gtkrecentmanager.c | ||
19 | =================================================================== | ||
20 | --- gtk+-2.21.2.orig/gtk/gtkrecentmanager.c 2010-06-22 18:11:30.000000000 +0800 | ||
21 | +++ gtk+-2.21.2/gtk/gtkrecentmanager.c 2010-06-22 18:11:53.000000000 +0800 | ||
22 | @@ -1766,7 +1766,7 @@ | ||
23 | } | ||
24 | |||
25 | if (app_exec) | ||
26 | - *app_exec = ai->exec; | ||
27 | + *app_exec = g_strdup (ai->exec); | ||
28 | |||
29 | if (count) | ||
30 | *count = ai->count; | ||
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.24.6/cellrenderer-cairo.patch b/meta/recipes-gnome/gtk+/gtk+-2.24.6/cellrenderer-cairo.patch new file mode 100644 index 0000000000..ba893292d6 --- /dev/null +++ b/meta/recipes-gnome/gtk+/gtk+-2.24.6/cellrenderer-cairo.patch | |||
@@ -0,0 +1,31 @@ | |||
1 | Upstream-Status: Pending | ||
2 | |||
3 | Index: gtk/gtkcellrenderer.c | ||
4 | =================================================================== | ||
5 | --- gtk/gtkcellrenderer.c.orig 2010-06-22 17:21:22.000000000 +0800 | ||
6 | +++ gtk/gtkcellrenderer.c 2010-06-22 17:21:25.000000000 +0800 | ||
7 | @@ -566,6 +566,7 @@ | ||
8 | |||
9 | if (cell->cell_background_set && !selected) | ||
10 | { | ||
11 | +#ifdef USE_CAIRO_INTERNALLY | ||
12 | cairo_t *cr = gdk_cairo_create (window); | ||
13 | |||
14 | gdk_cairo_rectangle (cr, background_area); | ||
15 | @@ -573,6 +574,16 @@ | ||
16 | cairo_fill (cr); | ||
17 | |||
18 | cairo_destroy (cr); | ||
19 | +#else | ||
20 | + GdkGC *gc; | ||
21 | + | ||
22 | + gc = gdk_gc_new (window); | ||
23 | + gdk_gc_set_rgb_fg_color (gc, &priv->cell_background); | ||
24 | + gdk_draw_rectangle (window, gc, TRUE, | ||
25 | + background_area->x, background_area->y, | ||
26 | + background_area->width, background_area->height); | ||
27 | + g_object_unref (gc); | ||
28 | +#endif | ||
29 | } | ||
30 | |||
31 | GTK_CELL_RENDERER_GET_CLASS (cell)->render (cell, | ||
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.24.6/configurefix.patch b/meta/recipes-gnome/gtk+/gtk+-2.24.6/configurefix.patch new file mode 100644 index 0000000000..2803691246 --- /dev/null +++ b/meta/recipes-gnome/gtk+/gtk+-2.24.6/configurefix.patch | |||
@@ -0,0 +1,87 @@ | |||
1 | Upstream-Status: Inappropriate [configuration] | ||
2 | |||
3 | Index: gtk+-2.21.2/docs/faq/Makefile.am | ||
4 | =================================================================== | ||
5 | --- gtk+-2.21.2.orig/docs/faq/Makefile.am 2010-04-09 10:29:53.000000000 +0800 | ||
6 | +++ gtk+-2.21.2/docs/faq/Makefile.am 2010-06-22 17:39:24.000000000 +0800 | ||
7 | @@ -3,34 +3,36 @@ | ||
8 | EXTRA_DIST += \ | ||
9 | gtk-faq.sgml | ||
10 | |||
11 | -if HAVE_DOCBOOK | ||
12 | + | ||
13 | html: | ||
14 | +if HAVE_DOCBOOK | ||
15 | if test -w $(srcdir); then \ | ||
16 | (cd $(srcdir); \ | ||
17 | db2html gtk-faq.sgml; \ | ||
18 | test -d html && rm -r html; \ | ||
19 | mv gtk-faq html); \ | ||
20 | fi | ||
21 | - | ||
22 | -pdf: | ||
23 | - if test -w $(srcdir); then \ | ||
24 | - (cd $(srcdir); db2pdf gtk-faq.sgml); \ | ||
25 | - fi | ||
26 | - | ||
27 | -dist-hook: html | ||
28 | - cp -Rp $(srcdir)/html $(distdir) | ||
29 | else | ||
30 | -html: | ||
31 | echo "***" | ||
32 | echo "*** Warning: FAQ not built" | ||
33 | echo "***" | ||
34 | +endif | ||
35 | |||
36 | pdf: | ||
37 | +if HAVE_DOCBOOK | ||
38 | + if test -w $(srcdir); then \ | ||
39 | + (cd $(srcdir); db2pdf gtk-faq.sgml); \ | ||
40 | + fi | ||
41 | +else | ||
42 | echo "***" | ||
43 | echo "*** Warning: FAQ not built" | ||
44 | echo "***" | ||
45 | +endif | ||
46 | |||
47 | -dist-hook: | ||
48 | +dist-hook: html | ||
49 | +if HAVE_DOCBOOK | ||
50 | + cp -Rp $(srcdir)/html $(distdir) | ||
51 | +else | ||
52 | echo "***" | ||
53 | echo "*** Warning: FAQ not built" | ||
54 | echo "*** DISTRIBUTION IS INCOMPLETE" | ||
55 | Index: gtk+-2.21.2/gtk-doc.make | ||
56 | =================================================================== | ||
57 | --- gtk+-2.21.2.orig/gtk-doc.make 2010-05-28 00:01:48.000000000 +0800 | ||
58 | +++ gtk+-2.21.2/gtk-doc.make 2010-06-22 17:39:24.000000000 +0800 | ||
59 | @@ -23,7 +23,7 @@ | ||
60 | |||
61 | TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) | ||
62 | |||
63 | -EXTRA_DIST = \ | ||
64 | +EXTRA_DIST += \ | ||
65 | $(content_files) \ | ||
66 | $(HTML_IMAGES) \ | ||
67 | $(DOC_MAIN_SGML_FILE) \ | ||
68 | Index: gtk+-2.21.2/gtk/tests/Makefile.am | ||
69 | =================================================================== | ||
70 | --- gtk+-2.21.2.orig/gtk/tests/Makefile.am 2010-06-10 20:53:46.000000000 +0800 | ||
71 | +++ gtk+-2.21.2/gtk/tests/Makefile.am 2010-06-22 17:39:24.000000000 +0800 | ||
72 | @@ -58,13 +58,13 @@ | ||
73 | # this doesn't work in make distcheck, since running | ||
74 | # on a naked X server creates slightly different event | ||
75 | # sequences than running on a normal desktop | ||
76 | -# TEST_PROGS += crossingevents | ||
77 | +#TEST_PROGS += crossingevents | ||
78 | crossingevents_SOURCES = crossingevents.c | ||
79 | crossingevents_LDADD = $(progs_ldadd) | ||
80 | |||
81 | # this doesn't work in make distcheck, since it doesn't | ||
82 | # find file-chooser-test-dir | ||
83 | -# TEST_PROGS += filechooser | ||
84 | +#TEST_PROGS += filechooser | ||
85 | filechooser_SOURCES = filechooser.c pixbuf-init.c | ||
86 | filechooser_LDADD = $(progs_ldadd) | ||
87 | |||
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.24.6/doc-fixes.patch b/meta/recipes-gnome/gtk+/gtk+-2.24.6/doc-fixes.patch new file mode 100644 index 0000000000..74e479fd1b --- /dev/null +++ b/meta/recipes-gnome/gtk+/gtk+-2.24.6/doc-fixes.patch | |||
@@ -0,0 +1,22 @@ | |||
1 | There are issues building the gtk+ tutorial and faq documentation. | ||
2 | Since they were removed in gtk+ upstream and are superfluous in | ||
3 | embedded applications, just don't build them. | ||
4 | |||
5 | Thanks to Joshua Lock for suggesting this approach. | ||
6 | |||
7 | Signed-off-by: Scott Garman <scott.a.garman@intel.com> | ||
8 | |||
9 | Upstream-Status: Inappropriate [embedded specific] | ||
10 | |||
11 | diff -urN gtk+-2.22.1.orig/docs/Makefile.am gtk+-2.22.1/docs/Makefile.am | ||
12 | --- gtk+-2.22.1.orig/docs/Makefile.am 2010-11-15 04:13:09.000000000 -0800 | ||
13 | +++ gtk+-2.22.1/docs/Makefile.am 2011-02-23 19:25:16.914815097 -0800 | ||
14 | @@ -1,7 +1,7 @@ | ||
15 | ## Process this file with automake to produce Makefile.in | ||
16 | include $(top_srcdir)/Makefile.decl | ||
17 | |||
18 | -SUBDIRS = tutorial faq reference tools | ||
19 | +SUBDIRS = reference tools | ||
20 | |||
21 | EXTRA_DIST += \ | ||
22 | defsformat.txt \ | ||
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.24.6/entry-cairo.patch b/meta/recipes-gnome/gtk+/gtk+-2.24.6/entry-cairo.patch new file mode 100644 index 0000000000..3083b77830 --- /dev/null +++ b/meta/recipes-gnome/gtk+/gtk+-2.24.6/entry-cairo.patch | |||
@@ -0,0 +1,105 @@ | |||
1 | Upstream-Status: Pending | ||
2 | |||
3 | Index: gtk/gtkentry.c | ||
4 | =================================================================== | ||
5 | RCS file: /cvs/gnome/gtk+/gtk/gtkentry.c,v | ||
6 | retrieving revision 1.317 | ||
7 | diff -u -r1.317 gtkentry.c | ||
8 | --- gtk/gtkentry.c 29 Jun 2006 09:18:05 -0000 1.317 | ||
9 | +++ gtk/gtkentry.c 2 Jul 2006 14:14:24 -0000 | ||
10 | @@ -3337,7 +3337,9 @@ | ||
11 | if (GTK_WIDGET_DRAWABLE (entry)) | ||
12 | { | ||
13 | PangoLayout *layout = gtk_entry_ensure_layout (entry, TRUE); | ||
14 | +#ifdef USE_CAIRO_INTERNALLY | ||
15 | cairo_t *cr; | ||
16 | +#endif | ||
17 | gint x, y; | ||
18 | gint start_pos, end_pos; | ||
19 | |||
20 | @@ -3345,23 +3347,35 @@ | ||
21 | |||
22 | get_layout_position (entry, &x, &y); | ||
23 | |||
24 | +#ifdef USE_CAIRO_INTERNALLY | ||
25 | cr = gdk_cairo_create (entry->text_area); | ||
26 | |||
27 | cairo_move_to (cr, x, y); | ||
28 | gdk_cairo_set_source_color (cr, &widget->style->text [widget->state]); | ||
29 | pango_cairo_show_layout (cr, layout); | ||
30 | +#else | ||
31 | + gdk_draw_layout (entry->text_area, widget->style->text_gc [widget->state], | ||
32 | + x, y, | ||
33 | + layout); | ||
34 | +#endif | ||
35 | |||
36 | if (gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), &start_pos, &end_pos)) | ||
37 | { | ||
38 | gint *ranges; | ||
39 | gint n_ranges, i; | ||
40 | PangoRectangle logical_rect; | ||
41 | - GdkColor *selection_color, *text_color; | ||
42 | GtkBorder inner_border; | ||
43 | +#ifdef USE_CAIRO_INTERNALLY | ||
44 | + GdkColor *selection_color, *text_color; | ||
45 | +#else | ||
46 | + GdkGC *selection_gc, *text_gc; | ||
47 | + GdkRegion *clip_region; | ||
48 | +#endif | ||
49 | |||
50 | pango_layout_get_pixel_extents (layout, NULL, &logical_rect); | ||
51 | gtk_entry_get_pixel_ranges (entry, &ranges, &n_ranges); | ||
52 | |||
53 | +#ifdef USE_CAIRO_INTERNALLY | ||
54 | if (GTK_WIDGET_HAS_FOCUS (entry)) | ||
55 | { | ||
56 | selection_color = &widget->style->base [GTK_STATE_SELECTED]; | ||
57 | @@ -3390,11 +3404,46 @@ | ||
58 | cairo_move_to (cr, x, y); | ||
59 | gdk_cairo_set_source_color (cr, text_color); | ||
60 | pango_cairo_show_layout (cr, layout); | ||
61 | - | ||
62 | +#else | ||
63 | + if (GTK_WIDGET_HAS_FOCUS (entry)) | ||
64 | + { | ||
65 | + selection_gc = widget->style->base_gc [GTK_STATE_SELECTED]; | ||
66 | + text_gc = widget->style->text_gc [GTK_STATE_SELECTED]; | ||
67 | + } | ||
68 | + else | ||
69 | + { | ||
70 | + selection_gc = widget->style->base_gc [GTK_STATE_ACTIVE]; | ||
71 | + text_gc = widget->style->text_gc [GTK_STATE_ACTIVE]; | ||
72 | + } | ||
73 | + | ||
74 | + clip_region = gdk_region_new (); | ||
75 | + for (i = 0; i < n_ranges; ++i) | ||
76 | + { | ||
77 | + GdkRectangle rect; | ||
78 | + | ||
79 | + rect.x = inner_border.left - entry->scroll_offset + ranges[2 * i]; | ||
80 | + rect.y = y; | ||
81 | + rect.width = ranges[2 * i + 1]; | ||
82 | + rect.height = logical_rect.height; | ||
83 | + | ||
84 | + gdk_draw_rectangle (entry->text_area, selection_gc, TRUE, | ||
85 | + rect.x, rect.y, rect.width, rect.height); | ||
86 | + | ||
87 | + gdk_region_union_with_rect (clip_region, &rect); | ||
88 | + } | ||
89 | + | ||
90 | + gdk_gc_set_clip_region (text_gc, clip_region); | ||
91 | + gdk_draw_layout (entry->text_area, text_gc, | ||
92 | + x, y, | ||
93 | + layout); | ||
94 | + gdk_gc_set_clip_region (text_gc, NULL); | ||
95 | + gdk_region_destroy (clip_region); | ||
96 | +#endif | ||
97 | g_free (ranges); | ||
98 | } | ||
99 | - | ||
100 | +#ifdef USE_CAIRO_INTERNALLY | ||
101 | cairo_destroy (cr); | ||
102 | +#endif | ||
103 | } | ||
104 | } | ||
105 | |||
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.24.6/hardcoded_libtool.patch b/meta/recipes-gnome/gtk+/gtk+-2.24.6/hardcoded_libtool.patch new file mode 100644 index 0000000000..e32ce3fb1c --- /dev/null +++ b/meta/recipes-gnome/gtk+/gtk+-2.24.6/hardcoded_libtool.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | Upstream-Status: Inappropriate [embedded specific] | ||
2 | |||
3 | Index: gtk+-2.23.2/configure.in | ||
4 | =================================================================== | ||
5 | --- gtk+-2.23.2.orig/configure.in 2010-11-10 22:22:47.000000000 +0800 | ||
6 | +++ gtk+-2.23.2/configure.in 2010-11-25 13:32:40.000000000 +0800 | ||
7 | @@ -414,7 +414,7 @@ | ||
8 | case $enable_explicit_deps in | ||
9 | auto) | ||
10 | export SED | ||
11 | - deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh` | ||
12 | + deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh` | ||
13 | if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then | ||
14 | enable_explicit_deps=yes | ||
15 | else | ||
16 | @@ -773,7 +773,7 @@ | ||
17 | dnl Now we check to see if our libtool supports shared lib deps | ||
18 | dnl (in a rather ugly way even) | ||
19 | if $dynworks; then | ||
20 | - module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config" | ||
21 | + module_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config" | ||
22 | module_deplibs_check=`$module_libtool_config | \ | ||
23 | grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \ | ||
24 | sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'` | ||
25 | @@ -1555,7 +1555,7 @@ | ||
26 | # We are using gmodule-no-export now, but I'm leaving the stripping | ||
27 | # code in place for now, since pango and atk still require gmodule. | ||
28 | export SED | ||
29 | -export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` | ||
30 | +export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` | ||
31 | if test -n "$export_dynamic"; then | ||
32 | GDK_DEP_LIBS=`echo $GDK_DEP_LIBS | sed -e "s/$export_dynamic//"` | ||
33 | GTK_DEP_LIBS=`echo $GTK_DEP_LIBS | sed -e "s/$export_dynamic//"` | ||
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.24.6/no-demos.patch b/meta/recipes-gnome/gtk+/gtk+-2.24.6/no-demos.patch new file mode 100644 index 0000000000..abd348ea99 --- /dev/null +++ b/meta/recipes-gnome/gtk+/gtk+-2.24.6/no-demos.patch | |||
@@ -0,0 +1,15 @@ | |||
1 | Upstream-Status: Inappropriate [configuration] | ||
2 | |||
3 | Index: gtk+-2.23.2/Makefile.am | ||
4 | =================================================================== | ||
5 | --- gtk+-2.23.2.orig/Makefile.am 2010-11-10 20:34:42.000000000 +0800 | ||
6 | +++ gtk+-2.23.2/Makefile.am 2010-11-25 13:39:22.000000000 +0800 | ||
7 | @@ -1,7 +1,7 @@ | ||
8 | ## Makefile.am for GTK+ | ||
9 | include $(top_srcdir)/Makefile.decl | ||
10 | |||
11 | -SRC_SUBDIRS = gdk gtk modules demos tests perf | ||
12 | +SRC_SUBDIRS = gdk gtk modules tests perf | ||
13 | SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros build | ||
14 | |||
15 | # require automake 1.4 | ||
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.24.6/run-iconcache.patch b/meta/recipes-gnome/gtk+/gtk+-2.24.6/run-iconcache.patch new file mode 100644 index 0000000000..597ba32470 --- /dev/null +++ b/meta/recipes-gnome/gtk+/gtk+-2.24.6/run-iconcache.patch | |||
@@ -0,0 +1,23 @@ | |||
1 | Upstream-Status: Inappropriate [configuration] | ||
2 | |||
3 | Index: gtk+-2.21.2/gtk/Makefile.am | ||
4 | =================================================================== | ||
5 | --- gtk+-2.21.2.orig/gtk/Makefile.am 2010-06-22 17:21:41.000000000 +0800 | ||
6 | +++ gtk+-2.21.2/gtk/Makefile.am 2010-06-22 17:28:12.000000000 +0800 | ||
7 | @@ -1376,11 +1376,11 @@ | ||
8 | ./gtk-update-icon-cache | ||
9 | endif | ||
10 | |||
11 | -gtkbuiltincache.h: @REBUILD@ stamp-icons | ||
12 | - $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT) $(GTK_UPDATE_ICON_CACHE_MANIFEST) | ||
13 | - $(gtk_update_icon_cache_program) --force --ignore-theme-index \ | ||
14 | - --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \ | ||
15 | - mv gtkbuiltincache.h.tmp gtkbuiltincache.h | ||
16 | +#gtkbuiltincache.h: @REBUILD@ stamp-icons | ||
17 | +# $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT) $(GTK_UPDATE_ICON_CACHE_MANIFEST) | ||
18 | +# $(gtk_update_icon_cache_program) --force --ignore-theme-index \ | ||
19 | +# --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \ | ||
20 | +# mv gtkbuiltincache.h.tmp gtkbuiltincache.h | ||
21 | |||
22 | EXTRA_DIST += \ | ||
23 | $(STOCK_ICONS) \ | ||
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.24.6/toggle-font.diff b/meta/recipes-gnome/gtk+/gtk+-2.24.6/toggle-font.diff new file mode 100644 index 0000000000..340d12008b --- /dev/null +++ b/meta/recipes-gnome/gtk+/gtk+-2.24.6/toggle-font.diff | |||
@@ -0,0 +1,102 @@ | |||
1 | Upstream-Status: Pending | ||
2 | |||
3 | Index: gtk/gtkcellrenderertoggle.c | ||
4 | =================================================================== | ||
5 | --- gtk/gtkcellrenderertoggle.c.orig 2010-06-22 18:11:33.000000000 +0800 | ||
6 | +++ gtk/gtkcellrenderertoggle.c 2010-06-22 18:11:43.000000000 +0800 | ||
7 | @@ -71,6 +71,8 @@ | ||
8 | PROP_INDICATOR_SIZE | ||
9 | }; | ||
10 | |||
11 | +/* This is a hard-coded default which promptly gets overridden by a size | ||
12 | + calculated from the font size. */ | ||
13 | #define TOGGLE_WIDTH 13 | ||
14 | |||
15 | static guint toggle_cell_signals[LAST_SIGNAL] = { 0 }; | ||
16 | @@ -80,8 +82,9 @@ | ||
17 | typedef struct _GtkCellRendererTogglePrivate GtkCellRendererTogglePrivate; | ||
18 | struct _GtkCellRendererTogglePrivate | ||
19 | { | ||
20 | - gint indicator_size; | ||
21 | - | ||
22 | + gint indicator_size; /* This is the real size */ | ||
23 | + gint override_size; /* This is the size set from the indicator-size property */ | ||
24 | + GtkWidget *cached_widget; | ||
25 | guint inconsistent : 1; | ||
26 | }; | ||
27 | |||
28 | @@ -104,6 +107,7 @@ | ||
29 | GTK_CELL_RENDERER (celltoggle)->ypad = 2; | ||
30 | |||
31 | priv->indicator_size = TOGGLE_WIDTH; | ||
32 | + priv->override_size = 0; | ||
33 | priv->inconsistent = FALSE; | ||
34 | } | ||
35 | |||
36 | @@ -210,7 +214,7 @@ | ||
37 | g_value_set_boolean (value, celltoggle->radio); | ||
38 | break; | ||
39 | case PROP_INDICATOR_SIZE: | ||
40 | - g_value_set_int (value, priv->indicator_size); | ||
41 | + g_value_set_int (value, priv->override_size ? priv->override_size : priv->indicator_size); | ||
42 | break; | ||
43 | default: | ||
44 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); | ||
45 | @@ -245,7 +249,7 @@ | ||
46 | celltoggle->radio = g_value_get_boolean (value); | ||
47 | break; | ||
48 | case PROP_INDICATOR_SIZE: | ||
49 | - priv->indicator_size = g_value_get_int (value); | ||
50 | + priv->override_size = g_value_get_int (value); | ||
51 | break; | ||
52 | default: | ||
53 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); | ||
54 | @@ -273,6 +277,27 @@ | ||
55 | } | ||
56 | |||
57 | static void | ||
58 | +on_widget_style_set (GtkWidget *widget, GtkStyle *previous, gpointer user_data) | ||
59 | +{ | ||
60 | + GtkCellRendererTogglePrivate *priv = user_data; | ||
61 | + PangoContext *context; | ||
62 | + PangoFontMetrics *metrics; | ||
63 | + int height; | ||
64 | + | ||
65 | + context = gtk_widget_get_pango_context (widget); | ||
66 | + metrics = pango_context_get_metrics (context, | ||
67 | + widget->style->font_desc, | ||
68 | + pango_context_get_language (context)); | ||
69 | + | ||
70 | + height = pango_font_metrics_get_ascent (metrics) + | ||
71 | + pango_font_metrics_get_descent (metrics); | ||
72 | + | ||
73 | + pango_font_metrics_unref (metrics); | ||
74 | + | ||
75 | + priv->indicator_size = PANGO_PIXELS (height * 0.85); | ||
76 | +} | ||
77 | + | ||
78 | +static void | ||
79 | gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell, | ||
80 | GtkWidget *widget, | ||
81 | GdkRectangle *cell_area, | ||
82 | @@ -287,6 +312,20 @@ | ||
83 | |||
84 | priv = GTK_CELL_RENDERER_TOGGLE_GET_PRIVATE (cell); | ||
85 | |||
86 | + if (priv->override_size) { | ||
87 | + priv->indicator_size = priv->override_size; | ||
88 | + } else if (priv->cached_widget != widget) { | ||
89 | + if (priv->cached_widget) { | ||
90 | + g_object_remove_weak_pointer (widget, &priv->cached_widget); | ||
91 | + g_signal_handlers_disconnect_by_func (priv->cached_widget, on_widget_style_set, priv); | ||
92 | + } | ||
93 | + priv->cached_widget = widget; | ||
94 | + g_object_add_weak_pointer (widget, &priv->cached_widget); | ||
95 | + g_signal_connect (widget, "style-set", on_widget_style_set, priv); | ||
96 | + | ||
97 | + on_widget_style_set (widget, NULL, priv); | ||
98 | + } | ||
99 | + | ||
100 | calc_width = (gint) cell->xpad * 2 + priv->indicator_size; | ||
101 | calc_height = (gint) cell->ypad * 2 + priv->indicator_size; | ||
102 | |||
diff --git a/meta/recipes-gnome/gtk+/gtk+-2.24.6/xsettings.patch b/meta/recipes-gnome/gtk+/gtk+-2.24.6/xsettings.patch new file mode 100644 index 0000000000..d0a970ad4d --- /dev/null +++ b/meta/recipes-gnome/gtk+/gtk+-2.24.6/xsettings.patch | |||
@@ -0,0 +1,20 @@ | |||
1 | Upstream-Status: Pending | ||
2 | |||
3 | Index: gtk+-2.21.2/gdk/x11/gdkevents-x11.c | ||
4 | =================================================================== | ||
5 | --- gtk+-2.21.2.orig/gdk/x11/gdkevents-x11.c 2010-06-22 17:28:04.000000000 +0800 | ||
6 | +++ gtk+-2.21.2/gdk/x11/gdkevents-x11.c 2010-06-22 17:28:06.000000000 +0800 | ||
7 | @@ -3062,10 +3062,9 @@ | ||
8 | { | ||
9 | GdkScreenX11 *screen = data; | ||
10 | |||
11 | - if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent)) | ||
12 | - return GDK_FILTER_REMOVE; | ||
13 | - else | ||
14 | - return GDK_FILTER_CONTINUE; | ||
15 | + xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent); | ||
16 | + | ||
17 | + return GDK_FILTER_CONTINUE; | ||
18 | } | ||
19 | |||
20 | static Bool | ||