1
From 9e5ce1695c21d147987d35292aae5dad76825bf8 Mon Sep 17 00:00:00 2001
2
From: Sam Spilsbury <sam.spilsbury@canonical.com>
3
Date: Fri, 25 Mar 2011 03:06:32 +0800
4
Subject: [PATCH] Correctly handle server border width in geometry calculations and
5
adjustment from frame window dimentions to client dimentions
8
src/window.cpp | 14 ++++++------
9
src/windowgeometry.cpp | 57 +++++++++++++++++++++++++----------------------
10
2 files changed, 37 insertions(+), 34 deletions(-)
12
Index: compiz-0.9.4git20110322/src/window.cpp
13
===================================================================
14
--- compiz-0.9.4git20110322.orig/src/window.cpp 2011-03-25 13:59:29.116725630 +0800
15
+++ compiz-0.9.4git20110322/src/window.cpp 2011-03-25 13:59:29.146725678 +0800
19
x = ce->x + priv->input.left;
20
- y = ce->y + priv->input.top;
21
- width = ce->width - priv->input.left - priv->input.right;
22
- height = ce->height - priv->input.top - priv->input.bottom;
23
+ y = ce->y + priv->input.top - priv->serverGeometry.border ();
24
+ width = ce->width - priv->serverGeometry.border () * 2 - priv->input.left - priv->input.right;
25
+ height = ce->height - priv->serverGeometry.border () * 2 - priv->input.top - priv->input.bottom;
29
@@ -2429,10 +2429,10 @@
31
XWindowChanges wc = *xwc;
35
- wc.width += input.left + input.right;
36
- wc.height += input.top + input.bottom;
37
+ wc.x -= input.left - serverGeometry.border ();
38
+ wc.y -= input.top - serverGeometry.border ();
39
+ wc.width += input.left + input.right + serverGeometry.border ();
40
+ wc.height += input.top + input.bottom + serverGeometry.border ();
42
XConfigureWindow (screen->dpy (), frame, valueMask, &wc);
43
valueMask &= ~(CWSibling | CWStackMode);
44
Index: compiz-0.9.4git20110322/src/windowgeometry.cpp
45
===================================================================
46
--- compiz-0.9.4git20110322.orig/src/windowgeometry.cpp 2011-03-22 16:46:56.000000000 +0800
47
+++ compiz-0.9.4git20110322/src/windowgeometry.cpp 2011-03-25 13:59:29.146725678 +0800
50
CompWindow::width () const
53
+ return priv->width +
54
+ priv->geometry.border () * 2;
58
CompWindow::height () const
60
- return priv->height;
61
+ return priv->height +
62
+ priv->geometry.border () * 2;;
66
CompWindow::size () const
68
- return CompSize (priv->width, priv->height);
69
+ return CompSize (priv->width + priv->geometry.border () * 2,
70
+ priv->height + priv->geometry.border () * 2);
76
CompWindow::borderRect () const
78
- return CompRect (priv->geometry.x () - priv->border.left,
79
- priv->geometry.y () - priv->border.top,
80
- priv->geometry.width () +
81
+ return CompRect (priv->geometry.x () - priv->geometry.border () - priv->border.left,
82
+ priv->geometry.y () - priv->geometry.border () - priv->border.top,
83
+ priv->geometry.width () + priv->geometry.border () * 2 +
84
priv->border.left + priv->border.right,
85
- priv->geometry.height () +
86
+ priv->geometry.height () + priv->geometry.border () * 2 +
87
priv->border.top + priv->border.bottom);
91
CompWindow::serverBorderRect () const
93
- return CompRect (priv->serverGeometry.x () - priv->border.left,
94
- priv->serverGeometry.y () - priv->border.top,
95
- priv->serverGeometry.width () +
96
+ return CompRect (priv->serverGeometry.x () - priv->geometry.border () - priv->border.left,
97
+ priv->serverGeometry.y () - priv->geometry.border () - priv->border.top,
98
+ priv->serverGeometry.width () + priv->geometry.border () * 2 +
99
priv->border.left + priv->border.right,
100
- priv->serverGeometry.height () +
101
+ priv->serverGeometry.height () + priv->geometry.border () * 2 +
102
priv->border.top + priv->border.bottom);
106
CompWindow::inputRect () const
108
- return CompRect (priv->geometry.x () - priv->input.left,
109
- priv->geometry.y () - priv->input.top,
110
- priv->geometry.width () +
111
+ return CompRect (priv->geometry.x () - priv->geometry.border () - priv->input.left,
112
+ priv->geometry.y () - priv->geometry.border () - priv->input.top,
113
+ priv->geometry.width () + priv->geometry.border () * 2 +
114
priv->input.left + priv->input.right,
115
- priv->geometry.height () +
116
+ priv->geometry.height () +priv->geometry.border () * 2 +
117
priv->input.top + priv->input.bottom);
121
CompWindow::serverInputRect () const
123
- return CompRect (priv->serverGeometry.x () - priv->input.left,
124
- priv->serverGeometry.y () - priv->input.top,
125
- priv->serverGeometry.width () +
126
+ return CompRect (priv->serverGeometry.x () - priv->serverGeometry.border () - priv->input.left,
127
+ priv->serverGeometry.y () - priv->serverGeometry.border () - priv->input.top,
128
+ priv->serverGeometry.width () + priv->serverGeometry.border () * 2 +
129
priv->input.left + priv->input.right,
130
- priv->serverGeometry.height () +
131
+ priv->serverGeometry.height () + priv->serverGeometry.border () * 2 +
132
priv->input.top + priv->input.bottom);
136
CompWindow::outputRect () const
138
- return CompRect (priv->geometry.x () - priv->output.left,
139
- priv->geometry.y () - priv->output.top,
140
- priv->geometry.width () +
141
+ return CompRect (priv->geometry.x () - priv->serverGeometry.border ()- priv->output.left,
142
+ priv->geometry.y () - priv->serverGeometry.border () - priv->output.top,
143
+ priv->geometry.width () + priv->serverGeometry.border () * 2 +
144
priv->output.left + priv->output.right,
145
- priv->geometry.height () +
146
+ priv->geometry.height () + priv->serverGeometry.border () * 2 +
147
priv->output.top + priv->output.bottom);
151
CompWindow::serverOutputRect () const
153
- return CompRect (priv->serverGeometry.x () - priv->output.left,
154
- priv->serverGeometry.y () - priv->output.top,
155
- priv->serverGeometry.width () +
156
+ return CompRect (priv->serverGeometry.x () - priv->serverGeometry.border () - priv->output.left,
157
+ priv->serverGeometry.y () - priv->serverGeometry.border () - priv->output.top,
158
+ priv->serverGeometry.width () + priv->serverGeometry.border () * 2 +
159
priv->output.left + priv->output.right,
160
- priv->serverGeometry.height () +
161
+ priv->serverGeometry.height () + priv->serverGeometry.border () * 2 +
162
priv->output.top + priv->output.bottom);