changeset 27798:d00730392332

(x_window_to_frame, x_any_window_to_frame) (x_non_menubar_window_to_frame): Check the busy-cursor window.
author Gerd Moellmann <gerd@gnu.org>
date Mon, 21 Feb 2000 16:18:09 +0000
parents da774b48eb7f
children 121d062f9c4f
files src/xfns.c
diffstat 1 files changed, 30 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/src/xfns.c	Mon Feb 21 16:17:24 2000 +0000
+++ b/src/xfns.c	Mon Feb 21 16:18:09 2000 +0000
@@ -347,6 +347,8 @@
       f = XFRAME (frame);
       if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo)
 	continue;
+      if (f->output_data.x->busy_window == wdesc)
+	return f;
 #ifdef USE_X_TOOLKIT
       if ((f->output_data.x->edit_widget 
 	   && XtWindow (f->output_data.x->edit_widget) == wdesc)
@@ -374,34 +376,40 @@
      int wdesc;
 {
   Lisp_Object tail, frame;
-  struct frame *f;
+  struct frame *f, *found;
   struct x_output *x;
 
-  for (tail = Vframe_list; GC_CONSP (tail); tail = XCDR (tail))
+  found = NULL;
+  for (tail = Vframe_list; GC_CONSP (tail) && !found; tail = XCDR (tail))
     {
       frame = XCAR (tail);
       if (!GC_FRAMEP (frame))
         continue;
+      
       f = XFRAME (frame);
-      if (!FRAME_X_P (f) || FRAME_X_DISPLAY_INFO (f) != dpyinfo)
-	continue;
-      x = f->output_data.x;
-      /* This frame matches if the window is any of its widgets.  */
-      if (x->widget)
+      if (FRAME_X_P (f) && FRAME_X_DISPLAY_INFO (f) == dpyinfo)
 	{
-	  if (wdesc == XtWindow (x->widget) 
-	      || wdesc == XtWindow (x->column_widget) 
-	      || wdesc == XtWindow (x->edit_widget))
-	    return f;
-	  /* Match if the window is this frame's menubar.  */
-	  if (lw_window_is_in_menubar (wdesc, x->menubar_widget))
-	    return f;
+	  /* This frame matches if the window is any of its widgets.  */
+	  x = f->output_data.x;
+	  if (x->busy_window == wdesc)
+	    found = f;
+	  else if (x->widget)
+	    {
+	      if (wdesc == XtWindow (x->widget) 
+		  || wdesc == XtWindow (x->column_widget) 
+		  || wdesc == XtWindow (x->edit_widget))
+		found = f;
+	      /* Match if the window is this frame's menubar.  */
+	      else if (lw_window_is_in_menubar (wdesc, x->menubar_widget))
+		found = f;
+	    }
+	  else if (FRAME_X_WINDOW (f) == wdesc)
+	    /* A tooltip frame.  */
+	    found = f;
 	}
-      else if (FRAME_X_WINDOW (f) == wdesc)
-	/* A tooltip frame.  */
-	return f;
-    }
-  return 0;
+    }
+  
+  return found;
 }
 
 /* Likewise, but exclude the menu bar widget.  */
@@ -425,7 +433,9 @@
 	continue;
       x = f->output_data.x;
       /* This frame matches if the window is any of its widgets.  */
-      if (x->widget)
+      if (x->busy_window == wdesc)
+	return f;
+      else if (x->widget)
 	{
 	  if (wdesc == XtWindow (x->widget) 
 	      || wdesc == XtWindow (x->column_widget)