1
=== modified file 'src/snap.cpp'
2
Index: compiz-plugins-main-0.9.6/snap/src/snap.cpp
3
===================================================================
4
--- compiz-plugins-main-0.9.6.orig/snap/src/snap.cpp 2011-10-04 01:27:48.107556695 +0800
5
+++ compiz-plugins-main-0.9.6/snap/src/snap.cpp 2011-10-04 01:29:25.420039241 +0800
7
// Update snapping data
8
if (ss->optionGetSnapTypeMask () & SnapTypeEdgeResistanceMask)
11
+ snapGeometry = window->serverGeometry ();
12
this->snapDirection |= snapDirection;
14
// Attract the window if needed, moving it of the correct dist
16
// Update snapping data
17
if (ss->optionGetSnapTypeMask () & SnapTypeEdgeResistanceMask)
20
+ snapGeometry = window->serverGeometry ();
21
this->snapDirection |= snapDirection;
23
// FIXME : this needs resize-specific code.
25
// If there's horizontal snapping, add dx to current buffered
26
// dx and resist (move by -dx) or release the window and move
27
// by buffered dx - dx, same for dh
28
- if (snapped && snapDirection & HorizontalSnap)
29
+ if (!snapGeometry.isEmpty () && snapDirection & HorizontalSnap)
32
if (m_dx < ss->optionGetResistanceDistance ()
36
// Same for vertical snapping and dy/dh
37
- if (snapped && snapDirection & VerticalSnap)
38
+ if (snapGeometry.isEmpty () && snapDirection & VerticalSnap)
41
if (m_dy < ss->optionGetResistanceDistance ()
45
// If we are no longer snapping in any direction, reset snapped
46
- if (snapped && !snapDirection)
48
+ if (!snapGeometry.isEmpty () && !snapDirection)
49
+ snapGeometry = CompWindow::Geometry ();
52
// If we don't already snap vertically and horizontally,
57
+ // don't snap maximized windows
58
+ if (window->state () & CompWindowStateMaximizedHorzMask)
61
+ if (window->state () & CompWindowStateMaximizedVertMask)
64
// avoiding snap, nothing buffered
68
// If there's horizontal snapping, add dx to current buffered
69
// dx and resist (move by -dx) or release the window and move
70
// by buffered dx - dx
71
- if (snapped && snapDirection & HorizontalSnap)
72
+ if (!snapGeometry.isEmpty () && snapDirection & HorizontalSnap)
75
if (m_dx < ss->optionGetResistanceDistance ()
76
&& m_dx > -ss->optionGetResistanceDistance ())
79
+ dx = snapGeometry.x () - window->geometry ().x ();
87
// Same for vertical snapping and dy
88
- if (snapped && snapDirection & VerticalSnap)
89
+ if (!snapGeometry.isEmpty () && snapDirection & VerticalSnap)
92
if (m_dy < ss->optionGetResistanceDistance ()
93
&& m_dy > -ss->optionGetResistanceDistance ())
96
+ dy = snapGeometry.y () - window->geometry ().y ();
104
// If we are no longer snapping in any direction, reset snapped
105
- if (snapped && !snapDirection)
107
+ if (!snapGeometry.isEmpty () && !snapDirection)
108
+ snapGeometry = CompWindow::Geometry ();
110
// If we don't already snap vertically and horizontally,
111
// check edges status
117
+ snapGeometry = CompWindow::Geometry ();
120
m_dx = m_dy = m_dwidth = m_dheight = 0;
126
+ snapGeometry (0, 0, 0, 0, 0),
130
Index: compiz-plugins-main-0.9.6/snap/src/snap.h
131
===================================================================
132
--- compiz-plugins-main-0.9.6.orig/snap/src/snap.h 2011-10-04 01:27:48.119556749 +0800
133
+++ compiz-plugins-main-0.9.6/snap/src/snap.h 2011-10-04 01:29:28.364053840 +0800
139
+ CompWindow::Geometry snapGeometry;
142
// internal, avoids infinite notify loops