* 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;
/**
* _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
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
const char *
_gtk_xembed_message_name (XEmbedMessageType message)
{
- static char unk[100];
+ static char unk[24];
switch (message)
{
CASE (GTK_UNGRAB_KEY);
#undef CASE
default:
- sprintf (unk, "UNKNOWN(%d)", message);
+ snprintf (unk, 24, "UNKNOWN(%d)", message);
return unk;
}
}