packages feed

gtk-traymanager 0.1.6 → 1.0.0

raw patch · 3 files changed

+47/−49 lines, 3 filesdep +gtk3dep −gtknew-uploader

Dependencies added: gtk3

Dependencies removed: gtk

Files

gtk-traymanager.cabal view
@@ -1,5 +1,5 @@ name: gtk-traymanager-version: 0.1.6+version: 1.0.0 synopsis: A wrapper around the eggtraymanager library for Linux system trays license: LGPL-2.1 license-file: LICENSE@@ -22,10 +22,10 @@ library   default-language: Haskell2010   exposed-modules: Graphics.UI.Gtk.Misc.TrayManager-  build-depends: gtk >= 0.12.1 && < 0.15,-                 glib >= 0.12.1 && < 0.15,-                 base > 3 && < 5-  pkgconfig-depends: gtk+-2.0, x11+  build-depends: base > 3 && < 5+               , glib >= 0.12.1 && < 0.15+               , gtk3+  pkgconfig-depends: gtk+-3.0, x11   hs-source-dirs: src   c-sources: src/c/eggtraymanager.c, src/c/eggmarshalers.c, src/c/gdk-helper.c   ghc-options: -Wall
src/Graphics/UI/Gtk/Misc/TrayManager.hs view
@@ -97,7 +97,6 @@ toTrayManager = unsafeCastGObject . toGObject  instance TrayManagerClass TrayManager-instance ObjectClass TrayManager instance GObjectClass TrayManager where   toGObject = GObject . castForeignPtr . unTrayManager   unsafeCastGObject = TrayManager . castForeignPtr . unGObject
src/c/eggtraymanager.c view
@@ -19,9 +19,7 @@  #include <string.h> #include <gdk/gdkx.h>-#include <gtk/gtkinvisible.h>-#include <gtk/gtksocket.h>-#include <gtk/gtkwindow.h>+#include <gtk/gtk.h> #include "eggtraymanager.h" #include "eggmarshalers.h" #include "gdk-helper.h"@@ -41,7 +39,7 @@ {   long id, len;   long remaining_len;-  +   long timeout;   Window window;   char *str;@@ -100,12 +98,12 @@ egg_tray_manager_class_init (EggTrayManagerClass *klass) {   GObjectClass *gobject_class;-  +   parent_class = g_type_class_peek_parent (klass);   gobject_class = (GObjectClass *)klass;    gobject_class->finalize = egg_tray_manager_finalize;-  +   manager_signals[TRAY_ICON_ADDED] =     g_signal_new ("tray_icon_added", 		  G_OBJECT_CLASS_TYPE (klass),@@ -162,11 +160,11 @@ egg_tray_manager_finalize (GObject *object) {   EggTrayManager *manager;-  +   manager = EGG_TRAY_MANAGER (object);    egg_tray_manager_unmanage (manager);-  +   G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -182,7 +180,7 @@  static gboolean egg_tray_manager_plug_removed (GtkSocket       *socket,-			       EggTrayManager  *manager)+                               EggTrayManager  *manager) {   Window *window; @@ -191,7 +189,7 @@   g_hash_table_remove (manager->socket_table, GINT_TO_POINTER (*window));   g_object_set_data (G_OBJECT (socket), "egg-tray-child-window", 		     NULL);-  +   g_signal_emit (manager, manager_signals[TRAY_ICON_REMOVED], 0, socket);    /* This destroys the socket. */@@ -200,20 +198,20 @@  static void egg_tray_manager_handle_dock_request (EggTrayManager       *manager,-				      XClientMessageEvent  *xevent)+                                      XClientMessageEvent  *xevent) {   GtkWidget *socket;   Window *window;-  +   socket = gtk_socket_new ();-  +   /* We need to set the child window here    * so that the client can call _get functions    * in the signal handler    */   window = g_new (Window, 1);   *window = xevent->data.l[2];-      +   g_object_set_data_full (G_OBJECT (socket), 			  "egg-tray-child-window", 			  window, g_free);@@ -225,7 +223,7 @@     {       g_signal_connect (socket, "plug_removed", 			G_CALLBACK (egg_tray_manager_plug_removed), manager);-      +       gtk_socket_add_id (GTK_SOCKET (socket), xevent->data.l[2]);        g_hash_table_insert (manager->socket_table, GINT_TO_POINTER (xevent->data.l[2]), socket);@@ -247,7 +245,7 @@ {   GList *p;   int len;-  +   /* Try to see if we can find the    * pending message in the list    */@@ -277,7 +275,7 @@ 		} 	      manager->messages = g_list_remove_link (manager->messages, 						      p);-	      + 	      pending_message_free (msg); 	    } @@ -327,9 +325,9 @@ 					XClientMessageEvent  *xevent) {   GtkSocket *socket;-  +   socket = g_hash_table_lookup (manager->socket_table, GINT_TO_POINTER (xevent->window));-  +   if (socket)     {       g_signal_emit (manager, manager_signals[MESSAGE_CANCELLED], 0,@@ -339,7 +337,7 @@  static GdkFilterReturn egg_tray_manager_handle_event (EggTrayManager       *manager,-			       XClientMessageEvent  *xevent)+                               XClientMessageEvent  *xevent) {   switch (xevent->data.l[1])     {@@ -384,7 +382,7 @@       g_signal_emit (manager, manager_signals[LOST_SELECTION], 0);       egg_tray_manager_unmanage (manager);     }-  +   return GDK_FILTER_CONTINUE; } @@ -400,19 +398,20 @@    invisible = manager->invisible;   g_assert (GTK_IS_INVISIBLE (invisible));-  g_assert (GTK_WIDGET_REALIZED (invisible));-  g_assert (GDK_IS_WINDOW (invisible->window));-  -  display = GDK_WINDOW_XDISPLAY (invisible->window);-  +  g_assert (gtk_widget_get_realized(invisible));+  g_assert (GDK_IS_WINDOW (gtk_widget_get_window(invisible)));++  display = GDK_WINDOW_XDISPLAY (gtk_widget_get_window(invisible));+   if (XGetSelectionOwner (display, manager->selection_atom) ==-      GDK_WINDOW_XWINDOW (invisible->window))+      GDK_WINDOW_XID (gtk_widget_get_window(invisible)))     {-      timestamp = gdk_x11_get_server_time (invisible->window);      +      timestamp = gdk_x11_get_server_time (gtk_widget_get_window(invisible));       XSetSelectionOwner (display, manager->selection_atom, None, timestamp);     } -  gdk_window_remove_filter (invisible->window, egg_tray_manager_window_filter, manager);  +  gdk_window_remove_filter (gtk_widget_get_window(invisible),+                            egg_tray_manager_window_filter, manager);    manager->invisible = NULL; /* prior to destroy for reentrancy paranoia */   gtk_widget_destroy (invisible);@@ -426,7 +425,7 @@   char *selection_atom_name;   guint32 timestamp;   GdkScreen *screen;-  +   g_return_val_if_fail (EGG_IS_TRAY_MANAGER (manager), FALSE);   g_return_val_if_fail (manager->screen == NULL, FALSE); @@ -439,10 +438,10 @@ #endif   screen = gdk_display_get_screen (gdk_x11_lookup_xdisplay (DisplayOfScreen (xscreen)), 				   XScreenNumberOfScreen (xscreen));-  +   invisible = gtk_invisible_new_for_screen (screen);   gtk_widget_realize (invisible);-  +   gtk_widget_add_events (invisible, GDK_PROPERTY_CHANGE_MASK | GDK_STRUCTURE_MASK);    selection_atom_name = g_strdup_printf ("_NET_SYSTEM_TRAY_S%d",@@ -450,14 +449,14 @@   manager->selection_atom = XInternAtom (DisplayOfScreen (xscreen), selection_atom_name, False);    g_free (selection_atom_name);-  -  timestamp = gdk_x11_get_server_time (invisible->window);++  timestamp = gdk_x11_get_server_time (gtk_widget_get_window(invisible));   XSetSelectionOwner (DisplayOfScreen (xscreen), manager->selection_atom,-		      GDK_WINDOW_XWINDOW (invisible->window), timestamp);+		      GDK_WINDOW_XID (gtk_widget_get_window(invisible)), timestamp);    /* Check if we were could set the selection owner successfully */   if (XGetSelectionOwner (DisplayOfScreen (xscreen), manager->selection_atom) ==-      GDK_WINDOW_XWINDOW (invisible->window))+      GDK_WINDOW_XID (gtk_widget_get_window(invisible)))     {       XClientMessageEvent xev; @@ -468,7 +467,7 @@       xev.format = 32;       xev.data.l[0] = timestamp;       xev.data.l[1] = manager->selection_atom;-      xev.data.l[2] = GDK_WINDOW_XWINDOW (invisible->window);+      xev.data.l[2] = GDK_WINDOW_XID (gtk_widget_get_window(invisible));       xev.data.l[3] = 0;	/* manager specific data */       xev.data.l[4] = 0;	/* manager specific data */ @@ -478,7 +477,7 @@        manager->invisible = invisible;       g_object_ref (G_OBJECT (manager->invisible));-      +       manager->opcode_atom = XInternAtom (DisplayOfScreen (xscreen), 					  "_NET_SYSTEM_TRAY_OPCODE", 					  False);@@ -488,13 +487,13 @@ 						False);        /* Add a window filter */-      gdk_window_add_filter (invisible->window, egg_tray_manager_window_filter, manager);+      gdk_window_add_filter (gtk_widget_get_window(invisible), egg_tray_manager_window_filter, manager);       return TRUE;     }   else     {       gtk_widget_destroy (invisible);- +       return FALSE;     } }@@ -506,7 +505,7 @@   g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);   g_return_val_if_fail (manager->screen == NULL, FALSE); -  return egg_tray_manager_manage_xscreen (manager, +  return egg_tray_manager_manage_xscreen (manager, 					  GDK_SCREEN_XSCREEN (screen)); } @@ -550,7 +549,7 @@    g_return_val_if_fail (EGG_IS_TRAY_MANAGER (manager), NULL);   g_return_val_if_fail (GTK_IS_SOCKET (child), NULL);-  +   child_window = g_object_get_data (G_OBJECT (child), 				    "egg-tray-child-window"); @@ -566,7 +565,7 @@ 			       False, utf8_string, 			       &type, &format, &nitems, 			       &bytes_after, (guchar **)&val);-  +   if (gdk_error_trap_pop () || result != Success)     return NULL;