[gtk+] Drop _gdk_x11_set_input_focus_safe
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Drop _gdk_x11_set_input_focus_safe
- Date: Sun, 27 Feb 2011 03:16:13 +0000 (UTC)
commit 7df2ce8eabe6eb9b466e978f0cec886bdc95c601
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Feb 26 22:13:06 2011 -0500
Drop _gdk_x11_set_input_focus_safe
All that this function did was to asynchronously catch errors.
Since we have asynchronous error traps now, we can just use
XSetInputFocus().
gdk/x11/gdkasync.c | 93 ----------------------------------------------
gdk/x11/gdkasync.h | 4 --
gdk/x11/gdkdisplay-x11.c | 13 ++++--
gdk/x11/gdkwindow-x11.c | 11 +++--
4 files changed, 16 insertions(+), 105 deletions(-)
---
diff --git a/gdk/x11/gdkasync.c b/gdk/x11/gdkasync.c
index ed598fe..025b2a0 100644
--- a/gdk/x11/gdkasync.c
+++ b/gdk/x11/gdkasync.c
@@ -289,99 +289,6 @@ _gdk_x11_send_client_message_async (GdkDisplay *display,
}
static Bool
-set_input_focus_handler (Display *dpy,
- xReply *rep,
- char *buf,
- int len,
- XPointer data)
-{
- SetInputFocusState *state = (SetInputFocusState *)data;
-
- if (dpy->last_request_read == state->set_input_focus_req)
- {
- if (rep->generic.type == X_Error &&
- rep->error.errorCode == BadMatch)
- {
- /* Consume BadMatch errors, since we have no control
- * over them.
- */
- return True;
- }
- }
-
- if (dpy->last_request_read == state->get_input_focus_req)
- {
- xGetInputFocusReply replbuf;
- xGetInputFocusReply *repl G_GNUC_UNUSED;
-
- if (rep->generic.type != X_Error)
- {
- /* Actually does nothing, since there are no additional bytes
- * to read, but maintain good form.
- */
- repl = (xGetInputFocusReply *)
- _XGetAsyncReply(dpy, (char *)&replbuf, rep, buf, len,
- (sizeof(xGetInputFocusReply) - sizeof(xReply)) >> 2,
- True);
- }
-
- DeqAsyncHandler(state->dpy, &state->async);
-
- g_free (state);
-
- return (rep->generic.type != X_Error);
- }
-
- return False;
-}
-
-void
-_gdk_x11_set_input_focus_safe (GdkDisplay *display,
- Window window,
- int revert_to,
- Time time)
-{
- Display *dpy;
- SetInputFocusState *state;
-
- dpy = GDK_DISPLAY_XDISPLAY (display);
-
- state = g_new (SetInputFocusState, 1);
-
- state->dpy = dpy;
-
- LockDisplay(dpy);
-
- state->async.next = dpy->async_handlers;
- state->async.handler = set_input_focus_handler;
- state->async.data = (XPointer) state;
- dpy->async_handlers = &state->async;
-
- {
- xSetInputFocusReq *req;
-
- GetReq(SetInputFocus, req);
- req->focus = window;
- req->revertTo = revert_to;
- req->time = time;
- state->set_input_focus_req = dpy->request;
- }
-
- /*
- * XSync (dpy, 0)
- */
- {
- xReq *req;
-
- GetEmptyReq(GetInputFocus, req);
- state->get_input_focus_req = dpy->request;
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-static Bool
list_children_handler (Display *dpy,
xReply *rep,
char *buf,
diff --git a/gdk/x11/gdkasync.h b/gdk/x11/gdkasync.h
index f999515..a5f67c9 100644
--- a/gdk/x11/gdkasync.h
+++ b/gdk/x11/gdkasync.h
@@ -54,10 +54,6 @@ void _gdk_x11_send_client_message_async (GdkDisplay *display,
XClientMessageEvent *event_send,
GdkSendXEventCallback callback,
gpointer data);
-void _gdk_x11_set_input_focus_safe (GdkDisplay *display,
- Window window,
- int revert_to,
- Time time);
gboolean _gdk_x11_get_window_child_info (GdkDisplay *display,
Window window,
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index 2cf17ca..2911a3a 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -1024,12 +1024,17 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
GdkToplevelX11 *toplevel = _gdk_x11_window_get_toplevel (event->any.window);
/* There is no way of knowing reliably whether we are viewable;
- * _gdk_x11_set_input_focus_safe() traps errors asynchronously.
+ * so trap errors asynchronously around the XSetInputFocus call
*/
if (toplevel && win->accept_focus)
- _gdk_x11_set_input_focus_safe (display, toplevel->focus_window,
- RevertToParent,
- xevent->xclient.data.l[1]);
+ {
+ gdk_x11_display_error_trap_push (display);
+ XSetInputFocus (GDK_DISPLAY_XDISPLAY (display),
+ toplevel->focus_window,
+ RevertToParent,
+ xevent->xclient.data.l[1]);
+ gdk_x11_display_error_trap_pop_ignored (display);
+ }
return GDK_FILTER_REMOVE;
}
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index dd42088..6cd5573 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -1821,11 +1821,14 @@ gdk_x11_window_focus (GdkWindow *window,
XRaiseWindow (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window));
/* There is no way of knowing reliably whether we are viewable;
- * _gdk_x11_set_input_focus_safe() traps errors asynchronously.
+ * so trap errors asynchronously around the XSetInputFocus call
*/
- _gdk_x11_set_input_focus_safe (display, GDK_WINDOW_XID (window),
- RevertToParent,
- timestamp);
+ gdk_x11_display_error_trap_push (display);
+ XSetInputFocus (GDK_DISPLAY_XDISPLAY (display),
+ GDK_WINDOW_XID (window),
+ RevertToParent,
+ timestamp);
+ gdk_x11_display_error_trap_pop_ignored (display);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]