r28807 - in /branches/upstream/libgtk2-trayicon-perl/current: ChangeLog MANIFEST.SKIP META.yml TrayIcon.pm eggtrayicon.c eggtrayicon.h perl-Gtk2-TrayIcon.spec.in

ryan52-guest at users.alioth.debian.org ryan52-guest at users.alioth.debian.org
Sun Dec 28 10:04:26 UTC 2008


Author: ryan52-guest
Date: Sun Dec 28 10:04:23 2008
New Revision: 28807

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=28807
Log:
[svn-upgrade] Integrating new upstream version, libgtk2-trayicon-perl (0.06)

Modified:
    branches/upstream/libgtk2-trayicon-perl/current/ChangeLog
    branches/upstream/libgtk2-trayicon-perl/current/MANIFEST.SKIP
    branches/upstream/libgtk2-trayicon-perl/current/META.yml
    branches/upstream/libgtk2-trayicon-perl/current/TrayIcon.pm
    branches/upstream/libgtk2-trayicon-perl/current/eggtrayicon.c
    branches/upstream/libgtk2-trayicon-perl/current/eggtrayicon.h
    branches/upstream/libgtk2-trayicon-perl/current/perl-Gtk2-TrayIcon.spec.in

Modified: branches/upstream/libgtk2-trayicon-perl/current/ChangeLog
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libgtk2-trayicon-perl/current/ChangeLog?rev=28807&op=diff
==============================================================================
--- branches/upstream/libgtk2-trayicon-perl/current/ChangeLog (original)
+++ branches/upstream/libgtk2-trayicon-perl/current/ChangeLog Sun Dec 28 10:04:23 2008
@@ -1,3 +1,25 @@
+2007/05/15 00:01 (+0200) borup
+
+	* eggtrayicon.[ch]: merge changes from svn head
+
+2006/05/14 21:04 (+0200) borup
+
+	* eggtrayicon.[ch]: merge changes from svn head
+	* eggtrayicon.[ch]: apply patch from:
+	http://bugzilla.gnome.org/show_bug.cgi?id=150726
+
+2005/03/03 21:54 (-0400) muppetman
+
+	* eggtrayicon.c: apply patch from
+	http://bugzilla.gnome.org/show_bug.cgi?id=123570
+
+2004/10/24 11:55 (-0400) rwmcfa1
+
+	* MANIFEST.SKIP: updates
+
+	* perl-Gtk2-TrayIcon.spec.in: new scheme that addresses x86_64 problems
+	found by Carl Nygard
+
 2004/02/26 17:41 (-0500) muppetman
 
 	* Makefile.PL: remove no-op

Modified: branches/upstream/libgtk2-trayicon-perl/current/MANIFEST.SKIP
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libgtk2-trayicon-perl/current/MANIFEST.SKIP?rev=28807&op=diff
==============================================================================
--- branches/upstream/libgtk2-trayicon-perl/current/MANIFEST.SKIP (original)
+++ branches/upstream/libgtk2-trayicon-perl/current/MANIFEST.SKIP Sun Dec 28 10:04:23 2008
@@ -1,14 +1,14 @@
+~$
+\.bak$
+blib
+\.bs$
+build
 CVS
-\.bak$
-\.bs$
-TrayIcon.c
-\.o$
+\.cvsignore$
 Makefile$
 Makefile\.old$
-~$
+\.o$
+\.spec$
 \.sw.$
-\.cvsignore$
-blib
-build
-Gtk2-TrayIcon-.+\.tar\.gz
-
+\.tar\.gz$
+TrayIcon.c

Modified: branches/upstream/libgtk2-trayicon-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libgtk2-trayicon-perl/current/META.yml?rev=28807&op=diff
==============================================================================
--- branches/upstream/libgtk2-trayicon-perl/current/META.yml (original)
+++ branches/upstream/libgtk2-trayicon-perl/current/META.yml Sun Dec 28 10:04:23 2008
@@ -1,11 +1,11 @@
 # http://module-build.sourceforge.net/META-spec.html
 #XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
 name:         Gtk2-TrayIcon
-version:      0.04
+version:      0.06
 version_from: TrayIcon.pm
 installdirs:  site
 requires:
     Gtk2:                          0.96
 
 distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.17
+generated_by: ExtUtils::MakeMaker version 6.30_01

Modified: branches/upstream/libgtk2-trayicon-perl/current/TrayIcon.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libgtk2-trayicon-perl/current/TrayIcon.pm?rev=28807&op=diff
==============================================================================
--- branches/upstream/libgtk2-trayicon-perl/current/TrayIcon.pm (original)
+++ branches/upstream/libgtk2-trayicon-perl/current/TrayIcon.pm Sun Dec 28 10:04:23 2008
@@ -11,7 +11,7 @@
 our @ISA = qw(DynaLoader);
 
 
-our $VERSION = '0.04';
+our $VERSION = '0.06';
 
 sub dl_load_flags { 0x01 }
 

Modified: branches/upstream/libgtk2-trayicon-perl/current/eggtrayicon.c
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libgtk2-trayicon-perl/current/eggtrayicon.c?rev=28807&op=diff
==============================================================================
--- branches/upstream/libgtk2-trayicon-perl/current/eggtrayicon.c (original)
+++ branches/upstream/libgtk2-trayicon-perl/current/eggtrayicon.c Sun Dec 28 10:04:23 2008
@@ -18,13 +18,19 @@
  * Boston, MA 02111-1307, USA.
  */
 
+#include <config.h>
 #include <string.h>
 #include <libintl.h>
 
 #include "eggtrayicon.h"
 
+#include <gdkconfig.h>
+#if defined (GDK_WINDOWING_X11)
 #include <gdk/gdkx.h>
 #include <X11/Xatom.h>
+#elif defined (GDK_WINDOWING_WIN32)
+#include <gdk/gdkwin32.h>
+#endif
 
 #ifndef EGG_COMPILATION
 #ifndef _
@@ -61,7 +67,14 @@
 static void egg_tray_icon_realize   (GtkWidget *widget);
 static void egg_tray_icon_unrealize (GtkWidget *widget);
 
-static void egg_tray_icon_update_manager_window (EggTrayIcon *icon);
+static void egg_tray_icon_add (GtkContainer *container,
+			       GtkWidget    *widget);
+
+#ifdef GDK_WINDOWING_X11
+static void egg_tray_icon_update_manager_window    (EggTrayIcon *icon,
+						    gboolean     dock_if_realized);
+static void egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon);
+#endif
 
 GType
 egg_tray_icon_get_type (void)
@@ -103,6 +116,7 @@
 {
   GObjectClass *gobject_class = (GObjectClass *)klass;
   GtkWidgetClass *widget_class = (GtkWidgetClass *)klass;
+  GtkContainerClass *container_class = (GtkContainerClass *)klass;
 
   parent_class = g_type_class_peek_parent (klass);
 
@@ -110,6 +124,8 @@
 
   widget_class->realize   = egg_tray_icon_realize;
   widget_class->unrealize = egg_tray_icon_unrealize;
+
+  container_class->add = egg_tray_icon_add;
 
   g_object_class_install_property (gobject_class,
 				   PROP_ORIENTATION,
@@ -119,6 +135,14 @@
 						      GTK_TYPE_ORIENTATION,
 						      GTK_ORIENTATION_HORIZONTAL,
 						      G_PARAM_READABLE));
+
+#if defined (GDK_WINDOWING_X11)
+  /* Nothing */
+#elif defined (GDK_WINDOWING_WIN32)
+  g_warning ("Port eggtrayicon to Win32");
+#else
+  g_warning ("Port eggtrayicon to this GTK+ backend");
+#endif
 }
 
 static void
@@ -139,6 +163,8 @@
       break;
     }
 }
+
+#ifdef GDK_WINDOWING_X11
 
 static void
 egg_tray_icon_get_orientation_property (EggTrayIcon *icon)
@@ -155,12 +181,8 @@
   int error, result;
 
   g_assert (icon->manager_window != None);
-
-#ifdef GDK_TYPE_DISPLAY
+  
   xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
-#else
-  xdisplay = GDK_WINDOW_XDISPLAY (GTK_WIDGET (icon)->window);
-#endif
 
   gdk_error_trap_push ();
   type = None;
@@ -206,7 +228,7 @@
       xev->xclient.message_type == icon->manager_atom &&
       xev->xclient.data.l[1] == icon->selection_atom)
     {
-      egg_tray_icon_update_manager_window (icon);
+      egg_tray_icon_update_manager_window (icon, TRUE);
     }
   else if (xev->xany.window == icon->manager_window)
     {
@@ -217,16 +239,18 @@
 	}
       if (xev->xany.type == DestroyNotify)
 	{
-	  egg_tray_icon_update_manager_window (icon);
+	  egg_tray_icon_manager_window_destroyed (icon);
 	}
     }
-  
   return GDK_FILTER_CONTINUE;
 }
 
+#endif  
+
 static void
 egg_tray_icon_unrealize (GtkWidget *widget)
 {
+#ifdef GDK_WINDOWING_X11
   EggTrayIcon *icon = EGG_TRAY_ICON (widget);
   GdkWindow *root_window;
 
@@ -234,27 +258,22 @@
     {
       GdkWindow *gdkwin;
 
-#ifdef GDK_TYPE_DISPLAY
       gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (widget),
                                               icon->manager_window);
-#else
-      gdkwin = gdk_window_lookup (icon->manager_window);
-#endif
 
       gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon);
     }
 
-#ifdef GDK_TYPE_SCREEN
   root_window = gdk_screen_get_root_window (gtk_widget_get_screen (widget));
-#else
-  root_window = gdk_get_default_root_window ();
-#endif
 
   gdk_window_remove_filter (root_window, egg_tray_icon_manager_filter, icon);
 
   if (GTK_WIDGET_CLASS (parent_class)->unrealize)
     (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
-}
+#endif
+}
+
+#ifdef GDK_WINDOWING_X11
 
 static void
 egg_tray_icon_send_manager_message (EggTrayIcon *icon,
@@ -277,11 +296,7 @@
   ev.data.l[3] = data2;
   ev.data.l[4] = data3;
 
-#ifdef GDK_TYPE_DISPLAY
   display = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
-#else
-  display = GDK_WINDOW_XDISPLAY (GTK_WIDGET (icon)->window);
-#endif
   
   gdk_error_trap_push ();
   XSendEvent (display,
@@ -301,29 +316,15 @@
 }
 
 static void
-egg_tray_icon_update_manager_window (EggTrayIcon *icon)
+egg_tray_icon_update_manager_window (EggTrayIcon *icon,
+				     gboolean     dock_if_realized)
 {
   Display *xdisplay;
   
-#ifdef GDK_TYPE_DISPLAY
+  if (icon->manager_window != None)
+    return;
+
   xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
-#else
-  xdisplay = GDK_WINDOW_XDISPLAY (GTK_WIDGET (icon)->window);
-#endif
-  
-  if (icon->manager_window != None)
-    {
-      GdkWindow *gdkwin;
-
-#ifdef GDK_TYPE_DISPLAY
-      gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
-					      icon->manager_window);
-#else
-      gdkwin = gdk_window_lookup (icon->manager_window);
-#endif
-      
-      gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon);
-    }
   
   XGrabServer (xdisplay);
   
@@ -341,30 +342,74 @@
     {
       GdkWindow *gdkwin;
 
-#ifdef GDK_TYPE_DISPLAY
       gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
 					      icon->manager_window);
-#else
-      gdkwin = gdk_window_lookup (icon->manager_window);
-#endif
       
       gdk_window_add_filter (gdkwin, egg_tray_icon_manager_filter, icon);
 
-      /* Send a request that we'd like to dock */
-      egg_tray_icon_send_dock_request (icon);
+      if (dock_if_realized && GTK_WIDGET_REALIZED (icon))
+	egg_tray_icon_send_dock_request (icon);
 
       egg_tray_icon_get_orientation_property (icon);
     }
 }
 
 static void
+egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon)
+{
+  GdkWindow *gdkwin;
+  
+  g_return_if_fail (icon->manager_window != None);
+
+  gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
+					  icon->manager_window);
+      
+  gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon);
+
+  icon->manager_window = None;
+
+  egg_tray_icon_update_manager_window (icon, TRUE);
+}
+
+#endif
+
+static gboolean
+transparent_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
+{
+  gdk_window_clear_area (widget->window, event->area.x, event->area.y,
+			 event->area.width, event->area.height);
+  return FALSE;
+}
+
+static void
+make_transparent_again (GtkWidget *widget, GtkStyle *previous_style,
+			gpointer user_data)
+{
+  gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
+}
+
+static void
+make_transparent (GtkWidget *widget, gpointer user_data)
+{
+  if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget))
+    return;
+
+  gtk_widget_set_app_paintable (widget, TRUE);
+  gtk_widget_set_double_buffered (widget, FALSE);
+  gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
+  g_signal_connect (widget, "expose_event",
+		    G_CALLBACK (transparent_expose_event), NULL);
+  g_signal_connect_after (widget, "style_set",
+			  G_CALLBACK (make_transparent_again), NULL);
+}	
+
+static void
 egg_tray_icon_realize (GtkWidget *widget)
 {
+#ifdef GDK_WINDOWING_X11
   EggTrayIcon *icon = EGG_TRAY_ICON (widget);
-#if defined(GDK_TYPE_DISPLAY) && defined(GDK_TYPE_SCREEN)
   GdkScreen *screen;
   GdkDisplay *display;
-#endif
   Display *xdisplay;
   char buffer[256];
   GdkWindow *root_window;
@@ -372,7 +417,8 @@
   if (GTK_WIDGET_CLASS (parent_class)->realize)
     GTK_WIDGET_CLASS (parent_class)->realize (widget);
 
-#if defined(GDK_TYPE_DISPLAY) && defined(GDK_TYPE_SCREEN)
+  make_transparent (widget, NULL);
+
   screen = gtk_widget_get_screen (widget);
   display = gdk_screen_get_display (screen);
   xdisplay = gdk_x11_display_get_xdisplay (display);
@@ -381,14 +427,6 @@
   g_snprintf (buffer, sizeof (buffer),
 	      "_NET_SYSTEM_TRAY_S%d",
 	      gdk_screen_get_number (screen));
-#else
-  xdisplay = GDK_WINDOW_XDISPLAY (widget->window);
-
-  /* Now see if there's a manager window around */
-  g_snprintf (buffer, sizeof (buffer),
-	      "_NET_SYSTEM_TRAY_S%d",
-	      0);
-#endif
 
   icon->selection_atom = XInternAtom (xdisplay, buffer, False);
   
@@ -402,30 +440,23 @@
 					"_NET_SYSTEM_TRAY_ORIENTATION",
 					False);
 
-  egg_tray_icon_update_manager_window (icon);
-
-#ifdef GDK_TYPE_SCREEN
+  egg_tray_icon_update_manager_window (icon, FALSE);
+  egg_tray_icon_send_dock_request (icon);
+
   root_window = gdk_screen_get_root_window (screen);
-#else
-  root_window = gdk_get_default_root_window ();
-#endif
   
   /* Add a root window filter so that we get changes on MANAGER */
   gdk_window_add_filter (root_window,
 			 egg_tray_icon_manager_filter, icon);
-}
-
-#ifdef GDK_TYPE_SCREEN
-EggTrayIcon *
-egg_tray_icon_new_for_xscreen (Screen *xscreen, const char *name)
-{
-  GdkDisplay *display;
-  GdkScreen *screen;
-
-  display = gdk_x11_lookup_xdisplay (DisplayOfScreen (xscreen));
-  screen = gdk_display_get_screen (display, XScreenNumberOfScreen (xscreen));
-
-  return egg_tray_icon_new_for_screen (screen, name);
+#endif
+}
+
+static void
+egg_tray_icon_add (GtkContainer *container, GtkWidget *widget)
+{
+  g_signal_connect (widget, "realize",
+		    G_CALLBACK (make_transparent), NULL);
+  GTK_CONTAINER_CLASS (parent_class)->add (container, widget);
 }
 
 EggTrayIcon *
@@ -435,7 +466,6 @@
 
   return g_object_new (EGG_TYPE_TRAY_ICON, "screen", screen, "title", name, NULL);
 }
-#endif
 
 EggTrayIcon*
 egg_tray_icon_new (const gchar *name)
@@ -455,17 +485,20 @@
   g_return_val_if_fail (timeout >= 0, 0);
   g_return_val_if_fail (message != NULL, 0);
 		     
+#ifdef GDK_WINDOWING_X11
   if (icon->manager_window == None)
     return 0;
+#endif
 
   if (len < 0)
     len = strlen (message);
 
   stamp = icon->stamp++;
   
+#ifdef GDK_WINDOWING_X11
   /* Get ready to send the message */
   egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_BEGIN_MESSAGE,
-				      (Window)gtk_plug_get_id (GTK_PLUG (icon)),
+				      icon->manager_window,
 				      timeout, len, stamp);
 
   /* Now to send the actual message */
@@ -475,14 +508,10 @@
       XClientMessageEvent ev;
       Display *xdisplay;
 
-#ifdef GDK_TYPE_DISPLAY
       xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
-#else
-      xdisplay = GDK_WINDOW_XDISPLAY (GTK_WIDGET (icon)->window);
-#endif
       
       ev.type = ClientMessage;
-      ev.window = (Window)gtk_plug_get_id (GTK_PLUG (icon));
+      ev.window = icon->manager_window;
       ev.format = 8;
       ev.message_type = XInternAtom (xdisplay,
 				     "_NET_SYSTEM_TRAY_MESSAGE_DATA", False);
@@ -503,6 +532,7 @@
       XSync (xdisplay, False);
     }
   gdk_error_trap_pop ();
+#endif
 
   return stamp;
 }
@@ -513,10 +543,11 @@
 {
   g_return_if_fail (EGG_IS_TRAY_ICON (icon));
   g_return_if_fail (id > 0);
-  
+#ifdef GDK_WINDOWING_X11  
   egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_CANCEL_MESSAGE,
 				      (Window)gtk_plug_get_id (GTK_PLUG (icon)),
 				      id, 0, 0);
+#endif
 }
 
 GtkOrientation

Modified: branches/upstream/libgtk2-trayicon-perl/current/eggtrayicon.h
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libgtk2-trayicon-perl/current/eggtrayicon.h?rev=28807&op=diff
==============================================================================
--- branches/upstream/libgtk2-trayicon-perl/current/eggtrayicon.h (original)
+++ branches/upstream/libgtk2-trayicon-perl/current/eggtrayicon.h Sun Dec 28 10:04:23 2008
@@ -22,7 +22,9 @@
 #define __EGG_TRAY_ICON_H__
 
 #include <gtk/gtkplug.h>
+#ifdef GDK_WINDOWING_X11
 #include <gdk/gdkx.h>
+#endif
 
 G_BEGIN_DECLS
 
@@ -42,12 +44,13 @@
 
   guint stamp;
   
+#ifdef GDK_WINDOWING_X11
   Atom selection_atom;
   Atom manager_atom;
   Atom system_tray_opcode_atom;
   Atom orientation_atom;
   Window manager_window;
-
+#endif
   GtkOrientation orientation;
 };
 
@@ -58,10 +61,9 @@
 
 GType        egg_tray_icon_get_type       (void);
 
-#ifdef GDK_TYPE_SCREEN
 EggTrayIcon *egg_tray_icon_new_for_screen (GdkScreen   *screen,
 					   const gchar *name);
-#endif
+
 EggTrayIcon *egg_tray_icon_new            (const gchar *name);
 
 guint        egg_tray_icon_send_message   (EggTrayIcon *icon,

Modified: branches/upstream/libgtk2-trayicon-perl/current/perl-Gtk2-TrayIcon.spec.in
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libgtk2-trayicon-perl/current/perl-Gtk2-TrayIcon.spec.in?rev=28807&op=diff
==============================================================================
--- branches/upstream/libgtk2-trayicon-perl/current/perl-Gtk2-TrayIcon.spec.in (original)
+++ branches/upstream/libgtk2-trayicon-perl/current/perl-Gtk2-TrayIcon.spec.in Sun Dec 28 10:04:23 2008
@@ -33,26 +33,25 @@
 make test
 
 %install
-rm -rf $RPM_BUILD_ROOT
-eval `perl '-V:installarchlib'`
-mkdir -p $RPM_BUILD_ROOT$installarchlib
 %makeinstall
-rm -f `find $RPM_BUILD_ROOT -type f -name perllocal.pod -o -name .packlist`
+ 
+[ -x /usr/lib/rpm/brp-compress ] && /usr/lib/rpm/brp-compress
 
-[ -x %{_libdir}/rpm/brp-compress ] && %{_libdir}/rpm/brp-compress
+find $RPM_BUILD_ROOT \( -name perllocal.pod -o -name .packlist \) -exec rm -v {} \;
 
-find $RPM_BUILD_ROOT%{_prefix} -type f -print | \
-	sed "s@^$RPM_BUILD_ROOT@@g" > %{name}-%{version}-%{release}-filelist
-if [ "$(cat %{name}-%{version}-%{release}-filelist)X" = "X" ] ; then
-    echo "ERROR: EMPTY FILE LIST"
-    exit 1
+find $RPM_BUILD_ROOT/usr -type f -print | \
+	sed "s@^$RPM_BUILD_ROOT@@g" | \
+	grep -v perllocal.pod | \
+	grep -v "\.packlist" > %{name}-%{version}-filelist
+if [ "$(cat %{name}-%{version}-filelist)X" = "X" ] ; then
+	exit -1
 fi
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
-%files -f %{name}-%{version}-%{release}-filelist
-%defattr(-,root,root,-)
+%files -f %{name}-%{version}-filelist
+%defattr(-,root,root)
 
 %changelog
 * @DATE@ gtk-perl-list at gnome.org - @VERSION@




More information about the Pkg-perl-cvs-commits mailing list