aboutsummaryrefslogtreecommitdiffstats
path: root/x11
diff options
context:
space:
mode:
authorjylefort <jylefort@FreeBSD.org>2006-05-15 08:00:07 +0800
committerjylefort <jylefort@FreeBSD.org>2006-05-15 08:00:07 +0800
commitec89c673d4903c91cd8b891b8b90aba4fc00b8b9 (patch)
tree9b41e591648c4ecdf2aa17b2bba23f25c90beb28 /x11
parent8008431cb8fd41f8395feb5d60ecce5cee607880 (diff)
downloadfreebsd-ports-gnome-ec89c673d4903c91cd8b891b8b90aba4fc00b8b9.tar.gz
freebsd-ports-gnome-ec89c673d4903c91cd8b891b8b90aba4fc00b8b9.tar.zst
freebsd-ports-gnome-ec89c673d4903c91cd8b891b8b90aba4fc00b8b9.zip
Allow notification icons which use a hacked eggtrayicon.c to have a
transparent background. Obtained from: Debian package via Bernat Tallaferro
Diffstat (limited to 'x11')
-rw-r--r--x11/gnome-panel/Makefile2
-rw-r--r--x11/gnome-panel/files/patch-applets_notification__area_eggtraymanager.c48
-rw-r--r--x11/gnome-panel/files/patch-applets_notification__area_main.c73
-rw-r--r--x11/gnomepanel/Makefile2
-rw-r--r--x11/gnomepanel/files/patch-applets_notification__area_eggtraymanager.c48
-rw-r--r--x11/gnomepanel/files/patch-applets_notification__area_main.c73
6 files changed, 244 insertions, 2 deletions
diff --git a/x11/gnome-panel/Makefile b/x11/gnome-panel/Makefile
index 34a93db968ca..f0448528cd25 100644
--- a/x11/gnome-panel/Makefile
+++ b/x11/gnome-panel/Makefile
@@ -22,7 +22,7 @@ PREFIX?= ${X11BASE}
.if !defined(REFERENCE_PORT)
-PORTREVISION= 1
+PORTREVISION= 2
RUN_DEPENDS= gnome-menu-editor:${PORTSDIR}/deskutils/gnome-menu-editor
diff --git a/x11/gnome-panel/files/patch-applets_notification__area_eggtraymanager.c b/x11/gnome-panel/files/patch-applets_notification__area_eggtraymanager.c
new file mode 100644
index 000000000000..727a47b99ca4
--- /dev/null
+++ b/x11/gnome-panel/files/patch-applets_notification__area_eggtraymanager.c
@@ -0,0 +1,48 @@
+--- applets/notification_area/eggtraymanager.c.orig Sat Dec 31 14:39:09 2005
++++ applets/notification_area/eggtraymanager.c Mon May 15 01:36:18 2006
+@@ -291,6 +291,36 @@
+ return FALSE;
+ }
+
++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_manager_handle_dock_request (EggTrayManager *manager,
+ XClientMessageEvent *xevent)
+@@ -306,6 +336,8 @@
+ }
+
+ socket = gtk_socket_new ();
++ g_signal_connect (socket, "realize",
++ G_CALLBACK (make_transparent), NULL);
+
+ /* We need to set the child window here
+ * so that the client can call _get functions
diff --git a/x11/gnome-panel/files/patch-applets_notification__area_main.c b/x11/gnome-panel/files/patch-applets_notification__area_main.c
new file mode 100644
index 000000000000..22802096cf28
--- /dev/null
+++ b/x11/gnome-panel/files/patch-applets_notification__area_main.c
@@ -0,0 +1,73 @@
+--- applets/notification_area/main.c.orig Wed Dec 28 22:15:27 2005
++++ applets/notification_area/main.c Mon May 15 01:36:01 2006
+@@ -159,14 +159,24 @@
+ tray = all_trays->data;
+
+ gtk_box_pack_end (GTK_BOX (tray->box), icon, FALSE, FALSE, 0);
+-
++
++ gtk_widget_hide (tray->box);
+ gtk_widget_show (icon);
++ gtk_widget_show (tray->box);
+ }
+
+ static void
+ tray_removed (EggTrayManager *manager, GtkWidget *icon, void *data)
+ {
++ SystemTray *tray;
++
++ if (all_trays == NULL)
++ return;
++
++ tray = all_trays->data;
+
++ gtk_widget_hide (tray->box);
++ gtk_widget_show (tray->box);
+ }
+
+ static void
+@@ -207,9 +217,32 @@
+ gtk_widget_set_size_request (tray->box, -1, MIN_BOX_SIZE);
+ break;
+ }
++
++ /* Force the icons to redraw their backgrounds.
++ * gtk_widget_queue_draw() doesn't work across process boundaries,
++ * so we do this instead.
++ */
++ gtk_widget_hide (tray->box);
++ gtk_widget_show (tray->box);
+ }
+
+ static void
++applet_change_background (PanelApplet *applet,
++ PanelAppletBackgroundType type,
++ GdkColor *color,
++ GdkPixmap *pixmap,
++ SystemTray *tray)
++{
++ /* Force the icons to redraw their backgrounds.
++ * gtk_widget_queue_draw() doesn't work across process boundaries,
++ * so we do this instead.
++ */
++ gtk_widget_hide (tray->box);
++ gtk_widget_show (tray->box);
++}
++
++
++static void
+ applet_change_orientation (PanelApplet *applet,
+ PanelAppletOrient orient,
+ SystemTray *tray)
+@@ -332,6 +365,11 @@
+ g_signal_connect (G_OBJECT (tray->applet),
+ "change_orient",
+ G_CALLBACK (applet_change_orientation),
++ tray);
++
++ g_signal_connect (G_OBJECT (tray->applet),
++ "change_background",
++ G_CALLBACK (applet_change_background),
+ tray);
+
+ g_signal_connect (tray->applet,
diff --git a/x11/gnomepanel/Makefile b/x11/gnomepanel/Makefile
index 34a93db968ca..f0448528cd25 100644
--- a/x11/gnomepanel/Makefile
+++ b/x11/gnomepanel/Makefile
@@ -22,7 +22,7 @@ PREFIX?= ${X11BASE}
.if !defined(REFERENCE_PORT)
-PORTREVISION= 1
+PORTREVISION= 2
RUN_DEPENDS= gnome-menu-editor:${PORTSDIR}/deskutils/gnome-menu-editor
diff --git a/x11/gnomepanel/files/patch-applets_notification__area_eggtraymanager.c b/x11/gnomepanel/files/patch-applets_notification__area_eggtraymanager.c
new file mode 100644
index 000000000000..727a47b99ca4
--- /dev/null
+++ b/x11/gnomepanel/files/patch-applets_notification__area_eggtraymanager.c
@@ -0,0 +1,48 @@
+--- applets/notification_area/eggtraymanager.c.orig Sat Dec 31 14:39:09 2005
++++ applets/notification_area/eggtraymanager.c Mon May 15 01:36:18 2006
+@@ -291,6 +291,36 @@
+ return FALSE;
+ }
+
++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_manager_handle_dock_request (EggTrayManager *manager,
+ XClientMessageEvent *xevent)
+@@ -306,6 +336,8 @@
+ }
+
+ socket = gtk_socket_new ();
++ g_signal_connect (socket, "realize",
++ G_CALLBACK (make_transparent), NULL);
+
+ /* We need to set the child window here
+ * so that the client can call _get functions
diff --git a/x11/gnomepanel/files/patch-applets_notification__area_main.c b/x11/gnomepanel/files/patch-applets_notification__area_main.c
new file mode 100644
index 000000000000..22802096cf28
--- /dev/null
+++ b/x11/gnomepanel/files/patch-applets_notification__area_main.c
@@ -0,0 +1,73 @@
+--- applets/notification_area/main.c.orig Wed Dec 28 22:15:27 2005
++++ applets/notification_area/main.c Mon May 15 01:36:01 2006
+@@ -159,14 +159,24 @@
+ tray = all_trays->data;
+
+ gtk_box_pack_end (GTK_BOX (tray->box), icon, FALSE, FALSE, 0);
+-
++
++ gtk_widget_hide (tray->box);
+ gtk_widget_show (icon);
++ gtk_widget_show (tray->box);
+ }
+
+ static void
+ tray_removed (EggTrayManager *manager, GtkWidget *icon, void *data)
+ {
++ SystemTray *tray;
++
++ if (all_trays == NULL)
++ return;
++
++ tray = all_trays->data;
+
++ gtk_widget_hide (tray->box);
++ gtk_widget_show (tray->box);
+ }
+
+ static void
+@@ -207,9 +217,32 @@
+ gtk_widget_set_size_request (tray->box, -1, MIN_BOX_SIZE);
+ break;
+ }
++
++ /* Force the icons to redraw their backgrounds.
++ * gtk_widget_queue_draw() doesn't work across process boundaries,
++ * so we do this instead.
++ */
++ gtk_widget_hide (tray->box);
++ gtk_widget_show (tray->box);
+ }
+
+ static void
++applet_change_background (PanelApplet *applet,
++ PanelAppletBackgroundType type,
++ GdkColor *color,
++ GdkPixmap *pixmap,
++ SystemTray *tray)
++{
++ /* Force the icons to redraw their backgrounds.
++ * gtk_widget_queue_draw() doesn't work across process boundaries,
++ * so we do this instead.
++ */
++ gtk_widget_hide (tray->box);
++ gtk_widget_show (tray->box);
++}
++
++
++static void
+ applet_change_orientation (PanelApplet *applet,
+ PanelAppletOrient orient,
+ SystemTray *tray)
+@@ -332,6 +365,11 @@
+ g_signal_connect (G_OBJECT (tray->applet),
+ "change_orient",
+ G_CALLBACK (applet_change_orientation),
++ tray);
++
++ g_signal_connect (G_OBJECT (tray->applet),
++ "change_background",
++ G_CALLBACK (applet_change_background),
+ tray);
+
+ g_signal_connect (tray->applet,