Make compiz behave with gnome-terminal (#304051)

This commit is contained in:
Warren Togami 2007-10-09 20:29:33 +00:00
parent 417da9b6c2
commit 5bd152c593
2 changed files with 81 additions and 1 deletions

View File

@ -0,0 +1,75 @@
From: Danny Baumann <dannybaumann@web.de>
Date: Tue, 2 Oct 2007 10:17:42 +0000 (+0200)
Subject: Send synthetic configure notify events where needed according to ICCCM chapter 4 ...
X-Git-Url: http://gitweb.opencompositing.org/?p=compiz;a=commitdiff_plain;h=d301a011471469fea70f3d3d519ed47ead1f8e22;hp=d5f647f57219b8413e3d964a214570a1ca12bac3
Send synthetic configure notify events where needed according to ICCCM chapter 4.1.5.
Specifically, we have to send them when
a) moving or restacking a window without resizing it
b) not reacting to ConfigureRequest events.
---
diff --git a/src/window.c b/src/window.c
index 253976c..bbcdbeb 100644
--- a/src/window.c
+++ b/src/window.c
@@ -2805,6 +2805,8 @@ syncWindowPosition (CompWindow *w)
w->serverY = w->attrib.y;
XMoveWindow (w->screen->display->display, w->id, w->attrib.x, w->attrib.y);
+ /* we moved without resizing, so we have to send a configure notify */
+ sendConfigureNotify (w);
if (w->frame)
XMoveWindow (w->screen->display->display, w->frame,
@@ -3347,8 +3349,16 @@ configureXWindow (CompWindow *w,
if (valueMask & CWBorderWidth)
w->serverBorderWidth = xwc->border_width;
- XConfigureWindow (w->screen->display->display, w->id,
- valueMask, xwc);
+ if (valueMask)
+ {
+ XConfigureWindow (w->screen->display->display, w->id, valueMask, xwc);
+ if (!(valueMask & (CWWidth | CWHeight)))
+ {
+ /* we have to send a configure notify event if we move or restack
+ a window without resizing it according to ICCCM 4.1.5 */
+ sendConfigureNotify (w);
+ }
+ }
if (w->frame && (valueMask & (CWSibling | CWStackMode)))
XConfigureWindow (w->screen->display->display, w->frame,
@@ -3795,6 +3805,18 @@ moveResizeWindow (CompWindow *w,
}
}
+ if (xwcm & CWX)
+ {
+ if (xwc->x == w->serverX)
+ xwcm &= ~CWX;
+ }
+
+ if (xwcm & CWY)
+ {
+ if (xwc->y == w->serverY)
+ xwcm &= ~CWY;
+ }
+
if (xwcm & CWBorderWidth)
{
if (xwc->border_width == w->serverBorderWidth)
@@ -3820,6 +3842,12 @@ moveResizeWindow (CompWindow *w,
sendSyncRequest (w);
configureXWindow (w, xwcm, xwc);
+ if (!xwcm)
+ {
+ /* we have to send a configure notify on ConfigureRequest events if
+ we decide not to do anything according to ICCCM 4.1.5 */
+ sendConfigureNotify (w);
+ }
if (placed)
w->placed = TRUE;

View File

@ -14,7 +14,7 @@ URL: http://www.go-compiz.org
License: X11/MIT/GPL
Group: User Interface/Desktops
Version: 0.5.2
Release: 13.%{snapshot}%{?dist}
Release: 14.%{snapshot}%{?dist}
Summary: OpenGL window and compositing manager
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -47,6 +47,7 @@ BuildRequires: dbus-qt-devel
Source0: %{name}-%{snapshot}.tar.gz
Source1: desktop-effects-%{dialogversion}.tar.bz2
Patch0: compiz-synthetic-configure-notify-events.patch
# Patches that are not upstream
Patch103: composite-cube-logo.patch
Patch105: fedora-logo.patch
@ -108,6 +109,7 @@ and other kde integration related stuff
%setup -q -T -b1 -n desktop-effects-%{dialogversion}
%setup -q -n compiz-%{snapshot}
%patch0 -p1 -b .synthetic-configure-notify-events
%patch103 -p1 -b .composite-cube-logo
%if 0%{?fedora}
%patch105 -p1 -b .fedora-logo
@ -273,6 +275,9 @@ rm -rf $RPM_BUILD_ROOT
%changelog
* Tue Oct 9 2007 Warren Togami <wtogami@redhat.com> - 0.5.2-14
- Make compiz behave with gnome-terminal (#304051)
* Fri Oct 5 2007 Matthias Clasen <mclasen@redhat.com> - 0.5.2-13
- Also install gwd.schemas (#319621)