rpms/banshee/devel banshee-1.6.1-transparent-icon.patch, NONE, 1.1 banshee.spec, 1.100, 1.101
chkr
chkr at fedoraproject.org
Sat Jun 26 21:14:47 UTC 2010
- Previous message: rpms/phpMyAdmin/devel phpMyAdmin-3.3.3-vendor.patch, NONE, 1.1 .cvsignore, 1.46, 1.47 phpMyAdmin-config.inc.php, 1.2, 1.3 phpMyAdmin.htaccess, 1.6, 1.7 phpMyAdmin.spec, 1.52, 1.53 sources, 1.46, 1.47
- Next message: [pkgdb] perl-HTML-Lint (Fedora EPEL, 6) updated by tibbs
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: chkr
Update of /cvs/pkgs/rpms/banshee/devel
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv1869
Modified Files:
banshee.spec
Added Files:
banshee-1.6.1-transparent-icon.patch
Log Message:
* Sat Jun 26 2010 Christian Krause <chkr at fedoraproject.org> - 1.6.1-5
- Fix status icon transparency (BZ 533308)
banshee-1.6.1-transparent-icon.patch:
X11NotificationArea.cs | 136 ++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 119 insertions(+), 17 deletions(-)
--- NEW FILE banshee-1.6.1-transparent-icon.patch ---
diff -uNr banshee-1-1.6.1.old2/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationArea.cs banshee-1-1.6.1/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationArea.cs
--- banshee-1-1.6.1.old2/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationArea.cs 2009-11-22 17:19:34.000000000 +0100
+++ banshee-1-1.6.1/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationArea.cs 2010-06-26 22:35:34.000000000 +0200
@@ -46,11 +46,14 @@
{
private uint stamp;
private Orientation orientation;
+ private Visual visual;
+ private bool visual_is_rgba;
private IntPtr selection_atom;
private IntPtr manager_atom;
private IntPtr system_tray_opcode_atom;
private IntPtr orientation_atom;
+ private IntPtr visual_atom;
private IntPtr message_data_atom;
private IntPtr manager_window;
private FilterFunc filter;
@@ -122,6 +125,18 @@
orientation = Orientation.Horizontal;
AddEvents ((int)EventMask.PropertyChangeMask);
filter = new FilterFunc (ManagerFilter);
+
+ Display display = Screen.Display;
+ IntPtr xdisplay = gdk_x11_display_get_xdisplay (display.Handle);
+ selection_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_S" + Screen.Number.ToString (), false);
+ manager_atom = XInternAtom (xdisplay, "MANAGER", false);
+ system_tray_opcode_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_OPCODE", false);
+ orientation_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_ORIENTATION", false);
+ visual_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_VISUAL", false);
+ message_data_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_MESSAGE_DATA", false);
+
+ Screen.RootWindow.AddFilter (filter);
+ UpdateManagerWindow (false);
}
[GLib.ConnectBefore]
@@ -130,14 +145,29 @@
Gtk.Widget widget = (Gtk.Widget)obj;
Gdk.Rectangle area = args.Event.Area;
- widget.GdkWindow.ClearArea (area.X, area.Y, area.Width, area.Height);
+ if (visual_is_rgba) {
+ Cairo.Context cr = Gdk.CairoHelper.Create (widget.GdkWindow);
+ cr.SetSourceRGBA (0, 0, 0, 0);
+ cr.Operator = Cairo.Operator.Source;
+ Gdk.CairoHelper.Region (cr, args.Event.Region);
+ cr.Fill ();
+
+ ((IDisposable)cr.Target).Dispose ();
+ ((IDisposable)cr).Dispose ();
+ } else {
+ widget.GdkWindow.ClearArea (area.X, area.Y, area.Width, area.Height);
+ }
}
private void MakeTransparentAgain (object obj, Gtk.StyleSetArgs args)
{
Gtk.Widget widget = (Gtk.Widget)obj;
- widget.GdkWindow.SetBackPixmap (null, true);
+ if (visual_is_rgba) {
+ widget.GdkWindow.Background = Gdk.Color.Zero;
+ } else {
+ widget.GdkWindow.SetBackPixmap (null, true);
+ }
}
private void MakeTransparent (object obj, EventArgs args)
@@ -147,26 +177,37 @@
return;
widget.AppPaintable = true;
- widget.DoubleBuffered = false;
- widget.GdkWindow.SetBackPixmap (null, true);
+ if (visual_is_rgba) {
+ widget.GdkWindow.Background = Gdk.Color.Zero;
+ } else {
+ widget.DoubleBuffered = false;
+ widget.GdkWindow.SetBackPixmap (null, true);
+ }
widget.ExposeEvent += TransparentExposeEvent;
widget.StyleSet += MakeTransparentAgain;
}
+ private void SetColormap ()
+ {
+ Gtk.Widget widget = (Gtk.Widget)this;
+
+ if (visual == null || visual == Screen.SystemVisual) {
+ widget.Colormap = Screen.SystemColormap;
+ } else if (visual == Screen.RgbVisual) {
+ widget.Colormap = Screen.RgbColormap;
+ } else if (visual == Screen.RgbaVisual) {
+ widget.Colormap = Screen.RgbaColormap;
+ } else {
+ widget.Colormap = new Colormap (visual, false);
+ }
+ }
+
protected override void OnRealized ()
{
+ SetColormap ();
base.OnRealized ();
MakeTransparent (this, EventArgs.Empty);
- Display display = Screen.Display;
- IntPtr xdisplay = gdk_x11_display_get_xdisplay (display.Handle);
- selection_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_S" + Screen.Number.ToString (), false);
- manager_atom = XInternAtom (xdisplay, "MANAGER", false);
- system_tray_opcode_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_OPCODE", false);
- orientation_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_ORIENTATION", false);
- message_data_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_MESSAGE_DATA", false);
- UpdateManagerWindow (false);
SendDockRequest ();
- Screen.RootWindow.AddFilter (filter);
}
protected override void OnAdded (Gtk.Widget child)
@@ -216,11 +257,23 @@
gdkwin.AddFilter (filter);
}
- if (dock_if_realized && IsRealized) {
- SendDockRequest ();
- }
-
GetOrientationProperty ();
+ GetVisualProperty ();
+
+ if (IsRealized) {
+ if ((visual == null && Visual == Screen.SystemVisual)
+ || visual == Visual) {
+ // Already have the right visual, can just dock
+ if (dock_if_realized) {
+ SendDockRequest ();
+ }
+ } else {
+ // Need to re-realize the widget to get the right visual
+ Hide ();
+ Unrealize ();
+ Show ();
+ }
+ }
}
}
@@ -334,6 +387,54 @@
}
}
+ private void GetVisualProperty ()
+ {
+ IntPtr display;
+ IntPtr type;
+ int format;
+ IntPtr prop_return;
+ IntPtr nitems, bytes_after;
+ int error, result;
+
+ if (manager_window == IntPtr.Zero) {
+ return;
+ }
+
+ display = gdk_x11_display_get_xdisplay (Display.Handle);
+
+ gdk_error_trap_push ();
+ type = IntPtr.Zero;
+
+ result = XGetWindowProperty (display, manager_window, visual_atom, (IntPtr) 0,
+ (IntPtr) System.Int32.MaxValue, false, (IntPtr) XAtom.VisualId, out type, out format,
+ out nitems, out bytes_after, out prop_return);
+
+ error = gdk_error_trap_pop ();
+
+ if (error != 0 || result != 0) {
+ return;
+ }
+
+ if (type == (IntPtr) XAtom.VisualId) {
+ int visual_id = Marshal.ReadInt32 (prop_return);
+ IntPtr raw_ret = gdk_x11_screen_lookup_visual (Screen.Handle, visual_id);
+ visual = GLib.Object.GetObject(raw_ret) as Gdk.Visual;
+ }
+
+ // TODO the proper check is (visual->red_prec + visual->blue_prec + visual->green_prec < visual->depth)
+ visual_is_rgba = visual != null && visual == Screen.RgbaVisual;
+
+ // we can't be double-buffered when we aren't using a real RGBA visual
+ DoubleBuffered = visual_is_rgba;
+
+ if (prop_return != IntPtr.Zero) {
+ XFree (prop_return);
+ }
+ }
+
+ [DllImport ("libgdk-x11-2.0.so.0")]
+ private static extern IntPtr gdk_x11_screen_lookup_visual (IntPtr screen, int visual_id);
+
[DllImport ("libgdk-x11-2.0.so.0")]
private static extern IntPtr gdk_x11_display_get_xdisplay (IntPtr display);
@@ -462,6 +563,7 @@
private enum XAtom {
Cardinal = 6,
+ VisualId = 32,
LASTAtom
}
Index: banshee.spec
===================================================================
RCS file: /cvs/pkgs/rpms/banshee/devel/banshee.spec,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -p -r1.100 -r1.101
--- banshee.spec 18 Jun 2010 20:50:28 -0000 1.100
+++ banshee.spec 26 Jun 2010 21:14:47 -0000 1.101
@@ -7,7 +7,7 @@
Name: banshee
Version: %{mainver}%{?patchver}
#Release: 0.1.%{gitdate}git%{?dist}
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Easily import, manage, and play selections from your music collection
Group: Applications/Multimedia
@@ -28,6 +28,10 @@ Source1: README.Fedora
# https://bugzilla.gnome.org/show_bug.cgi?id=622028
Patch1: 0001-Add-usr-lib-banshee-1-Backends-to-library-path.patch
+# https://bugzilla.gnome.org/show_bug.cgi?id=588255
+# https://bugzilla.gnome.org/attachment.cgi?id=164158 (white spaces fixed)
+Patch2: banshee-1.6.1-transparent-icon.patch
+
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
# We dont have mono on these arches:
@@ -145,7 +149,7 @@ developing applications that use %{name}
#%patch0 -p1 -b .noconf
%patch1 -p1 -b .ldlibdir_fix
cp -p %{SOURCE1} .
-
+%patch2 -p1 -b .transparent_icon
%build
export MONO_SHARED_DIR=%mono_shared
@@ -233,6 +237,9 @@ fi
%changelog
+* Sat Jun 26 2010 Christian Krause <chkr at fedoraproject.org> - 1.6.1-5
+- Fix status icon transparency (BZ 533308)
+
* Fri Jun 18 2010 Christian Krause <chkr at fedoraproject.org> - 1.6.1-4
- avoid "DllNotFoundException: libbnpx11" when switching to
fullscreen mode
- Previous message: rpms/phpMyAdmin/devel phpMyAdmin-3.3.3-vendor.patch, NONE, 1.1 .cvsignore, 1.46, 1.47 phpMyAdmin-config.inc.php, 1.2, 1.3 phpMyAdmin.htaccess, 1.6, 1.7 phpMyAdmin.spec, 1.52, 1.53 sources, 1.46, 1.47
- Next message: [pkgdb] perl-HTML-Lint (Fedora EPEL, 6) updated by tibbs
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the scm-commits
mailing list