[gtk+] Drop _gdk_x11_set_input_focus_safe



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]