summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>1998-11-22 00:06:57 +0000
committerOwen Taylor <otaylor@src.gnome.org>1998-11-22 00:06:57 +0000
commitd88375e9c3b37572f934e96de3bfc8ca11997cc3 (patch)
treea4d79cded1f1f037537974ddbd53113c59e123cb
parent06d68566df52826658b2741001ce341b429894b6 (diff)
downloadgdk-pixbuf-d88375e9c3b37572f934e96de3bfc8ca11997cc3.tar.gz
Fixed so it at least works with window managers other than Enlightenment,
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.
-rw-r--r--ChangeLog7
-rw-r--r--ChangeLog.pre-2-07
-rw-r--r--ChangeLog.pre-2-107
-rw-r--r--ChangeLog.pre-2-27
-rw-r--r--ChangeLog.pre-2-47
-rw-r--r--ChangeLog.pre-2-67
-rw-r--r--ChangeLog.pre-2-87
-rw-r--r--gdk/gdk.h2
-rw-r--r--gdk/gdkwindow.c51
-rw-r--r--gdk/x11/gdkwindow-x11.c51
10 files changed, 104 insertions, 49 deletions
diff --git a/ChangeLog b/ChangeLog
index 94518a968..5bd236c68 100644
--- 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
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index 94518a968..5bd236c68 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -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
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 94518a968..5bd236c68 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -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
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index 94518a968..5bd236c68 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -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
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index 94518a968..5bd236c68 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -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
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index 94518a968..5bd236c68 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -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
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index 94518a968..5bd236c68 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -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
diff --git a/gdk/gdk.h b/gdk/gdk.h
index b002d626e..a0aa173e3 100644
--- 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,
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 0d0b9a048..302fc3734 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -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;
}
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index 0d0b9a048..302fc3734 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -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;
}