~kubuntu-netbook/kdelibs/ubuntu

« back to all changes in this revision

Viewing changes to debian/patches/netbook_01_add_plasmawindoweffects.diff

  • Committer: Jonathan Riddell
  • Date: 2009-08-06 12:07:51 UTC
  • Revision ID: jriddell@canonical.com-20090806120751-seypv0fiwj5s2wn4
Add netbook_01_add_plasmawindoweffects.diff from trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
     framesvg.h
19
19
     plasma.h
20
20
     plasma_export.h
21
 
Index: kde4libs-4.3.0/plasma/windoweffects.cpp
22
 
===================================================================
23
 
--- /dev/null   1970-01-01 00:00:00.000000000 +0000
24
 
+++ kde4libs-4.3.0/plasma/windoweffects.cpp     2009-08-05 18:40:49.000000000 +0200
25
 
@@ -0,0 +1,83 @@
26
 
+/*
27
 
+ *   Copyright 2009 Marco Martin <notmart@gmail.com>
28
 
+ *
29
 
+ *   This program is free software; you can redistribute it and/or modify
30
 
+ *   it under the terms of the GNU Library General Public License as
31
 
+ *   published by the Free Software Foundation; either version 2, or
32
 
+ *   (at your option) any later version.
33
 
+ *
34
 
+ *   This program is distributed in the hope that it will be useful,
35
 
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
36
 
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
37
 
+ *   GNU General Public License for more details
38
 
+ *
39
 
+ *   You should have received a copy of the GNU Library General Public
40
 
+ *   License along with this program; if not, write to the
41
 
+ *   Free Software Foundation, Inc.,
42
 
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
43
 
+ */
44
 
+
45
 
+#include "windoweffects.h"
46
 
+
47
 
+#include <QVarLengthArray>
48
 
+
49
 
+
50
 
+namespace Plasma
51
 
+{
52
 
+
53
 
+namespace WindowEffects
54
 
+{
55
 
+
56
 
+void setSlidingWindow(WId id, Plasma::Location location)
57
 
+{
58
 
+#ifdef Q_WS_X11
59
 
+    Display *dpy = QX11Info::display();
60
 
+    //set again the atom, the location could have changed
61
 
+    QDesktopWidget *desktop = QApplication::desktop();
62
 
+
63
 
+    Window dummy;
64
 
+    int x;
65
 
+    int y;
66
 
+    uint width;
67
 
+    uint height;
68
 
+    uint bw;
69
 
+    uint d;
70
 
+    XGetGeometry(dpy, id, &dummy, &x, &y, &width, &height, &bw, &d);
71
 
+
72
 
+    QRect avail = desktop->availableGeometry(QPoint(x, y));//desktop->screenNumber(pos()));
73
 
+
74
 
+    Atom atom = XInternAtom( dpy, "_KDE_SLIDE", False );
75
 
+    QVarLengthArray<long, 1024> data(2);
76
 
+
77
 
+    switch (location) {
78
 
+    case LeftEdge:
79
 
+        data[0] = avail.left();
80
 
+        data[1] = 0;
81
 
+        break;
82
 
+    case TopEdge:
83
 
+        data[0] = avail.top();
84
 
+        data[1] = 1;
85
 
+        break;
86
 
+    case RightEdge:
87
 
+        data[0] = avail.right();
88
 
+        data[1] = 2;
89
 
+        break;
90
 
+    case BottomEdge:
91
 
+        data[0] = avail.bottom();
92
 
+        data[1] = 3;
93
 
+    default:
94
 
+        break;
95
 
+    }
96
 
+
97
 
+    if (location == Desktop || location == Floating) {
98
 
+        XDeleteProperty(dpy, id, atom);
99
 
+    } else {
100
 
+        XChangeProperty(dpy, id, atom, atom, 32, PropModeReplace,
101
 
+                        reinterpret_cast<unsigned char *>(data.data()), data.size());
102
 
+    }
103
 
+#endif
104
 
+}
105
 
+
106
 
+}
107
 
+
108
 
+}
109
 
Index: kde4libs-4.3.0/plasma/windoweffects.h
110
 
===================================================================
111
 
--- /dev/null   1970-01-01 00:00:00.000000000 +0000
112
 
+++ kde4libs-4.3.0/plasma/windoweffects.h       2009-08-05 18:40:49.000000000 +0200
113
 
@@ -0,0 +1,50 @@
114
 
+/*
115
 
+ *   Copyright 2009 Marco Martin <notmart@gmail.com>
116
 
+ *
117
 
+ *   This program is free software; you can redistribute it and/or modify
118
 
+ *   it under the terms of the GNU Library General Public License as
119
 
+ *   published by the Free Software Foundation; either version 2, or
120
 
+ *   (at your option) any later version.
121
 
+ *
122
 
+ *   This program is distributed in the hope that it will be useful,
123
 
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
124
 
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
125
 
+ *   GNU General Public License for more details
126
 
+ *
127
 
+ *   You should have received a copy of the GNU Library General Public
128
 
+ *   License along with this program; if not, write to the
129
 
+ *   Free Software Foundation, Inc.,
130
 
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
131
 
+ */
132
 
+
133
 
+#ifndef PLASMA_WINDOWEFFECTS_H
134
 
+#define PLASMA_WINDOWEFFECTS_H
135
 
+
136
 
+#include <QtGui/QApplication>
137
 
+#include <QtGui/QDesktopWidget>
138
 
+
139
 
+#include <plasma/plasma_export.h>
140
 
+#include <plasma/plasma.h>
141
 
+
142
 
+#ifdef Q_WS_X11
143
 
+#include <X11/Xlib.h>
144
 
+#include <QX11Info>
145
 
+#endif
146
 
+
147
 
+/** @headerfile plasma/windoweffect.h <Plasma/PaintUtils> */
148
 
+
149
 
+namespace Plasma
150
 
+{
151
 
+
152
 
+/**
153
 
+ * Namespace for all window effects for Plasma/KWin interaction
154
 
+ */
155
 
+namespace WindowEffects
156
 
+{
157
 
+    PLASMA_EXPORT void setSlidingWindow(WId id, Plasma::Location location);
158
 
+}
159
 
+
160
 
+} // namespace Plasma
161
 
+
162
 
+#endif
163
 
+
164
21
Index: kde4libs-4.3.0/includes/CMakeLists.txt
165
22
===================================================================
166
23
--- kde4libs-4.3.0.orig/includes/CMakeLists.txt 2009-08-05 18:41:12.000000000 +0200
179
36
+++ kde4libs-4.3.0/includes/Plasma/WindowEffects        2009-08-05 18:41:59.000000000 +0200
180
37
@@ -0,0 +1 @@
181
38
+#include "../../plasma/windoweffects.h"
 
39
--- /dev/null   2009-07-22 05:21:08.000000000 +0100
 
40
+++ kde4libs-4.3.0/plasma/windoweffects.cpp     2009-08-06 12:06:07.000000000 +0100
 
41
@@ -0,0 +1,109 @@
 
42
+/*
 
43
+ *   Copyright 2009 Marco Martin <notmart@gmail.com>
 
44
+ *
 
45
+ *   This program is free software; you can redistribute it and/or modify
 
46
+ *   it under the terms of the GNU Library General Public License as
 
47
+ *   published by the Free Software Foundation; either version 2, or
 
48
+ *   (at your option) any later version.
 
49
+ *
 
50
+ *   This program is distributed in the hope that it will be useful,
 
51
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
52
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
53
+ *   GNU General Public License for more details
 
54
+ *
 
55
+ *   You should have received a copy of the GNU Library General Public
 
56
+ *   License along with this program; if not, write to the
 
57
+ *   Free Software Foundation, Inc.,
 
58
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
59
+ */
 
60
+
 
61
+#include "windoweffects.h"
 
62
+
 
63
+#include <QVarLengthArray>
 
64
+
 
65
+#include <kwindowsystem.h>
 
66
+
 
67
+#ifdef Q_WS_X11
 
68
+#include <X11/Xlib.h>
 
69
+#include <QX11Info>
 
70
+#endif
 
71
+
 
72
+namespace Plasma
 
73
+{
 
74
+
 
75
+namespace WindowEffects
 
76
+{
 
77
+
 
78
+void slideWindow(WId id, Plasma::Location location, int offset)
 
79
+{
 
80
+#ifdef Q_WS_X11
 
81
+    Display *dpy = QX11Info::display();
 
82
+    Atom atom = XInternAtom( dpy, "_KDE_SLIDE", False );
 
83
+    QVarLengthArray<long, 1024> data(2);
 
84
+
 
85
+    data[0] = offset;
 
86
+
 
87
+    switch (location) {
 
88
+    case LeftEdge:
 
89
+        data[1] = 0;
 
90
+        break;
 
91
+    case TopEdge:
 
92
+        data[1] = 1;
 
93
+        break;
 
94
+    case RightEdge:
 
95
+        data[1] = 2;
 
96
+        break;
 
97
+    case BottomEdge:
 
98
+        data[1] = 3;
 
99
+    default:
 
100
+        break;
 
101
+    }
 
102
+
 
103
+    if (location == Desktop || location == Floating) {
 
104
+        XDeleteProperty(dpy, id, atom);
 
105
+    } else {
 
106
+        XChangeProperty(dpy, id, atom, atom, 32, PropModeReplace,
 
107
+                        reinterpret_cast<unsigned char *>(data.data()), data.size());
 
108
+    }
 
109
+#endif
 
110
+}
 
111
+
 
112
+void slideWindow(QWidget *widget, Plasma::Location location)
 
113
+{
 
114
+#ifdef Q_WS_X11
 
115
+    Display *dpy = QX11Info::display();
 
116
+    Atom atom = XInternAtom( dpy, "_KDE_SLIDE", False );
 
117
+    QVarLengthArray<long, 1024> data(2);
 
118
+
 
119
+    switch (location) {
 
120
+    case LeftEdge:
 
121
+        data[0] = widget->geometry().left();
 
122
+        data[1] = 0;
 
123
+        break;
 
124
+    case TopEdge:
 
125
+        data[0] = widget->geometry().top();
 
126
+        data[1] = 1;
 
127
+        break;
 
128
+    case RightEdge:
 
129
+        data[0] = widget->geometry().right();
 
130
+        data[1] = 2;
 
131
+        break;
 
132
+    case BottomEdge:
 
133
+        data[0] = widget->geometry().bottom();
 
134
+        data[1] = 3;
 
135
+    default:
 
136
+        break;
 
137
+    }
 
138
+
 
139
+    if (location == Desktop || location == Floating) {
 
140
+        XDeleteProperty(dpy, widget->effectiveWinId(), atom);
 
141
+    } else {
 
142
+        XChangeProperty(dpy, widget->effectiveWinId(), atom, atom, 32, PropModeReplace,
 
143
+                        reinterpret_cast<unsigned char *>(data.data()), data.size());
 
144
+    }
 
145
+#endif
 
146
+}
 
147
+
 
148
+}
 
149
+
 
150
+}
 
151
--- /dev/null   2009-07-22 05:21:08.000000000 +0100
 
152
+++ kde4libs-4.3.0/plasma/windoweffects.h       2009-08-06 12:06:13.000000000 +0100
 
153
@@ -0,0 +1,64 @@
 
154
+/*
 
155
+ *   Copyright 2009 Marco Martin <notmart@gmail.com>
 
156
+ *
 
157
+ *   This program is free software; you can redistribute it and/or modify
 
158
+ *   it under the terms of the GNU Library General Public License as
 
159
+ *   published by the Free Software Foundation; either version 2, or
 
160
+ *   (at your option) any later version.
 
161
+ *
 
162
+ *   This program is distributed in the hope that it will be useful,
 
163
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
164
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
165
+ *   GNU General Public License for more details
 
166
+ *
 
167
+ *   You should have received a copy of the GNU Library General Public
 
168
+ *   License along with this program; if not, write to the
 
169
+ *   Free Software Foundation, Inc.,
 
170
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
171
+ */
 
172
+
 
173
+#ifndef PLASMA_WINDOWEFFECTS_H
 
174
+#define PLASMA_WINDOWEFFECTS_H
 
175
+
 
176
+#include <QtGui/QWidget>
 
177
+
 
178
+#include <plasma/plasma.h>
 
179
+
 
180
+/** @headerfile plasma/windoweffect.h <Plasma/PaintUtils> */
 
181
+
 
182
+namespace Plasma
 
183
+{
 
184
+
 
185
+/**
 
186
+ * Namespace for all window effects for Plasma/KWin interaction
 
187
+ * @since 4.4
 
188
+ */
 
189
+namespace WindowEffects
 
190
+{
 
191
+    /**
 
192
+     * Mark a window as sliding from screen edge
 
193
+     *
 
194
+     * @arg id of the window on which we want to apply the effect
 
195
+     * @arg location edge of the screen from which we want the slifing effect.
 
196
+     *               Desktop and FLoating won't have effect.
 
197
+     * @arg offset distance in pixels from the screen edge defined by location
 
198
+     * @since 4.4
 
199
+     */
 
200
+    PLASMA_EXPORT void slideWindow(WId id, Plasma::Location location, int offset);
 
201
+
 
202
+    /**
 
203
+     * Mark a window as sliding from screen edge
 
204
+     * This is an overloaded member function provided for convenience
 
205
+     *
 
206
+     * @arg widget QWidget corresponding to the top level window we want to animate
 
207
+     * @arg location edge of the screen from which we want the slifing effect.
 
208
+     *               Desktop and FLoating won't have effect.
 
209
+     * @since 4.4
 
210
+     */
 
211
+    PLASMA_EXPORT void slideWindow(QWidget *widget, Plasma::Location location);
 
212
+}
 
213
+
 
214
+} // namespace Plasma
 
215
+
 
216
+#endif
 
217
+