summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog15
-rw-r--r--ChangeLog.pre-2-1015
-rw-r--r--ChangeLog.pre-2-615
-rw-r--r--ChangeLog.pre-2-815
-rw-r--r--gdk/x11/gdkwindow-x11.c78
-rw-r--r--gdk/x11/gdkwindow-x11.h1
6 files changed, 124 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index c4f68ba917..f67d06989b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+Fri Jul 9 23:26:09 2004 Soeren Sandmann <sandmann@daimi.au.dk>
+
+ * gdk/x11/gdkwindow-x11.h (struct _GdkWindowImplX11): Add an
+ "override_redirect" bit.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_new): Set it here.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_move, gdk_window_resize,
+ gdk_window_move_resize):
+ Update the local size/position cache
+ immediately for override redirect windows.
+
+ * gdk/x11/gdkwindow-x11.c (show_window_internal): Invalidate
+ newly mapped child and override redirect windows.
+
2004-07-09 Federico Mena Quintero <federico@ximian.com>
Fixes #137031:
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index c4f68ba917..f67d06989b 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,18 @@
+Fri Jul 9 23:26:09 2004 Soeren Sandmann <sandmann@daimi.au.dk>
+
+ * gdk/x11/gdkwindow-x11.h (struct _GdkWindowImplX11): Add an
+ "override_redirect" bit.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_new): Set it here.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_move, gdk_window_resize,
+ gdk_window_move_resize):
+ Update the local size/position cache
+ immediately for override redirect windows.
+
+ * gdk/x11/gdkwindow-x11.c (show_window_internal): Invalidate
+ newly mapped child and override redirect windows.
+
2004-07-09 Federico Mena Quintero <federico@ximian.com>
Fixes #137031:
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index c4f68ba917..f67d06989b 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,18 @@
+Fri Jul 9 23:26:09 2004 Soeren Sandmann <sandmann@daimi.au.dk>
+
+ * gdk/x11/gdkwindow-x11.h (struct _GdkWindowImplX11): Add an
+ "override_redirect" bit.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_new): Set it here.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_move, gdk_window_resize,
+ gdk_window_move_resize):
+ Update the local size/position cache
+ immediately for override redirect windows.
+
+ * gdk/x11/gdkwindow-x11.c (show_window_internal): Invalidate
+ newly mapped child and override redirect windows.
+
2004-07-09 Federico Mena Quintero <federico@ximian.com>
Fixes #137031:
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index c4f68ba917..f67d06989b 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,18 @@
+Fri Jul 9 23:26:09 2004 Soeren Sandmann <sandmann@daimi.au.dk>
+
+ * gdk/x11/gdkwindow-x11.h (struct _GdkWindowImplX11): Add an
+ "override_redirect" bit.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_new): Set it here.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_move, gdk_window_resize,
+ gdk_window_move_resize):
+ Update the local size/position cache
+ immediately for override redirect windows.
+
+ * gdk/x11/gdkwindow-x11.c (show_window_internal): Invalidate
+ newly mapped child and override redirect windows.
+
2004-07-09 Federico Mena Quintero <federico@ximian.com>
Fixes #137031:
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index 79f5fb52c4..e764de8ff8 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -608,6 +608,8 @@ gdk_window_new (GdkWindow *parent,
else
xattributes.override_redirect = False;
+ impl->override_redirect = xattributes.override_redirect;
+
if (private->parent && private->parent->guffaw_gravity)
{
xattributes.win_gravity = StaticGravity;
@@ -683,6 +685,8 @@ gdk_window_new (GdkWindow *parent,
xattributes.override_redirect = True;
xattributes.cursor = None;
xattributes_mask |= CWSaveUnder | CWOverrideRedirect;
+
+ impl->override_redirect = TRUE;
}
}
else
@@ -1215,7 +1219,17 @@ show_window_internal (GdkWindow *window,
g_assert (GDK_WINDOW_IS_MAPPED (window));
if (impl->position_info.mapped)
- XMapWindow (xdisplay, xwindow);
+ {
+ XMapWindow (xdisplay, xwindow);
+
+ if (!private->input_only &&
+ (private->window_type == GDK_WINDOW_CHILD ||
+ impl->override_redirect) &&
+ gdk_window_is_viewable (window))
+ {
+ gdk_window_invalidate_rect (window, NULL, TRUE);
+ }
+ }
}
}
@@ -1379,17 +1393,25 @@ gdk_window_move (GdkWindow *window,
g_return_if_fail (GDK_IS_WINDOW (window));
impl = GDK_WINDOW_IMPL_X11 (private->impl);
-
+
if (!GDK_WINDOW_DESTROYED (window))
{
if (GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD)
- _gdk_window_move_resize_child (window, x, y,
- impl->width, impl->height);
+ {
+ _gdk_window_move_resize_child (window, x, y,
+ impl->width, impl->height);
+ }
else
{
XMoveWindow (GDK_WINDOW_XDISPLAY (window),
GDK_WINDOW_XID (window),
x, y);
+
+ if (impl->override_redirect)
+ {
+ private->x = x;
+ private->y = y;
+ }
}
}
}
@@ -1429,18 +1451,28 @@ gdk_window_resize (GdkWindow *window,
if (!GDK_WINDOW_DESTROYED (window))
{
if (GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD)
- _gdk_window_move_resize_child (window, private->x, private->y,
- width, height);
+ {
+ _gdk_window_move_resize_child (window, private->x, private->y,
+ width, height);
+ }
else
{
GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (private->impl);
-
- if (width != impl->width || height != impl->height)
- private->resize_count += 1;
XResizeWindow (GDK_WINDOW_XDISPLAY (window),
GDK_WINDOW_XID (window),
width, height);
+
+ if (impl->override_redirect)
+ {
+ impl->width = width;
+ impl->height = height;
+ }
+ else
+ {
+ if (width != impl->width || height != impl->height)
+ private->resize_count += 1;
+ }
}
}
}
@@ -1480,17 +1512,28 @@ gdk_window_move_resize (GdkWindow *window,
if (!GDK_WINDOW_DESTROYED (window))
{
if (GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD)
- _gdk_window_move_resize_child (window, x, y, width, height);
+ {
+ _gdk_window_move_resize_child (window, x, y, width, height);
+ }
else
{
GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (private->impl);
-
- if (width != impl->width || height != impl->height)
- private->resize_count += 1;
-
+
XMoveResizeWindow (GDK_WINDOW_XDISPLAY (window),
GDK_WINDOW_XID (window),
x, y, width, height);
+ if (impl->override_redirect)
+ {
+ private->x = x;
+ private->y = y;
+ impl->width = width;
+ impl->height = height;
+ }
+ else
+ {
+ if (width != impl->width || height != impl->height)
+ private->resize_count += 1;
+ }
}
}
}
@@ -3286,11 +3329,16 @@ gdk_window_set_override_redirect (GdkWindow *window,
if (!GDK_WINDOW_DESTROYED (window))
{
- attr.override_redirect = (override_redirect == FALSE)?False:True;
+ GdkWindowObject *private = (GdkWindowObject *)window;
+ GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (private->impl);
+
+ attr.override_redirect = (override_redirect? True : False);
XChangeWindowAttributes (GDK_WINDOW_XDISPLAY (window),
GDK_WINDOW_XID (window),
CWOverrideRedirect,
&attr);
+
+ impl->override_redirect = attr.override_redirect;
}
}
diff --git a/gdk/x11/gdkwindow-x11.h b/gdk/x11/gdkwindow-x11.h
index f76e061d4c..4e726f4b80 100644
--- a/gdk/x11/gdkwindow-x11.h
+++ b/gdk/x11/gdkwindow-x11.h
@@ -72,6 +72,7 @@ struct _GdkWindowImplX11
GdkXPositionInfo position_info;
GdkToplevelX11 *toplevel; /* Toplevel-specific information */
gint8 toplevel_window_type;
+ guint override_redirect : 1;
};
struct _GdkWindowImplX11Class