#include "gdk.h"
-#include "gdkx.h"
-#include "gdkprivate.h"
+#include "gdkprivate-x11.h"
+#include "gdkinternals.h"
#include "gdkinputprivate.h"
+#include <pango/pangox.h>
typedef struct _GdkPredicate GdkPredicate;
typedef struct _GdkErrorTrap GdkErrorTrap;
return gdk_use_xshm;
}
+static GdkGrabStatus
+gdk_x11_convert_grab_status (gint status)
+{
+ switch (status)
+ {
+ case GrabSuccess:
+ return GDK_GRAB_SUCCESS;
+ case AlreadyGrabbed:
+ return GDK_GRAB_ALREADY_GRABBED;
+ case GrabInvalidTime:
+ return GDK_GRAB_INVALID_TIME;
+ case GrabNotViewable:
+ return GDK_GRAB_NOT_VIEWABLE;
+ case GrabFrozen:
+ return GDK_GRAB_FROZEN;
+ }
+
+ g_assert_not_reached();
+}
+
/*
*--------------------------------------------------------------
* gdk_pointer_grab
*--------------------------------------------------------------
*/
-gint
+GdkGrabStatus
gdk_pointer_grab (GdkWindow * window,
gboolean owner_events,
GdkEventMask event_mask,
cursor_private = (GdkCursorPrivate*) cursor;
- xwindow = GDK_DRAWABLE_XID (window);
+ xwindow = GDK_WINDOW_XID (window);
- if (!confine_to || GDK_DRAWABLE_DESTROYED (confine_to))
+ if (!confine_to || GDK_WINDOW_DESTROYED (confine_to))
xconfine_to = None;
else
- xconfine_to = GDK_DRAWABLE_XID (confine_to);
+ xconfine_to = GDK_WINDOW_XID (confine_to);
if (!cursor)
xcursor = None;
xevent_mask |= gdk_event_mask_table[i];
}
- if (gdk_input_vtable.grab_pointer)
- return_val = gdk_input_vtable.grab_pointer (window,
- owner_events,
- event_mask,
- confine_to,
- time);
- else
- return_val = Success;
-
- if (return_val == Success)
+ return_val = _gdk_input_grab_pointer (window,
+ owner_events,
+ event_mask,
+ confine_to,
+ time);
+
+ if (return_val == GrabSuccess)
{
- if (!GDK_DRAWABLE_DESTROYED (window))
- return_val = XGrabPointer (GDK_DRAWABLE_XDISPLAY (window),
+ if (!GDK_WINDOW_DESTROYED (window))
+ return_val = XGrabPointer (GDK_WINDOW_XDISPLAY (window),
xwindow,
owner_events,
xevent_mask,
}
if (return_val == GrabSuccess)
- gdk_xgrab_window = (GdkWindowPrivate *)window;
-
- return return_val;
+ gdk_xgrab_window = (GdkWindowObject *)window;
+
+ return gdk_x11_convert_grab_status (return_val);
}
/*
void
gdk_pointer_ungrab (guint32 time)
{
- if (gdk_input_vtable.ungrab_pointer)
- gdk_input_vtable.ungrab_pointer (time);
+ _gdk_input_ungrab_pointer (time);
XUngrabPointer (gdk_display, time);
gdk_xgrab_window = NULL;
*--------------------------------------------------------------
*/
-gint
+GdkGrabStatus
gdk_keyboard_grab (GdkWindow * window,
gboolean owner_events,
guint32 time)
{
+ gint return_val;
+
g_return_val_if_fail (window != NULL, 0);
g_return_val_if_fail (GDK_IS_WINDOW (window), 0);
- if (!GDK_DRAWABLE_DESTROYED (window))
- return XGrabKeyboard (GDK_DRAWABLE_XDISPLAY (window),
- GDK_DRAWABLE_XID (window),
- owner_events,
- GrabModeAsync, GrabModeAsync,
- time);
+ if (!GDK_WINDOW_DESTROYED (window))
+ return_val = XGrabKeyboard (GDK_WINDOW_XDISPLAY (window),
+ GDK_WINDOW_XID (window),
+ owner_events,
+ GrabModeAsync, GrabModeAsync,
+ time);
else
- return AlreadyGrabbed;
+ return_val = AlreadyGrabbed;
+
+ return gdk_x11_convert_grab_status (return_val);
}
/*
void
gdk_windowing_exit (void)
{
+ pango_x_shutdown_display (gdk_display);
+
XCloseDisplay (gdk_display);
}