]> Pileus Git - ~andy/gtk/commitdiff
Fixed so it at least works with window managers other than Enlightenment,
authorOwen Taylor <otaylor@redhat.com>
Sun, 22 Nov 1998 00:06:57 +0000 (00:06 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Sun, 22 Nov 1998 00:06:57 +0000 (00:06 +0000)
Sat Nov 21 18:53:13 1998  Owen Taylor  <otaylor@redhat.com>

* gdk/gdkwindow.c (gdk_window_get_deskrelative_origin):
Fixed so it at least works with window managers other
than Enlightenment, though it probably needs to be
removed altogether.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/gdk.h
gdk/gdkwindow.c
gdk/x11/gdkwindow-x11.c

index 94518a968b5c30b2edf84b84fbce8f308263479e..5bd236c68a0d2346bf097a1ea23671b9ae2a161a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sat Nov 21 18:53:13 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_get_deskrelative_origin): 
+       Fixed so it at least works with window managers other
+       than Enlightenment, though it probably needs to be
+       removed altogether.
+
 1998-11-21  Andrew T. Veliath  <andrewtv@usa.net>
 
        * gtk/gtkhandlebox.[ch]: Add shadow_type and
index 94518a968b5c30b2edf84b84fbce8f308263479e..5bd236c68a0d2346bf097a1ea23671b9ae2a161a 100644 (file)
@@ -1,3 +1,10 @@
+Sat Nov 21 18:53:13 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_get_deskrelative_origin): 
+       Fixed so it at least works with window managers other
+       than Enlightenment, though it probably needs to be
+       removed altogether.
+
 1998-11-21  Andrew T. Veliath  <andrewtv@usa.net>
 
        * gtk/gtkhandlebox.[ch]: Add shadow_type and
index 94518a968b5c30b2edf84b84fbce8f308263479e..5bd236c68a0d2346bf097a1ea23671b9ae2a161a 100644 (file)
@@ -1,3 +1,10 @@
+Sat Nov 21 18:53:13 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_get_deskrelative_origin): 
+       Fixed so it at least works with window managers other
+       than Enlightenment, though it probably needs to be
+       removed altogether.
+
 1998-11-21  Andrew T. Veliath  <andrewtv@usa.net>
 
        * gtk/gtkhandlebox.[ch]: Add shadow_type and
index 94518a968b5c30b2edf84b84fbce8f308263479e..5bd236c68a0d2346bf097a1ea23671b9ae2a161a 100644 (file)
@@ -1,3 +1,10 @@
+Sat Nov 21 18:53:13 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_get_deskrelative_origin): 
+       Fixed so it at least works with window managers other
+       than Enlightenment, though it probably needs to be
+       removed altogether.
+
 1998-11-21  Andrew T. Veliath  <andrewtv@usa.net>
 
        * gtk/gtkhandlebox.[ch]: Add shadow_type and
index 94518a968b5c30b2edf84b84fbce8f308263479e..5bd236c68a0d2346bf097a1ea23671b9ae2a161a 100644 (file)
@@ -1,3 +1,10 @@
+Sat Nov 21 18:53:13 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_get_deskrelative_origin): 
+       Fixed so it at least works with window managers other
+       than Enlightenment, though it probably needs to be
+       removed altogether.
+
 1998-11-21  Andrew T. Veliath  <andrewtv@usa.net>
 
        * gtk/gtkhandlebox.[ch]: Add shadow_type and
index 94518a968b5c30b2edf84b84fbce8f308263479e..5bd236c68a0d2346bf097a1ea23671b9ae2a161a 100644 (file)
@@ -1,3 +1,10 @@
+Sat Nov 21 18:53:13 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_get_deskrelative_origin): 
+       Fixed so it at least works with window managers other
+       than Enlightenment, though it probably needs to be
+       removed altogether.
+
 1998-11-21  Andrew T. Veliath  <andrewtv@usa.net>
 
        * gtk/gtkhandlebox.[ch]: Add shadow_type and
index 94518a968b5c30b2edf84b84fbce8f308263479e..5bd236c68a0d2346bf097a1ea23671b9ae2a161a 100644 (file)
@@ -1,3 +1,10 @@
+Sat Nov 21 18:53:13 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_get_deskrelative_origin): 
+       Fixed so it at least works with window managers other
+       than Enlightenment, though it probably needs to be
+       removed altogether.
+
 1998-11-21  Andrew T. Veliath  <andrewtv@usa.net>
 
        * gtk/gtkhandlebox.[ch]: Add shadow_type and
index b002d626ede33f125f24b6f1ae5480edc88b4adf..a0aa173e3b5ce1575878d5276f1befbf7a05baee 100644 (file)
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -308,7 +308,7 @@ GdkWindowType gdk_window_get_type    (GdkWindow       *window);
 gint         gdk_window_get_origin      (GdkWindow       *window,
                                          gint            *x,
                                          gint            *y);
-gint         gdk_window_get_deskrelative_origin (GdkWindow       *window,
+gboolean      gdk_window_get_deskrelative_origin (GdkWindow      *window,
                                          gint            *x,
                                          gint            *y);
 void         gdk_window_get_root_origin (GdkWindow       *window,
index 0d0b9a04897998faeab7fd56ebcf59c9709e5f82..302fc3734fe8caa5f70dcd22c27763a736500b7f 100644 (file)
@@ -1302,13 +1302,14 @@ gdk_window_get_origin (GdkWindow *window,
   return return_val;
 }
 
-gint
+gboolean
 gdk_window_get_deskrelative_origin (GdkWindow *window,
                                    gint      *x,
                                    gint      *y)
 {
   GdkWindowPrivate *private;
-  gint return_val, num_children, format_return;
+  gboolean return_val = FALSE;
+  gint num_children, format_return;
   Window win, *child, parent, root;
   gint tx = 0;
   gint ty = 0;
@@ -1321,46 +1322,48 @@ gdk_window_get_deskrelative_origin (GdkWindow *window,
 
   private = (GdkWindowPrivate*) window;
 
-  return_val = 0;
   if (!private->destroyed)
     {
       if (!atom)
        atom = XInternAtom(private->xdisplay, "ENLIGHTENMENT_DESKTOP", False);
       win = private->xwindow;
+
       while (XQueryTree(private->xdisplay, win, &root, &parent,
                        &child, (unsigned int *)&num_children))
        {
          if ((child) && (num_children > 0))
            XFree(child);
-         win = parent;
+
+         if (!parent)
+           break;
+         else
+           win = parent;
+
+         if (win == root)
+           break;
+         
          data_return = NULL;
-         XGetWindowProperty(private->xdisplay, win, atom, 0, 0x7fffffff, 
+         XGetWindowProperty(private->xdisplay, win, atom, 0, 0,
                             False, XA_CARDINAL, &type_return, &format_return,
                             &number_return, &bytes_after_return, &data_return);
-         if (data_return)
+         if (type_return == XA_CARDINAL)
            {
-             if (data_return)
-               XFree(data_return);
-             return_val = XTranslateCoordinates (private->xdisplay,
-                                                 private->xwindow,
-                                                 win,
-                                                 0, 0, &tx, &ty,
-                                                 &root);
+             XFree(data_return);
               break;
            }
        }
+
+      return_val = XTranslateCoordinates (private->xdisplay,
+                                         private->xwindow,
+                                         win,
+                                         0, 0, &tx, &ty,
+                                         &root);
+      if (x)
+       *x = tx;
+      if (y)
+       *y = ty;
     }
-  if (!return_val)
-    return_val = XTranslateCoordinates (private->xdisplay,
-                                       private->xwindow,
-                                       gdk_root_window,
-                                       0, 0, &tx, &ty,
-                                       &root);
-  
-  if (x)
-    *x = tx;
-  if (y)
-    *y = ty;
+
   
   return return_val;
 }
index 0d0b9a04897998faeab7fd56ebcf59c9709e5f82..302fc3734fe8caa5f70dcd22c27763a736500b7f 100644 (file)
@@ -1302,13 +1302,14 @@ gdk_window_get_origin (GdkWindow *window,
   return return_val;
 }
 
-gint
+gboolean
 gdk_window_get_deskrelative_origin (GdkWindow *window,
                                    gint      *x,
                                    gint      *y)
 {
   GdkWindowPrivate *private;
-  gint return_val, num_children, format_return;
+  gboolean return_val = FALSE;
+  gint num_children, format_return;
   Window win, *child, parent, root;
   gint tx = 0;
   gint ty = 0;
@@ -1321,46 +1322,48 @@ gdk_window_get_deskrelative_origin (GdkWindow *window,
 
   private = (GdkWindowPrivate*) window;
 
-  return_val = 0;
   if (!private->destroyed)
     {
       if (!atom)
        atom = XInternAtom(private->xdisplay, "ENLIGHTENMENT_DESKTOP", False);
       win = private->xwindow;
+
       while (XQueryTree(private->xdisplay, win, &root, &parent,
                        &child, (unsigned int *)&num_children))
        {
          if ((child) && (num_children > 0))
            XFree(child);
-         win = parent;
+
+         if (!parent)
+           break;
+         else
+           win = parent;
+
+         if (win == root)
+           break;
+         
          data_return = NULL;
-         XGetWindowProperty(private->xdisplay, win, atom, 0, 0x7fffffff, 
+         XGetWindowProperty(private->xdisplay, win, atom, 0, 0,
                             False, XA_CARDINAL, &type_return, &format_return,
                             &number_return, &bytes_after_return, &data_return);
-         if (data_return)
+         if (type_return == XA_CARDINAL)
            {
-             if (data_return)
-               XFree(data_return);
-             return_val = XTranslateCoordinates (private->xdisplay,
-                                                 private->xwindow,
-                                                 win,
-                                                 0, 0, &tx, &ty,
-                                                 &root);
+             XFree(data_return);
               break;
            }
        }
+
+      return_val = XTranslateCoordinates (private->xdisplay,
+                                         private->xwindow,
+                                         win,
+                                         0, 0, &tx, &ty,
+                                         &root);
+      if (x)
+       *x = tx;
+      if (y)
+       *y = ty;
     }
-  if (!return_val)
-    return_val = XTranslateCoordinates (private->xdisplay,
-                                       private->xwindow,
-                                       gdk_root_window,
-                                       0, 0, &tx, &ty,
-                                       &root);
-  
-  if (x)
-    *x = tx;
-  if (y)
-    *y = ty;
+
   
   return return_val;
 }