Gentoo Archives: gentoo-commits

From: Nirbheek Chauhan <nirbheek@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gnome:master commit in: gnome-extra/libgda/, dev-cpp/libgdamm/, x11-wm/mutter/, mail-client/evolution/, ...
Date: Fri, 30 Sep 2011 19:44:41
Message-Id: 095d2892cd9c6ce86f653a0368949c2dc78859e8.nirbheek@gentoo
1 commit: 095d2892cd9c6ce86f653a0368949c2dc78859e8
2 Author: Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
3 AuthorDate: Fri Sep 30 19:44:15 2011 +0000
4 Commit: Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
5 CommitDate: Fri Sep 30 19:44:15 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=095d2892
7
8 libgda, evolution, mutter, gnome-shell: moved to the tree
9
10 ---
11 dev-cpp/libgdamm/libgdamm-4.99.3.1.ebuild | 29 -
12 .../gnome-shell-3.0.2-unbreak-extension-css.patch | 93 ---
13 .../gnome-shell-3.0.2-user-removed-signals.patch | 33 -
14 gnome-base/gnome-shell/gnome-shell-3.0.2-r1.ebuild | 132 ----
15 gnome-extra/libgda/libgda-4.99.4.ebuild | 174 -----
16 mail-client/evolution/evolution-3.0.3.ebuild | 184 -----
17 mail-client/evolution/evolution-9999.ebuild | 22 +-
18 ...Always-update-signature-in-composer-on-ac.patch | 25 -
19 ...refresh_folders_exec-reports-progress-inc.patch | 41 -
20 ...Crash-using-saved-search-with-an-empty-ex.patch | 37 -
21 .../evolution-2.32.0-wrong-lafile-usage.patch | 13 -
22 .../files/mutter-3.0.2-argb-windows-shadow.patch | 764 --------------------
23 x11-wm/mutter/files/mutter-3.0.2-fix-xshape.patch | 30 -
24 .../mutter-3.0.2-frame-region-cairo-region.patch | 234 ------
25 x11-wm/mutter/mutter-3.0.2.1.ebuild | 89 ---
26 15 files changed, 7 insertions(+), 1893 deletions(-)
27
28 diff --git a/dev-cpp/libgdamm/libgdamm-4.99.3.1.ebuild b/dev-cpp/libgdamm/libgdamm-4.99.3.1.ebuild
29 deleted file mode 100644
30 index 4dbcda1..0000000
31 --- a/dev-cpp/libgdamm/libgdamm-4.99.3.1.ebuild
32 +++ /dev/null
33 @@ -1,29 +0,0 @@
34 -# Copyright 1999-2011 Gentoo Foundation
35 -# Distributed under the terms of the GNU General Public License v2
36 -# $Header: /var/cvsroot/gentoo-x86/dev-cpp/libgdamm/libgdamm-4.1.1.ebuild,v 1.2 2011/02/17 10:15:01 pacho Exp $
37 -
38 -EAPI="4"
39 -GNOME2_LA_PUNT="yes"
40 -GCONF_DEBUG="no"
41 -
42 -inherit gnome2
43 -
44 -DESCRIPTION="C++ bindings for libgda"
45 -HOMEPAGE="http://www.gtkmm.org"
46 -
47 -LICENSE="LGPL-2.1"
48 -SLOT="5"
49 -KEYWORDS="~amd64 ~ppc ~sparc ~x86"
50 -IUSE="berkdb doc"
51 -
52 -RDEPEND=">=dev-cpp/glibmm-2.27.93:2
53 - >=gnome-extra/libgda-4.99.3:5[berkdb=]"
54 -DEPEND="${RDEPEND}
55 - dev-util/pkgconfig
56 - doc? ( app-doc/doxygen )"
57 -
58 -pkg_setup() {
59 - # Automagic libgda-berkdb support
60 - DOCS="AUTHORS ChangeLog NEWS README TODO"
61 - G2CONF="${G2CONF} $(use_enable doc documentation)"
62 -}
63
64 diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.0.2-unbreak-extension-css.patch b/gnome-base/gnome-shell/files/gnome-shell-3.0.2-unbreak-extension-css.patch
65 deleted file mode 100644
66 index 75c6aee..0000000
67 --- a/gnome-base/gnome-shell/files/gnome-shell-3.0.2-unbreak-extension-css.patch
68 +++ /dev/null
69 @@ -1,93 +0,0 @@
70 -From 2674d96e547b27ed5c377804c1059bdfd926086e Mon Sep 17 00:00:00 2001
71 -From: Giovanni Campagna <gcampagna@×××××××××.org>
72 -Date: Thu, 02 Jun 2011 15:05:08 +0000
73 -Subject: StTheme: retrive the list of custom stylesheets and use it in loadTheme()
74 -
75 -Using the list of stylesheets loaded with st_theme_load_stylesheet(),
76 -one can build an StTheme that is completely identical to the previous
77 -one, except for one property (application-stylesheet).
78 -This allows rt and the user-theme extension to work while respecting
79 -the theming of other extensions.
80 -
81 -https://bugzilla.gnome.org/show_bug.cgi?id=650971
82 ----
83 -diff --git a/js/ui/main.js b/js/ui/main.js
84 -index 1d27b4c..c0f4845 100644
85 ---- a/js/ui/main.js
86 -+++ b/js/ui/main.js
87 -@@ -393,12 +393,21 @@ function setThemeStylesheet(cssStylesheet)
88 - */
89 - function loadTheme() {
90 - let themeContext = St.ThemeContext.get_for_stage (global.stage);
91 -+ let previousTheme = themeContext.get_theme();
92 -
93 - let cssStylesheet = _defaultCssStylesheet;
94 - if (_cssStylesheet != null)
95 - cssStylesheet = _cssStylesheet;
96 -
97 - let theme = new St.Theme ({ application_stylesheet: cssStylesheet });
98 -+
99 -+ if (previousTheme) {
100 -+ let customStylesheets = previousTheme.get_custom_stylesheets();
101 -+
102 -+ for (let i = 0; i < customStylesheets.length; i++)
103 -+ theme.load_stylesheet(customStylesheets[i]);
104 -+ }
105 -+
106 - themeContext.set_theme (theme);
107 - }
108 -
109 -diff --git a/src/st/st-theme.c b/src/st/st-theme.c
110 -index 326d9de..2058e32 100644
111 ---- a/src/st/st-theme.c
112 -+++ b/src/st/st-theme.c
113 -@@ -256,6 +256,30 @@ st_theme_unload_stylesheet (StTheme *theme,
114 - cr_stylesheet_unref (stylesheet);
115 - }
116 -
117 -+/**
118 -+ * st_theme_get_custom_stylesheets:
119 -+ * @theme: an #StTheme
120 -+ *
121 -+ * Returns: (transfer full) (element-type utf8): the list of stylesheet filenames
122 -+ * that were loaded with st_theme_load_stylesheet()
123 -+ */
124 -+GSList*
125 -+st_theme_get_custom_stylesheets (StTheme *theme)
126 -+{
127 -+ GSList *result = NULL;
128 -+ GSList *iter;
129 -+
130 -+ for (iter = theme->custom_stylesheets; iter; iter = iter->next)
131 -+ {
132 -+ CRStyleSheet *stylesheet = iter->data;
133 -+ gchar *filename = g_hash_table_lookup (theme->filenames_by_stylesheet, stylesheet);
134 -+
135 -+ result = g_slist_prepend (result, g_strdup (filename));
136 -+ }
137 -+
138 -+ return result;
139 -+}
140 -+
141 - static GObject *
142 - st_theme_constructor (GType type,
143 - guint n_construct_properties,
144 -diff --git a/src/st/st-theme.h b/src/st/st-theme.h
145 -index 003c2a7..0a044bf 100644
146 ---- a/src/st/st-theme.h
147 -+++ b/src/st/st-theme.h
148 -@@ -51,9 +51,9 @@ StTheme *st_theme_new (const char *application_stylesheet,
149 - const char *theme_stylesheet,
150 - const char *default_stylesheet);
151 -
152 --gboolean st_theme_load_stylesheet (StTheme *theme, const char *path, GError **error);
153 --
154 --void st_theme_unload_stylesheet (StTheme *theme, const char *path);
155 -+gboolean st_theme_load_stylesheet (StTheme *theme, const char *path, GError **error);
156 -+void st_theme_unload_stylesheet (StTheme *theme, const char *path);
157 -+GSList *st_theme_get_custom_stylesheets (StTheme *theme);
158 -
159 - G_END_DECLS
160 -
161 ---
162 -cgit v0.9.0.2
163
164 diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.0.2-user-removed-signals.patch b/gnome-base/gnome-shell/files/gnome-shell-3.0.2-user-removed-signals.patch
165 deleted file mode 100644
166 index adae1f0..0000000
167 --- a/gnome-base/gnome-shell/files/gnome-shell-3.0.2-user-removed-signals.patch
168 +++ /dev/null
169 @@ -1,33 +0,0 @@
170 -From 9a7f3dbd2030a5e1b54297f1aa7cf228eccafb27 Mon Sep 17 00:00:00 2001
171 -From: Ray Strode <rstrode@××××××.com>
172 -Date: Tue, 24 May 2011 22:15:10 -0400
173 -Subject: [PATCH] gdm: ignore user-removed signals for untracked users
174 -
175 -If we don't know about a user, we don't care if it goes away,
176 -and we shouldn't try to remove it from the book keeping.
177 -
178 -https://bugzilla.gnome.org/show_bug.cgi?id=647893
179 ----
180 - src/gdmuser/gdm-user-manager.c | 7 +++++++
181 - 1 files changed, 7 insertions(+), 0 deletions(-)
182 -
183 -diff --git a/src/gdmuser/gdm-user-manager.c b/src/gdmuser/gdm-user-manager.c
184 -index e7ca833..561be32 100644
185 ---- a/src/gdmuser/gdm-user-manager.c
186 -+++ b/src/gdmuser/gdm-user-manager.c
187 -@@ -887,6 +887,13 @@ on_user_removed_in_accounts_service (DBusGProxy *proxy,
188 -
189 - user = g_hash_table_lookup (manager->priv->users_by_object_path, object_path);
190 -
191 -+ if (user == NULL) {
192 -+ g_debug ("GdmUserManager: ignoring untracked user %s", object_path);
193 -+ return;
194 -+ } else {
195 -+ g_debug ("GdmUserManager: tracked user %s removed from accounts service", object_path);
196 -+ }
197 -+
198 - manager->priv->new_users = g_slist_remove (manager->priv->new_users, user);
199 -
200 - remove_user (manager, user);
201 ---
202 -1.7.5.1
203 \ No newline at end of file
204
205 diff --git a/gnome-base/gnome-shell/gnome-shell-3.0.2-r1.ebuild b/gnome-base/gnome-shell/gnome-shell-3.0.2-r1.ebuild
206 deleted file mode 100644
207 index d14bd64..0000000
208 --- a/gnome-base/gnome-shell/gnome-shell-3.0.2-r1.ebuild
209 +++ /dev/null
210 @@ -1,132 +0,0 @@
211 -# Copyright 1999-2011 Gentoo Foundation
212 -# Distributed under the terms of the GNU General Public License v2
213 -# $Header: $
214 -
215 -EAPI="3"
216 -GCONF_DEBUG="no"
217 -GNOME2_LA_PUNT="yes"
218 -PYTHON_DEPEND="2:2.5"
219 -
220 -inherit eutils gnome2 python
221 -if [[ ${PV} = 9999 ]]; then
222 - inherit gnome2-live
223 -fi
224 -
225 -DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
226 -HOMEPAGE="http://live.gnome.org/GnomeShell"
227 -
228 -LICENSE="GPL-2"
229 -SLOT="0"
230 -IUSE="+nm-applet"
231 -if [[ ${PV} = 9999 ]]; then
232 - KEYWORDS=""
233 -else
234 - KEYWORDS="~amd64 ~x86"
235 -fi
236 -
237 -# gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
238 -# FIXME: Automagic gnome-bluetooth[introspection] support.
239 -# latest gsettings-desktop-schemas is needed due to commit 602fa1c6
240 -# latest g-c-c is needed due to https://bugs.gentoo.org/show_bug.cgi?id=360057
241 -# libXfixes-5.0 needed for pointer barriers
242 -COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
243 - >=dev-libs/gjs-0.7.11
244 - >=dev-libs/gobject-introspection-0.10.1
245 - x11-libs/gdk-pixbuf:2[introspection]
246 - >=x11-libs/gtk+-3.0.0:3[introspection]
247 - >=media-libs/clutter-1.5.15:1.0[introspection]
248 - >=gnome-base/gnome-desktop-2.91.2:3
249 - >=gnome-base/gsettings-desktop-schemas-2.91.91
250 - >=gnome-extra/evolution-data-server-2.32.0
251 - >=media-libs/gstreamer-0.10.16:0.10
252 - >=media-libs/gst-plugins-base-0.10.16:0.10
253 - >=net-im/telepathy-logger-0.2.4[introspection]
254 - >=net-libs/telepathy-glib-0.13.12[introspection]
255 - >=net-wireless/gnome-bluetooth-2.90.0[introspection]
256 - >=sys-auth/polkit-0.100[introspection]
257 - >=x11-wm/mutter-3.0.0[introspection]
258 -
259 - dev-libs/dbus-glib
260 - dev-libs/libxml2:2
261 - x11-libs/pango[introspection]
262 - dev-libs/libcroco:0.6
263 -
264 - gnome-base/gconf:2[introspection]
265 - gnome-base/gnome-menus
266 - gnome-base/librsvg
267 - media-libs/libcanberra
268 - media-sound/pulseaudio
269 -
270 - x11-libs/startup-notification
271 - x11-libs/libX11
272 - >=x11-libs/libXfixes-5.0
273 - x11-apps/mesa-progs"
274 -# Runtime-only deps are probably incomplete and approximate.
275 -# Each block:
276 -# 1. Pull in polkit-0.101 for pretty authorization dialogs
277 -# 2. Introspection stuff + dconf needed via imports.gi.*
278 -# 3. gnome-session is needed for gnome-session-quit
279 -# 4. Control shell settings
280 -# 5. accountsservice is needed for GdmUserManager
281 -# 6. nm-applet is needed for auth prompting and the wireless connection dialog
282 -RDEPEND="${COMMON_DEPEND}
283 - >=sys-auth/polkit-0.101[introspection]
284 -
285 - >=gnome-base/dconf-0.4.1
286 - >=gnome-base/libgnomekbd-2.91.4[introspection]
287 - sys-power/upower[introspection]
288 -
289 - >=gnome-base/gnome-session-2.91.91
290 -
291 - >=gnome-base/gnome-settings-daemon-2.91
292 - >=gnome-base/gnome-control-center-2.91.92-r1
293 -
294 - >=sys-apps/accountsservice-0.6.12
295 -
296 - nm-applet? (
297 - >=gnome-extra/nm-applet-0.8.999
298 - >=net-misc/networkmanager-0.8.999[introspection] )"
299 -DEPEND="${COMMON_DEPEND}
300 - sys-devel/gettext
301 - >=dev-util/pkgconfig-0.22
302 - >=dev-util/intltool-0.26
303 - gnome-base/gnome-common
304 - !!=dev-lang/spidermonkey-1.8.2*"
305 -# libmozjs.so is picked up from /usr/lib while compiling, so block at build-time
306 -# https://bugs.gentoo.org/show_bug.cgi?id=360413
307 -
308 -pkg_setup() {
309 - DOCS="AUTHORS README"
310 - # Don't error out on warnings
311 - G2CONF="${G2CONF}
312 - --enable-compile-warnings=maximum
313 - --disable-schemas-compile
314 - --disable-jhbuild-wrapper-script"
315 -}
316 -
317 -src_prepare() {
318 - # https://bugzilla.gnome.org/show_bug.cgi?id=647893
319 - # can trigger the crash even with accountsservice-0.6.12
320 - epatch "${FILESDIR}/${PN}-3.0.2-user-removed-signals.patch"
321 -
322 - # https://bugzilla.gnome.org/show_bug.cgi?id=650971
323 - # Don't clobber extensions' styles
324 - epatch "${FILESDIR}/${PN}-3.0.2-unbreak-extension-css.patch"
325 - gnome2_src_prepare
326 -}
327 -
328 -src_install() {
329 - gnome2_src_install
330 - python_convert_shebangs 2 "${D}"/usr/bin/gnome-shell-extension-tool
331 -}
332 -
333 -pkg_postinst() {
334 - gnome2_pkg_postinst
335 - if ! has_version '>=media-libs/gst-plugins-good-0.10.23' || \
336 - ! has_version 'media-plugins/gst-plugins-vp8'; then
337 - ewarn "To make use of GNOME Shell's built-in screen recording utility,"
338 - ewarn "you need to either install >=media-libs/gst-plugins-good-0.10.23"
339 - ewarn "and media-plugins/gst-plugins-vp8, or use dconf-editor to change"
340 - ewarn "apps.gnome-shell.recorder/pipeline to what you want to use."
341 - fi
342 -}
343
344 diff --git a/gnome-extra/libgda/libgda-4.99.4.ebuild b/gnome-extra/libgda/libgda-4.99.4.ebuild
345 deleted file mode 100644
346 index 7a4d659..0000000
347 --- a/gnome-extra/libgda/libgda-4.99.4.ebuild
348 +++ /dev/null
349 @@ -1,174 +0,0 @@
350 -# Copyright 1999-2011 Gentoo Foundation
351 -# Distributed under the terms of the GNU General Public License v2
352 -# $Header: /var/cvsroot/gentoo-x86/gnome-extra/libgda/libgda-4.2.0.ebuild,v 1.3 2010/11/01 12:18:13 eva Exp $
353 -
354 -EAPI="3"
355 -GNOME2_LA_PUNT="yes"
356 -GCONF_DEBUG="yes"
357 -GNOME_TARBALL_SUFFIX="xz" # remove when python eclass supports EAPI 4
358 -PYTHON_DEPEND="2"
359 -
360 -inherit autotools db-use eutils flag-o-matic gnome2 java-pkg-opt-2 python
361 -if [[ ${PV} = 9999 ]]; then
362 - inherit gnome2-live
363 -fi
364 -
365 -DESCRIPTION="Gnome Database Access Library"
366 -HOMEPAGE="http://www.gnome-db.org/"
367 -LICENSE="GPL-2 LGPL-2"
368 -
369 -IUSE="berkdb bindist canvas doc firebird gnome-keyring gtk graphviz http +introspection json ldap mdb mysql oci8 postgres sourceview ssl"
370 -SLOT="5"
371 -if [[ ${PV} = 9999 ]]; then
372 - KEYWORDS=""
373 -else
374 - KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
375 -fi
376 -
377 -# FIXME: sqlite is automagic, but maybe it is a hard-dep
378 -# FIXME: autoconf is a hell of inconsistencies
379 -RDEPEND="
380 - app-text/iso-codes
381 - >=dev-libs/glib-2.16:2
382 - >=dev-libs/libxml2-2
383 - dev-libs/libxslt
384 - dev-libs/libunique:3
385 - sys-libs/readline
386 - sys-libs/ncurses
387 - berkdb? ( sys-libs/db )
388 - !bindist? ( firebird? ( dev-db/firebird ) )
389 - gtk? (
390 - >=x11-libs/gtk+-3.0.0:3
391 - canvas? ( x11-libs/goocanvas:2.0 )
392 - sourceview? ( x11-libs/gtksourceview:3.0 )
393 - graphviz? ( media-gfx/graphviz )
394 - )
395 - gnome-keyring? ( || ( gnome-base/libgnome-keyring <gnome-base/gnome-keyring-2.29.4 ) )
396 - http? ( >=net-libs/libsoup-2.24:2.4 )
397 - introspection? ( >=dev-libs/gobject-introspection-0.6.5 )
398 - json? ( dev-libs/json-glib )
399 - ldap? ( net-nds/openldap )
400 - mdb? ( >app-office/mdbtools-0.5 )
401 - mysql? ( virtual/mysql )
402 - postgres? ( dev-db/postgresql-base )
403 - ssl? ( dev-libs/openssl )
404 - >=dev-db/sqlite-3.6.22:3"
405 -
406 -DEPEND="${RDEPEND}
407 - >=dev-util/pkgconfig-0.18
408 - >=dev-util/intltool-0.35.5
409 - >=app-text/gnome-doc-utils-0.9
410 - doc? ( >=dev-util/gtk-doc-1 )"
411 -
412 -# XXX: some tests fail when run from portage (but pass when building by hand)
413 -RESTRICT="test"
414 -
415 -pkg_setup() {
416 - DOCS="AUTHORS ChangeLog NEWS README"
417 -
418 - if use canvas || use graphviz || use sourceview; then
419 - if ! use gtk; then
420 - ewarn "You must enable USE=gtk to make use of canvas, graphivz or sourceview USE flag."
421 - ewarn "Disabling for now."
422 - G2CONF="${G2CONF} --without-goocanvas --without-graphivz --without-gtksourceview"
423 - else
424 - G2CONF="${G2CONF}
425 - $(use_with canvas goocanvas)
426 - $(use_with graphviz)
427 - $(use_with sourceview gtksourceview)"
428 - fi
429 - fi
430 -
431 - G2CONF="${G2CONF}
432 - --with-unique
433 - --disable-scrollkeeper
434 - --disable-static
435 - --enable-system-sqlite
436 - $(use_with berkdb bdb /usr)
437 - $(use_with gnome-keyring)
438 - $(use_with gtk ui)
439 - $(use_with http libsoup)
440 - $(use_enable introspection)
441 - $(use_with java java $JAVA_HOME)
442 - $(use_enable json)
443 - $(use_with ldap)
444 - $(use_with mdb mdb /usr)
445 - $(use_with mysql mysql /usr)
446 - $(use_with postgres postgres /usr)
447 - $(use_enable ssl crypto)"
448 -
449 - if use bindist; then
450 - # firebird license is not GPL compatible
451 - G2CONF="${G2CONF} --without-firebird"
452 - else
453 - G2CONF="${G2CONF} $(use_with firebird firebird /usr)"
454 - fi
455 -
456 - use berkdb && append-cppflags "-I$(db_includedir)"
457 - use oci8 || G2CONF="${G2CONF} --without-oracle"
458 -
459 - # Not in portage
460 - G2CONF="${G2CONF}
461 - --disable-default-binary"
462 -}
463 -
464 -src_prepare() {
465 - # Fix build order for generated content, upstream #630958
466 - #epatch "${FILESDIR}/${PN}-9999-fix-build-order.patch"
467 -
468 - # Fix compilation failure of keyword_hash.c, upstream #630959
469 - #epatch "${FILESDIR}/${PN}-4.2.0-missing-include-in-keyword_hash-generator.patch"
470 -
471 - # Upstream patch to fix a serious statement rewriting bug, in next release
472 - epatch "${FILESDIR}/${P}-statement-rewriting-fix.patch"
473 -
474 - # Disable broken tests so we can check the others
475 - epatch "${FILESDIR}/${PN}-9999-disable-broken-tests.patch"
476 -
477 - # Prevent file collisions with libgda:4
478 - epatch "${FILESDIR}/${PN}-4.99.1-gda-browser-help-collision.patch"
479 - epatch "${FILESDIR}/${PN}-4.99.1-gda-browser-doc-collision.patch"
480 - epatch "${FILESDIR}/${PN}-4.99.1-control-center-icon-collision.patch"
481 - # Move files with mv (since epatch can't handle rename diffs) and
482 - # update pre-generated gtk-doc files (for non-git versions of libgda)
483 - local f
484 - for f in tools/browser/doc/gda-browser* ; do
485 - mv ${f} ${f/gda-browser/gda-browser-5.0} || die "mv ${f} failed"
486 - done
487 - if [[ ${PV} != 9999 ]] ; then
488 - for f in tools/browser/doc/html/gda-browser.devhelp* ; do
489 - sed -e 's:name="gda-browser":name="gda-browser-5.0":' \
490 - -i ${f} || die "sed ${f} failed"
491 - mv ${f} ${f/gda-browser/gda-browser-5.0} || die "mv ${f} failed"
492 - done
493 - fi
494 - for f in control-center/data/*_gda-control-center.png ; do
495 - mv ${f} ${f/_gda-control-center.png/_gda-control-center-5.0.png} ||
496 - die "mv ${f} failed"
497 - done
498 -
499 - python_convert_shebangs -r 2 libgda-report/RML/trml2{html,pdf}
500 -
501 - eautoreconf
502 - gnome2_src_prepare
503 -}
504 -
505 -src_test() {
506 - emake check XDG_DATA_HOME="${T}/.local" || die "tests failed"
507 -}
508 -
509 -pkg_postinst() {
510 - gnome2_pkg_postinst
511 - local d
512 - for d in /usr/share/libgda-5.0/gda_trml2{html,pdf} ; do
513 - python_mod_optimize ${d}
514 - done
515 -}
516 -
517 -pkg_postrm() {
518 - gnome2_pkg_postrm
519 - local d
520 - for d in /usr/share/libgda-5.0/gda_trml2{html,pdf} ; do
521 - python_mod_cleanup ${d}
522 - done
523 -}
524
525 diff --git a/mail-client/evolution/evolution-3.0.3.ebuild b/mail-client/evolution/evolution-3.0.3.ebuild
526 deleted file mode 100644
527 index a501b84..0000000
528 --- a/mail-client/evolution/evolution-3.0.3.ebuild
529 +++ /dev/null
530 @@ -1,184 +0,0 @@
531 -# Copyright 1999-2011 Gentoo Foundation
532 -# Distributed under the terms of the GNU General Public License v2
533 -# $Header: /var/cvsroot/gentoo-x86/mail-client/evolution/evolution-2.32.1-r1.ebuild,v 1.3 2011/01/15 19:56:39 nirbheek Exp $
534 -
535 -EAPI="3"
536 -GCONF_DEBUG="no"
537 -GNOME2_LA_PUNT="yes"
538 -PYTHON_DEPEND="python? 2:2.4"
539 -
540 -inherit autotools eutils flag-o-matic gnome2 python
541 -if [[ ${PV} = 9999 ]]; then
542 - inherit gnome2-live
543 -fi
544 -
545 -DESCRIPTION="Integrated mail, addressbook and calendaring functionality"
546 -HOMEPAGE="http://www.gnome.org/projects/evolution/"
547 -
548 -LICENSE="GPL-2 LGPL-2 OPENLDAP"
549 -SLOT="2.0"
550 -if [[ ${PV} = 9999 ]]; then
551 - KEYWORDS=""
552 -else
553 - KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
554 -fi
555 -IUSE="clutter connman crypt doc gstreamer kerberos ldap map networkmanager python ssl"
556 -
557 -# We need a graphical pinentry frontend to be able to ask for the GPG
558 -# password from inside evolution, bug 160302
559 -PINENTRY_DEPEND="|| ( app-crypt/pinentry[gtk] app-crypt/pinentry-qt app-crypt/pinentry[qt4] )"
560 -
561 -# contacts-map plugin requires libchaimplain and geoclue
562 -# glade-3 support is for maintainers only per configure.ac
563 -# mono plugin disabled as it's incompatible with 2.8 and lacks maintainance (see bgo#634571)
564 -# pst is not mature enough and changes API/ABI frequently
565 -COMMON_DEPEND=">=dev-libs/glib-2.28:2
566 - >=x11-libs/cairo-1.9.15[glib]
567 - >=x11-libs/gtk+-3.0.2:3
568 - >=dev-libs/libunique-2.91.4:3
569 - >=gnome-base/gnome-desktop-2.91.3:3
570 - >=dev-libs/libgweather-2.90.0:2
571 - >=media-libs/libcanberra-0.25[gtk3]
572 - >=x11-libs/libnotify-0.7
573 - >=gnome-extra/evolution-data-server-${PV}[weather]
574 - >=gnome-extra/gtkhtml-3.31.3:4.0
575 - >=gnome-base/gconf-2:2
576 - dev-libs/atk
577 - >=dev-libs/libxml2-2.7.3:2
578 - >=net-libs/libsoup-gnome-2.31.2:2.4
579 - >=x11-misc/shared-mime-info-0.22
580 - >=x11-themes/gnome-icon-theme-2.30.2.1
581 - >=dev-libs/libgdata-0.4
582 -
583 - x11-libs/libSM
584 - x11-libs/libICE
585 -
586 - clutter? (
587 - >=media-libs/clutter-1.0.0:1.0
588 - >=media-libs/clutter-gtk-0.90:1.0
589 - x11-libs/mx )
590 - connman? ( net-misc/connman )
591 - crypt? ( || (
592 - ( >=app-crypt/gnupg-2.0.1-r2 ${PINENTRY_DEPEND} )
593 - =app-crypt/gnupg-1.4* ) )
594 - gstreamer? (
595 - >=media-libs/gstreamer-0.10:0.10
596 - >=media-libs/gst-plugins-base-0.10:0.10 )
597 - kerberos? ( virtual/krb5 )
598 - ldap? ( >=net-nds/openldap-2 )
599 - map? (
600 - >=app-misc/geoclue-0.11.1
601 - media-libs/libchamplain:0.8 )
602 - networkmanager? ( >=net-misc/networkmanager-0.7 )
603 - ssl? (
604 - >=dev-libs/nspr-4.6.1
605 - >=dev-libs/nss-3.11 )"
606 -DEPEND="${COMMON_DEPEND}
607 - >=dev-util/pkgconfig-0.16
608 - >=dev-util/intltool-0.40.0
609 - >=sys-devel/gettext-0.17
610 - sys-devel/bison
611 - app-text/scrollkeeper
612 - >=app-text/gnome-doc-utils-0.9.1
613 - app-text/docbook-xml-dtd:4.1.2
614 - >=gnome-base/gnome-common-2.12
615 - >=dev-util/gtk-doc-am-1.9
616 - doc? ( >=dev-util/gtk-doc-1.9 )"
617 -# eautoreconf needs:
618 -# >=gnome-base/gnome-common-2.12
619 -# >=dev-util/gtk-doc-am-1.9
620 -RDEPEND="${COMMON_DEPEND}
621 - !<gnome-extra/evolution-exchange-2.32"
622 -
623 -# Need EAPI=4 support in python eclass
624 -#REQUIRED_USE="map? ( clutter )"
625 -
626 -pkg_setup() {
627 - ELTCONF="--reverse-deps"
628 - DOCS="AUTHORS ChangeLog* HACKING MAINTAINERS NEWS* README"
629 - # image-inline plugin needs a gtk+:3 gtkimageview, which does not exist yet
630 - G2CONF="${G2CONF}
631 - --without-glade-catalog
632 - --without-kde-applnk-path
633 - --enable-plugins=experimental
634 - --disable-image-inline
635 - --disable-mono
636 - --disable-profiling
637 - --disable-pst-import
638 - --enable-canberra
639 - --enable-weather
640 - $(use_enable ssl nss)
641 - $(use_enable ssl smime)
642 - $(use_enable networkmanager nm)
643 - $(use_enable connman)
644 - $(use_enable gstreamer audio-inline)
645 - $(use_enable map contacts-map)
646 - $(use_enable python)
647 - $(use_with clutter)
648 - $(use_with ldap openldap)
649 - $(use_with kerberos krb5 /usr)"
650 -
651 - # dang - I've changed this to do --enable-plugins=experimental. This will
652 - # autodetect new-mail-notify and exchange, but that cannot be helped for the
653 - # moment. They should be changed to depend on a --enable-<foo> like mono
654 - # is. This cleans up a ton of crap from this ebuild.
655 -
656 - # Use NSS/NSPR only if 'ssl' is enabled.
657 - if use ssl ; then
658 - G2CONF="${G2CONF} --enable-nss=yes"
659 - else
660 - G2CONF="${G2CONF}
661 - --without-nspr-libs
662 - --without-nspr-includes
663 - --without-nss-libs
664 - --without-nss-includes"
665 - fi
666 -
667 - # NM and connman support cannot coexist
668 - if use networkmanager && use connman ; then
669 - ewarn "It is not possible to enable both ConnMan and NetworkManager, disabling connman..."
670 - G2CONF="${G2CONF} --disable-connman"
671 - fi
672 -
673 - python_set_active_version 2
674 -}
675 -
676 -src_prepare() {
677 - # Use NSS/NSPR only if 'ssl' is enabled.
678 - if use ssl ; then
679 - sed -e 's|mozilla-nss|nss|' \
680 - -e 's|mozilla-nspr|nspr|' \
681 - -i configure.ac || die "sed 2 failed"
682 - fi
683 -
684 - # Fix compilation flags crazyness
685 - sed -e 's/\(AM_CPPFLAGS="\)$WARNING_FLAGS"/\1/' \
686 - -i configure.ac || die "sed 1 failed"
687 -
688 - if [[ ${PV} != 9999 ]]; then
689 - intltoolize --force --copy --automake || die "intltoolize failed"
690 - eautoreconf
691 - fi
692 -
693 - gnome2_src_prepare
694 -}
695 -
696 -pkg_postinst() {
697 - gnome2_pkg_postinst
698 -
699 - elog "To change the default browser if you are not using GNOME, edit"
700 - elog "~/.local/share/applications/mimeapps.list so it includes the"
701 - elog "following content:"
702 - elog ""
703 - elog "[Default Applications]"
704 - elog "x-scheme-handler/http=firefox.desktop"
705 - elog "x-scheme-handler/https=firefox.desktop"
706 - elog ""
707 - elog "(replace firefox.desktop with the name of the appropriate .desktop"
708 - elog "file from /usr/share/applications if you use a different browser)."
709 - elog ""
710 - elog "Junk filters are now a run-time choice. You will get a choice of"
711 - elog "bogofilter or spamassassin based on which you have installed"
712 - elog ""
713 - elog "You have to install one of these for the spam filtering to actually work"
714 -}
715
716 diff --git a/mail-client/evolution/evolution-9999.ebuild b/mail-client/evolution/evolution-9999.ebuild
717 index 04f6f5e..80c1fce 100644
718 --- a/mail-client/evolution/evolution-9999.ebuild
719 +++ b/mail-client/evolution/evolution-9999.ebuild
720 @@ -5,6 +5,7 @@
721 EAPI="3"
722 GCONF_DEBUG="no"
723 GNOME2_LA_PUNT="yes"
724 +GNOME_TARBALL_SUFFIX="xz"
725 PYTHON_DEPEND="python? 2:2.4"
726
727 inherit autotools flag-o-matic gnome2 python
728 @@ -91,7 +92,8 @@ RDEPEND="${COMMON_DEPEND}
729 !<gnome-extra/evolution-exchange-2.32"
730
731 # Need EAPI=4 support in python eclass
732 -#REQUIRED_USE="map? ( clutter )"
733 +#REQUIRED_USE="map? ( clutter )
734 +# ^^ ( connman networkmanager )"
735
736 pkg_setup() {
737 ELTCONF="--reverse-deps"
738 @@ -135,6 +137,7 @@ pkg_setup() {
739 fi
740
741 # NM and connman support cannot coexist
742 + # XXX: remove with EAPI 4
743 if use networkmanager && use connman ; then
744 ewarn "It is not possible to enable both ConnMan and NetworkManager, disabling connman..."
745 G2CONF="${G2CONF} --disable-connman"
746 @@ -144,23 +147,12 @@ pkg_setup() {
747 }
748
749 src_prepare() {
750 - # Use NSS/NSPR only if 'ssl' is enabled.
751 - if use ssl ; then
752 - sed -e 's|mozilla-nss|nss|' \
753 - -e 's|mozilla-nspr|nspr|' \
754 - -i configure.ac || die "sed 2 failed"
755 - fi
756 + gnome2_src_prepare
757
758 # Fix compilation flags crazyness
759 + # Note: sed configure.ac if eautoreconf, conditional on [[ 9999 ]]
760 sed -e 's/\(AM_CPPFLAGS="\)$WARNING_FLAGS"/\1/' \
761 - -i configure.ac || die "sed 1 failed"
762 -
763 - if [[ ${PV} != 9999 ]]; then
764 - intltoolize --force --copy --automake || die "intltoolize failed"
765 - eautoreconf
766 - fi
767 -
768 - gnome2_src_prepare
769 + -i configure || die "CPPFLAGS sed failed"
770 }
771
772 pkg_postinst() {
773
774 diff --git a/mail-client/evolution/files/0001-Bug-651039-Always-update-signature-in-composer-on-ac.patch b/mail-client/evolution/files/0001-Bug-651039-Always-update-signature-in-composer-on-ac.patch
775 deleted file mode 100644
776 index 7f80812..0000000
777 --- a/mail-client/evolution/files/0001-Bug-651039-Always-update-signature-in-composer-on-ac.patch
778 +++ /dev/null
779 @@ -1,25 +0,0 @@
780 -From 843e35c48ada910eb1fefb202bcb849d1047c359 Mon Sep 17 00:00:00 2001
781 -From: Milan Crha <mcrha@××××××.com>
782 -Date: Wed, 25 May 2011 11:20:26 +0200
783 -Subject: [PATCH 1/3] Bug #651039 - Always update signature in composer on
784 - account change
785 -
786 ----
787 - composer/e-msg-composer.c | 1 +
788 - 1 files changed, 1 insertions(+), 0 deletions(-)
789 -
790 -diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
791 -index 0bc9ca9..c8f1993 100644
792 ---- a/composer/e-msg-composer.c
793 -+++ b/composer/e-msg-composer.c
794 -@@ -1714,6 +1714,7 @@ msg_composer_account_changed_cb (EMsgComposer *composer)
795 - uid = account->id->sig_uid;
796 - signature = uid ? e_get_signature_by_uid (uid) : NULL;
797 - e_composer_header_table_set_signature (table, signature);
798 -+ e_msg_composer_show_sig_file (composer);
799 - }
800 -
801 - static void
802 ---
803 -1.7.5.rc3
804 -
805
806 diff --git a/mail-client/evolution/files/0002-Bug-651062-refresh_folders_exec-reports-progress-inc.patch b/mail-client/evolution/files/0002-Bug-651062-refresh_folders_exec-reports-progress-inc.patch
807 deleted file mode 100644
808 index 4579cda..0000000
809 --- a/mail-client/evolution/files/0002-Bug-651062-refresh_folders_exec-reports-progress-inc.patch
810 +++ /dev/null
811 @@ -1,41 +0,0 @@
812 -From fbd3aca29cc12c8a58d15237e3e44f83fe1b8229 Mon Sep 17 00:00:00 2001
813 -From: Matthew Barnes <mbarnes@××××××.com>
814 -Date: Thu, 26 May 2011 07:03:15 -0400
815 -Subject: [PATCH 2/3] Bug 651062 - refresh_folders_exec() reports progress
816 - incorrectly.
817 -
818 -(cherry picked from commit 6ddc2340d03b6fe3745e97ca10336408833c7294)
819 ----
820 - mail/mail-send-recv.c | 7 ++++++-
821 - 1 files changed, 6 insertions(+), 1 deletions(-)
822 -
823 -diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c
824 -index a4e2e2e..79018f3 100644
825 ---- a/mail/mail-send-recv.c
826 -+++ b/mail/mail-send-recv.c
827 -@@ -924,6 +924,8 @@ refresh_folders_exec (struct _refresh_folders_msg *m,
828 -
829 - get_folders (m->store, m->folders, m->finfo);
830 -
831 -+ camel_operation_push_message (cancellable, _("Updating..."));
832 -+
833 - for (i=0;i<m->folders->len;i++) {
834 - folder = e_mail_session_uri_to_folder_sync (
835 - m->info->session,
836 -@@ -944,9 +946,12 @@ refresh_folders_exec (struct _refresh_folders_msg *m,
837 - break;
838 -
839 - if (m->info->state != SEND_CANCELLED)
840 -- g_signal_emit_by_name (m->info->cancellable, "status", _("Updating..."), 100 * i / m->folders->len);
841 -+ camel_operation_progress (
842 -+ cancellable, 100 * i / m->folders->len);
843 - }
844 -
845 -+ camel_operation_pop_message (cancellable);
846 -+
847 - if (cancellable)
848 - g_signal_handler_disconnect (m->info->cancellable, handler_id);
849 - }
850 ---
851 -1.7.5.rc3
852 -
853
854 diff --git a/mail-client/evolution/files/0003-Bug-651135-Crash-using-saved-search-with-an-empty-ex.patch b/mail-client/evolution/files/0003-Bug-651135-Crash-using-saved-search-with-an-empty-ex.patch
855 deleted file mode 100644
856 index bcec4dd..0000000
857 --- a/mail-client/evolution/files/0003-Bug-651135-Crash-using-saved-search-with-an-empty-ex.patch
858 +++ /dev/null
859 @@ -1,37 +0,0 @@
860 -From af08ff1bebc895b4de15d1822d96c64d092f2bb5 Mon Sep 17 00:00:00 2001
861 -From: Milan Crha <mcrha@××××××.com>
862 -Date: Thu, 26 May 2011 13:48:22 +0200
863 -Subject: [PATCH 3/3] Bug #651135 - Crash using saved search with an empty
864 - expression
865 -
866 ----
867 - addressbook/gui/widgets/e-addressbook-model.c | 6 ++++++
868 - 1 files changed, 6 insertions(+), 0 deletions(-)
869 -
870 -diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c
871 -index 8e62e40..17eb2d3 100644
872 ---- a/addressbook/gui/widgets/e-addressbook-model.c
873 -+++ b/addressbook/gui/widgets/e-addressbook-model.c
874 -@@ -904,6 +904,9 @@ e_addressbook_model_get_query (EAddressbookModel *model)
875 - {
876 - g_return_val_if_fail (E_IS_ADDRESSBOOK_MODEL (model), NULL);
877 -
878 -+ if (!model->priv->query)
879 -+ return NULL;
880 -+
881 - return e_book_query_to_string (model->priv->query);
882 - }
883 -
884 -@@ -920,6 +923,9 @@ e_addressbook_model_set_query (EAddressbookModel *model,
885 - else
886 - book_query = e_book_query_from_string (query);
887 -
888 -+ if (!book_query)
889 -+ return;
890 -+
891 - if (model->priv->query != NULL) {
892 - gchar *old_query, *new_query;
893 -
894 ---
895 -1.7.5.rc3
896 -
897
898 diff --git a/mail-client/evolution/files/evolution-2.32.0-wrong-lafile-usage.patch b/mail-client/evolution/files/evolution-2.32.0-wrong-lafile-usage.patch
899 deleted file mode 100644
900 index 9f0993d..0000000
901 --- a/mail-client/evolution/files/evolution-2.32.0-wrong-lafile-usage.patch
902 +++ /dev/null
903 @@ -1,13 +0,0 @@
904 -diff --git a/addressbook/gui/contact-editor/Makefile.am b/addressbook/gui/contact-editor/Makefile.am
905 -index 486d71e..763808b 100644
906 ---- a/addressbook/gui/contact-editor/Makefile.am
907 -+++ b/addressbook/gui/contact-editor/Makefile.am
908 -@@ -33,7 +33,7 @@ libecontacteditor_la_LIBADD = \
909 - $(top_builddir)/addressbook/gui/widgets/libeabwidgets.la \
910 - $(top_builddir)/addressbook/gui/merging/libeabbookmerging.la \
911 - $(top_builddir)/addressbook/printing/libecontactprint.la \
912 -- $(top_builddir)/widgets/menus/.libs/libmenus.la \
913 -+ $(top_builddir)/widgets/menus/libmenus.la \
914 - $(EVOLUTION_ADDRESSBOOK_LIBS) \
915 - $(GNOME_PLATFORM_LIBS)
916 -
917
918 diff --git a/x11-wm/mutter/files/mutter-3.0.2-argb-windows-shadow.patch b/x11-wm/mutter/files/mutter-3.0.2-argb-windows-shadow.patch
919 deleted file mode 100644
920 index 2ae376d..0000000
921 --- a/x11-wm/mutter/files/mutter-3.0.2-argb-windows-shadow.patch
922 +++ /dev/null
923 @@ -1,764 +0,0 @@
924 -From 67c3c93b8fd1e11716e72142ca43deb978e15c98 Mon Sep 17 00:00:00 2001
925 -From: Owen W. Taylor <otaylor@××××××××.net>
926 -Date: Tue, 22 Mar 2011 19:36:12 +0000
927 -Subject: Only shadow ARGB windows with a frame outside the frame
928 -
929 -An ARGB window with a frame is likely something like a transparent
930 -terminal. It looks awful (and breaks transparency) to draw a big
931 -opaque black shadow under the window, so clip out the region under
932 -the terminal from the shadow we draw.
933 -
934 -Add meta_window_get_frame_bounds() to get a cairo region for the
935 -outer bounds of the frame of a window, and modify the frame handling
936 -code to notice changes to the frame shape and discard a cached
937 -region. meta_frames_apply_shapes() is refactored so we can extract
938 -meta_frames_get_frame_bounds() from it.
939 -
940 -https://bugzilla.gnome.org/show_bug.cgi?id=635268
941 ----
942 -diff --git a/src/compositor/meta-shadow-factory-private.h b/src/compositor/meta-shadow-factory-private.h
943 -index 3d51cbb..e6b033e 100644
944 ---- a/src/compositor/meta-shadow-factory-private.h
945 -+++ b/src/compositor/meta-shadow-factory-private.h
946 -@@ -47,7 +47,8 @@ void meta_shadow_paint (MetaShadow *shadow,
947 - int window_width,
948 - int window_height,
949 - guint8 opacity,
950 -- cairo_region_t *clip);
951 -+ cairo_region_t *clip,
952 -+ gboolean clip_strictly);
953 - void meta_shadow_get_bounds (MetaShadow *shadow,
954 - int window_x,
955 - int window_y,
956 -diff --git a/src/compositor/meta-shadow-factory.c b/src/compositor/meta-shadow-factory.c
957 -index 1a9a447..f8bb1a8 100644
958 ---- a/src/compositor/meta-shadow-factory.c
959 -+++ b/src/compositor/meta-shadow-factory.c
960 -@@ -189,8 +189,10 @@ meta_shadow_unref (MetaShadow *shadow)
961 - * @window_width: actual width of the region to paint a shadow for
962 - * @window_height: actual height of the region to paint a shadow for
963 - * @clip: (allow-none): if non-%NULL specifies the visible portion
964 -- * of the shadow. Drawing won't be strictly clipped to this region
965 -- * but it will be used to optimize what is drawn.
966 -+ * of the shadow.
967 -+ * @clip_strictly: if %TRUE, drawing will be clipped strictly
968 -+ * to @clip, otherwise, it will be only used to optimize
969 -+ * drawing.
970 - *
971 - * Paints the shadow at the given position, for the specified actual
972 - * size of the region. (Since a #MetaShadow can be shared between
973 -@@ -204,7 +206,8 @@ meta_shadow_paint (MetaShadow *shadow,
974 - int window_width,
975 - int window_height,
976 - guint8 opacity,
977 -- cairo_region_t *clip)
978 -+ cairo_region_t *clip,
979 -+ gboolean clip_strictly)
980 - {
981 - float texture_width = cogl_texture_get_width (shadow->texture);
982 - float texture_height = cogl_texture_get_height (shadow->texture);
983 -@@ -276,6 +279,9 @@ meta_shadow_paint (MetaShadow *shadow,
984 - dest_rect.y = dest_y[j];
985 - dest_rect.height = dest_y[j + 1] - dest_y[j];
986 -
987 -+ if (dest_rect.height == 0)
988 -+ continue;
989 -+
990 - for (i = 0; i < n_x; i++)
991 - {
992 - cairo_region_overlap_t overlap;
993 -@@ -283,16 +289,64 @@ meta_shadow_paint (MetaShadow *shadow,
994 - dest_rect.x = dest_x[i];
995 - dest_rect.width = dest_x[i + 1] - dest_x[i];
996 -
997 -+ if (dest_rect.width == 0)
998 -+ continue;
999 -+
1000 - if (clip)
1001 - overlap = cairo_region_contains_rectangle (clip, &dest_rect);
1002 - else
1003 -- overlap = CAIRO_REGION_OVERLAP_PART;
1004 -+ overlap = CAIRO_REGION_OVERLAP_IN;
1005 -
1006 -- if (overlap != CAIRO_REGION_OVERLAP_OUT)
1007 -- cogl_rectangle_with_texture_coords (dest_x[i], dest_y[j],
1008 -- dest_x[i + 1], dest_y[j + 1],
1009 -- src_x[i], src_y[j],
1010 -- src_x[i + 1], src_y[j + 1]);
1011 -+ /* There's quite a bit of overhead from allocating a new
1012 -+ * region in order to find an exact intersection and
1013 -+ * generating more geometry - we make the assumption that
1014 -+ * unless we have to clip strictly it will be cheaper to
1015 -+ * just draw the entire rectangle.
1016 -+ */
1017 -+ if (overlap == CAIRO_REGION_OVERLAP_IN ||
1018 -+ (overlap == CAIRO_REGION_OVERLAP_PART && !clip_strictly))
1019 -+ {
1020 -+ cogl_rectangle_with_texture_coords (dest_x[i], dest_y[j],
1021 -+ dest_x[i + 1], dest_y[j + 1],
1022 -+ src_x[i], src_y[j],
1023 -+ src_x[i + 1], src_y[j + 1]);
1024 -+ }
1025 -+ else if (overlap == CAIRO_REGION_OVERLAP_PART)
1026 -+ {
1027 -+ cairo_region_t *intersection;
1028 -+ int n_rectangles, k;
1029 -+
1030 -+ intersection = cairo_region_create_rectangle (&dest_rect);
1031 -+ cairo_region_intersect (intersection, clip);
1032 -+
1033 -+ n_rectangles = cairo_region_num_rectangles (intersection);
1034 -+ for (k = 0; k < n_rectangles; k++)
1035 -+ {
1036 -+ cairo_rectangle_int_t rect;
1037 -+ float src_x1, src_x2, src_y1, src_y2;
1038 -+
1039 -+ cairo_region_get_rectangle (intersection, k, &rect);
1040 -+
1041 -+ /* Separately linear interpolate X and Y coordinates in the source
1042 -+ * based on the destination X and Y coordinates */
1043 -+
1044 -+ src_x1 = (src_x[i] * (dest_rect.x + dest_rect.width - rect.x) +
1045 -+ src_x[i + 1] * (rect.x - dest_rect.x)) / dest_rect.width;
1046 -+ src_x2 = (src_x[i] * (dest_rect.x + dest_rect.width - (rect.x + rect.width)) +
1047 -+ src_x[i + 1] * (rect.x + rect.width - dest_rect.x)) / dest_rect.width;
1048 -+
1049 -+ src_y1 = (src_y[j] * (dest_rect.y + dest_rect.height - rect.y) +
1050 -+ src_y[j + 1] * (rect.y - dest_rect.y)) / dest_rect.height;
1051 -+ src_y2 = (src_y[j] * (dest_rect.y + dest_rect.height - (rect.y + rect.height)) +
1052 -+ src_y[j + 1] * (rect.y + rect.height - dest_rect.y)) / dest_rect.height;
1053 -+
1054 -+ cogl_rectangle_with_texture_coords (rect.x, rect.y,
1055 -+ rect.x + rect.width, rect.y + rect.height,
1056 -+ src_x1, src_y1, src_x2, src_y2);
1057 -+ }
1058 -+
1059 -+ cairo_region_destroy (intersection);
1060 -+ }
1061 - }
1062 - }
1063 - }
1064 -diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
1065 -index 3be0363..4aab5c9 100644
1066 ---- a/src/compositor/meta-window-actor.c
1067 -+++ b/src/compositor/meta-window-actor.c
1068 -@@ -702,6 +702,26 @@ meta_window_actor_get_shadow_bounds (MetaWindowActor *self,
1069 - }
1070 - #endif
1071 -
1072 -+/* If we have an ARGB32 window that we decorate with a frame, it's
1073 -+ * probably something like a translucent terminal - something where
1074 -+ * the alpha channel represents transparency rather than a shape. We
1075 -+ * don't want to show the shadow through the translucent areas since
1076 -+ * the shadow is wrong for translucent windows (it should be
1077 -+ * translucent itself and colored), and not only that, will /look/
1078 -+ * horribly wrong - a misplaced big black blob. As a hack, what we
1079 -+ * want to do is just draw the shadow as normal outside the frame, and
1080 -+ * inside the frame draw no shadow. This is also not even close to
1081 -+ * the right result, but looks OK. We also apply this approach to
1082 -+ * windows set to be partially translucent with _NET_WM_WINDOW_OPACITY.
1083 -+ */
1084 -+static gboolean
1085 -+clip_shadow_under_window (MetaWindowActor *self)
1086 -+{
1087 -+ MetaWindowActorPrivate *priv = self->priv;
1088 -+
1089 -+ return (priv->argb32 || priv->opacity != 0xff) && priv->window->frame;
1090 -+}
1091 -+
1092 - static void
1093 - meta_window_actor_paint (ClutterActor *actor)
1094 - {
1095 -@@ -714,17 +734,36 @@ meta_window_actor_paint (ClutterActor *actor)
1096 - {
1097 - MetaShadowParams params;
1098 - cairo_rectangle_int_t shape_bounds;
1099 -+ cairo_region_t *clip = priv->shadow_clip;
1100 -
1101 - meta_window_actor_get_shape_bounds (self, &shape_bounds);
1102 - meta_window_actor_get_shadow_params (self, appears_focused, &params);
1103 -
1104 -+ /* The frame bounds are already subtracted from priv->shadow_clip
1105 -+ * if that exists.
1106 -+ */
1107 -+ if (!clip && clip_shadow_under_window (self))
1108 -+ {
1109 -+ cairo_region_t *frame_bounds = meta_window_get_frame_bounds (priv->window);
1110 -+ cairo_rectangle_int_t bounds;
1111 -+
1112 -+ meta_window_actor_get_shadow_bounds (self, appears_focused, &bounds);
1113 -+ clip = cairo_region_create_rectangle (&bounds);
1114 -+
1115 -+ cairo_region_subtract (clip, frame_bounds);
1116 -+ }
1117 -+
1118 - meta_shadow_paint (shadow,
1119 - params.x_offset + shape_bounds.x,
1120 - params.y_offset + shape_bounds.y,
1121 - shape_bounds.width,
1122 - shape_bounds.height,
1123 - (clutter_actor_get_paint_opacity (actor) * params.opacity * priv->opacity) / (255 * 255),
1124 -- priv->shadow_clip);
1125 -+ clip,
1126 -+ clip_shadow_under_window (self)); /* clip_strictly - not just as an optimization */
1127 -+
1128 -+ if (clip && clip != priv->shadow_clip)
1129 -+ cairo_region_destroy (clip);
1130 - }
1131 -
1132 - CLUTTER_ACTOR_CLASS (meta_window_actor_parent_class)->paint (actor);
1133 -@@ -1787,6 +1826,12 @@ meta_window_actor_set_visible_region_beneath (MetaWindowActor *self,
1134 - {
1135 - meta_window_actor_clear_shadow_clip (self);
1136 - priv->shadow_clip = cairo_region_copy (beneath_region);
1137 -+
1138 -+ if (clip_shadow_under_window (self))
1139 -+ {
1140 -+ cairo_region_t *frame_bounds = meta_window_get_frame_bounds (priv->window);
1141 -+ cairo_region_subtract (priv->shadow_clip, frame_bounds);
1142 -+ }
1143 - }
1144 - }
1145 -
1146 -diff --git a/src/core/frame.c b/src/core/frame.c
1147 -index 4db0002..155a0b8 100644
1148 ---- a/src/core/frame.c
1149 -+++ b/src/core/frame.c
1150 -@@ -328,7 +328,7 @@ meta_frame_calc_geometry (MetaFrame *frame,
1151 - *geomp = geom;
1152 - }
1153 -
1154 --static void
1155 -+static gboolean
1156 - update_shape (MetaFrame *frame)
1157 - {
1158 - if (frame->need_reapply_frame_shape)
1159 -@@ -339,10 +339,14 @@ update_shape (MetaFrame *frame)
1160 - frame->rect.height,
1161 - frame->window->has_shape);
1162 - frame->need_reapply_frame_shape = FALSE;
1163 -+
1164 -+ return TRUE;
1165 - }
1166 -+ else
1167 -+ return FALSE;
1168 - }
1169 -
1170 --void
1171 -+gboolean
1172 - meta_frame_sync_to_window (MetaFrame *frame,
1173 - int resize_gravity,
1174 - gboolean need_move,
1175 -@@ -350,8 +354,7 @@ meta_frame_sync_to_window (MetaFrame *frame,
1176 - {
1177 - if (!(need_move || need_resize))
1178 - {
1179 -- update_shape (frame);
1180 -- return;
1181 -+ return update_shape (frame);
1182 - }
1183 -
1184 - meta_topic (META_DEBUG_GEOMETRY,
1185 -@@ -401,6 +404,17 @@ meta_frame_sync_to_window (MetaFrame *frame,
1186 - meta_ui_repaint_frame (frame->window->screen->ui,
1187 - frame->xwindow);
1188 - }
1189 -+
1190 -+ return need_resize;
1191 -+}
1192 -+
1193 -+cairo_region_t *
1194 -+meta_frame_get_frame_bounds (MetaFrame *frame)
1195 -+{
1196 -+ return meta_ui_get_frame_bounds (frame->window->screen->ui,
1197 -+ frame->xwindow,
1198 -+ frame->rect.width,
1199 -+ frame->rect.height);
1200 - }
1201 -
1202 - void
1203 -diff --git a/src/core/frame.h b/src/core/frame.h
1204 -index 019d6b3..7a637e8 100644
1205 ---- a/src/core/frame.h
1206 -+++ b/src/core/frame.h
1207 -@@ -73,11 +73,13 @@ Window meta_frame_get_xwindow (MetaFrame *frame);
1208 - /* These should ONLY be called from meta_window_move_resize_internal */
1209 - void meta_frame_calc_geometry (MetaFrame *frame,
1210 - MetaFrameGeometry *geomp);
1211 --void meta_frame_sync_to_window (MetaFrame *frame,
1212 -+gboolean meta_frame_sync_to_window (MetaFrame *frame,
1213 - int gravity,
1214 - gboolean need_move,
1215 - gboolean need_resize);
1216 -
1217 -+cairo_region_t *meta_frame_get_frame_bounds (MetaFrame *frame);
1218 -+
1219 - void meta_frame_set_screen_cursor (MetaFrame *frame,
1220 - MetaCursor cursor);
1221 -
1222 -diff --git a/src/core/window-private.h b/src/core/window-private.h
1223 -index cbac91d..7909943 100644
1224 ---- a/src/core/window-private.h
1225 -+++ b/src/core/window-private.h
1226 -@@ -42,6 +42,7 @@
1227 - #include "stack.h"
1228 - #include "iconcache.h"
1229 - #include <X11/Xutil.h>
1230 -+#include <cairo.h>
1231 - #include <gdk-pixbuf/gdk-pixbuf.h>
1232 -
1233 - typedef struct _MetaWindowQueue MetaWindowQueue;
1234 -@@ -316,6 +317,9 @@ struct _MetaWindow
1235 - /* if TRUE, application is buggy and SYNC resizing is turned off */
1236 - guint disable_sync : 1;
1237 -
1238 -+ /* if non-NULL, the bounds of the window frame */
1239 -+ cairo_region_t *frame_bounds;
1240 -+
1241 - /* Note: can be NULL */
1242 - GSList *struts;
1243 -
1244 -diff --git a/src/core/window.c b/src/core/window.c
1245 -index d442932..aa6d75c 100644
1246 ---- a/src/core/window.c
1247 -+++ b/src/core/window.c
1248 -@@ -181,6 +181,9 @@ meta_window_finalize (GObject *object)
1249 - if (window->mini_icon)
1250 - g_object_unref (G_OBJECT (window->mini_icon));
1251 -
1252 -+ if (window->frame_bounds)
1253 -+ cairo_region_destroy (window->frame_bounds);
1254 -+
1255 - meta_icon_cache_free (&window->icon_cache);
1256 -
1257 - g_free (window->sm_client_id);
1258 -@@ -4295,6 +4298,7 @@ meta_window_move_resize_internal (MetaWindow *window,
1259 - int frame_size_dy;
1260 - int size_dx;
1261 - int size_dy;
1262 -+ gboolean frame_shape_changed = FALSE;
1263 - gboolean is_configure_request;
1264 - gboolean do_gravity_adjust;
1265 - gboolean is_user_action;
1266 -@@ -4598,9 +4602,9 @@ meta_window_move_resize_internal (MetaWindow *window,
1267 - meta_window_set_gravity (window, StaticGravity);
1268 -
1269 - if (configure_frame_first && window->frame)
1270 -- meta_frame_sync_to_window (window->frame,
1271 -- gravity,
1272 -- need_move_frame, need_resize_frame);
1273 -+ frame_shape_changed = meta_frame_sync_to_window (window->frame,
1274 -+ gravity,
1275 -+ need_move_frame, need_resize_frame);
1276 -
1277 - values.border_width = 0;
1278 - values.x = client_move_x;
1279 -@@ -4655,9 +4659,9 @@ meta_window_move_resize_internal (MetaWindow *window,
1280 - }
1281 -
1282 - if (!configure_frame_first && window->frame)
1283 -- meta_frame_sync_to_window (window->frame,
1284 -- gravity,
1285 -- need_move_frame, need_resize_frame);
1286 -+ frame_shape_changed = meta_frame_sync_to_window (window->frame,
1287 -+ gravity,
1288 -+ need_move_frame, need_resize_frame);
1289 -
1290 - /* Put gravity back to be nice to lesser window managers */
1291 - if (use_static_gravity)
1292 -@@ -4700,6 +4704,12 @@ meta_window_move_resize_internal (MetaWindow *window,
1293 - * b) all constraints are obeyed by window->rect and frame->rect
1294 - */
1295 -
1296 -+ if (frame_shape_changed && window->frame_bounds)
1297 -+ {
1298 -+ cairo_region_destroy (window->frame_bounds);
1299 -+ window->frame_bounds = NULL;
1300 -+ }
1301 -+
1302 - if (meta_prefs_get_attach_modal_dialogs ())
1303 - meta_window_foreach_transient (window, move_attached_dialog, NULL);
1304 - }
1305 -@@ -10204,3 +10214,24 @@ meta_window_get_frame_type (MetaWindow *window)
1306 - return base_type;
1307 - }
1308 - }
1309 -+
1310 -+/**
1311 -+ * meta_window_get_frame_bounds:
1312 -+ *
1313 -+ * Gets a region representing the outer bounds of the window's frame.
1314 -+ *
1315 -+ * Return value: (transfer none) (allow-none): a #cairo_region_t
1316 -+ * holding the outer bounds of the window, or %NULL if the window
1317 -+ * doesn't have a frame.
1318 -+ */
1319 -+cairo_region_t *
1320 -+meta_window_get_frame_bounds (MetaWindow *window)
1321 -+{
1322 -+ if (!window->frame_bounds)
1323 -+ {
1324 -+ if (window->frame)
1325 -+ window->frame_bounds = meta_frame_get_frame_bounds (window->frame);
1326 -+ }
1327 -+
1328 -+ return window->frame_bounds;
1329 -+}
1330 -diff --git a/src/meta/window.h b/src/meta/window.h
1331 -index a1c4b75..985a146 100644
1332 ---- a/src/meta/window.h
1333 -+++ b/src/meta/window.h
1334 -@@ -23,6 +23,7 @@
1335 - #define META_WINDOW_H
1336 -
1337 - #include <glib-object.h>
1338 -+#include <cairo.h>
1339 - #include <X11/Xlib.h>
1340 -
1341 - #include <meta/boxes.h>
1342 -@@ -156,4 +157,6 @@ const char *meta_window_get_mutter_hints (MetaWindow *window);
1343 -
1344 - MetaFrameType meta_window_get_frame_type (MetaWindow *window);
1345 -
1346 -+cairo_region_t *meta_window_get_frame_bounds (MetaWindow *window);
1347 -+
1348 - #endif
1349 -diff --git a/src/ui/frames.c b/src/ui/frames.c
1350 -index 7c62898..520f29d 100644
1351 ---- a/src/ui/frames.c
1352 -+++ b/src/ui/frames.c
1353 -@@ -797,60 +797,22 @@ apply_cairo_region_to_window (Display *display,
1354 - }
1355 - #endif
1356 -
1357 --void
1358 --meta_frames_apply_shapes (MetaFrames *frames,
1359 -- Window xwindow,
1360 -- int new_window_width,
1361 -- int new_window_height,
1362 -- gboolean window_has_shape)
1363 -+static cairo_region_t *
1364 -+get_bounds_region (MetaFrames *frames,
1365 -+ MetaUIFrame *frame,
1366 -+ MetaFrameGeometry *fgeom,
1367 -+ int window_width,
1368 -+ int window_height)
1369 - {
1370 --#ifdef HAVE_SHAPE
1371 -- /* Apply shapes as if window had new_window_width, new_window_height */
1372 -- MetaUIFrame *frame;
1373 -- MetaFrameGeometry fgeom;
1374 -- cairo_rectangle_int_t rect;
1375 - cairo_region_t *corners_region;
1376 -- cairo_region_t *window_region;
1377 -- Display *display;
1378 --
1379 -- frame = meta_frames_lookup_window (frames, xwindow);
1380 -- g_return_if_fail (frame != NULL);
1381 --
1382 -- display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
1383 --
1384 -- meta_frames_calc_geometry (frames, frame, &fgeom);
1385 -+ cairo_region_t *bounds_region;
1386 -+ cairo_rectangle_int_t rect;
1387 -
1388 -- if (!(fgeom.top_left_corner_rounded_radius != 0 ||
1389 -- fgeom.top_right_corner_rounded_radius != 0 ||
1390 -- fgeom.bottom_left_corner_rounded_radius != 0 ||
1391 -- fgeom.bottom_right_corner_rounded_radius != 0 ||
1392 -- window_has_shape))
1393 -- {
1394 -- if (frame->shape_applied)
1395 -- {
1396 -- meta_topic (META_DEBUG_SHAPES,
1397 -- "Unsetting shape mask on frame 0x%lx\n",
1398 -- frame->xwindow);
1399 --
1400 -- XShapeCombineMask (display, frame->xwindow,
1401 -- ShapeBounding, 0, 0, None, ShapeSet);
1402 -- frame->shape_applied = FALSE;
1403 -- }
1404 -- else
1405 -- {
1406 -- meta_topic (META_DEBUG_SHAPES,
1407 -- "Frame 0x%lx still doesn't need a shape mask\n",
1408 -- frame->xwindow);
1409 -- }
1410 --
1411 -- return; /* nothing to do */
1412 -- }
1413 --
1414 - corners_region = cairo_region_create ();
1415 -
1416 -- if (fgeom.top_left_corner_rounded_radius != 0)
1417 -+ if (fgeom->top_left_corner_rounded_radius != 0)
1418 - {
1419 -- const int corner = fgeom.top_left_corner_rounded_radius;
1420 -+ const int corner = fgeom->top_left_corner_rounded_radius;
1421 - const float radius = sqrt(corner) + corner;
1422 - int i;
1423 -
1424 -@@ -866,16 +828,16 @@ meta_frames_apply_shapes (MetaFrames *frames,
1425 - }
1426 - }
1427 -
1428 -- if (fgeom.top_right_corner_rounded_radius != 0)
1429 -+ if (fgeom->top_right_corner_rounded_radius != 0)
1430 - {
1431 -- const int corner = fgeom.top_right_corner_rounded_radius;
1432 -+ const int corner = fgeom->top_right_corner_rounded_radius;
1433 - const float radius = sqrt(corner) + corner;
1434 - int i;
1435 -
1436 - for (i=0; i<corner; i++)
1437 - {
1438 - const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
1439 -- rect.x = new_window_width - width;
1440 -+ rect.x = window_width - width;
1441 - rect.y = i;
1442 - rect.width = width;
1443 - rect.height = 1;
1444 -@@ -884,9 +846,9 @@ meta_frames_apply_shapes (MetaFrames *frames,
1445 - }
1446 - }
1447 -
1448 -- if (fgeom.bottom_left_corner_rounded_radius != 0)
1449 -+ if (fgeom->bottom_left_corner_rounded_radius != 0)
1450 - {
1451 -- const int corner = fgeom.bottom_left_corner_rounded_radius;
1452 -+ const int corner = fgeom->bottom_left_corner_rounded_radius;
1453 - const float radius = sqrt(corner) + corner;
1454 - int i;
1455 -
1456 -@@ -894,7 +856,7 @@ meta_frames_apply_shapes (MetaFrames *frames,
1457 - {
1458 - const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
1459 - rect.x = 0;
1460 -- rect.y = new_window_height - i - 1;
1461 -+ rect.y = window_height - i - 1;
1462 - rect.width = width;
1463 - rect.height = 1;
1464 -
1465 -@@ -902,17 +864,17 @@ meta_frames_apply_shapes (MetaFrames *frames,
1466 - }
1467 - }
1468 -
1469 -- if (fgeom.bottom_right_corner_rounded_radius != 0)
1470 -+ if (fgeom->bottom_right_corner_rounded_radius != 0)
1471 - {
1472 -- const int corner = fgeom.bottom_right_corner_rounded_radius;
1473 -+ const int corner = fgeom->bottom_right_corner_rounded_radius;
1474 - const float radius = sqrt(corner) + corner;
1475 - int i;
1476 -
1477 - for (i=0; i<corner; i++)
1478 - {
1479 - const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
1480 -- rect.x = new_window_width - width;
1481 -- rect.y = new_window_height - i - 1;
1482 -+ rect.x = window_width - width;
1483 -+ rect.y = window_height - i - 1;
1484 - rect.width = width;
1485 - rect.height = 1;
1486 -
1487 -@@ -920,19 +882,88 @@ meta_frames_apply_shapes (MetaFrames *frames,
1488 - }
1489 - }
1490 -
1491 -- window_region = cairo_region_create ();
1492 -+ bounds_region = cairo_region_create ();
1493 -
1494 - rect.x = 0;
1495 - rect.y = 0;
1496 -- rect.width = new_window_width;
1497 -- rect.height = new_window_height;
1498 -+ rect.width = window_width;
1499 -+ rect.height = window_height;
1500 -
1501 -- cairo_region_union_rectangle (window_region, &rect);
1502 -+ cairo_region_union_rectangle (bounds_region, &rect);
1503 -
1504 -- cairo_region_subtract (window_region, corners_region);
1505 -+ cairo_region_subtract (bounds_region, corners_region);
1506 -
1507 - cairo_region_destroy (corners_region);
1508 -+
1509 -+ return bounds_region;
1510 -+}
1511 -+
1512 -+static cairo_region_t *
1513 -+get_client_region (MetaFrameGeometry *fgeom,
1514 -+ int window_width,
1515 -+ int window_height)
1516 -+{
1517 -+ cairo_rectangle_int_t rect;
1518 -+
1519 -+ rect.x = fgeom->left_width;
1520 -+ rect.y = fgeom->top_height;
1521 -+ rect.width = window_width - fgeom->right_width - rect.x;
1522 -+ rect.height = window_height - fgeom->bottom_height - rect.y;
1523 -+
1524 -+ return cairo_region_create_rectangle (&rect);
1525 -+}
1526 -+
1527 -+void
1528 -+meta_frames_apply_shapes (MetaFrames *frames,
1529 -+ Window xwindow,
1530 -+ int new_window_width,
1531 -+ int new_window_height,
1532 -+ gboolean window_has_shape)
1533 -+{
1534 -+#ifdef HAVE_SHAPE
1535 -+ /* Apply shapes as if window had new_window_width, new_window_height */
1536 -+ MetaUIFrame *frame;
1537 -+ MetaFrameGeometry fgeom;
1538 -+ cairo_region_t *window_region;
1539 -+ Display *display;
1540 -
1541 -+ frame = meta_frames_lookup_window (frames, xwindow);
1542 -+ g_return_if_fail (frame != NULL);
1543 -+
1544 -+ display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
1545 -+
1546 -+ meta_frames_calc_geometry (frames, frame, &fgeom);
1547 -+
1548 -+ if (!(fgeom.top_left_corner_rounded_radius != 0 ||
1549 -+ fgeom.top_right_corner_rounded_radius != 0 ||
1550 -+ fgeom.bottom_left_corner_rounded_radius != 0 ||
1551 -+ fgeom.bottom_right_corner_rounded_radius != 0 ||
1552 -+ window_has_shape))
1553 -+ {
1554 -+ if (frame->shape_applied)
1555 -+ {
1556 -+ meta_topic (META_DEBUG_SHAPES,
1557 -+ "Unsetting shape mask on frame 0x%lx\n",
1558 -+ frame->xwindow);
1559 -+
1560 -+ XShapeCombineMask (display, frame->xwindow,
1561 -+ ShapeBounding, 0, 0, None, ShapeSet);
1562 -+ frame->shape_applied = FALSE;
1563 -+ }
1564 -+ else
1565 -+ {
1566 -+ meta_topic (META_DEBUG_SHAPES,
1567 -+ "Frame 0x%lx still doesn't need a shape mask\n",
1568 -+ frame->xwindow);
1569 -+ }
1570 -+
1571 -+ return; /* nothing to do */
1572 -+ }
1573 -+
1574 -+ window_region = get_bounds_region (frames, frame,
1575 -+ &fgeom,
1576 -+ new_window_width, new_window_height);
1577 -+
1578 - if (window_has_shape)
1579 - {
1580 - /* The client window is oclock or something and has a shape
1581 -@@ -984,15 +1015,10 @@ meta_frames_apply_shapes (MetaFrames *frames,
1582 - /* Punch the client area out of the normal frame shape,
1583 - * then union it with the shape_window's existing shape
1584 - */
1585 -- client_region = cairo_region_create ();
1586 --
1587 -- rect.x = fgeom.left_width;
1588 -- rect.y = fgeom.top_height;
1589 -- rect.width = new_window_width - fgeom.right_width - rect.x;
1590 -- rect.height = new_window_height - fgeom.bottom_height - rect.y;
1591 -+ client_region = get_client_region (&fgeom,
1592 -+ new_window_width,
1593 -+ new_window_height);
1594 -
1595 -- cairo_region_union_rectangle (client_region, &rect);
1596 --
1597 - cairo_region_subtract (window_region, client_region);
1598 -
1599 - cairo_region_destroy (client_region);
1600 -@@ -1027,6 +1053,25 @@ meta_frames_apply_shapes (MetaFrames *frames,
1601 - #endif /* HAVE_SHAPE */
1602 - }
1603 -
1604 -+cairo_region_t *
1605 -+meta_frames_get_frame_bounds (MetaFrames *frames,
1606 -+ Window xwindow,
1607 -+ int window_width,
1608 -+ int window_height)
1609 -+{
1610 -+ MetaUIFrame *frame;
1611 -+ MetaFrameGeometry fgeom;
1612 -+
1613 -+ frame = meta_frames_lookup_window (frames, xwindow);
1614 -+ g_return_val_if_fail (frame != NULL, NULL);
1615 -+
1616 -+ meta_frames_calc_geometry (frames, frame, &fgeom);
1617 -+
1618 -+ return get_bounds_region (frames, frame,
1619 -+ &fgeom,
1620 -+ window_width, window_height);
1621 -+}
1622 -+
1623 - void
1624 - meta_frames_move_resize_frame (MetaFrames *frames,
1625 - Window xwindow,
1626 -diff --git a/src/ui/frames.h b/src/ui/frames.h
1627 -index 5fdba63..d1807df 100644
1628 ---- a/src/ui/frames.h
1629 -+++ b/src/ui/frames.h
1630 -@@ -144,6 +144,10 @@ void meta_frames_apply_shapes (MetaFrames *frames,
1631 - int new_window_width,
1632 - int new_window_height,
1633 - gboolean window_has_shape);
1634 -+cairo_region_t *meta_frames_get_frame_bounds (MetaFrames *frames,
1635 -+ Window xwindow,
1636 -+ int window_width,
1637 -+ int window_height);
1638 - void meta_frames_move_resize_frame (MetaFrames *frames,
1639 - Window xwindow,
1640 - int x,
1641 -diff --git a/src/ui/ui.c b/src/ui/ui.c
1642 -index 575f2ae..5381b8d 100644
1643 ---- a/src/ui/ui.c
1644 -+++ b/src/ui/ui.c
1645 -@@ -470,6 +470,16 @@ meta_ui_apply_frame_shape (MetaUI *ui,
1646 - window_has_shape);
1647 - }
1648 -
1649 -+cairo_region_t *
1650 -+meta_ui_get_frame_bounds (MetaUI *ui,
1651 -+ Window xwindow,
1652 -+ int window_width,
1653 -+ int window_height)
1654 -+{
1655 -+ return meta_frames_get_frame_bounds (ui->frames, xwindow,
1656 -+ window_width, window_height);
1657 -+}
1658 -+
1659 - void
1660 - meta_ui_queue_frame_draw (MetaUI *ui,
1661 - Window xwindow)
1662 -diff --git a/src/ui/ui.h b/src/ui/ui.h
1663 -index cc449bd..9a33d9d 100644
1664 ---- a/src/ui/ui.h
1665 -+++ b/src/ui/ui.h
1666 -@@ -28,6 +28,7 @@
1667 - #include <meta/common.h>
1668 - #include <X11/Xlib.h>
1669 - #include <X11/Xutil.h>
1670 -+#include <cairo.h>
1671 - #include <glib.h>
1672 - #include <gdk-pixbuf/gdk-pixbuf.h>
1673 -
1674 -@@ -104,6 +105,11 @@ void meta_ui_apply_frame_shape (MetaUI *ui,
1675 - int new_window_height,
1676 - gboolean window_has_shape);
1677 -
1678 -+cairo_region_t *meta_ui_get_frame_bounds (MetaUI *ui,
1679 -+ Window xwindow,
1680 -+ int window_width,
1681 -+ int window_height);
1682 -+
1683 - void meta_ui_queue_frame_draw (MetaUI *ui,
1684 - Window xwindow);
1685 -
1686 ---
1687 -cgit v0.9
1688
1689 diff --git a/x11-wm/mutter/files/mutter-3.0.2-fix-xshape.patch b/x11-wm/mutter/files/mutter-3.0.2-fix-xshape.patch
1690 deleted file mode 100644
1691 index bc65ab2..0000000
1692 --- a/x11-wm/mutter/files/mutter-3.0.2-fix-xshape.patch
1693 +++ /dev/null
1694 @@ -1,30 +0,0 @@
1695 -From 59efae8920ff919beffa3816874c2e7cc85f3f08 Mon Sep 17 00:00:00 2001
1696 -From: Jasper St. Pierre <jstpierre@×××××××.net>
1697 -Date: Wed, 25 May 2011 20:47:53 -0400
1698 -Subject: [PATCH] Fix XShape
1699 -
1700 -Commit c3a04bf unintentionally broke XShape handling. By studying the code
1701 -extremely carefully, I found this inconsistency with the code that was
1702 -there before.
1703 -
1704 -https://bugzilla.gnome.org/show_bug.cgi?id=635268
1705 ----
1706 - src/ui/frames.c | 2 +-
1707 - 1 files changed, 1 insertions(+), 1 deletions(-)
1708 -
1709 -diff --git a/src/ui/frames.c b/src/ui/frames.c
1710 -index 9f0126c..4352e38 100644
1711 ---- a/src/ui/frames.c
1712 -+++ b/src/ui/frames.c
1713 -@@ -880,7 +880,7 @@ apply_cairo_region_to_window (Display *display,
1714 -
1715 - XShapeCombineRectangles (display, xwindow,
1716 - ShapeBounding, 0, 0, rects, n_rects,
1717 -- ShapeSet, YXBanded);
1718 -+ op, YXBanded);
1719 -
1720 - g_free (rects);
1721 - }
1722 ---
1723 -1.7.5.1
1724 -
1725
1726 diff --git a/x11-wm/mutter/files/mutter-3.0.2-frame-region-cairo-region.patch b/x11-wm/mutter/files/mutter-3.0.2-frame-region-cairo-region.patch
1727 deleted file mode 100644
1728 index 2a41fea..0000000
1729 --- a/x11-wm/mutter/files/mutter-3.0.2-frame-region-cairo-region.patch
1730 +++ /dev/null
1731 @@ -1,234 +0,0 @@
1732 -From c3a04bf3948dae31cbd64e637c290ddee7bcc73b Mon Sep 17 00:00:00 2001
1733 -From: Owen W. Taylor <otaylor@××××××××.net>
1734 -Date: Sun, 20 Mar 2011 20:26:27 +0000
1735 -Subject: Convert frame region handling to cairo regions
1736 -
1737 -It's useful to get frame shapes and manipulate them within Mutter, for
1738 -example so that the compositor can use them to clip drawing.
1739 -For this, we'll need the regions as cairo regions not X regions, so
1740 -convert frame shaping code to work in terms of cairo_region_t.
1741 -
1742 -https://bugzilla.gnome.org/show_bug.cgi?id=635268
1743 ----
1744 -diff --git a/src/ui/frames.c b/src/ui/frames.c
1745 -index 9c4782e..7c62898 100644
1746 ---- a/src/ui/frames.c
1747 -+++ b/src/ui/frames.c
1748 -@@ -764,6 +764,39 @@ meta_frames_unflicker_bg (MetaFrames *frames,
1749 - set_background_none (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), frame->xwindow);
1750 - }
1751 -
1752 -+#ifdef HAVE_SHAPE
1753 -+static void
1754 -+apply_cairo_region_to_window (Display *display,
1755 -+ Window xwindow,
1756 -+ cairo_region_t *region,
1757 -+ int op)
1758 -+{
1759 -+ int n_rects, i;
1760 -+ XRectangle *rects;
1761 -+
1762 -+ n_rects = cairo_region_num_rectangles (region);
1763 -+ rects = g_new (XRectangle, n_rects);
1764 -+
1765 -+ for (i = 0; i < n_rects; i++)
1766 -+ {
1767 -+ cairo_rectangle_int_t rect;
1768 -+
1769 -+ cairo_region_get_rectangle (region, i, &rect);
1770 -+
1771 -+ rects[i].x = rect.x;
1772 -+ rects[i].y = rect.y;
1773 -+ rects[i].width = rect.width;
1774 -+ rects[i].height = rect.height;
1775 -+ }
1776 -+
1777 -+ XShapeCombineRectangles (display, xwindow,
1778 -+ ShapeBounding, 0, 0, rects, n_rects,
1779 -+ ShapeSet, YXBanded);
1780 -+
1781 -+ g_free (rects);
1782 -+}
1783 -+#endif
1784 -+
1785 - void
1786 - meta_frames_apply_shapes (MetaFrames *frames,
1787 - Window xwindow,
1788 -@@ -775,9 +808,9 @@ meta_frames_apply_shapes (MetaFrames *frames,
1789 - /* Apply shapes as if window had new_window_width, new_window_height */
1790 - MetaUIFrame *frame;
1791 - MetaFrameGeometry fgeom;
1792 -- XRectangle xrect;
1793 -- Region corners_xregion;
1794 -- Region window_xregion;
1795 -+ cairo_rectangle_int_t rect;
1796 -+ cairo_region_t *corners_region;
1797 -+ cairo_region_t *window_region;
1798 - Display *display;
1799 -
1800 - frame = meta_frames_lookup_window (frames, xwindow);
1801 -@@ -813,7 +846,7 @@ meta_frames_apply_shapes (MetaFrames *frames,
1802 - return; /* nothing to do */
1803 - }
1804 -
1805 -- corners_xregion = XCreateRegion ();
1806 -+ corners_region = cairo_region_create ();
1807 -
1808 - if (fgeom.top_left_corner_rounded_radius != 0)
1809 - {
1810 -@@ -824,12 +857,12 @@ meta_frames_apply_shapes (MetaFrames *frames,
1811 - for (i=0; i<corner; i++)
1812 - {
1813 - const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
1814 -- xrect.x = 0;
1815 -- xrect.y = i;
1816 -- xrect.width = width;
1817 -- xrect.height = 1;
1818 -+ rect.x = 0;
1819 -+ rect.y = i;
1820 -+ rect.width = width;
1821 -+ rect.height = 1;
1822 -
1823 -- XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
1824 -+ cairo_region_union_rectangle (corners_region, &rect);
1825 - }
1826 - }
1827 -
1828 -@@ -842,12 +875,12 @@ meta_frames_apply_shapes (MetaFrames *frames,
1829 - for (i=0; i<corner; i++)
1830 - {
1831 - const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
1832 -- xrect.x = new_window_width - width;
1833 -- xrect.y = i;
1834 -- xrect.width = width;
1835 -- xrect.height = 1;
1836 -+ rect.x = new_window_width - width;
1837 -+ rect.y = i;
1838 -+ rect.width = width;
1839 -+ rect.height = 1;
1840 -
1841 -- XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
1842 -+ cairo_region_union_rectangle (corners_region, &rect);
1843 - }
1844 - }
1845 -
1846 -@@ -860,12 +893,12 @@ meta_frames_apply_shapes (MetaFrames *frames,
1847 - for (i=0; i<corner; i++)
1848 - {
1849 - const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
1850 -- xrect.x = 0;
1851 -- xrect.y = new_window_height - i - 1;
1852 -- xrect.width = width;
1853 -- xrect.height = 1;
1854 -+ rect.x = 0;
1855 -+ rect.y = new_window_height - i - 1;
1856 -+ rect.width = width;
1857 -+ rect.height = 1;
1858 -
1859 -- XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
1860 -+ cairo_region_union_rectangle (corners_region, &rect);
1861 - }
1862 - }
1863 -
1864 -@@ -878,27 +911,27 @@ meta_frames_apply_shapes (MetaFrames *frames,
1865 - for (i=0; i<corner; i++)
1866 - {
1867 - const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
1868 -- xrect.x = new_window_width - width;
1869 -- xrect.y = new_window_height - i - 1;
1870 -- xrect.width = width;
1871 -- xrect.height = 1;
1872 -+ rect.x = new_window_width - width;
1873 -+ rect.y = new_window_height - i - 1;
1874 -+ rect.width = width;
1875 -+ rect.height = 1;
1876 -
1877 -- XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
1878 -+ cairo_region_union_rectangle (corners_region, &rect);
1879 - }
1880 - }
1881 -
1882 -- window_xregion = XCreateRegion ();
1883 -+ window_region = cairo_region_create ();
1884 -
1885 -- xrect.x = 0;
1886 -- xrect.y = 0;
1887 -- xrect.width = new_window_width;
1888 -- xrect.height = new_window_height;
1889 -+ rect.x = 0;
1890 -+ rect.y = 0;
1891 -+ rect.width = new_window_width;
1892 -+ rect.height = new_window_height;
1893 -
1894 -- XUnionRectWithRegion (&xrect, window_xregion, window_xregion);
1895 -+ cairo_region_union_rectangle (window_region, &rect);
1896 -
1897 -- XSubtractRegion (window_xregion, corners_xregion, window_xregion);
1898 -+ cairo_region_subtract (window_region, corners_region);
1899 -
1900 -- XDestroyRegion (corners_xregion);
1901 -+ cairo_region_destroy (corners_region);
1902 -
1903 - if (window_has_shape)
1904 - {
1905 -@@ -911,7 +944,7 @@ meta_frames_apply_shapes (MetaFrames *frames,
1906 - XSetWindowAttributes attrs;
1907 - Window shape_window;
1908 - Window client_window;
1909 -- Region client_xregion;
1910 -+ cairo_region_t *client_region;
1911 - GdkScreen *screen;
1912 - int screen_number;
1913 -
1914 -@@ -951,21 +984,21 @@ meta_frames_apply_shapes (MetaFrames *frames,
1915 - /* Punch the client area out of the normal frame shape,
1916 - * then union it with the shape_window's existing shape
1917 - */
1918 -- client_xregion = XCreateRegion ();
1919 -+ client_region = cairo_region_create ();
1920 -
1921 -- xrect.x = fgeom.left_width;
1922 -- xrect.y = fgeom.top_height;
1923 -- xrect.width = new_window_width - fgeom.right_width - xrect.x;
1924 -- xrect.height = new_window_height - fgeom.bottom_height - xrect.y;
1925 -+ rect.x = fgeom.left_width;
1926 -+ rect.y = fgeom.top_height;
1927 -+ rect.width = new_window_width - fgeom.right_width - rect.x;
1928 -+ rect.height = new_window_height - fgeom.bottom_height - rect.y;
1929 -
1930 -- XUnionRectWithRegion (&xrect, client_xregion, client_xregion);
1931 -+ cairo_region_union_rectangle (client_region, &rect);
1932 -
1933 -- XSubtractRegion (window_xregion, client_xregion, window_xregion);
1934 -+ cairo_region_subtract (window_region, client_region);
1935 -
1936 -- XDestroyRegion (client_xregion);
1937 --
1938 -- XShapeCombineRegion (display, shape_window,
1939 -- ShapeBounding, 0, 0, window_xregion, ShapeUnion);
1940 -+ cairo_region_destroy (client_region);
1941 -+
1942 -+ apply_cairo_region_to_window (display, shape_window,
1943 -+ window_region, ShapeUnion);
1944 -
1945 - /* Now copy shape_window shape to the real frame */
1946 - XShapeCombineShape (display, frame->xwindow, ShapeBounding,
1947 -@@ -984,13 +1017,13 @@ meta_frames_apply_shapes (MetaFrames *frames,
1948 - "Frame 0x%lx has shaped corners\n",
1949 - frame->xwindow);
1950 -
1951 -- XShapeCombineRegion (display, frame->xwindow,
1952 -- ShapeBounding, 0, 0, window_xregion, ShapeSet);
1953 -+ apply_cairo_region_to_window (display, frame->xwindow,
1954 -+ window_region, ShapeSet);
1955 - }
1956 -
1957 - frame->shape_applied = TRUE;
1958 -
1959 -- XDestroyRegion (window_xregion);
1960 -+ cairo_region_destroy (window_region);
1961 - #endif /* HAVE_SHAPE */
1962 - }
1963 -
1964 ---
1965 -cgit v0.9
1966
1967 diff --git a/x11-wm/mutter/mutter-3.0.2.1.ebuild b/x11-wm/mutter/mutter-3.0.2.1.ebuild
1968 deleted file mode 100644
1969 index c5f7d14..0000000
1970 --- a/x11-wm/mutter/mutter-3.0.2.1.ebuild
1971 +++ /dev/null
1972 @@ -1,89 +0,0 @@
1973 -# Copyright 1999-2011 Gentoo Foundation
1974 -# Distributed under the terms of the GNU General Public License v2
1975 -# $Header: $
1976 -
1977 -EAPI="3"
1978 -GCONF_DEBUG="no"
1979 -GNOME2_LA_PUNT="yes"
1980 -
1981 -inherit eutils gnome2
1982 -if [[ ${PV} = 9999 ]]; then
1983 - inherit gnome2-live
1984 -fi
1985 -
1986 -DESCRIPTION="Upcoming GNOME 3 window manager (derived from metacity)"
1987 -HOMEPAGE="http://blogs.gnome.org/metacity/"
1988 -
1989 -LICENSE="GPL-2"
1990 -SLOT="0"
1991 -IUSE="+introspection test xinerama"
1992 -if [[ ${PV} = 9999 ]]; then
1993 - KEYWORDS=""
1994 -else
1995 - KEYWORDS="~amd64 ~x86"
1996 -fi
1997 -
1998 -COMMON_DEPEND=">=x11-libs/pango-1.2[X,introspection?]
1999 - >=x11-libs/cairo-1.10[X]
2000 - x11-libs/gdk-pixbuf:2
2001 - >=x11-libs/gtk+-2.91.7:3[introspection?]
2002 - >=gnome-base/gconf-2:2
2003 - >=dev-libs/glib-2.14:2
2004 - >=media-libs/clutter-1.2:1.0
2005 - >=media-libs/libcanberra-0.26[gtk3]
2006 - >=x11-libs/startup-notification-0.7
2007 - >=x11-libs/libXcomposite-0.2
2008 -
2009 - x11-libs/libICE
2010 - x11-libs/libSM
2011 - x11-libs/libX11
2012 - x11-libs/libXcursor
2013 - x11-libs/libXdamage
2014 - x11-libs/libXext
2015 - x11-libs/libXfixes
2016 - x11-libs/libXrandr
2017 - x11-libs/libXrender
2018 -
2019 - gnome-extra/zenity
2020 -
2021 - introspection? ( >=dev-libs/gobject-introspection-0.9.5 )
2022 - xinerama? ( x11-libs/libXinerama )
2023 -"
2024 -DEPEND="${COMMON_DEPEND}
2025 - >=app-text/gnome-doc-utils-0.8
2026 - sys-devel/gettext
2027 - >=dev-util/pkgconfig-0.9
2028 - >=dev-util/intltool-0.35
2029 - test? ( app-text/docbook-xml-dtd:4.5 )
2030 - xinerama? ( x11-proto/xineramaproto )
2031 - x11-proto/xextproto
2032 - x11-proto/xproto"
2033 -RDEPEND="${COMMON_DEPEND}
2034 - !x11-misc/expocity"
2035 -
2036 -pkg_setup() {
2037 - DOCS="AUTHORS ChangeLog HACKING MAINTAINERS NEWS README *.txt doc/*.txt"
2038 - G2CONF="${G2CONF}
2039 - --disable-static
2040 - --enable-gconf
2041 - --enable-shape
2042 - --enable-sm
2043 - --enable-startup-notification
2044 - --enable-xsync
2045 - --enable-verbose-mode
2046 - --enable-compile-warnings=maximum
2047 - --with-libcanberra
2048 - $(use_enable introspection)
2049 - $(use_enable xinerama)"
2050 -}
2051 -
2052 -src_prepare() {
2053 - # Fix argb window shadows: https://bugzilla.gnome.org/show_bug.cgi?id=635268
2054 - # The first two patches are from upstream git master branch:
2055 - epatch "${FILESDIR}/${PN}-3.0.2-frame-region-cairo-region.patch"
2056 - epatch "${FILESDIR}/${PN}-3.0.2-argb-windows-shadow.patch"
2057 - # The third is from comment 33 in the gnome bug and unbreaks XShape handling
2058 - epatch "${FILESDIR}/${PN}-3.0.2-fix-xshape.patch"
2059 -
2060 - gnome2_src_prepare
2061 -}