Merge lp:~jassmith/do/painterservice into lp:do
- painterservice
- Merge into trunk
Proposed by
Jason Smith
Status: | Merged |
---|---|
Merged at revision: | not available |
Proposed branch: | lp:~jassmith/do/painterservice |
Merge into: | lp:do |
Diff against target: | None lines |
To merge this branch: | bzr merge lp:~jassmith/do/painterservice |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
David Siegel (community) | Approve | ||
Review via email: mp+4195@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Jason Smith (jassmith) wrote : | # |
Revision history for this message
David Siegel (djsiegel-deactivatedaccount) wrote : | # |
Looks great to me.
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'Do.Interface.Linux.Docky/Makefile.am' |
2 | --- Do.Interface.Linux.Docky/Makefile.am 2009-03-04 20:41:38 +0000 |
3 | +++ Do.Interface.Linux.Docky/Makefile.am 2009-03-05 05:00:17 +0000 |
4 | @@ -59,7 +59,6 @@ |
5 | src/Docky.Interface/IRightClickable.cs \ |
6 | src/Docky.Interface/ItemPositionProvider.cs \ |
7 | src/Docky.Interface/LayoutUtils.cs \ |
8 | - src/Docky.Interface/PainterService.cs \ |
9 | src/Docky.Interface/PaintNeededArgs.cs \ |
10 | src/Docky.Interface/UpdateRequestArgs.cs \ |
11 | src/Docky.Interface/Util.cs \ |
12 | |
13 | === modified file 'Do.Interface.Linux.Docky/src/Docky.Core/Docky.Core.Default/PainterService.cs' |
14 | --- Do.Interface.Linux.Docky/src/Docky.Core/Docky.Core.Default/PainterService.cs 2009-02-03 09:37:39 +0000 |
15 | +++ Do.Interface.Linux.Docky/src/Docky.Core/Docky.Core.Default/PainterService.cs 2009-03-05 05:00:17 +0000 |
16 | @@ -17,6 +17,7 @@ |
17 | // |
18 | |
19 | using System; |
20 | +using System.Collections.Generic; |
21 | |
22 | using Do.Platform; |
23 | |
24 | @@ -31,24 +32,59 @@ |
25 | { |
26 | |
27 | |
28 | + ICollection<IDockPainter> painters; |
29 | + |
30 | #region IPainterService implementation |
31 | + |
32 | + public event EventHandler PainterHideRequest; |
33 | + public event EventHandler PainterShowRequest; |
34 | + |
35 | public void RegisterPainter (IDockPainter painter) |
36 | { |
37 | - Log<PainterService>.Error ("Default Painter Services cannot register painters"); |
38 | + painters.Add (painter); |
39 | + painter.ShowRequested += HandleShowRequested; |
40 | + painter.HideRequested += HandleHideRequested; |
41 | + } |
42 | + |
43 | + void HandleHideRequested(object sender, EventArgs e) |
44 | + { |
45 | + IDockPainter painter = sender as IDockPainter; |
46 | + if (painter == null || PainterHideRequest == null) |
47 | + return; |
48 | + |
49 | + PainterHideRequest (sender, e); |
50 | + } |
51 | + |
52 | + void HandleShowRequested(object sender, EventArgs e) |
53 | + { |
54 | + IDockPainter painter = sender as IDockPainter; |
55 | + if (painter == null || PainterShowRequest == null) |
56 | + return; |
57 | + |
58 | + PainterShowRequest (sender, e); |
59 | + } |
60 | + |
61 | + #endregion |
62 | + |
63 | + public PainterService () |
64 | + { |
65 | + painters = new List<IDockPainter> (); |
66 | } |
67 | |
68 | #region IDisposable implementation |
69 | |
70 | public void Dispose () |
71 | { |
72 | + DockServices.UnregisterService (this); |
73 | + |
74 | + foreach (IDockPainter painter in painters) { |
75 | + painter.ShowRequested -= HandleShowRequested; |
76 | + painter.HideRequested -= HandleHideRequested; |
77 | + painter.Dispose (); |
78 | + } |
79 | + painters.Clear (); |
80 | } |
81 | |
82 | - #endregion |
83 | - |
84 | - |
85 | - #endregion |
86 | - |
87 | - |
88 | - |
89 | + #endregion |
90 | } |
91 | } |
92 | |
93 | === modified file 'Do.Interface.Linux.Docky/src/Docky.Core/IPainterService.cs' |
94 | --- Do.Interface.Linux.Docky/src/Docky.Core/IPainterService.cs 2009-02-03 09:37:39 +0000 |
95 | +++ Do.Interface.Linux.Docky/src/Docky.Core/IPainterService.cs 2009-03-05 05:00:17 +0000 |
96 | @@ -25,6 +25,10 @@ |
97 | |
98 | public interface IPainterService : IDockService |
99 | { |
100 | + event EventHandler PainterHideRequest; |
101 | + |
102 | + event EventHandler PainterShowRequest; |
103 | + |
104 | void RegisterPainter (IDockPainter painter); |
105 | } |
106 | } |
107 | |
108 | === modified file 'Do.Interface.Linux.Docky/src/Docky.Interface/DockArea.cs' |
109 | --- Do.Interface.Linux.Docky/src/Docky.Interface/DockArea.cs 2009-03-04 16:10:30 +0000 |
110 | +++ Do.Interface.Linux.Docky/src/Docky.Interface/DockArea.cs 2009-03-05 05:34:14 +0000 |
111 | @@ -123,8 +123,6 @@ |
112 | |
113 | bool CursorIsOverDockArea { get; set; } |
114 | |
115 | - PainterService PainterService { get; set; } |
116 | - |
117 | ModifierType CursorModifier { get; set; } |
118 | |
119 | ReadOnlyCollection<AbstractDockItem> DockItems { |
120 | @@ -204,10 +202,6 @@ |
121 | SetSize (); |
122 | SetSizeRequest (Width, Height); |
123 | |
124 | - PainterService = new PainterService (this); |
125 | - PainterService.BuildPainters (); |
126 | - DockServices.RegisterService (PainterService); |
127 | - |
128 | PositionProvider = new ItemPositionProvider (this); |
129 | |
130 | AnimationState = new DockAnimationState (); |
131 | @@ -253,6 +247,9 @@ |
132 | DockServices.ItemsService.DockItemsChanged += OnDockItemsChanged; |
133 | DockServices.ItemsService.ItemNeedsUpdate += HandleItemNeedsUpdate; |
134 | DockPreferences.IconSizeChanged += HandleIconSizeChanged; |
135 | + |
136 | + DockServices.PainterService.PainterShowRequest += HandlePainterShowRequest; |
137 | + DockServices.PainterService.PainterHideRequest += HandlePainterHideRequest; |
138 | |
139 | PopupMenu.Hidden += OnDockItemMenuHidden; |
140 | PopupMenu.Shown += OnDockItemMenuShown; |
141 | @@ -273,9 +270,14 @@ |
142 | DockServices.ItemsService.DockItemsChanged -= OnDockItemsChanged; |
143 | DockServices.ItemsService.ItemNeedsUpdate -= HandleItemNeedsUpdate; |
144 | DockPreferences.IconSizeChanged -= HandleIconSizeChanged; |
145 | + |
146 | + DockServices.PainterService.PainterShowRequest -= HandlePainterShowRequest; |
147 | + DockServices.PainterService.PainterHideRequest -= HandlePainterHideRequest; |
148 | |
149 | PopupMenu.Hidden -= OnDockItemMenuHidden; |
150 | PopupMenu.Shown -= OnDockItemMenuShown; |
151 | + |
152 | + Services.Core.UniverseInitialized -= HandleUniverseInitialized; |
153 | } |
154 | |
155 | void BuildAnimationStateEngine () |
156 | @@ -311,6 +313,7 @@ |
157 | void HandleUniverseInitialized(object sender, EventArgs e) |
158 | { |
159 | GLib.Timeout.Add (2000, delegate { |
160 | + DockServices.ItemsService.ForceUpdate (); |
161 | SetIconRegions (); |
162 | return false; |
163 | }); |
164 | @@ -336,6 +339,51 @@ |
165 | AnimatedDraw (); |
166 | } |
167 | |
168 | + void HandlePainterHideRequest(object sender, EventArgs e) |
169 | + { |
170 | + IDockPainter painter = sender as IDockPainter; |
171 | + if (Painter != painter) |
172 | + return; |
173 | + |
174 | + Painter = null; |
175 | + PainterOverlayVisible = false; |
176 | + interface_change_time = DateTime.UtcNow; |
177 | + |
178 | + SetParentInputMask (); |
179 | + AnimatedDraw (); |
180 | + |
181 | + GLib.Timeout.Add (500, () => { |
182 | + DockServices.ItemsService.ForceUpdate (); |
183 | + return false; |
184 | + }); |
185 | + |
186 | + window.UnpresentWindow (); |
187 | + RegisterGtkDragSource (); |
188 | + } |
189 | + |
190 | + void HandlePainterShowRequest(object sender, EventArgs e) |
191 | + { |
192 | + IDockPainter painter = sender as IDockPainter; |
193 | + if (Painter == painter) |
194 | + return; |
195 | + |
196 | + if (Painter == null || Painter.Interruptable) { |
197 | + if (Painter != null) |
198 | + Painter.Interrupt (); |
199 | + Painter = painter; |
200 | + PainterOverlayVisible = true; |
201 | + interface_change_time = DateTime.UtcNow; |
202 | + |
203 | + SetParentInputMask (); |
204 | + AnimatedDraw (); |
205 | + } else { |
206 | + painter.Interrupt (); |
207 | + } |
208 | + |
209 | + window.PresentWindow (); |
210 | + UnregisterGtkDragSource (); |
211 | + } |
212 | + |
213 | void ResetCursorTimer () |
214 | { |
215 | if (disposed) |
216 | @@ -622,50 +670,6 @@ |
217 | } |
218 | } |
219 | |
220 | - public bool RequestShowPainter (IDockPainter painter) |
221 | - { |
222 | - if (Painter == painter) |
223 | - return true; |
224 | - |
225 | - if (Painter == null || Painter.Interruptable) { |
226 | - if (Painter != null) |
227 | - Painter.Interrupt (); |
228 | - Painter = painter; |
229 | - PainterOverlayVisible = true; |
230 | - interface_change_time = DateTime.UtcNow; |
231 | - |
232 | - SetParentInputMask (); |
233 | - AnimatedDraw (); |
234 | - } else { |
235 | - return false; |
236 | - } |
237 | - window.PresentWindow (); |
238 | - UnregisterGtkDragSource (); |
239 | - return true; |
240 | - } |
241 | - |
242 | - public bool RequestHidePainter (IDockPainter painter) |
243 | - { |
244 | - if (Painter != painter) |
245 | - return false; |
246 | - |
247 | - Painter = null; |
248 | - PainterOverlayVisible = false; |
249 | - interface_change_time = DateTime.UtcNow; |
250 | - |
251 | - SetParentInputMask (); |
252 | - AnimatedDraw (); |
253 | - |
254 | - GLib.Timeout.Add (500, () => { |
255 | - DockServices.ItemsService.ForceUpdate (); |
256 | - return false; |
257 | - }); |
258 | - |
259 | - window.UnpresentWindow (); |
260 | - RegisterGtkDragSource (); |
261 | - return true; |
262 | - } |
263 | - |
264 | void InterruptPainter () |
265 | { |
266 | if (Painter == null || !Painter.Interruptable) return; |
267 | @@ -713,9 +717,6 @@ |
268 | Painter.PaintNeeded -= HandlePaintNeeded; |
269 | } |
270 | |
271 | - DockServices.UnregisterService (PainterService); |
272 | - PainterService.Dispose (); |
273 | - |
274 | window = null; |
275 | |
276 | if (cursor_timer > 0) |
277 | |
278 | === modified file 'Do.Interface.Linux.Docky/src/Docky.Interface/DockWindow.cs' |
279 | --- Do.Interface.Linux.Docky/src/Docky.Interface/DockWindow.cs 2009-03-03 13:59:44 +0000 |
280 | +++ Do.Interface.Linux.Docky/src/Docky.Interface/DockWindow.cs 2009-03-05 05:00:17 +0000 |
281 | @@ -77,6 +77,8 @@ |
282 | |
283 | interop_service = new DoInteropService (controller); |
284 | Core.DockServices.RegisterService (interop_service); |
285 | + |
286 | + Core.DockServices.PainterService.RegisterPainter (new Painters.SummonModeRenderer ()); |
287 | |
288 | RegisterEvents (); |
289 | Build (); |
290 | |
291 | === removed file 'Do.Interface.Linux.Docky/src/Docky.Interface/PainterService.cs' |
292 | --- Do.Interface.Linux.Docky/src/Docky.Interface/PainterService.cs 2009-02-23 06:09:46 +0000 |
293 | +++ Do.Interface.Linux.Docky/src/Docky.Interface/PainterService.cs 1970-01-01 00:00:00 +0000 |
294 | @@ -1,94 +0,0 @@ |
295 | -// PainterService.cs |
296 | -// |
297 | -// Copyright (C) 2009 GNOME Do |
298 | -// |
299 | -// This program is free software: you can redistribute it and/or modify |
300 | -// it under the terms of the GNU General Public License as published by |
301 | -// the Free Software Foundation, either version 3 of the License, or |
302 | -// (at your option) any later version. |
303 | -// |
304 | -// This program is distributed in the hope that it will be useful, |
305 | -// but WITHOUT ANY WARRANTY; without even the implied warranty of |
306 | -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
307 | -// GNU General Public License for more details. |
308 | -// |
309 | -// You should have received a copy of the GNU General Public License |
310 | -// along with this program. If not, see <http://www.gnu.org/licenses/>. |
311 | -// |
312 | - |
313 | -using System; |
314 | -using System.Collections.Generic; |
315 | - |
316 | -using Docky.Core; |
317 | - |
318 | -namespace Docky.Interface |
319 | -{ |
320 | - |
321 | - |
322 | - internal class PainterService : IPainterService |
323 | - { |
324 | - ICollection<IDockPainter> painters; |
325 | - DockArea parent; |
326 | - |
327 | - #region IPainterService implementation |
328 | - |
329 | - public void RegisterPainter (IDockPainter painter) |
330 | - { |
331 | - painters.Add (painter); |
332 | - painter.ShowRequested += HandleShowRequested; |
333 | - painter.HideRequested += HandleHideRequested; |
334 | - } |
335 | - |
336 | - void HandleHideRequested(object sender, EventArgs e) |
337 | - { |
338 | - IDockPainter painter = sender as IDockPainter; |
339 | - if (painter == null) |
340 | - return; |
341 | - |
342 | - parent.RequestHidePainter (painter); |
343 | - } |
344 | - |
345 | - void HandleShowRequested(object sender, EventArgs e) |
346 | - { |
347 | - IDockPainter painter = sender as IDockPainter; |
348 | - if (painter == null) |
349 | - return; |
350 | - |
351 | - bool shown = parent.RequestShowPainter (painter); |
352 | - if (!shown) |
353 | - painter.Interrupt (); |
354 | - } |
355 | - |
356 | - #endregion |
357 | - |
358 | - internal PainterService (DockArea parent) |
359 | - { |
360 | - this.parent = parent; |
361 | - painters = new List<IDockPainter> (); |
362 | - } |
363 | - |
364 | - public void BuildPainters () |
365 | - { |
366 | - RegisterPainter (new Painters.SummonModeRenderer ()); |
367 | - } |
368 | - |
369 | - #region IDisposable implementation |
370 | - |
371 | - public void Dispose () |
372 | - { |
373 | - DockServices.UnregisterService (this); |
374 | - |
375 | - foreach (IDockPainter painter in painters) { |
376 | - painter.ShowRequested -= HandleShowRequested; |
377 | - painter.HideRequested -= HandleHideRequested; |
378 | - painter.Dispose (); |
379 | - } |
380 | - painters.Clear (); |
381 | - |
382 | - parent = null; |
383 | - } |
384 | - |
385 | - #endregion |
386 | - |
387 | - } |
388 | -} |
Fixes bug where clock painter stops working after monitor switch