~kamstrup/unity-jhbuild/unity.cpmzsrvwin

« back to all changes in this revision

Viewing changes to patches/91_add_window_groups.patch

  • Committer: Mikkel Kamstrup Erlandsen
  • Date: 2010-11-18 08:06:37 UTC
  • Revision ID: mikkel.kamstrup@gmail.com-20101118080637-wi6l1lhj750h66sc
Remove old mutter patches

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
diff -rup mutter-original/src/compositor/mutter-plugin.c mutter-mod/src/compositor/mutter-plugin.c
2
 
--- mutter-original/src/compositor/mutter-plugin.c      2009-10-02 15:50:14.000000000 -0400
3
 
+++ mutter-mod/src/compositor/mutter-plugin.c   2010-01-21 11:01:59.780585475 -0500
4
 
@@ -33,6 +33,7 @@
5
 
 
6
 
 #include "compositor-private.h"
7
 
 #include "mutter-window-private.h"
8
 
+#include "mutter-window-group.h"
9
 
 
10
 
 G_DEFINE_ABSTRACT_TYPE (MutterPlugin, mutter_plugin, G_TYPE_OBJECT);
11
 
 
12
 
@@ -352,6 +353,48 @@ mutter_plugin_get_window_group (MutterPl
13
 
   return mutter_get_window_group_for_screen (priv->screen);
14
 
 }
15
 
 
16
 
+ClutterActor *
17
 
+mutter_plugin_get_below_window_group (MutterPlugin *plugin)
18
 
+{
19
 
+  ClutterActor *actor;
20
 
+  MutterWindowGroup *group;
21
 
+  MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
22
 
+
23
 
+
24
 
+  actor = mutter_get_window_group_for_screen (priv->screen);
25
 
+  group = MUTTER_WINDOW_GROUP (actor);
26
 
+  
27
 
+  return mutter_window_group_get_below (group);
28
 
+}
29
 
+
30
 
+ClutterActor *
31
 
+mutter_plugin_get_normal_window_group (MutterPlugin *plugin)
32
 
+{
33
 
+  ClutterActor *actor;
34
 
+  MutterWindowGroup *group;
35
 
+  MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
36
 
+
37
 
+
38
 
+  actor = mutter_get_window_group_for_screen (priv->screen);
39
 
+  group = MUTTER_WINDOW_GROUP (actor);
40
 
+  
41
 
+  return mutter_window_group_get_normal (group);
42
 
+}
43
 
+
44
 
+ClutterActor *
45
 
+mutter_plugin_get_above_window_group (MutterPlugin *plugin)
46
 
+{
47
 
+  ClutterActor *actor;
48
 
+  MutterWindowGroup *group;
49
 
+  MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
50
 
+
51
 
+
52
 
+  actor = mutter_get_window_group_for_screen (priv->screen);
53
 
+  group = MUTTER_WINDOW_GROUP (actor);
54
 
+  
55
 
+  return mutter_window_group_get_above (group);
56
 
+}
57
 
+
58
 
 /**
59
 
  * _mutter_plugin_effect_started:
60
 
  * @plugin: the plugin
61
 
diff -rup mutter-original/src/compositor/mutter-window.c mutter-mod/src/compositor/mutter-window.c
62
 
--- mutter-original/src/compositor/mutter-window.c      2009-08-24 14:28:39.000000000 -0400
63
 
+++ mutter-mod/src/compositor/mutter-window.c   2010-01-19 13:04:47.469591342 -0500
64
 
@@ -19,6 +19,7 @@
65
 
 #include "compositor-private.h"
66
 
 #include "mutter-shaped-texture.h"
67
 
 #include "mutter-window-private.h"
68
 
+#include "mutter-window-group.h"
69
 
 #include "shadow.h"
70
 
 #include "tidy/tidy-texture-frame.h"
71
 
 
72
 
@@ -1201,8 +1202,7 @@ mutter_window_new (MetaWindow *window)
73
 
   /* Hang our compositor window state off the MetaWindow for fast retrieval */
74
 
   meta_window_set_compositor_private (window, G_OBJECT (self));
75
 
 
76
 
-  clutter_container_add_actor (CLUTTER_CONTAINER (info->window_group),
77
 
-                              CLUTTER_ACTOR (self));
78
 
+  mutter_window_group_pack_window (MUTTER_WINDOW_GROUP (info->window_group), self);
79
 
   clutter_actor_hide (CLUTTER_ACTOR (self));
80
 
 
81
 
   /* Initial position in the stack is arbitrary; stacking will be synced
82
 
diff -rup mutter-original/src/compositor/mutter-window-group.c mutter-mod/src/compositor/mutter-window-group.c
83
 
--- mutter-original/src/compositor/mutter-window-group.c        2009-08-19 10:46:43.000000000 -0400
84
 
+++ mutter-mod/src/compositor/mutter-window-group.c     2010-01-19 21:34:45.310788603 -0500
85
 
@@ -15,11 +15,72 @@ struct _MutterWindowGroup
86
 
 {
87
 
   ClutterGroup parent;
88
 
 
89
 
-  MetaScreen *screen;
90
 
+  MetaScreen   *screen;
91
 
+  ClutterActor *above;
92
 
+  ClutterActor *normal;
93
 
+  ClutterActor *below;
94
 
 };
95
 
 
96
 
 G_DEFINE_TYPE (MutterWindowGroup, mutter_window_group, CLUTTER_TYPE_GROUP);
97
 
 
98
 
+ClutterActor *
99
 
+mutter_window_group_get_above (MutterWindowGroup *group)
100
 
+{
101
 
+  g_return_val_if_fail (MUTTER_IS_WINDOW_GROUP (group), NULL);
102
 
+  
103
 
+  return group->above;
104
 
+}
105
 
+
106
 
+ClutterActor *
107
 
+mutter_window_group_get_normal (MutterWindowGroup *group)
108
 
+{
109
 
+  g_return_val_if_fail (MUTTER_IS_WINDOW_GROUP (group), NULL);
110
 
+  
111
 
+  return group->normal;
112
 
+}
113
 
+
114
 
+ClutterActor *
115
 
+mutter_window_group_get_below (MutterWindowGroup *group)
116
 
+{
117
 
+  g_return_val_if_fail (MUTTER_IS_WINDOW_GROUP (group), NULL);
118
 
+  
119
 
+  return group->below;
120
 
+}
121
 
+
122
 
+void
123
 
+mutter_window_group_pack_window (MutterWindowGroup *group, 
124
 
+                                 MutterWindow *window)
125
 
+{
126
 
+  MetaCompWindowType type;
127
 
+  ClutterContainer  *container;
128
 
+  
129
 
+  g_return_if_fail (MUTTER_IS_WINDOW_GROUP (group));
130
 
+  g_return_if_fail (MUTTER_IS_WINDOW (window));
131
 
+  
132
 
+  type = mutter_window_get_window_type (window);
133
 
+  
134
 
+  if (type == META_COMP_WINDOW_DROPDOWN_MENU ||
135
 
+      type == META_COMP_WINDOW_POPUP_MENU ||
136
 
+      type == META_COMP_WINDOW_TOOLTIP ||
137
 
+      type == META_COMP_WINDOW_NOTIFICATION ||
138
 
+      type == META_COMP_WINDOW_COMBO ||
139
 
+      type == META_COMP_WINDOW_DND ||
140
 
+      type == META_COMP_WINDOW_OVERRIDE_OTHER)
141
 
+    {
142
 
+      container = CLUTTER_CONTAINER (group->above);
143
 
+    }
144
 
+  /*else if (type == META_COMP_WINDOW_DESKTOP)
145
 
+    {
146
 
+      container = CLUTTER_CONTAINER (group->below);
147
 
+    }*/
148
 
+  else
149
 
+    {
150
 
+      container = CLUTTER_CONTAINER (group->normal);
151
 
+    }
152
 
+  
153
 
+  clutter_container_add_actor (container, CLUTTER_ACTOR (window));
154
 
+}
155
 
+
156
 
 /* We want to find out if the window is "close enough" to
157
 
  * 1:1 transform. We do that by converting the transformed coordinates
158
 
  * to 24.8 fixed-point before checking if they look right.
159
 
@@ -95,6 +156,22 @@ actor_is_untransformed (ClutterActor *ac
160
 
   return TRUE;
161
 
 }
162
 
 
163
 
+static GList *
164
 
+mutter_window_group_get_windows (MutterWindowGroup *window_group)
165
 
+{
166
 
+  GList *children, *other;
167
 
+  
168
 
+  children = clutter_container_get_children (CLUTTER_CONTAINER (window_group->below));
169
 
+  
170
 
+  other = clutter_container_get_children (CLUTTER_CONTAINER (window_group->normal));
171
 
+  children = g_list_concat (children, other);
172
 
+  
173
 
+  other = clutter_container_get_children (CLUTTER_CONTAINER (window_group->above));
174
 
+  children = g_list_concat (children, other);
175
 
+  
176
 
+  return children;
177
 
+}
178
 
+
179
 
 static void
180
 
 mutter_window_group_paint (ClutterActor *actor)
181
 
 {
182
 
@@ -107,7 +184,7 @@ mutter_window_group_paint (ClutterActor 
183
 
    * and subtract the opaque area of each window out of the visible
184
 
    * region that we pass to the windows below.
185
 
    */
186
 
-  children = clutter_container_get_children (CLUTTER_CONTAINER (actor));
187
 
+  children = mutter_window_group_get_windows (window_group);
188
 
   children = g_list_reverse (children);
189
 
 
190
 
   /* Start off with the full screen area (for a multihead setup, we
191
 
@@ -179,6 +256,17 @@ mutter_window_group_class_init (MutterWi
192
 
 static void
193
 
 mutter_window_group_init (MutterWindowGroup *window_group)
194
 
 {
195
 
+  window_group->below  = clutter_group_new ();
196
 
+  clutter_container_add_actor (CLUTTER_CONTAINER (window_group), window_group->below);
197
 
+  
198
 
+  window_group->normal = clutter_group_new ();
199
 
+  clutter_container_add_actor (CLUTTER_CONTAINER (window_group), window_group->normal);
200
 
+  
201
 
+  window_group->above  = clutter_group_new ();
202
 
+  clutter_container_add_actor (CLUTTER_CONTAINER (window_group), window_group->above);
203
 
+  
204
 
+  clutter_container_raise_child (CLUTTER_CONTAINER (window_group), window_group->normal, NULL);
205
 
+  clutter_container_raise_child (CLUTTER_CONTAINER (window_group), window_group->above, NULL);
206
 
 }
207
 
 
208
 
 ClutterActor *
209
 
diff -rup mutter-original/src/compositor/mutter-window-group.h mutter-mod/src/compositor/mutter-window-group.h
210
 
--- mutter-original/src/compositor/mutter-window-group.h        2009-08-05 17:53:31.000000000 -0400
211
 
+++ mutter-mod/src/compositor/mutter-window-group.h     2010-01-19 11:34:26.599587232 -0500
212
 
@@ -45,8 +45,16 @@ typedef struct _MutterWindowGroup       
213
 
 typedef struct _MutterWindowGroupClass   MutterWindowGroupClass;
214
 
 typedef struct _MutterWindowGroupPrivate MutterWindowGroupPrivate;
215
 
 
216
 
-GType mutter_window_group_get_type (void);
217
 
+GType         mutter_window_group_get_type    (void);
218
 
 
219
 
-ClutterActor *mutter_window_group_new (MetaScreen *screen);
220
 
+void          mutter_window_group_pack_window (MutterWindowGroup *group, MutterWindow *window);
221
 
+
222
 
+ClutterActor *mutter_window_group_get_above   (MutterWindowGroup *group);
223
 
+
224
 
+ClutterActor *mutter_window_group_get_normal  (MutterWindowGroup *group);
225
 
+
226
 
+ClutterActor *mutter_window_group_get_below   (MutterWindowGroup *group);
227
 
+
228
 
+ClutterActor *mutter_window_group_new         (MetaScreen *screen);
229
 
 
230
 
 #endif /* MUTTER_WINDOW_GROUP_H */
231
 
diff -rup mutter-original/src/include/mutter-plugin.h mutter-mod/src/include/mutter-plugin.h
232
 
--- mutter-original/src/include/mutter-plugin.h 2009-08-28 12:27:29.000000000 -0400
233
 
+++ mutter-mod/src/include/mutter-plugin.h      2010-01-21 10:59:49.481835295 -0500
234
 
@@ -236,6 +236,15 @@ ClutterActor *
235
 
 mutter_plugin_get_window_group (MutterPlugin *plugin);
236
 
 
237
 
 ClutterActor *
238
 
+mutter_plugin_get_above_window_group (MutterPlugin *plugin);
239
 
+
240
 
+ClutterActor *
241
 
+mutter_plugin_get_normal_window_group (MutterPlugin *plugin);
242
 
+
243
 
+ClutterActor *
244
 
+mutter_plugin_get_below_window_group (MutterPlugin *plugin);
245
 
+
246
 
+ClutterActor *
247
 
 mutter_plugin_get_stage (MutterPlugin *plugin);
248
 
 
249
 
 void