Merge lp:~compiz-team/compiz/bump-compiz-to-0.9.11.1 into lp:compiz/0.9.11
- bump-compiz-to-0.9.11.1
- Merge into 0.9.11
Proposed by
Christopher Townsend
Status: | Superseded |
---|---|
Proposed branch: | lp:~compiz-team/compiz/bump-compiz-to-0.9.11.1 |
Merge into: | lp:compiz/0.9.11 |
Diff against target: |
512 lines (+216/-24) 16 files modified
NEWS (+89/-0) VERSION (+1/-1) compizconfig/gsettings/src/gsettings.c (+9/-3) compizconfig/integration/gnome/gsettings/src/ccs_gnome_integration_gsettings_integrated_setting.c (+0/-2) debian/changelog (+32/-0) plugins/place/src/place.cpp (+2/-0) plugins/place/src/screen-size-change/include/screen-size-change.h (+2/-0) plugins/place/src/screen-size-change/src/screen-size-change.cpp (+6/-3) plugins/place/src/screen-size-change/tests/screen-size-change/src/test-place-screen-size-change.cpp (+7/-0) plugins/resize/src/logic/include/resize-logic.h (+3/-0) plugins/resize/src/logic/src/resize-logic.cpp (+20/-5) scripts/release.py (+14/-4) src/event.cpp (+2/-0) src/screen.cpp (+2/-3) src/window.cpp (+26/-3) src/window/extents/src/windowextents.cpp (+1/-0) |
To merge this branch: | bzr merge lp:~compiz-team/compiz/bump-compiz-to-0.9.11.1 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Compiz Maintainers | Pending | ||
Review via email: mp+225082@code.launchpad.net |
Commit message
Bump version to 0.9.11.1.
Description of the change
Bump version to 0.9.11.1.
To post a comment you must log in.
Unmerged revisions
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'NEWS' |
2 | --- NEWS 2013-07-22 06:34:49 +0000 |
3 | +++ NEWS 2014-06-30 20:48:27 +0000 |
4 | @@ -1,3 +1,92 @@ |
5 | +Release 0.9.11 (2014-6-30 Christopher Townsend <christopher.townsend@canonical.com>) |
6 | +============================================================================= |
7 | + |
8 | +Bugs Fixed (https://launchpad.net/compiz/+milestone/0.9.11) |
9 | + |
10 | + 1019139 - [regression] Horizontally resizing a vertically maximized |
11 | + terminal is now very slow, unresponsive. |
12 | + 1019923 - Stuck in scale mode, can't get out without killing compiz |
13 | + 1027868 - Changing "Composite > Detect Refresh Rate" is ignored initially |
14 | + 1031710 - Multi-Monitor. Workspace switcher on monitor 2 is drawn under |
15 | + launcher |
16 | + 1055166 - compiz crashed with SIGSEGV in memmove() from |
17 | + drisw_update_tex_buffer() from dri_set_tex_buffer2() from |
18 | + operator() from compiz::opengl::bindTexImageGLX() from ... from |
19 | + unity::UnityWindow::DrawWindowDecoration |
20 | + 1063617 - 1:0.9.8+bzr3319-0ubuntu1 regression: keeps setting gsettings |
21 | + keys to wrong values |
22 | + 1087090 - [raring][regression] Window management - Maximized windows |
23 | + aren't fullscreen in the workspace switcher |
24 | + 1092323 - Window management - Switching to windows placed on two work |
25 | + spaces causes the workspace to switch |
26 | + 1104236 - [regression] Unity show desktop fade out makes them invisible in |
27 | + spread. |
28 | + 1171342 - mouse scroll wheel not working in gedit & System Monitor |
29 | + 1171878 - Adding/Removing an external monitor causes maximized windows to |
30 | + move to another workspace |
31 | + 1176898 - Grid: Snap animation uses wrong window |
32 | + 1184159 - [saucy] scrolling with a touchpad is jerky with bindings set in |
33 | + compiz for Desktop-based Viewport Switching |
34 | + 1191853 - gtk-window-decorator crashed with SIGSEGV in |
35 | + wnck_window_get_actions() |
36 | + 1192028 - Compiz refresh rate resets to 50 Hz automatically w/ Nvidia |
37 | + proprietary driver |
38 | + 1200829 - Regression: Enabling typical bindings in "Desktop-based |
39 | + Viewport Switching" breaks scrollwheel scrolling in some windows |
40 | + with a usb mouse on a laptop |
41 | + 1204307 - Regression: The size of all windows grows by the size of the |
42 | + decoration each time Compiz gets restarted |
43 | + 1217286 - Regression r3751: Restarting Compiz changes size and position of |
44 | + windows |
45 | + 1228352 - [regression] Alt-Tab for all viewports will not switch viewports |
46 | + when selecting a window on another viewport |
47 | + 1228507 - Cannot move certain windows via the top half of the titlebar in |
48 | + Ubuntu 13.10 |
49 | + 1236899 - [regression] Ctrl+Alt+KP_0 should minimize a window |
50 | + 1238111 - Compiz causes Motif window shrunk |
51 | + 1240957 - Scrolling behaviour and window focus has changed and is |
52 | + inconsistent |
53 | + 1244754 - [regression] compiz freezes when dragging a window to the top |
54 | + bar after being semi-maximized |
55 | + 1251777 - [regression] Semi-maximizing and then restoring the window does |
56 | + not return it to it's original place using Ctrl-Super-Left/Right |
57 | + 1277487 - Create Unity Settings Daemon so can remain on old GNOME Settings |
58 | + Daemon version |
59 | + 1280377 - Resizing vertically a window in normal mode doesn't vertically |
60 | + maximize it correctly |
61 | + 1280616 - When launcher is in autohide mode the launcher icons are not |
62 | + clickable |
63 | + 1281370 - Unity should use "Normal" resize mode by default |
64 | + 1282304 - Bottom-edge window placement doesn't take decoration height into |
65 | + consideration |
66 | + 1282305 - Repeatedly undecorating and redecorating a window shrinks it |
67 | + vertically |
68 | + 1287472 - compiz unnecessarily shrinks new windows |
69 | + 1288953 - fix kde4-window-decorator build |
70 | + 1289820 - 'Move to Another Workspace' causes window to disappear |
71 | + 1292220 - ccsm crashed with UnboundLocalError in AskUser(): local variable |
72 | + 'msg_dict' referenced before assignment |
73 | + 1294341 - Some of the input fields are blank in CompizConfig Settings |
74 | + Manager |
75 | + 1303068 - Regression: rev 3847 No focus on Desktop possible if a window is |
76 | + open |
77 | + 1303462 - [Regression] Window titlebars placed behind panel |
78 | + 1304531 - Removing an external monitor will move a maximized window to the |
79 | + current workspace |
80 | + 1304877 - Functions assigned to extra mouse buttons in compiz do not work |
81 | + anymore. |
82 | + 1305586 - Lock screen is unusable when some windows have a keyboard/mouse |
83 | + grab |
84 | + 1311303 - Compiz mouse functions mapped to horizontal scrolling buttons do |
85 | + not work |
86 | + 1311788 - compiz lower window:<Alt>Button5 stops working |
87 | + 347390 - Compiz can't resize a window vertically AND horizontally with |
88 | + keyboard. |
89 | + 890747 - Keyboard shortcut - Ctrl Alt Del doesn't do what most people |
90 | + typing it would expect |
91 | + 992697 - Window management - 'Ctrl-Alt-Numpad 4' and 'Ctrl-Alt-Numpad 6' |
92 | + window placement shortcuts are broken |
93 | + |
94 | Release 0.9.10.0 (2013-7-21 Sam Spilsbury <smspillaz@gmail.com>) |
95 | ================================================================ |
96 | |
97 | |
98 | === modified file 'VERSION' |
99 | --- VERSION 2013-07-23 02:01:11 +0000 |
100 | +++ VERSION 2014-06-30 20:48:27 +0000 |
101 | @@ -1,1 +1,1 @@ |
102 | -0.9.11 |
103 | +0.9.11.1 |
104 | |
105 | === modified file 'compizconfig/gsettings/src/gsettings.c' |
106 | --- compizconfig/gsettings/src/gsettings.c 2013-02-20 14:05:36 +0000 |
107 | +++ compizconfig/gsettings/src/gsettings.c 2014-06-30 20:48:27 +0000 |
108 | @@ -423,13 +423,19 @@ |
109 | static void |
110 | updateSetting (CCSBackend *backend, CCSContext *context, CCSPlugin *plugin, CCSSetting *setting) |
111 | { |
112 | + Bool status; |
113 | CCSIntegratedSetting *integrated = ccsGSettingsBackendGetIntegratedSetting (backend, setting); |
114 | |
115 | - ccsBackendReadInit (backend, context); |
116 | - if (!readOption (backend, setting)) |
117 | + if (ccsGetIntegrationEnabled (context) && |
118 | + integrated) |
119 | { |
120 | + status = readIntegratedOption (backend, setting, integrated); |
121 | + } |
122 | + else |
123 | + status = readOption (backend, setting); |
124 | + |
125 | + if (!status) |
126 | ccsResetToDefault (setting, TRUE); |
127 | - } |
128 | |
129 | if (ccsGetIntegrationEnabled (context) && |
130 | integrated) |
131 | |
132 | === modified file 'compizconfig/integration/gnome/gsettings/src/ccs_gnome_integration_gsettings_integrated_setting.c' |
133 | --- compizconfig/integration/gnome/gsettings/src/ccs_gnome_integration_gsettings_integrated_setting.c 2014-03-04 20:00:28 +0000 |
134 | +++ compizconfig/integration/gnome/gsettings/src/ccs_gnome_integration_gsettings_integrated_setting.c 2014-06-30 20:48:27 +0000 |
135 | @@ -244,8 +244,6 @@ |
136 | /* g_settings_set_value consumes the reference */ |
137 | if (newVariant) |
138 | ccsGSettingsWrapperSetValue (priv->wrapper, gsettingsTranslatedName, newVariant); |
139 | - else |
140 | - ccsGSettingsWrapperResetKey (priv->wrapper, gsettingsTranslatedName); |
141 | |
142 | g_variant_unref (variant); |
143 | free (gsettingsTranslatedName); |
144 | |
145 | === modified file 'debian/changelog' |
146 | --- debian/changelog 2014-04-23 14:56:06 +0000 |
147 | +++ debian/changelog 2014-06-30 20:48:27 +0000 |
148 | @@ -1,3 +1,35 @@ |
149 | +compiz (1:0.9.11.1-0ubuntu1) UNRELEASED; urgency=medium |
150 | + |
151 | + * Bump version to 0.9.11.1. |
152 | + |
153 | + -- Chris Townsend <christopher.townsend@canonical.com> Mon, 30 Jun 2014 16:41:37 -0400 |
154 | + |
155 | +compiz (1:0.9.11+14.04.20140423-0ubuntu2) UNRELEASED; urgency=medium |
156 | + |
157 | + [ Chris Townsend ] |
158 | + * Fix issue where window decorations would be placed under the Panel |
159 | + when opening a new window from an already open window. This is due |
160 | + to the already open window being taller or just as tall without be |
161 | + maximized than the workspace. (LP: #1303462) |
162 | + * Only constrain the non-modifier scrolling to the vertical scrolling |
163 | + buttons - buttons 4 & 5. (LP: #1311303) |
164 | + * Fix issue where maximized windows would get moved to different |
165 | + workspaces when disconnecting/connecting an external monitor. |
166 | + Windows should stay in the same workspace they are in when the |
167 | + monitor event occurs. (LP: #1304531) |
168 | + * Fix issue where horizontal and vertical keyboard resizing could not |
169 | + happen at the same time. (LP: #347390) |
170 | + |
171 | + [ Marco Trevisan (TreviƱo) ] |
172 | + * Event: set the screen grabbed also when we get a NotifyWhileGrabbed |
173 | + Focus{In,Out} event (LP: #1305586) |
174 | + |
175 | + [ Lukas Vacek ] |
176 | + * Fix issue where custom keyboard shortcuts would get reset to |
177 | + defaults when rebooting or restarting Compiz. (LP: #1063617) |
178 | + |
179 | + -- Chris Townsend <christopher.townsend@canonical.com> Wed, 11 Jun 2014 10:26:04 -0400 |
180 | + |
181 | compiz (1:0.9.11+14.04.20140423-0ubuntu1) trusty; urgency=low |
182 | |
183 | [ Ryan Tandy ] |
184 | |
185 | === modified file 'plugins/place/src/place.cpp' |
186 | --- plugins/place/src/place.cpp 2013-07-22 17:19:59 +0000 |
187 | +++ plugins/place/src/place.cpp 2014-06-30 20:48:27 +0000 |
188 | @@ -123,6 +123,8 @@ |
189 | state |= compiz::place::WindowAbove; |
190 | if (window->state () & CompWindowStateBelowMask) |
191 | state |= compiz::place::WindowBelow; |
192 | + if (window->state () & CompWindowStateMaximizedVertMask || window->state () & CompWindowStateMaximizedHorzMask) |
193 | + state |= compiz::place::WindowMaximized; |
194 | |
195 | return state; |
196 | } |
197 | |
198 | === modified file 'plugins/place/src/screen-size-change/include/screen-size-change.h' |
199 | --- plugins/place/src/screen-size-change/include/screen-size-change.h 2012-01-20 06:27:10 +0000 |
200 | +++ plugins/place/src/screen-size-change/include/screen-size-change.h 2014-06-30 20:48:27 +0000 |
201 | @@ -36,6 +36,7 @@ |
202 | { |
203 | namespace place |
204 | { |
205 | + const unsigned int WindowMaximized = 1 << 2; |
206 | |
207 | class ScreenSizeChangeObject |
208 | { |
209 | @@ -50,6 +51,7 @@ |
210 | virtual const CompPoint & getViewport () const = 0; |
211 | virtual const CompRect & getWorkarea (const compiz::window::Geometry &g) const = 0; |
212 | virtual const compiz::window::extents::Extents & getExtents () const = 0; |
213 | + virtual unsigned int getState () const = 0; |
214 | |
215 | compiz::window::Geometry adjustForSize (const CompSize &oldSize, |
216 | const CompSize &newSize); |
217 | |
218 | === modified file 'plugins/place/src/screen-size-change/src/screen-size-change.cpp' |
219 | --- plugins/place/src/screen-size-change/src/screen-size-change.cpp 2013-04-07 08:45:50 +0000 |
220 | +++ plugins/place/src/screen-size-change/src/screen-size-change.cpp 2014-06-30 20:48:27 +0000 |
221 | @@ -39,7 +39,7 @@ |
222 | { |
223 | int vpX, vpY; |
224 | compiz::window::Geometry g, vpRelRect; |
225 | - int pivotX, pivotY; |
226 | + int pivotX, pivotY, pivotWidth, pivotHeight; |
227 | |
228 | g = getGeometry (); |
229 | compiz::window::Geometry og (g); |
230 | @@ -50,10 +50,13 @@ |
231 | /* FIXME: Should use saved geometry for maximized / fullscreen windows */ |
232 | |
233 | /* calculate target vp x, y index for window's pivot point */ |
234 | - vpX = pivotX / oldSize.width (); |
235 | + pivotWidth = (getState () & compiz::place::WindowMaximized) ? newSize.width () : oldSize.width (); |
236 | + pivotHeight = (getState () & compiz::place::WindowMaximized) ? newSize.height () : oldSize.height (); |
237 | + |
238 | + vpX = pivotX / pivotWidth; |
239 | if (pivotX < 0) |
240 | vpX -= 1; |
241 | - vpY = pivotY / oldSize.height (); |
242 | + vpY = pivotY / pivotHeight; |
243 | if (pivotY < 0) |
244 | vpY -= 1; |
245 | |
246 | |
247 | === modified file 'plugins/place/src/screen-size-change/tests/screen-size-change/src/test-place-screen-size-change.cpp' |
248 | --- plugins/place/src/screen-size-change/tests/screen-size-change/src/test-place-screen-size-change.cpp 2013-04-16 04:24:22 +0000 |
249 | +++ plugins/place/src/screen-size-change/tests/screen-size-change/src/test-place-screen-size-change.cpp 2014-06-30 20:48:27 +0000 |
250 | @@ -62,6 +62,7 @@ |
251 | const CompPoint & getViewport () const; |
252 | const CompRect & getWorkarea (const cw::Geometry &g) const; |
253 | const cw::extents::Extents & getExtents () const; |
254 | + unsigned int getState () const; |
255 | |
256 | void setVp (const CompPoint &); |
257 | void setWorkArea (const CompRect &); |
258 | @@ -214,6 +215,12 @@ |
259 | return mCurrentExtents; |
260 | } |
261 | |
262 | +unsigned int |
263 | +StubScreenSizeChangeObject::getState () const |
264 | +{ |
265 | + return 0; |
266 | +} |
267 | + |
268 | void |
269 | StubScreenSizeChangeObject::setVp (const CompPoint &p) |
270 | { |
271 | |
272 | === modified file 'plugins/resize/src/logic/include/resize-logic.h' |
273 | --- plugins/resize/src/logic/include/resize-logic.h 2012-08-15 21:36:40 +0000 |
274 | +++ plugins/resize/src/logic/include/resize-logic.h 2014-06-30 20:48:27 +0000 |
275 | @@ -176,6 +176,9 @@ |
276 | unsigned int output, |
277 | int &op, |
278 | int &wap); |
279 | + |
280 | + unsigned int lastMaskX; |
281 | + unsigned int lastMaskY; |
282 | }; |
283 | |
284 | #endif /* RESIZELOGIC_H */ |
285 | |
286 | === modified file 'plugins/resize/src/logic/src/resize-logic.cpp' |
287 | --- plugins/resize/src/logic/src/resize-logic.cpp 2014-03-11 18:35:18 +0000 |
288 | +++ plugins/resize/src/logic/src/resize-logic.cpp 2014-06-30 20:48:27 +0000 |
289 | @@ -65,7 +65,9 @@ |
290 | offWorkAreaConstrained (true), |
291 | options (NULL), |
292 | cScreen (NULL), |
293 | - gScreen (NULL) |
294 | + gScreen (NULL), |
295 | + lastMaskX (0), |
296 | + lastMaskY (0) |
297 | { |
298 | rKeys[0].name = "Left"; |
299 | rKeys[0].dx = -1; |
300 | @@ -411,6 +413,19 @@ |
301 | |
302 | mask = rKeys[i].resizeMask; |
303 | |
304 | + if ((mask & ResizeLeftMask || mask & ResizeRightMask) && (mask != lastMaskX)) |
305 | + { |
306 | + pointerDx *= -1; |
307 | + |
308 | + lastMaskX = mask; |
309 | + } |
310 | + if ((mask & ResizeUpMask || mask & ResizeDownMask) && (mask != lastMaskY)) |
311 | + { |
312 | + pointerDy *= -1; |
313 | + |
314 | + lastMaskY = mask; |
315 | + } |
316 | + |
317 | mScreen->updateGrab (grabIndex, cursor[i]); |
318 | } |
319 | break; |
320 | @@ -439,14 +454,14 @@ |
321 | accumulatePointerMotion (xRoot, yRoot); |
322 | } |
323 | |
324 | - if (mask & ResizeLeftMask) |
325 | + if (mask & ResizeLeftMask || lastMaskX & ResizeLeftMask) |
326 | wi -= pointerDx; |
327 | - else if (mask & ResizeRightMask) |
328 | + else if (mask & ResizeRightMask || lastMaskX & ResizeRightMask) |
329 | wi += pointerDx; |
330 | |
331 | - if (mask & ResizeUpMask) |
332 | + if (mask & ResizeUpMask || lastMaskY & ResizeUpMask) |
333 | he -= pointerDy; |
334 | - else if (mask & ResizeDownMask) |
335 | + else if (mask & ResizeDownMask || lastMaskY & ResizeDownMask) |
336 | he += pointerDy; |
337 | |
338 | if (w->state () & CompWindowStateMaximizedVertMask) |
339 | |
340 | === modified file 'scripts/release.py' |
341 | --- scripts/release.py 2013-07-07 19:17:59 +0000 |
342 | +++ scripts/release.py 2014-06-30 20:48:27 +0000 |
343 | @@ -26,11 +26,11 @@ |
344 | import datetime |
345 | |
346 | def usage (): |
347 | - print ("release.py VERSION") |
348 | + print ("release.py VERSION [SINCE]") |
349 | print ("Make a release and bump version to VERSION") |
350 | sys.exit (1) |
351 | |
352 | -if len(sys.argv) != 2: |
353 | +if len(sys.argv) < 2: |
354 | usage () |
355 | |
356 | if not "release.py" in os.listdir ("."): |
357 | @@ -56,13 +56,23 @@ |
358 | |
359 | most_recent_revision = 0 |
360 | |
361 | -# Find the last tagged revision |
362 | +since = None |
363 | + |
364 | +if len (sys.argv) == 3: |
365 | + since = sys.argv[2]; |
366 | + |
367 | +# Find the last tagged revision or the specified tag |
368 | for tag, revid in tags: |
369 | try: |
370 | revision = compiz_branch.revision_id_to_dotted_revno (revid)[0] |
371 | |
372 | - if int (revision) > most_recent_revision: |
373 | + if since != None: |
374 | + if tag == since: |
375 | + most_recent_revision = revision |
376 | + |
377 | + elif int (revision) > most_recent_revision: |
378 | most_recent_revision = revision |
379 | + |
380 | except (errors.NoSuchRevision, |
381 | errors.GhostRevisionsHaveNoRevno, |
382 | errors.UnsupportedOperation): |
383 | |
384 | === modified file 'src/event.cpp' |
385 | --- src/event.cpp 2014-04-16 12:35:24 +0000 |
386 | +++ src/event.cpp 2014-06-30 20:48:27 +0000 |
387 | @@ -2333,6 +2333,8 @@ |
388 | case FocusOut: |
389 | if (event->xfocus.mode == NotifyUngrab) |
390 | privateScreen.eventManager.ungrabNotified (); |
391 | + else if (event->xfocus.mode == NotifyWhileGrabbed) |
392 | + privateScreen.eventManager.grabNotified (); |
393 | break; |
394 | case EnterNotify: |
395 | if (event->xcrossing.root == privateScreen.rootWindow()) |
396 | |
397 | === modified file 'src/screen.cpp' |
398 | --- src/screen.cpp 2014-04-16 12:35:24 +0000 |
399 | +++ src/screen.cpp 2014-06-30 20:48:27 +0000 |
400 | @@ -3421,12 +3421,11 @@ |
401 | if (ignore & ~modHandler->ignoredModMask ()) |
402 | continue; |
403 | |
404 | - /* Do not allow binding of the scroll wheel for windows other than the desktop |
405 | + /* Do not allow binding of vertical scrolling for windows other than the desktop |
406 | * unless there is a modifier defined */ |
407 | if (window && |
408 | !(window->type () & CompWindowTypeDesktopMask) && |
409 | - bind.button > 3 && |
410 | - bind.button < 8 && |
411 | + (bind.button == Button4 || bind.button == Button5) && |
412 | !mods) |
413 | continue; |
414 | |
415 | |
416 | === modified file 'src/window.cpp' |
417 | --- src/window.cpp 2014-04-09 15:52:47 +0000 |
418 | +++ src/window.cpp 2014-06-30 20:48:27 +0000 |
419 | @@ -3553,11 +3553,20 @@ |
420 | int mask = 0; |
421 | CompPoint viewport; |
422 | |
423 | - if (old.intersects (CompRect (0, 0, screen->width (), screen->height ()))) |
424 | + if (old.intersects (CompRect (0, 0, screen->width (), screen->height ())) && |
425 | + !(state & CompWindowStateMaximizedHorzMask || state & CompWindowStateMaximizedVertMask)) |
426 | viewport = screen->vp (); |
427 | + else if ((state & CompWindowStateMaximizedHorzMask || state & CompWindowStateMaximizedVertMask) && |
428 | + window->moved ()) |
429 | + viewport = initialViewport; |
430 | else |
431 | screen->viewportForGeometry (old, viewport); |
432 | |
433 | + if (viewport.x () > screen->vpSize ().width () - 1) |
434 | + viewport.setX (screen->vpSize ().width () - 1); |
435 | + if (viewport.y () > screen->vpSize ().height () - 1) |
436 | + viewport.setY (screen->vpSize ().height () - 1); |
437 | + |
438 | int x = (viewport.x () - screen->vp ().x ()) * screen->width (); |
439 | int y = (viewport.y () - screen->vp ().y ()) * screen->height (); |
440 | |
441 | @@ -4021,6 +4030,8 @@ |
442 | |
443 | if (placed) |
444 | priv->placed = true; |
445 | + |
446 | + priv->initialViewport = defaultViewport (); |
447 | } |
448 | |
449 | bool |
450 | @@ -4674,6 +4685,8 @@ |
451 | if (overrideRedirect ()) |
452 | return; |
453 | |
454 | + priv->initialViewport = screen->vp (); |
455 | + |
456 | state = constrainWindowState (state, priv->actions); |
457 | |
458 | state &= MAXIMIZE_STATE; |
459 | @@ -5637,8 +5650,8 @@ |
460 | |
461 | if (!(priv->type & CompWindowTypeDesktopMask)) |
462 | { |
463 | - /* Ungrab Buttons 4-7 for scrolling if the window is not the desktop window */ |
464 | - for (int i = 4; i <= 7; i++) |
465 | + /* Ungrab Buttons 4 & 5 for vertical scrolling if the window is not the desktop window */ |
466 | + for (int i = Button4; i <= Button5; ++i) |
467 | XUngrabButton (screen->dpy (), i, AnyModifier, frame); |
468 | } |
469 | } |
470 | @@ -5832,6 +5845,10 @@ |
471 | xwc.y = serverGeometry ().y () + wy; |
472 | |
473 | configureXWindow (valueMask, &xwc); |
474 | + |
475 | + if ((state () & CompWindowStateMaximizedHorzMask || state () & CompWindowStateMaximizedVertMask) && |
476 | + (defaultViewport () == screen->vp ())) |
477 | + priv->initialViewport = screen->vp (); |
478 | } |
479 | } |
480 | |
481 | @@ -6664,6 +6681,9 @@ |
482 | |
483 | if (xwc.x < workarea.x ()) |
484 | xwc.x = workarea.x () + movement.x (); |
485 | + |
486 | + if (xwc.x - boffset.x () < workarea.x ()) |
487 | + xwc.x += boffset.x (); |
488 | } |
489 | |
490 | if (xwc.y + xwc.height > workarea.y2 ()) |
491 | @@ -6672,6 +6692,9 @@ |
492 | |
493 | if (xwc.y < workarea.y ()) |
494 | xwc.y = workarea.y () + movement.y (); |
495 | + |
496 | + if (xwc.y - boffset.y () < workarea.y ()) |
497 | + xwc.y += boffset.y (); |
498 | } |
499 | |
500 | if (priv->actions & CompWindowActionResizeMask) |
501 | |
502 | === modified file 'src/window/extents/src/windowextents.cpp' |
503 | --- src/window/extents/src/windowextents.cpp 2014-03-10 12:53:17 +0000 |
504 | +++ src/window/extents/src/windowextents.cpp 2014-06-30 20:48:27 +0000 |
505 | @@ -43,6 +43,7 @@ |
506 | case NorthGravity: |
507 | case NorthWestGravity: |
508 | case NorthEastGravity: |
509 | + case CenterGravity: |
510 | rv.setY (extents.top); |
511 | break; |
512 | case SouthGravity: |