]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkxembed.c
GtkBubbleWindow: allocate CSS borders and paddings
[~andy/gtk] / gtk / gtkxembed.c
index d4718b0ad9a3ca88d3650e33a26b0d77c2fe3f27..88a9304ea901138773fe9183ce1617cebb2f7e65 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <config.h>
+#include "config.h"
+#include <string.h>
 #include "gtkmain.h"
 #include "gtkprivate.h"
 #include "gtkxembed.h"
-#include "gtkalias.h"
+#include "gtkdebug.h"
+
 
 typedef struct _GtkXEmbedMessage GtkXEmbedMessage;
 
@@ -122,7 +122,7 @@ gtk_xembed_get_time (void)
 
 /**
  * _gtk_xembed_send_message:
- * @recipient: window to which to send the window, or %NULL
+ * @recipient: (allow-none): window to which to send the window, or %NULL
  *             in which case nothing will be sent
  * @message:   type of message
  * @detail:    detail field of message
@@ -139,38 +139,38 @@ _gtk_xembed_send_message (GdkWindow        *recipient,
                          glong             data2)
 {
   GdkDisplay *display;
-  XEvent xevent;
+  XClientMessageEvent xclient;
 
   if (!recipient)
     return;
          
   g_return_if_fail (GDK_IS_WINDOW (recipient));
 
-  display = gdk_drawable_get_display (recipient);
+  display = gdk_window_get_display (recipient);
   GTK_NOTE (PLUGSOCKET,
            g_message ("Sending %s", _gtk_xembed_message_name (message)));
 
-  xevent.xclient.window = GDK_WINDOW_XWINDOW (recipient);
-  xevent.xclient.type = ClientMessage;
-  xevent.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "_XEMBED");
-  xevent.xclient.format = 32;
-  xevent.xclient.data.l[0] = gtk_xembed_get_time ();
-  xevent.xclient.data.l[1] = message;
-  xevent.xclient.data.l[2] = detail;
-  xevent.xclient.data.l[3] = data1;
-  xevent.xclient.data.l[4] = data2;
+  memset (&xclient, 0, sizeof (xclient));
+  xclient.window = GDK_WINDOW_XID (recipient);
+  xclient.type = ClientMessage;
+  xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "_XEMBED");
+  xclient.format = 32;
+  xclient.data.l[0] = gtk_xembed_get_time ();
+  xclient.data.l[1] = message;
+  xclient.data.l[2] = detail;
+  xclient.data.l[3] = data1;
+  xclient.data.l[4] = data2;
 
   gdk_error_trap_push ();
   XSendEvent (GDK_WINDOW_XDISPLAY(recipient),
-             GDK_WINDOW_XWINDOW (recipient),
-             False, NoEventMask, &xevent);
-  gdk_display_sync (display);
-  gdk_error_trap_pop ();
+             GDK_WINDOW_XID (recipient),
+             False, NoEventMask, (XEvent *)&xclient);
+  gdk_error_trap_pop_ignored ();
 }
 
 /**
  * _gtk_xembed_send_focus_message:
- * @recipient: window to which to send the window, or %NULL
+ * @recipient: (allow-none): window to which to send the window, or %NULL
  *             in which case nothing will be sent
  * @message:   type of message
  * @detail:    detail field of message
@@ -215,7 +215,7 @@ _gtk_xembed_send_focus_message (GdkWindow        *recipient,
 const char *
 _gtk_xembed_message_name (XEmbedMessageType message)
 {
-  static char unk[100];
+  static char unk[24];
   
   switch (message)
     {
@@ -236,7 +236,7 @@ _gtk_xembed_message_name (XEmbedMessageType message)
       CASE (GTK_UNGRAB_KEY);
 #undef CASE
     default:
-      sprintf (unk, "UNKNOWN(%d)", message);
+      snprintf (unk, 24, "UNKNOWN(%d)", message);
       return unk;
     }
 }