Merge lp:~cairo-dock-team/ubuntu/quantal/cairo-dock/3.0.2 into lp:ubuntu/quantal/cairo-dock

Proposed by Matthieu Baerts
Status: Merged
Merged at revision: 27
Proposed branch: lp:~cairo-dock-team/ubuntu/quantal/cairo-dock/3.0.2
Merge into: lp:ubuntu/quantal/cairo-dock
Diff against target: 8946 lines (+1170/-3975)
82 files modified
.pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-callbacks.c (+0/-1760)
.pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-dock-factory.c (+0/-1255)
.pc/02-bzr_fixed_compilation_error.patch/src/gldit/cairo-dock-keybinder.h (+0/-152)
.pc/applied-patches (+0/-2)
CMakeLists.txt (+6/-1)
debian/cairo-dock-data.links (+2/-0)
debian/cairo-dock-data.lintian-overrides (+0/-2)
debian/changelog (+43/-0)
debian/patches/01-bzr_dock-s_menu.patch (+0/-48)
debian/patches/02-bzr_fixed_compilation_error.patch (+0/-16)
debian/patches/series (+0/-2)
po/ar.po (+3/-3)
po/be.po (+6/-4)
po/bn.po (+3/-3)
po/ca.po (+3/-3)
po/cs.po (+2/-2)
po/cy.po (+3/-3)
po/de.po (+3/-3)
po/el.po (+3/-3)
po/en_GB.po (+3/-3)
po/eo.po (+3/-3)
po/es.po (+132/-81)
po/et.po (+3/-3)
po/eu.po (+2/-2)
po/fi.po (+3/-3)
po/fo.po (+2/-2)
po/fr.po (+7/-6)
po/gl.po (+3/-3)
po/hu.po (+15/-13)
po/id.po (+3/-3)
po/it.po (+178/-128)
po/ja.po (+3/-3)
po/ko.po (+3/-3)
po/nb.po (+3/-3)
po/nl.po (+16/-16)
po/oc.po (+2/-2)
po/pl.po (+17/-14)
po/pt.po (+3/-3)
po/pt_BR.po (+20/-5)
po/ro.po (+3/-3)
po/ru.po (+6/-3)
po/sk.po (+169/-96)
po/sl.po (+3/-3)
po/sr.po (+3/-3)
po/sv.po (+2/-2)
po/tr.po (+3/-3)
po/uk.po (+19/-16)
po/vi.po (+2/-2)
po/zh_CN.po (+125/-94)
po/zh_TW.po (+3/-3)
src/cairo-dock-gui-commons.c (+3/-1)
src/cairo-dock-gui-main.c (+90/-24)
src/cairo-dock-menu.c (+2/-5)
src/gldit/cairo-dock-X-utilities.c (+6/-3)
src/gldit/cairo-dock-applet-facility.h (+1/-1)
src/gldit/cairo-dock-callbacks.c (+16/-16)
src/gldit/cairo-dock-class-manager.c (+16/-3)
src/gldit/cairo-dock-config.c (+8/-31)
src/gldit/cairo-dock-container.c (+3/-9)
src/gldit/cairo-dock-container.h (+9/-0)
src/gldit/cairo-dock-dialog-factory.c (+2/-1)
src/gldit/cairo-dock-dialog-manager.c (+28/-6)
src/gldit/cairo-dock-dock-facility.c (+1/-1)
src/gldit/cairo-dock-dock-factory.c (+4/-4)
src/gldit/cairo-dock-dock-factory.h (+2/-2)
src/gldit/cairo-dock-draw-opengl.c (+26/-20)
src/gldit/cairo-dock-draw.c (+25/-18)
src/gldit/cairo-dock-gui-factory.c (+20/-18)
src/gldit/cairo-dock-gui-manager.h (+3/-1)
src/gldit/cairo-dock-icon-facility.c (+4/-4)
src/gldit/cairo-dock-icon-facility.h (+2/-2)
src/gldit/cairo-dock-icon-factory.c (+1/-1)
src/gldit/cairo-dock-icon-factory.h (+3/-2)
src/gldit/cairo-dock-icon-manager.c (+19/-0)
src/gldit/cairo-dock-module-factory.c (+2/-6)
src/gldit/cairo-dock-overlay.h (+10/-3)
src/gldit/cairo-dock-struct.h (+1/-1)
src/gldit/eggaccelerators.c (+20/-0)
src/icon-factory/cairo-dock-applet-factory.c (+1/-0)
src/icon-factory/cairo-dock-application-factory.c (+6/-0)
src/icon-factory/cairo-dock-desktop-file-factory.h (+0/-2)
src/implementations/cairo-dock-compiz-integration.h (+0/-1)
To merge this branch: bzr merge lp:~cairo-dock-team/ubuntu/quantal/cairo-dock/3.0.2
Reviewer Review Type Date Requested Status
Andrew Starr-Bochicchio (community) Approve
Luke Yelavich (community) Needs Fixing
Review via email: mp+111020@code.launchpad.net

Description of the change

Hello,

The Cairo-Dock team proposes a new "bug-fix" version of their Cairo-Dock packages.

This is the Upstream ChangeLog:
* 3.0.0 -> 3.0.1:
   - Dialog: fixed a bug where the dock could auto-hide when a modal dialog
      was raised
   - Dialog: fixed a crash with gcc-4.7: the local variable can be corrupted
      due to optimisations
   - Fixed a bug where the dock didn't accept clicks when the mouse touches
      the screen edge (with auto-hide)
   - Added a compilation option to not force the display of icons in menus
      (design request but disable by default)
   - Fixed a bug where the hidden dock background color was not updated
      properly
   - Class-Manager: fixed a bug with Windows applications whose name is in
      upper case (.EXE)
   - GUI: use cairo_dock_get_xwindow_class to link a programm with a launcher
   - French translations: fixed 2 small errors
* 3.0.1 -> 3.0.2:
   - Main GUI: Fixed a crash when hovering group buttons too quickly
   - Main GUI: The dialog and preview didn't appear when hovering the button
   - Accelerators: On recent distro, 'Control' key is now called 'Primary'
   - Icon Mgr: Added a mutex because of occasional crashes with
      gtk_icon_theme_lookup_icon
   - Icon Mgr: Don't call a 'change-icon' callback when clicking or scrolling
      on an icon, and trigger an unneeded animation on the icon
   - Dock Mgr: Avoid emitting an 'enter' event when not needed
   - Class Mgr: Fixed 2 typos (special case for kdesu and not kdes)
   - Class Mgr: Remove launching options (%U) in quick-list Exec command
      (LP: #1002691)
   - Dialogues: Prevent closing the dialog unexpectedly when clicking on it,
      if the click is actually inside the interactive widget
   - Background: When set to 'always visible', applets' background couldn't
      be turned off
   - Added a workaround for the Unity-panel which has a wrong window type
   - po: Updated translations

This branch should be ready to be pushed on lp:ubuntu/cairo-dock (except the UNRELEASED version in debian/changelog)
This version compiles fine on Quantal (and older) and has been tested: https://launchpad.net/~matttbe/+archive/experimental-debian-build/+sourcepub/2516739/+listing-archive-extra

**@ ubuntu-devs**
Do you think it's possible to upload this version in Precise-Update? (simply because it's a bug-fix version and Precise is a LTS version)

Thank you for your help! ;)

PS: Don't forget our plug-ins ( LP: #1014804 )

To post a comment you must log in.
Revision history for this message
Luke Yelavich (themuso) wrote :

When attempting to merge your branch into lp:ubuntu/cairo-dock, I still get 2 conflicts:

luke@acapella:~/Ubuntu/quantal/bzr/cairo-dock/cairo-dock$ bzr conflicts
Text conflict in src/gldit/cairo-dock-callbacks.c
Text conflict in src/gldit/cairo-dock-dock-factory.c

Did you branch against the latest changes in the lp:ubuntu/cairo-dock package, or have I missed something?

Thanks for your work.

review: Needs Fixing
Revision history for this message
Matthieu Baerts (matttbe) wrote :

> Did you branch against the latest changes in the lp:ubuntu/cairo-dock package
Yes of course (as you can see here above, we only have the rev 27 as unmerged rev and the rev 26 has the same rev ID).

But I confirm this bug... This is strange because I only used bzr merge-upstream.
Note that on rev 26, there is a patch which was applied but the diff seems correct except that if you have a look to the conflict, it seems the previous patched was unapplied before merging...

Revision history for this message
Matthieu Baerts (matttbe) wrote :

If I remove all patches and then use bzr merge-upstream (lp:~cairo-dock-team/ubuntu/quantal/cairo-dock/3.0.2-1), I still have the same problem :-/

Note that you can use the .OTHER files if you want to manually fix the conflicts but it seems there is also a conflict in src/gldit/cairo-dock-keybinder.h (it should be unmodified)
I resolve conflicts in lp:~cairo-dock-team/ubuntu/quantal/cairo-dock/3.0.2-without-conflict
I guess you can directly use 'bzr pull lp:~cairo-dock-team/ubuntu/quantal/cairo-dock/3.0.2-without-conflict'

Revision history for this message
Matthieu Baerts (matttbe) wrote :

@Luke: it seems you've to use 'bzr pull' because I've done the merge then you shouldn't have to do it again (according to jelmer on irc)

Revision history for this message
Andrew Starr-Bochicchio (andrewsomething) wrote :

Uploaded. Thanks for your work and your patience with the bzr issues!

I'll try to get to the plugins package latter today (or tomorrow if I don't have time).

review: Approve
Revision history for this message
Matthieu Baerts (matttbe) wrote :

@Andrew and Luke: thank you for your help!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== removed directory '.pc/01-bzr_dock-s_menu.patch'
2=== removed directory '.pc/01-bzr_dock-s_menu.patch/src'
3=== removed directory '.pc/01-bzr_dock-s_menu.patch/src/gldit'
4=== removed file '.pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-callbacks.c'
5--- .pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-callbacks.c 2012-04-25 01:29:46 +0000
6+++ .pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-callbacks.c 1970-01-01 00:00:00 +0000
7@@ -1,1760 +0,0 @@
8-/**
9-* This file is a part of the Cairo-Dock project
10-*
11-* Copyright : (C) see the 'copyright' file.
12-* E-mail : see the 'copyright' file.
13-*
14-* This program is free software; you can redistribute it and/or
15-* modify it under the terms of the GNU General Public License
16-* as published by the Free Software Foundation; either version 3
17-* of the License, or (at your option) any later version.
18-*
19-* This program is distributed in the hope that it will be useful,
20-* but WITHOUT ANY WARRANTY; without even the implied warranty of
21-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22-* GNU General Public License for more details.
23-* You should have received a copy of the GNU General Public License
24-* along with this program. If not, see <http://www.gnu.org/licenses/>.
25-*/
26-
27-#include <math.h>
28-#include <sys/time.h>
29-#include <string.h>
30-#include <stdlib.h>
31-#include <unistd.h>
32-#include <cairo.h>
33-#include <gdk/gdkkeysyms.h>
34-#include <gtk/gtk.h>
35-
36-#include <X11/Xlib.h>
37-#include <X11/Xatom.h>
38-#include <X11/Xutil.h>
39-#include <gdk/gdkx.h>
40-
41-#include <GL/gl.h>
42-#include <GL/glu.h>
43-
44-#include "cairo-dock-draw.h"
45-#include "cairo-dock-animations.h"
46-#include "cairo-dock-image-buffer.h"
47-#include "cairo-dock-module-factory.h"
48-#include "cairo-dock-icon-factory.h"
49-#include "cairo-dock-icon-facility.h"
50-#include "cairo-dock-applications-manager.h"
51-#include "cairo-dock-application-facility.h"
52-#include "cairo-dock-desktop-file-factory.h"
53-#include "cairo-dock-launcher-manager.h"
54-#include "cairo-dock-config.h"
55-#include "cairo-dock-container.h"
56-#include "cairo-dock-dock-facility.h"
57-#include "cairo-dock-notifications.h"
58-#include "cairo-dock-dialog-manager.h"
59-#include "cairo-dock-log.h"
60-#include "cairo-dock-dock-manager.h"
61-#include "cairo-dock-keybinder.h"
62-#include "cairo-dock-draw-opengl.h"
63-#include "cairo-dock-opengl.h"
64-#include "cairo-dock-flying-container.h"
65-#include "cairo-dock-animations.h"
66-#include "cairo-dock-backends-manager.h"
67-#include "cairo-dock-class-manager.h"
68-#include "cairo-dock-X-manager.h"
69-#include "cairo-dock-X-utilities.h"
70-#include "cairo-dock-X-manager.h"
71-#include "cairo-dock-data-renderer.h" // cairo_dock_refresh_data_renderer
72-#include "cairo-dock-callbacks.h"
73-
74-extern CairoDockDesktopGeometry g_desktopGeometry;
75-extern CairoDockHidingEffect *g_pHidingBackend;
76-extern CairoDockHidingEffect *g_pKeepingBelowBackend;
77-extern CairoDockGLConfig g_openglConfig;
78-
79-static Icon *s_pIconClicked = NULL; // pour savoir quand on deplace une icone a la souris. Dangereux si l'icone se fait effacer en cours ...
80-static int s_iClickX, s_iClickY; // coordonnees du clic dans le dock, pour pouvoir initialiser le deplacement apres un seuil.
81-static int s_iSidShowSubDockDemand = 0;
82-static int s_iSidActionOnDragHover = 0;
83-static CairoDock *s_pDockShowingSubDock = NULL; // on n'accede pas a son contenu, seulement l'adresse.
84-static CairoDock *s_pSubDockShowing = NULL; // on n'accede pas a son contenu, seulement l'adresse.
85-static CairoFlyingContainer *s_pFlyingContainer = NULL;
86-static int s_iFirstClickX=0, s_iFirstClickY=0; // for double-click.
87-
88-extern CairoDock *g_pMainDock; // pour le raise-on-shortcut
89-
90-extern gboolean g_bUseOpenGL;
91-
92-static gboolean s_bHideAfterShortcut = FALSE;
93-static gboolean s_bFrozenDock = FALSE;
94-static gboolean s_bIconDragged = FALSE;
95-
96-static gboolean _check_mouse_outside (CairoDock *pDock);
97-
98-static gboolean _mouse_is_really_outside (CairoDock *pDock)
99-{
100- /**return (pDock->container.iMouseX <= 0
101- || pDock->container.iMouseX >= pDock->container.iWidth
102- || (pDock->container.bDirectionUp ?
103- (pDock->container.iMouseY > pDock->container.iHeight
104- || pDock->container.iMouseY <= (pDock->fMagnitudeMax != 0 ? 0 : pDock->container.iHeight - pDock->iMinDockHeight))
105- : (pDock->container.iMouseY < 0
106- ||
107- pDock->container.iMouseY >= (pDock->fMagnitudeMax != 0 ? pDock->container.iHeight : pDock->iMinDockHeight))));*/
108- double x1, x2, y1, y2;
109- if (pDock->iInputState == CAIRO_DOCK_INPUT_ACTIVE)
110- {
111- x1 = 0;
112- x2 = pDock->container.iWidth;
113- if (pDock->container.bDirectionUp)
114- {
115- ///y1 = (pDock->fMagnitudeMax != 0 ? 0 : pDock->container.iHeight - pDock->iMinDockHeight);
116- y1 = pDock->container.iHeight - pDock->iActiveHeight;
117- y2 = pDock->container.iHeight;
118- }
119- else
120- {
121- y1 = 0;
122- ///y2 = (pDock->fMagnitudeMax != 0 ? pDock->container.iHeight : pDock->iMinDockHeight);
123- y2 = pDock->iActiveHeight;
124- }
125- }
126- else if (pDock->iInputState == CAIRO_DOCK_INPUT_AT_REST)
127- {
128- x1 = (pDock->container.iWidth - pDock->iMinDockWidth) / 2;
129- x2 = (pDock->container.iWidth + pDock->iMinDockWidth) / 2;
130- if (pDock->container.bDirectionUp)
131- {
132- y1 = pDock->container.iHeight - pDock->iMinDockHeight;
133- y2 = pDock->container.iHeight;
134- }
135- else
136- {
137- y1 = 0;
138- y2 = pDock->iMinDockHeight;
139- }
140- }
141- else // hidden
142- return TRUE;
143- if (pDock->container.iMouseX <= x1
144- || pDock->container.iMouseX >= x2)
145- return TRUE;
146- if (pDock->container.iMouseY <= y1
147- || pDock->container.iMouseY >= y2)
148- return TRUE;
149-
150- return FALSE;
151-}
152-#define CD_CLICK_ZONE 5
153-
154-void cairo_dock_freeze_docks (gboolean bFreeze)
155-{
156- s_bFrozenDock = bFreeze;
157-}
158-
159-gboolean cairo_dock_render_dock_notification (gpointer pUserData, CairoDock *pDock, cairo_t *pCairoContext)
160-{
161- if (! pCairoContext) // on n'a pas mis le rendu cairo ici a cause du rendu optimise.
162- {
163- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | (pDock->pRenderer->bUseStencil && g_openglConfig.bStencilBufferAvailable ? GL_STENCIL_BUFFER_BIT : 0));
164- gldi_glx_apply_desktop_background (CAIRO_CONTAINER (pDock));
165-
166- if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->pre_render_opengl)
167- g_pHidingBackend->pre_render_opengl (pDock, pDock->fHideOffset);
168-
169- if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->pre_render_opengl)
170- g_pKeepingBelowBackend->pre_render_opengl (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps);
171-
172- pDock->pRenderer->render_opengl (pDock);
173-
174- if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->post_render_opengl)
175- g_pHidingBackend->post_render_opengl (pDock, pDock->fHideOffset);
176-
177- if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->post_render_opengl)
178- g_pKeepingBelowBackend->post_render_opengl (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps);
179- }
180- return CAIRO_DOCK_LET_PASS_NOTIFICATION;
181-}
182-
183-gboolean cairo_dock_on_expose (GtkWidget *pWidget,
184-#if (GTK_MAJOR_VERSION < 3)
185- GdkEventExpose *pExpose,
186-#else
187- cairo_t *ctx,
188-#endif
189- CairoDock *pDock)
190-{
191- GdkRectangle area;
192- #if (GTK_MAJOR_VERSION < 3)
193- memcpy (&area, &pExpose->area, sizeof (GdkRectangle));
194- #else
195- double x1, x2, y1, y2;
196- cairo_clip_extents (ctx, &x1, &y1, &x2, &y2);
197- area.x = x1;
198- area.y = y1;
199- area.width = x2 - x1;
200- area.height = y2 - y1; /// or the opposite ?...
201- #endif
202- //g_print ("%s ((%d;%d) %dx%d)\n", __func__, area.x, area.y, area.width, area.height);
203-
204- //\________________ OpenGL rendering
205- if (g_bUseOpenGL && pDock->pRenderer->render_opengl != NULL)
206- {
207- if (! gldi_glx_begin_draw_container_full (CAIRO_CONTAINER (pDock), FALSE)) // FALSE to keep the color buffer (motion-blur).
208- return FALSE;
209-
210- if (area.x + area.y != 0)
211- {
212- glEnable (GL_SCISSOR_TEST); // ou comment diviser par 4 l'occupation CPU !
213- glScissor ((int) area.x,
214- (int) (pDock->container.bIsHorizontal ? pDock->container.iHeight : pDock->container.iWidth) -
215- area.y - area.height, // lower left corner of the scissor box.
216- (int) area.width,
217- (int) area.height);
218- }
219-
220- if (cairo_dock_is_loading ())
221- {
222- // on laisse transparent
223- }
224- else if (cairo_dock_is_hidden (pDock) && (g_pHidingBackend == NULL || !g_pHidingBackend->bCanDisplayHiddenDock))
225- {
226- cairo_dock_render_hidden_dock_opengl (pDock);
227- }
228- else
229- {
230- cairo_dock_notify_on_object (pDock, NOTIFICATION_RENDER, pDock, NULL);
231- }
232- glDisable (GL_SCISSOR_TEST);
233-
234- gldi_glx_end_draw_container (CAIRO_CONTAINER (pDock));
235-
236- return FALSE ;
237- }
238-
239- //\________________ Cairo optimized rendering
240- if (area.x + area.y != 0) // x et/ou y sont > 0.
241- {
242- if (! cairo_dock_is_hidden (pDock) || (g_pHidingBackend != NULL && g_pHidingBackend->bCanDisplayHiddenDock)) // if the dock is invisible, we don't use the optimized rendering (for always-visible icons for instance)
243- {
244- cairo_t *pCairoContext = cairo_dock_create_drawing_context_on_area (CAIRO_CONTAINER (pDock), &area, NULL);
245-
246- if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->pre_render)
247- g_pHidingBackend->pre_render (pDock, pDock->fHideOffset, pCairoContext);
248-
249- if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->pre_render)
250- g_pKeepingBelowBackend->pre_render (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps, pCairoContext);
251-
252- if (pDock->pRenderer->render_optimized != NULL)
253- pDock->pRenderer->render_optimized (pCairoContext, pDock, &area);
254- else
255- pDock->pRenderer->render (pCairoContext, pDock);
256-
257- if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->post_render)
258- g_pHidingBackend->post_render (pDock, pDock->fHideOffset, pCairoContext);
259-
260- if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->post_render)
261- g_pKeepingBelowBackend->post_render (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps, pCairoContext);
262-
263- cairo_dock_notify_on_object (pDock, NOTIFICATION_RENDER, pDock, pCairoContext);
264-
265- cairo_destroy (pCairoContext);
266- return FALSE;
267- }
268-
269- }
270-
271- //\________________ Cairo rendering
272- cairo_t *pCairoContext = cairo_dock_create_drawing_context_on_container (CAIRO_CONTAINER (pDock));
273-
274- if (cairo_dock_is_loading ()) // transparent pendant le chargement.
275- {
276-
277- }
278- else if (cairo_dock_is_hidden (pDock) && (g_pHidingBackend == NULL || !g_pHidingBackend->bCanDisplayHiddenDock))
279- {
280- cairo_dock_render_hidden_dock (pCairoContext, pDock);
281- }
282- else
283- {
284- if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->pre_render)
285- g_pHidingBackend->pre_render (pDock, pDock->fHideOffset, pCairoContext);
286-
287- if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->pre_render)
288- g_pKeepingBelowBackend->pre_render (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps, pCairoContext);
289-
290- pDock->pRenderer->render (pCairoContext, pDock);
291-
292- if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->post_render)
293- g_pHidingBackend->post_render (pDock, pDock->fHideOffset, pCairoContext);
294-
295- if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->post_render)
296- g_pKeepingBelowBackend->post_render (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps, pCairoContext);
297-
298- cairo_dock_notify_on_object (pDock, NOTIFICATION_RENDER, pDock, pCairoContext);
299- }
300-
301- cairo_destroy (pCairoContext);
302- return FALSE;
303-}
304-
305-
306-static gboolean _emit_leave_signal_delayed (CairoDock *pDock)
307-{
308- cairo_dock_emit_leave_signal (CAIRO_CONTAINER (pDock));
309- pDock->iSidLeaveDemand = 0;
310- return FALSE;
311-}
312-static gboolean _cairo_dock_show_sub_dock_delayed (CairoDock *pDock)
313-{
314- s_iSidShowSubDockDemand = 0;
315- s_pDockShowingSubDock = NULL;
316- s_pSubDockShowing = NULL;
317- Icon *icon = cairo_dock_get_pointed_icon (pDock->icons);
318- //g_print ("%s (%x, %x)", __func__, icon, icon ? icon->pSubDock:0);
319- if (icon != NULL && icon->pSubDock != NULL)
320- cairo_dock_show_subdock (icon, pDock);
321-
322- return FALSE;
323-}
324-static void _search_icon (Icon *icon, CairoContainer *pContainer, gpointer *data)
325-{
326- if (icon == data[0])
327- data[1] = icon;
328-}
329-static gboolean _cairo_dock_action_on_drag_hover (Icon *pIcon)
330-{
331- gpointer data[2] = {pIcon, NULL};
332- cairo_dock_foreach_icons_in_docks ((CairoDockForeachIconFunc)_search_icon, data); // on verifie que l'icone ne s'est pas faite effacee entre-temps.
333- pIcon = data[1];
334- if (pIcon && pIcon->iface.action_on_drag_hover)
335- pIcon->iface.action_on_drag_hover (pIcon);
336- s_iSidActionOnDragHover = 0;
337- return FALSE;
338-}
339-void cairo_dock_on_change_icon (Icon *pLastPointedIcon, Icon *pPointedIcon, CairoDock *pDock)
340-{
341- //g_print ("%s (%s -> %s)\n", __func__, pLastPointedIcon?pLastPointedIcon->cName:"none", pPointedIcon?pPointedIcon->cName:"none");
342- //cd_debug ("on change d'icone dans %x (-> %s)", pDock, (pPointedIcon != NULL ? pPointedIcon->cName : "rien"));
343- if (s_iSidShowSubDockDemand != 0 && pDock == s_pDockShowingSubDock)
344- {
345- //cd_debug ("on annule la demande de montrage de sous-dock");
346- g_source_remove (s_iSidShowSubDockDemand);
347- s_iSidShowSubDockDemand = 0;
348- s_pDockShowingSubDock = NULL;
349- s_pSubDockShowing = NULL;
350- }
351-
352- // take action when dragging something onto an icon
353- if (s_iSidActionOnDragHover != 0)
354- {
355- //cd_debug ("on annule la demande de montrage d'appli");
356- g_source_remove (s_iSidActionOnDragHover);
357- s_iSidActionOnDragHover = 0;
358- }
359-
360- if (pDock->bIsDragging && pPointedIcon && pPointedIcon->iface.action_on_drag_hover)
361- {
362- s_iSidActionOnDragHover = g_timeout_add (600, (GSourceFunc) _cairo_dock_action_on_drag_hover, pPointedIcon);
363- }
364-
365- // replace dialogs
366- cairo_dock_refresh_all_dialogs (FALSE);
367-
368- // hide the sub-dock of the previous pointed icon
369- if (pLastPointedIcon != NULL && pLastPointedIcon->pSubDock != NULL) // on a quitte une icone ayant un sous-dock.
370- {
371- CairoDock *pSubDock = pLastPointedIcon->pSubDock;
372- if (gldi_container_is_visible (CAIRO_CONTAINER (pSubDock))) // le sous-dock est visible, on retarde son cachage.
373- {
374- //g_print ("on cache %s en changeant d'icone\n", pLastPointedIcon->cName);
375- if (pSubDock->iSidLeaveDemand == 0)
376- {
377- //g_print (" on retarde le cachage du dock de %dms\n", MAX (myDocksParam.iLeaveSubDockDelay, 330));
378- pSubDock->iSidLeaveDemand = g_timeout_add (MAX (myDocksParam.iLeaveSubDockDelay, 300), (GSourceFunc) _emit_leave_signal_delayed, (gpointer) pSubDock); // on force le retard meme si iLeaveSubDockDelay est a 0, car lorsqu'on entre dans un sous-dock, il arrive frequemment qu'on glisse hors de l'icone qui pointe dessus, et c'est tres desagreable d'avoir le dock qui se ferme avant d'avoir pu entre dedans.
379- }
380- }
381- }
382-
383- // show the sub-dock of the current pointed icon
384- if (pPointedIcon != NULL && pPointedIcon->pSubDock != NULL && (! myDocksParam.bShowSubDockOnClick || CAIRO_DOCK_IS_APPLI (pPointedIcon) || pDock->bIsDragging)) // on entre sur une icone ayant un sous-dock.
385- {
386- // if we were leaving the sub-dock, cancel that.
387- if (pPointedIcon->pSubDock->iSidLeaveDemand != 0)
388- {
389- g_source_remove (pPointedIcon->pSubDock->iSidLeaveDemand);
390- pPointedIcon->pSubDock->iSidLeaveDemand = 0;
391- }
392- // and show the sub-dock, possibly with a delay.
393- if (myDocksParam.iShowSubDockDelay > 0)
394- {
395- if (s_iSidShowSubDockDemand != 0)
396- g_source_remove (s_iSidShowSubDockDemand);
397- s_iSidShowSubDockDemand = g_timeout_add (myDocksParam.iShowSubDockDelay, (GSourceFunc) _cairo_dock_show_sub_dock_delayed, pDock); // we can't be showing more than 1 sub-dock, so this timeout can be global to all docks.
398- s_pDockShowingSubDock = pDock;
399- s_pSubDockShowing = pPointedIcon->pSubDock;
400- }
401- else
402- cairo_dock_show_subdock (pPointedIcon, pDock);
403- }
404-
405- // notify everybody
406- if (pPointedIcon != NULL && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pPointedIcon))
407- {
408- gboolean bStartAnimation = FALSE;
409- cairo_dock_notify_on_object (pDock, NOTIFICATION_ENTER_ICON, pPointedIcon, pDock, &bStartAnimation);
410-
411- if (bStartAnimation)
412- {
413- pPointedIcon->iAnimationState = CAIRO_DOCK_STATE_MOUSE_HOVERED;
414- cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
415- }
416- }
417-}
418-
419-
420-void cairo_dock_stop_icon_glide (CairoDock *pDock)
421-{
422- Icon *icon;
423- GList *ic;
424- for (ic = pDock->icons; ic != NULL; ic = ic->next)
425- {
426- icon = ic->data;
427- icon->fGlideOffset = 0;
428- icon->iGlideDirection = 0;
429- }
430-}
431-static void _cairo_dock_make_icon_glide (Icon *pPointedIcon, Icon *pMovingicon, CairoDock *pDock)
432-{
433- Icon *icon;
434- GList *ic;
435- for (ic = pDock->icons; ic != NULL; ic = ic->next)
436- {
437- icon = ic->data;
438- if (icon == pMovingicon)
439- continue;
440- //if (pDock->container.iMouseX > s_pMovingicon->fDrawXAtRest + s_pMovingicon->fWidth * s_pMovingicon->fScale /2) // on a deplace l'icone a droite. // fDrawXAtRest
441- if (pMovingicon->fXAtRest < pPointedIcon->fXAtRest) // on a deplace l'icone a droite.
442- {
443- //g_print ("%s : %.2f / %.2f ; %.2f / %d (%.2f)\n", icon->cName, icon->fXAtRest, pMovingicon->fXAtRest, icon->fDrawX, pDock->container.iMouseX, icon->fGlideOffset);
444- if (icon->fXAtRest > pMovingicon->fXAtRest && icon->fDrawX < pDock->container.iMouseX + 5 && icon->fGlideOffset == 0) // icone entre l'icone deplacee et le curseur.
445- {
446- //g_print (" %s glisse vers la gauche\n", icon->cName);
447- icon->iGlideDirection = -1;
448- }
449- else if (icon->fXAtRest > pMovingicon->fXAtRest && icon->fDrawX > pDock->container.iMouseX && icon->fGlideOffset != 0)
450- {
451- //g_print (" %s glisse vers la droite\n", icon->cName);
452- icon->iGlideDirection = 1;
453- }
454- else if (icon->fXAtRest < pMovingicon->fXAtRest && icon->fGlideOffset > 0)
455- {
456- //g_print (" %s glisse en sens inverse vers la gauche\n", icon->cName);
457- icon->iGlideDirection = -1;
458- }
459- }
460- else
461- {
462- double fMaxScale = (icon->fHeight != 0 ? (pDock->container.bIsHorizontal ? icon->iImageHeight : icon->iImageWidth) / icon->fHeight : 1.);
463- //g_print ("deplacement de %s vers la gauche (%.2f / %d)\n", icon->cName, icon->fDrawX + icon->fWidth * fMaxScale + myIconsParam.iIconGap, pDock->container.iMouseX);
464- if (icon->fXAtRest < pMovingicon->fXAtRest && icon->fDrawX + icon->fWidth * fMaxScale + myIconsParam.iIconGap >= pDock->container.iMouseX && icon->fGlideOffset == 0) // icone entre l'icone deplacee et le curseur.
465- {
466- //g_print (" %s glisse vers la droite\n", icon->cName);
467- icon->iGlideDirection = 1;
468- }
469- else if (icon->fXAtRest < pMovingicon->fXAtRest && icon->fDrawX + icon->fWidth * fMaxScale + myIconsParam.iIconGap <= pDock->container.iMouseX && icon->fGlideOffset != 0)
470- {
471- //g_print (" %s glisse vers la gauche\n", icon->cName);
472- icon->iGlideDirection = -1;
473- }
474- else if (icon->fXAtRest > pMovingicon->fXAtRest && icon->fGlideOffset < 0)
475- {
476- //g_print (" %s glisse en sens inverse vers la droite\n", icon->cName);
477- icon->iGlideDirection = 1;
478- }
479- }
480- }
481-}
482-gboolean cairo_dock_on_motion_notify (GtkWidget* pWidget,
483- GdkEventMotion* pMotion,
484- CairoDock *pDock)
485-{
486- static double fLastTime = 0;
487- if (s_bFrozenDock && pMotion != NULL && pMotion->time != 0)
488- return FALSE;
489- if (pDock->bMenuVisible)
490- return FALSE;
491- Icon *pPointedIcon=NULL, *pLastPointedIcon = cairo_dock_get_pointed_icon (pDock->icons);
492- int iLastMouseX = pDock->container.iMouseX;
493- //g_print ("%s (%.2f;%.2f, %d)\n", __func__, pMotion->x, pMotion->y, pDock->iInputState);
494-
495- if (pMotion != NULL)
496- {
497- //g_print ("%s (%d,%d) (%d, %.2fms, bAtBottom:%d; bIsShrinkingDown:%d)\n", __func__, (int) pMotion->x, (int) pMotion->y, pMotion->is_hint, pMotion->time - fLastTime, pDock->bAtBottom, pDock->bIsShrinkingDown);
498- //\_______________ On deplace le dock si ALT est enfoncee.
499- if ((pMotion->state & GDK_MOD1_MASK) && (pMotion->state & GDK_BUTTON1_MASK))
500- {
501- if (pDock->container.bIsHorizontal)
502- {
503- pDock->container.iWindowPositionX = pMotion->x_root - pDock->container.iMouseX;
504- pDock->container.iWindowPositionY = pMotion->y_root - pDock->container.iMouseY;
505- gtk_window_move (GTK_WINDOW (pWidget),
506- pDock->container.iWindowPositionX,
507- pDock->container.iWindowPositionY);
508- }
509- else
510- {
511- pDock->container.iWindowPositionX = pMotion->y_root - pDock->container.iMouseX;
512- pDock->container.iWindowPositionY = pMotion->x_root - pDock->container.iMouseY;
513- gtk_window_move (GTK_WINDOW (pWidget),
514- pDock->container.iWindowPositionY,
515- pDock->container.iWindowPositionX);
516- }
517- gdk_device_get_state (pMotion->device, pMotion->window, NULL, NULL);
518- return FALSE;
519- }
520-
521- //\_______________ On recupere la position de la souris.
522- if (pDock->container.bIsHorizontal)
523- {
524- pDock->container.iMouseX = (int) pMotion->x;
525- pDock->container.iMouseY = (int) pMotion->y;
526- }
527- else
528- {
529- pDock->container.iMouseX = (int) pMotion->y;
530- pDock->container.iMouseY = (int) pMotion->x;
531- }
532-
533- //\_______________ On tire l'icone volante.
534- if (s_pFlyingContainer != NULL && ! pDock->container.bInside)
535- {
536- cairo_dock_drag_flying_container (s_pFlyingContainer, pDock);
537- }
538-
539- //\_______________ On elague le flux des MotionNotify, sinon X en envoie autant que le permet le CPU !
540- if (pMotion->time != 0 && pMotion->time - fLastTime < myBackendsParam.fRefreshInterval && s_pIconClicked == NULL)
541- {
542- gdk_device_get_state (pMotion->device, pMotion->window, NULL, NULL);
543- return FALSE;
544- }
545-
546- //\_______________ On recalcule toutes les icones et on redessine.
547- pPointedIcon = cairo_dock_calculate_dock_icons (pDock);
548- //g_print ("pPointedIcon: %s\n", pPointedIcon?pPointedIcon->cName:"none");
549- gtk_widget_queue_draw (pWidget);
550- fLastTime = pMotion->time;
551-
552- //\_______________ On tire l'icone cliquee.
553- if (s_pIconClicked != NULL && s_pIconClicked->iAnimationState != CAIRO_DOCK_STATE_REMOVE_INSERT && ! myDocksParam.bLockIcons && ! myDocksParam.bLockAll && (fabs (pMotion->x - s_iClickX) > CD_CLICK_ZONE || fabs (pMotion->y - s_iClickY) > CD_CLICK_ZONE) && ! pDock->bPreventDraggingIcons)
554- {
555- s_bIconDragged = TRUE;
556- s_pIconClicked->iAnimationState = CAIRO_DOCK_STATE_FOLLOW_MOUSE;
557- //pDock->fAvoidingMouseMargin = .5;
558- pDock->iAvoidingMouseIconType = s_pIconClicked->iGroup; // on pourrait le faire lors du clic aussi.
559- s_pIconClicked->fScale = cairo_dock_get_icon_max_scale (s_pIconClicked);
560- s_pIconClicked->fDrawX = pDock->container.iMouseX - s_pIconClicked->fWidth * s_pIconClicked->fScale / 2;
561- s_pIconClicked->fDrawY = pDock->container.iMouseY - s_pIconClicked->fHeight * s_pIconClicked->fScale / 2 ;
562- s_pIconClicked->fAlpha = 0.75;
563- }
564-
565- //gdk_event_request_motions (pMotion); // ce sera pour GDK 2.12.
566- gdk_device_get_state (pMotion->device, pMotion->window, NULL, NULL); // pour recevoir d'autres MotionNotify.
567- }
568- else // cas d'un drag and drop.
569- {
570- //g_print ("motion on drag\n");
571- //\_______________ On recupere la position de la souris.
572- gldi_container_update_mouse_position (CAIRO_CONTAINER (pDock));
573-
574- //\_______________ On recalcule toutes les icones et on redessine.
575- pPointedIcon = cairo_dock_calculate_dock_icons (pDock);
576- gtk_widget_queue_draw (pWidget);
577-
578- pDock->fAvoidingMouseMargin = .25; // on peut dropper entre 2 icones ...
579- pDock->iAvoidingMouseIconType = CAIRO_DOCK_LAUNCHER; // ... seulement entre 2 icones du groupe "lanceurs".
580- }
581-
582- //\_______________ On gere le changement d'icone.
583- gboolean bStartAnimation = FALSE;
584- if (pPointedIcon != pLastPointedIcon)
585- {
586- cairo_dock_on_change_icon (pLastPointedIcon, pPointedIcon, pDock);
587-
588- if (pPointedIcon != NULL && s_pIconClicked != NULL && s_pIconClicked->iGroup == pPointedIcon->iGroup && ! myDocksParam.bLockIcons && ! myDocksParam.bLockAll && ! pDock->bPreventDraggingIcons)
589- {
590- _cairo_dock_make_icon_glide (pPointedIcon, s_pIconClicked, pDock);
591- bStartAnimation = TRUE;
592- }
593- }
594-
595- //\_______________ On notifie tout le monde.
596- cairo_dock_notify_on_object (pDock, NOTIFICATION_MOUSE_MOVED, pDock, &bStartAnimation);
597- if (bStartAnimation)
598- cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
599-
600- return FALSE;
601-}
602-
603-gboolean cairo_dock_on_leave_dock_notification2 (gpointer data, CairoDock *pDock, gboolean *bStartAnimation)
604-{
605- //\_______________ On gere le drag d'une icone hors du dock.
606- if (s_pIconClicked != NULL
607- && (CAIRO_DOCK_ICON_TYPE_IS_LAUNCHER (s_pIconClicked)
608- || CAIRO_DOCK_ICON_TYPE_IS_CONTAINER (s_pIconClicked)
609- || (CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (s_pIconClicked) && s_pIconClicked->cDesktopFileName)
610- || CAIRO_DOCK_IS_DETACHABLE_APPLET (s_pIconClicked))
611- && s_pFlyingContainer == NULL
612- && ! myDocksParam.bLockIcons
613- && ! myDocksParam.bLockAll
614- && ! pDock->bPreventDraggingIcons)
615- {
616- cd_debug ("on a sorti %s du dock (%d;%d) / %dx%d", s_pIconClicked->cName, pDock->container.iMouseX, pDock->container.iMouseY, pDock->container.iWidth, pDock->container.iHeight);
617-
618- //if (! cairo_dock_hide_child_docks (pDock)) // on quitte si on entre dans un sous-dock, pour rester en position "haute".
619- // return ;
620-
621- CairoDock *pOriginDock = cairo_dock_search_dock_from_name (s_pIconClicked->cParentDockName);
622- g_return_val_if_fail (pOriginDock != NULL, TRUE);
623- if (pOriginDock == pDock && _mouse_is_really_outside (pDock)) // ce test est la pour parer aux WM deficients mentaux comme KWin qui nous font sortir/rentrer lors d'un clic.
624- {
625- cd_debug (" on detache l'icone");
626- pOriginDock->bIconIsFlyingAway = TRUE;
627- gchar *cParentDockName = s_pIconClicked->cParentDockName;
628- s_pIconClicked->cParentDockName = NULL;
629- cairo_dock_detach_icon_from_dock (s_pIconClicked, pOriginDock);
630- s_pIconClicked->cParentDockName = cParentDockName; // we keep the parent dock name, to be able to re-insert it. we'll have to remove it when the icon is dropped.
631- cairo_dock_update_dock_size (pOriginDock);
632- cairo_dock_stop_icon_glide (pOriginDock);
633-
634- s_pFlyingContainer = cairo_dock_create_flying_container (s_pIconClicked, pOriginDock);
635- //g_print ("- s_pIconClicked <- NULL\n");
636- s_pIconClicked = NULL;
637- if (pDock->iRefCount > 0 || pDock->bAutoHide) // pour garder le dock visible.
638- {
639- return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
640- }
641- }
642- }
643- else if (s_pFlyingContainer != NULL && s_pFlyingContainer->pIcon != NULL && pDock->iRefCount > 0) // on evite les bouclages.
644- {
645- CairoDock *pOriginDock = cairo_dock_search_dock_from_name (s_pFlyingContainer->pIcon->cParentDockName);
646- if (pOriginDock == pDock)
647- return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
648- }
649- return CAIRO_DOCK_LET_PASS_NOTIFICATION;
650-}
651-gboolean cairo_dock_on_leave_dock_notification (gpointer data, CairoDock *pDock, gboolean *bStartAnimation)
652-{
653- //\_______________ Arrive ici, on est sorti du dock.
654- pDock->container.bInside = FALSE;
655- pDock->iAvoidingMouseIconType = -1;
656- pDock->fAvoidingMouseMargin = 0;
657-
658- //\_______________ On cache ses sous-docks.
659- if (! cairo_dock_hide_child_docks (pDock)) // on quitte si l'un des sous-docks reste visible (on est entre dedans), pour rester en position "haute".
660- return TRUE;
661-
662- if (s_iSidShowSubDockDemand != 0 && (pDock->iRefCount == 0 || s_pSubDockShowing == pDock)) // si ce dock ou l'un des sous-docks etait programme pour se montrer, on annule.
663- {
664- g_source_remove (s_iSidShowSubDockDemand);
665- s_iSidShowSubDockDemand = 0;
666- s_pDockShowingSubDock = NULL;
667- s_pSubDockShowing = NULL;
668- }
669-
670- //g_print ("%s (%d, %d)\n", __func__, pDock->iRefCount, pDock->bMenuVisible);
671-
672- //\_______________ On quitte si le menu est leve, pour rester en position haute.
673- if (pDock->bMenuVisible)
674- return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
675-
676- //\_______________ On gere le drag d'une icone hors du dock.
677- if (s_pIconClicked != NULL
678- && (CAIRO_DOCK_ICON_TYPE_IS_LAUNCHER (s_pIconClicked)
679- || CAIRO_DOCK_ICON_TYPE_IS_CONTAINER (s_pIconClicked)
680- || (CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (s_pIconClicked) && s_pIconClicked->cDesktopFileName && pDock->iMaxDockHeight > 30) // if the dock is narrow (like a panel), prevent from dragging separators outside of the dock. TODO: maybe we need a parameter in the view...
681- || CAIRO_DOCK_IS_DETACHABLE_APPLET (s_pIconClicked))
682- && s_pFlyingContainer == NULL
683- && ! myDocksParam.bLockIcons
684- && ! myDocksParam.bLockAll
685- && ! pDock->bPreventDraggingIcons)
686- {
687- cd_debug ("on a sorti %s du dock (%d;%d) / %dx%d", s_pIconClicked->cName, pDock->container.iMouseX, pDock->container.iMouseY, pDock->container.iWidth, pDock->container.iHeight);
688-
689- //if (! cairo_dock_hide_child_docks (pDock)) // on quitte si on entre dans un sous-dock, pour rester en position "haute".
690- // return ;
691-
692- CairoDock *pOriginDock = cairo_dock_search_dock_from_name (s_pIconClicked->cParentDockName);
693- g_return_val_if_fail (pOriginDock != NULL, TRUE);
694- if (pOriginDock == pDock && _mouse_is_really_outside (pDock)) // ce test est la pour parer aux WM deficients mentaux comme KWin qui nous font sortir/rentrer lors d'un clic.
695- {
696- cd_debug (" on detache l'icone");
697- pOriginDock->bIconIsFlyingAway = TRUE;
698- gchar *cParentDockName = s_pIconClicked->cParentDockName;
699- s_pIconClicked->cParentDockName = NULL;
700- cairo_dock_detach_icon_from_dock (s_pIconClicked, pOriginDock);
701- s_pIconClicked->cParentDockName = cParentDockName; // we keep the parent dock name, to be able to re-insert it. we'll have to remove it when the icon is dropped.
702- cairo_dock_update_dock_size (pOriginDock);
703- cairo_dock_stop_icon_glide (pOriginDock);
704-
705- s_pFlyingContainer = cairo_dock_create_flying_container (s_pIconClicked, pOriginDock);
706- //g_print ("- s_pIconClicked <- NULL\n");
707- s_pIconClicked = NULL;
708- if (pDock->iRefCount > 0 || pDock->bAutoHide) // pour garder le dock visible.
709- {
710- return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
711- }
712- }
713- }
714- else if (s_pFlyingContainer != NULL && s_pFlyingContainer->pIcon != NULL && pDock->iRefCount > 0) // on evite les bouclages.
715- {
716- CairoDock *pOriginDock = cairo_dock_search_dock_from_name (s_pFlyingContainer->pIcon->cParentDockName);
717- if (pOriginDock == pDock)
718- return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
719- }
720-
721- //\_______________ On lance l'animation du dock.
722- if (pDock->iRefCount == 0)
723- {
724- //g_print ("%s (auto-hide:%d)\n", __func__, pDock->bAutoHide);
725- if (pDock->bAutoHide)
726- {
727- ///pDock->fFoldingFactor = (myBackendsParam.bAnimateOnAutoHide ? 0.001 : 0.);
728- cairo_dock_start_hiding (pDock);
729- }
730- }
731- else if (pDock->icons != NULL)
732- {
733- pDock->fFoldingFactor = (myDocksParam.bAnimateSubDock ? 0.001 : 0.);
734- Icon *pIcon = cairo_dock_search_icon_pointing_on_dock (pDock, NULL);
735- //g_print ("'%s' se replie\n", pIcon?pIcon->cName:"none");
736- cairo_dock_notify_on_object (pIcon, NOTIFICATION_UNFOLD_SUBDOCK, pIcon);
737- }
738- //g_print ("start shrinking\n");
739- cairo_dock_start_shrinking (pDock); // on commence a faire diminuer la taille des icones.
740- return CAIRO_DOCK_LET_PASS_NOTIFICATION;
741-}
742-
743-
744-gboolean cairo_dock_on_leave_notify (GtkWidget* pWidget, GdkEventCrossing* pEvent, CairoDock *pDock)
745-{
746- //g_print ("%s (bInside:%d; iState:%d; iRefCount:%d)\n", __func__, pDock->container.bInside, pDock->iInputState, pDock->iRefCount);
747- //\_______________ On tire le dock => on ignore le signal.
748- if (pEvent != NULL && (pEvent->state & GDK_MOD1_MASK) && (pEvent->state & GDK_BUTTON1_MASK))
749- {
750- return FALSE;
751- }
752-
753- //\_______________ On ignore les signaux errones venant d'un WM buggue (Kwin) ou meme de X (changement de bureau).
754- //if (pEvent)
755- // //g_print ("leave event: %d;%d; %d;%d; %d; %d\n", (int)pEvent->x, (int)pEvent->y, (int)pEvent->x_root, (int)pEvent->y_root, pEvent->mode, pEvent->detail);
756- if (pEvent && (pEvent->x != 0 || pEvent->y != 0 || pEvent->x_root != 0 || pEvent->y_root != 0)) // strange leave events occur (detail = GDK_NOTIFY_NONLINEAR, nil coordinates); let's ignore them!
757- {
758- if (pDock->container.bIsHorizontal)
759- {
760- pDock->container.iMouseX = pEvent->x;
761- pDock->container.iMouseY = pEvent->y;
762- }
763- else
764- {
765- pDock->container.iMouseX = pEvent->y;
766- pDock->container.iMouseY = pEvent->x;
767- }
768- }
769- else
770- {
771- //g_print ("forced leave event: %d;%d\n", pDock->container.iMouseX, pDock->container.iMouseY);
772- }
773- if (pEvent && !_mouse_is_really_outside(pDock)) // check that the mouse is really outside (only if the request comes from the Window Manager; this is to work around buggy WM like KWin).
774- {
775- //g_print ("not really outside (%d;%d ; %d/%d)\n", pDock->container.iMouseX, pDock->container.iMouseY, pDock->iMaxDockHeight, pDock->iMinDockHeight);
776- if (pDock->iSidTestMouseOutside == 0 && pEvent) // si l'action induit un changement de bureau, ou une appli qui bloque le focus (gksu), X envoit un signal de sortie alors qu'on est encore dans le dock, et donc n'en n'envoit plus lorsqu'on en sort reellement. On teste donc pendant qques secondes apres l'evenement.
777- {
778- //g_print ("start checking mouse\n");
779- pDock->iSidTestMouseOutside = g_timeout_add (500, (GSourceFunc)_check_mouse_outside, pDock);
780- }
781- //g_print ("mouse: %d;%d\n", pDock->container.iMouseX, pDock->container.iMouseY);
782- return FALSE;
783- }
784-
785- //\_______________ On retarde la sortie.
786- if (pEvent != NULL) // sortie naturelle.
787- {
788- if (pDock->iSidLeaveDemand == 0) // pas encore de demande de sortie.
789- {
790- if (pDock->iRefCount == 0) // cas du main dock : on retarde si on pointe sur un sous-dock (pour laisser le temps au signal d'entree dans le sous-dock d'etre traite) ou si l'on a l'auto-hide.
791- {
792- //g_print (" leave event : %.1f;%.1f (%dx%d)\n", pEvent->x, pEvent->y, pDock->container.iWidth, pDock->container.iHeight);
793- Icon *pPointedIcon = cairo_dock_get_pointed_icon (pDock->icons);
794- if (pPointedIcon != NULL && pPointedIcon->pSubDock != NULL && gldi_container_is_visible (CAIRO_CONTAINER (pPointedIcon->pSubDock)))
795- {
796- //g_print (" on retarde la sortie du dock de %dms\n", MAX (myDocksParam.iLeaveSubDockDelay, 330));
797- pDock->iSidLeaveDemand = g_timeout_add (MAX (myDocksParam.iLeaveSubDockDelay, 250), (GSourceFunc) _emit_leave_signal_delayed, (gpointer) pDock);
798- return TRUE;
799- }
800- else if (pDock->bAutoHide)
801- {
802- const int delay = 0; // 250
803- if (delay != 0) /// maybe try to se if we leaved the dock frankly, or just by a few pixels...
804- {
805- //g_print (" delay the leave event by %dms\n", delay);
806- pDock->iSidLeaveDemand = g_timeout_add (250, (GSourceFunc) _emit_leave_signal_delayed, (gpointer) pDock);
807- return TRUE;
808- }
809- }
810- }
811- else/** if (myDocksParam.iLeaveSubDockDelay != 0)*/ // cas d'un sous-dock : on retarde le cachage.
812- {
813- //g_print (" on retarde la sortie du sous-dock de %dms\n", myDocksParam.iLeaveSubDockDelay);
814- pDock->iSidLeaveDemand = g_timeout_add (MAX (myDocksParam.iLeaveSubDockDelay, 50), (GSourceFunc) _emit_leave_signal_delayed, (gpointer) pDock);
815- return TRUE;
816- }
817- }
818- else // deja une sortie en attente.
819- {
820- //g_print ("une sortie est deja programmee\n");
821- return TRUE;
822- }
823- } // sinon c'est nous qui avons explicitement demande cette sortie, donc on continue.
824-
825- if (pDock->iSidTestMouseOutside != 0)
826- {
827- //g_print ("stop checking mouse (leave)\n");
828- g_source_remove (pDock->iSidTestMouseOutside);
829- pDock->iSidTestMouseOutside = 0;
830- }
831-
832- gboolean bStartAnimation = FALSE;
833- cairo_dock_notify_on_object (pDock, NOTIFICATION_LEAVE_DOCK, pDock, &bStartAnimation);
834- if (bStartAnimation)
835- cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
836-
837- return TRUE;
838-}
839-
840-gboolean cairo_dock_on_enter_notification (gpointer pData, CairoDock *pDock, gboolean *bStartAnimation)
841-{
842- // si on rentre avec une icone volante, on la met dedans.
843- if (s_pFlyingContainer != NULL)
844- {
845- Icon *pFlyingIcon = s_pFlyingContainer->pIcon;
846- if (pDock != pFlyingIcon->pSubDock) // on evite les boucles.
847- {
848- struct timeval tv;
849- int r = gettimeofday (&tv, NULL);
850- double t = tv.tv_sec + tv.tv_usec * 1e-6;
851- if (t - s_pFlyingContainer->fCreationTime > 1) // on empeche le cas ou enlever l'icone fait augmenter le ratio du dock, et donc sa hauteur, et nous fait rentrer dedans des qu'on sort l'icone.
852- {
853- cd_debug ("on remet l'icone volante dans un dock (dock d'origine : %s)\n", pFlyingIcon->cParentDockName);
854- cairo_dock_free_flying_container (s_pFlyingContainer);
855- cairo_dock_stop_icon_animation (pFlyingIcon);
856- cairo_dock_insert_icon_in_dock (pFlyingIcon, pDock, CAIRO_DOCK_ANIMATE_ICON);
857- s_pFlyingContainer = NULL;
858- pDock->bIconIsFlyingAway = FALSE;
859- }
860- }
861- }
862-
863- return CAIRO_DOCK_LET_PASS_NOTIFICATION;
864-}
865-gboolean cairo_dock_on_enter_notify (GtkWidget* pWidget, GdkEventCrossing* pEvent, CairoDock *pDock)
866-{
867- //g_print ("%s (bIsMainDock : %d; bInside:%d; state:%d; iMagnitudeIndex:%d; input shape:%x; event:%p)\n", __func__, pDock->bIsMainDock, pDock->container.bInside, pDock->iInputState, pDock->iMagnitudeIndex, pDock->pShapeBitmap, pEvent);
868- if (! cairo_dock_entrance_is_allowed (pDock))
869- {
870- cd_message ("* entree non autorisee");
871- return FALSE;
872- }
873-
874- // stop les timers.
875- if (pDock->iSidLeaveDemand != 0)
876- {
877- g_source_remove (pDock->iSidLeaveDemand);
878- pDock->iSidLeaveDemand = 0;
879- }
880- if (s_iSidShowSubDockDemand != 0) // gere un cas tordu mais bien reel.
881- {
882- g_source_remove (s_iSidShowSubDockDemand);
883- s_iSidShowSubDockDemand = 0;
884- }
885- if (pDock->iSidHideBack != 0)
886- {
887- //g_print ("remove hide back timeout\n");
888- g_source_remove (pDock->iSidHideBack);
889- pDock->iSidHideBack = 0;
890- }
891- if (pDock->iSidTestMouseOutside != 0)
892- {
893- //g_print ("stop checking mouse (enter)\n");
894- g_source_remove (pDock->iSidTestMouseOutside);
895- pDock->iSidTestMouseOutside = 0;
896- }
897-
898- // input shape desactivee, le dock devient actif.
899- if ((pDock->pShapeBitmap || pDock->pHiddenShapeBitmap) && pDock->iInputState != CAIRO_DOCK_INPUT_ACTIVE)
900- {
901- //g_print ("+++ input shape active on enter\n");
902- cairo_dock_set_input_shape_active (pDock);
903- }
904- pDock->iInputState = CAIRO_DOCK_INPUT_ACTIVE;
905-
906- // si on etait deja dedans, ou qu'on etait cense l'etre, on relance juste le grossissement.
907- /**if (pDock->container.bInside || pDock->bIsHiding)
908- {
909- pDock->container.bInside = TRUE;
910- cairo_dock_start_growing (pDock);
911- if (pDock->bIsHiding || cairo_dock_is_hidden (pDock)) // on (re)monte.
912- {
913- cd_debug (" on etait deja dedans\n");
914- cairo_dock_start_showing (pDock);
915- }
916- return FALSE;
917- }*/
918-
919- pDock->container.bInside = TRUE;
920-
921- // animation d'entree.
922- gboolean bStartAnimation = FALSE;
923- cairo_dock_notify_on_object (pDock, NOTIFICATION_ENTER_DOCK, pDock, &bStartAnimation);
924- if (bStartAnimation)
925- cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
926-
927- pDock->fDecorationsOffsetX = 0;
928- cairo_dock_stop_quick_hide ();
929-
930- if (s_pIconClicked != NULL) // on pourrait le faire a chaque motion aussi.
931- {
932- pDock->iAvoidingMouseIconType = s_pIconClicked->iGroup;
933- pDock->fAvoidingMouseMargin = .5; /// inutile il me semble ...
934- }
935-
936- // si on rentre avec une icone volante, on la met dedans.
937- if (s_pFlyingContainer != NULL)
938- {
939- Icon *pFlyingIcon = s_pFlyingContainer->pIcon;
940- if (pDock != pFlyingIcon->pSubDock) // on evite les boucles.
941- {
942- struct timeval tv;
943- int r = gettimeofday (&tv, NULL);
944- double t = tv.tv_sec + tv.tv_usec * 1e-6;
945- if (t - s_pFlyingContainer->fCreationTime > 1) // on empeche le cas ou enlever l'icone fait augmenter le ratio du dock, et donc sa hauteur, et nous fait rentrer dedans des qu'on sort l'icone.
946- {
947- //g_print ("on remet l'icone volante dans un dock (dock d'origine : %s)\n", pFlyingIcon->cParentDockName);
948- cairo_dock_free_flying_container (s_pFlyingContainer);
949- cairo_dock_stop_icon_animation (pFlyingIcon);
950- // reinsert the icon where it was dropped, not at its original position.
951- Icon *icon = cairo_dock_get_pointed_icon (pDock->icons); // get the pointed icon before we insert the icon, since the inserted icon will be the pointed one!
952- //g_print (" pointed icon: %s\n", icon?icon->cName:"none");
953- cairo_dock_insert_icon_in_dock (pFlyingIcon, pDock, CAIRO_DOCK_ANIMATE_ICON);
954- if (icon != NULL && cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pFlyingIcon))
955- {
956- cairo_dock_move_icon_after_icon (pDock, pFlyingIcon, icon);
957- }
958- s_pFlyingContainer = NULL;
959- pDock->bIconIsFlyingAway = FALSE;
960- }
961- }
962- }
963-
964- // si on etait derriere, on repasse au premier plan.
965- if (pDock->iVisibility == CAIRO_DOCK_VISI_KEEP_BELOW && pDock->bIsBelow && pDock->iRefCount == 0)
966- {
967- cairo_dock_pop_up (pDock);
968- }
969-
970- // si on etait cache (entierement ou partiellement), on montre.
971- if ((pDock->bIsHiding || cairo_dock_is_hidden (pDock)) && pDock->iRefCount == 0)
972- {
973- //g_print (" on commence a monter\n");
974- cairo_dock_start_showing (pDock); // on a mis a jour la zone d'input avant, sinon la fonction le ferait, ce qui serait inutile.
975- }
976-
977- // since we've just entered the dock, the pointed icon has changed from none to the current one.
978- if (pEvent != NULL)
979- {
980- // update the mouse coordinates
981- if (pDock->container.bIsHorizontal)
982- {
983- pDock->container.iMouseX = (int) pEvent->x;
984- pDock->container.iMouseY = (int) pEvent->y;
985- }
986- else
987- {
988- pDock->container.iMouseX = (int) pEvent->y;
989- pDock->container.iMouseY = (int) pEvent->x;
990- }
991- // then compute the icons (especially the pointed one).
992- Icon *icon = cairo_dock_calculate_dock_icons (pDock); // returns the pointed icon
993- // trigger the change to trigger the animation and sub-dock popup
994- if (icon != NULL)
995- {
996- cairo_dock_on_change_icon (NULL, icon, pDock); // we were out of the dock, so there is no previous pointed icon.
997- }
998- }
999- // on lance le grossissement.
1000- cairo_dock_start_growing (pDock);
1001-
1002- return TRUE;
1003-}
1004-
1005-
1006-gboolean cairo_dock_on_key_release (GtkWidget *pWidget,
1007- GdkEventKey *pKey,
1008- CairoDock *pDock)
1009-{
1010- cd_debug ("on a appuye sur une touche (%d/%d)", pKey->keyval, pKey->hardware_keycode);
1011- if (pKey->type == GDK_KEY_PRESS)
1012- {
1013- cairo_dock_notify_on_object (pDock, NOTIFICATION_KEY_PRESSED, pDock, pKey->keyval, pKey->state, pKey->string, pKey->hardware_keycode);
1014- }
1015- else if (pKey->type == GDK_KEY_RELEASE)
1016- {
1017- //g_print ("release : pKey->keyval = %d\n", pKey->keyval);
1018- if ((pKey->state & GDK_MOD1_MASK) && pKey->keyval == 0) // On relache la touche ALT, typiquement apres avoir fait un ALT + clique gauche + deplacement.
1019- {
1020- if (pDock->iRefCount == 0 && pDock->iVisibility != CAIRO_DOCK_VISI_SHORTKEY)
1021- cairo_dock_write_root_dock_gaps (pDock);
1022- }
1023- }
1024- return TRUE;
1025-}
1026-
1027-
1028-static gboolean _double_click_delay_over (Icon *icon)
1029-{
1030- CairoDock *pDock = cairo_dock_search_dock_from_name (icon->cParentDockName);
1031- if (pDock)
1032- {
1033- pDock->container.iMouseX = s_iFirstClickX;
1034- pDock->container.iMouseY = s_iFirstClickY;
1035- cairo_dock_notify_on_object (pDock, NOTIFICATION_CLICK_ICON, icon, pDock, GDK_BUTTON1_MASK);
1036- if (pDock->bIsMainDock && pDock->iVisibility == CAIRO_DOCK_VISI_SHORTKEY)
1037- s_bHideAfterShortcut = TRUE;
1038-
1039- cairo_dock_start_icon_animation (icon, pDock);
1040- }
1041- icon->bIsDemandingAttention = FALSE; // on considere que si l'utilisateur clique sur l'icone, c'est qu'il a pris acte de la notification.
1042- icon->iSidDoubleClickDelay = 0;
1043- return FALSE;
1044-}
1045-static gboolean _check_mouse_outside (CairoDock *pDock) // ce test est principalement fait pour detecter les cas ou X nous envoit un signal leave errone alors qu'on est dedans (=> sortie refusee, bInside reste a TRUE), puis du coup ne nous en envoit pas de leave lorsqu'on quitte reellement le dock.
1046-{
1047- //g_print ("%s (%d, %d, %d)\n", __func__, pDock->bIsShrinkingDown, pDock->iMagnitudeIndex, pDock->container.bInside);
1048- if (pDock->bIsShrinkingDown || pDock->iMagnitudeIndex == 0 || ! pDock->container.bInside) // cas triviaux : si le dock est deja retrecit, ou qu'on est deja plus dedans, on peut quitter.
1049- {
1050- pDock->iSidTestMouseOutside = 0;
1051- return FALSE;
1052- }
1053-
1054- gldi_container_update_mouse_position (CAIRO_CONTAINER (pDock));
1055- //g_print (" -> (%d, %d)\n", pDock->container.iMouseX, pDock->container.iMouseY);
1056-
1057- cairo_dock_calculate_dock_icons (pDock); // pour faire retrecir le dock si on n'est pas dedans, merci X de nous faire sortir du dock alors que la souris est toujours dedans :-/
1058- return TRUE;
1059-}
1060-gboolean cairo_dock_on_button_press (GtkWidget* pWidget, GdkEventButton* pButton, CairoDock *pDock)
1061-{
1062- //g_print ("+ %s (%d/%d, %x)\n", __func__, pButton->type, pButton->button, pWidget);
1063- if (pDock->container.bIsHorizontal) // utile ?
1064- {
1065- pDock->container.iMouseX = (int) pButton->x;
1066- pDock->container.iMouseY = (int) pButton->y;
1067- }
1068- else
1069- {
1070- pDock->container.iMouseX = (int) pButton->y;
1071- pDock->container.iMouseY = (int) pButton->x;
1072- }
1073-
1074- Icon *icon = cairo_dock_get_pointed_icon (pDock->icons);
1075- if (pButton->button == 1) // clic gauche.
1076- {
1077- //g_print ("+ left click\n");
1078- switch (pButton->type)
1079- {
1080- case GDK_BUTTON_RELEASE :
1081- //g_print ("+ GDK_BUTTON_RELEASE (%d/%d sur %s/%s)\n", pButton->state, GDK_CONTROL_MASK | GDK_MOD1_MASK, icon ? icon->cName : "personne", icon ? icon->cCommand : ""); // 272 = 100010000
1082- if (pDock->container.bIgnoreNextReleaseEvent)
1083- {
1084- pDock->container.bIgnoreNextReleaseEvent = FALSE;
1085- s_pIconClicked = NULL;
1086- s_bIconDragged = FALSE;
1087- return TRUE;
1088- }
1089-
1090- if ( ! (pButton->state & GDK_MOD1_MASK))
1091- {
1092- if (s_pIconClicked != NULL)
1093- {
1094- cd_debug ("activate %s (%s)", s_pIconClicked->cName, icon ? icon->cName : "none");
1095- s_pIconClicked->iAnimationState = CAIRO_DOCK_STATE_REST; // stoppe les animations de suivi du curseur.
1096- pDock->iAvoidingMouseIconType = -1;
1097- cairo_dock_stop_icon_glide (pDock);
1098- }
1099- if (icon != NULL && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon) && icon == s_pIconClicked) // released the button on the clicked icon => trigger the CLICK signal.
1100- {
1101- s_pIconClicked = NULL; // il faut le faire ici au cas ou le clic induirait un dialogue bloquant qui nous ferait sortir du dock par exemple.
1102- //g_print ("+ click on '%s' (%s)\n", icon->cName, icon->cCommand);
1103- if (! s_bIconDragged) // on ignore le drag'n'drop sur elle-meme.
1104- {
1105- if (icon->iNbDoubleClickListeners > 0)
1106- {
1107- if (icon->iSidDoubleClickDelay == 0) // 1er release.
1108- {
1109- icon->iSidDoubleClickDelay = g_timeout_add (CD_DOUBLE_CLICK_DELAY, (GSourceFunc)_double_click_delay_over, icon);
1110- s_iFirstClickX = pDock->container.iMouseX; // the mouse can move between the first and the second clicks; since the event is triggered when the second click occurs, the coordinates may be wrong -> we have to remember the position of the first click.
1111- s_iFirstClickY = pDock->container.iMouseY;
1112- }
1113- }
1114- else
1115- {
1116- cairo_dock_notify_on_object (pDock, NOTIFICATION_CLICK_ICON, icon, pDock, pButton->state);
1117- if (pDock->bIsMainDock && pDock->iVisibility == CAIRO_DOCK_VISI_SHORTKEY)
1118- s_bHideAfterShortcut = TRUE;
1119-
1120- cairo_dock_start_icon_animation (icon, pDock);
1121- icon->bIsDemandingAttention = FALSE; // on considere que si l'utilisateur clique sur l'icone, c'est qu'il a pris acte de la notification.
1122- }
1123- }
1124- }
1125- else if (s_pIconClicked != NULL && icon != NULL && icon != s_pIconClicked && ! myDocksParam.bLockIcons && ! myDocksParam.bLockAll && ! pDock->bPreventDraggingIcons) // released the icon on another one.
1126- {
1127- //g_print ("deplacement de %s\n", s_pIconClicked->cName);
1128- CairoDock *pOriginDock = CAIRO_DOCK (cairo_dock_search_container_from_icon (s_pIconClicked));
1129- if (pOriginDock != NULL && pDock != pOriginDock)
1130- {
1131- cairo_dock_detach_icon_from_dock (s_pIconClicked, pOriginDock);
1132- ///cairo_dock_update_dock_size (pOriginDock);
1133-
1134- cairo_dock_update_icon_s_container_name (s_pIconClicked, icon->cParentDockName);
1135-
1136- cairo_dock_insert_icon_in_dock (s_pIconClicked, pDock, CAIRO_DOCK_ANIMATE_ICON);
1137- }
1138-
1139- Icon *prev_icon, *next_icon;
1140- if (icon->fXAtRest > s_pIconClicked->fXAtRest)
1141- {
1142- prev_icon = icon;
1143- next_icon = cairo_dock_get_next_icon (pDock->icons, icon);
1144- }
1145- else
1146- {
1147- prev_icon = cairo_dock_get_previous_icon (pDock->icons, icon);
1148- next_icon = icon;
1149- }
1150- if (icon->iGroup != s_pIconClicked->iGroup
1151- && (prev_icon == NULL || prev_icon->iGroup != s_pIconClicked->iGroup)
1152- && (next_icon == NULL || next_icon->iGroup != s_pIconClicked->iGroup))
1153- {
1154- s_pIconClicked = NULL;
1155- return FALSE;
1156- }
1157- //g_print ("deplacement de %s\n", s_pIconClicked->cName);
1158- ///if (prev_icon != NULL && prev_icon->iGroup != s_pIconClicked->iGroup) // the previous icon is in a different group -> we'll be at the beginning of our group.
1159- /// prev_icon = NULL; // => move to the beginning of the group/dock
1160- cairo_dock_move_icon_after_icon (pDock, s_pIconClicked, prev_icon);
1161-
1162- pDock->pRenderer->calculate_icons (pDock);
1163-
1164- if (! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (s_pIconClicked))
1165- {
1166- cairo_dock_request_icon_animation (s_pIconClicked, CAIRO_CONTAINER (pDock), "bounce", 2);
1167- }
1168- gtk_widget_queue_draw (pDock->container.pWidget);
1169- }
1170-
1171- if (s_pFlyingContainer != NULL)
1172- {
1173- cd_debug ("on relache l'icone volante");
1174- if (pDock->container.bInside)
1175- {
1176- //g_print (" on la remet dans son dock d'origine\n");
1177- Icon *pFlyingIcon = s_pFlyingContainer->pIcon;
1178- cairo_dock_free_flying_container (s_pFlyingContainer);
1179- cairo_dock_stop_marking_icon_as_following_mouse (pFlyingIcon);
1180- cairo_dock_stop_icon_animation (pFlyingIcon);
1181- // reinsert the icon where it was dropped, not at its original position.
1182- Icon *icon = cairo_dock_get_pointed_icon (pDock->icons); // get the pointed icon before we insert the icon, since the inserted icon will be the pointed one!
1183- cairo_dock_insert_icon_in_dock (pFlyingIcon, pDock, CAIRO_DOCK_ANIMATE_ICON);
1184- if (icon != NULL && cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pFlyingIcon))
1185- {
1186- cairo_dock_move_icon_after_icon (pDock, pFlyingIcon, icon);
1187- }
1188- }
1189- else
1190- {
1191- Icon *pFlyingIcon = s_pFlyingContainer->pIcon;
1192- g_free (pFlyingIcon->cParentDockName); // we have to remove it ourselves here, since we kept this data.
1193- pFlyingIcon->cParentDockName = NULL;
1194- cairo_dock_terminate_flying_container (s_pFlyingContainer); // supprime ou detache l'icone, l'animation se terminera toute seule.
1195- }
1196- s_pFlyingContainer = NULL;
1197- pDock->bIconIsFlyingAway = FALSE;
1198- cairo_dock_stop_icon_glide (pDock);
1199- }
1200- /// a implementer ...
1201- ///cairo_dock_notify_on_object (CAIRO_CONTAINER (pDock), CAIRO_DOCK_RELEASE_ICON, icon, pDock);
1202- }
1203- else
1204- {
1205- if (pDock->iRefCount == 0 && pDock->iVisibility != CAIRO_DOCK_VISI_SHORTKEY)
1206- cairo_dock_write_root_dock_gaps (pDock);
1207- }
1208- //g_print ("- apres clic : s_pIconClicked <- NULL\n");
1209- s_pIconClicked = NULL;
1210- s_bIconDragged = FALSE;
1211- break ;
1212-
1213- case GDK_BUTTON_PRESS :
1214- if ( ! (pButton->state & GDK_MOD1_MASK))
1215- {
1216- //g_print ("+ clic sur %s (%.2f)!\n", icon ? icon->cName : "rien", icon ? icon->fInsertRemoveFactor : 0.);
1217- s_iClickX = pButton->x;
1218- s_iClickY = pButton->y;
1219- if (icon && ! cairo_dock_icon_is_being_removed (icon) && ! CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (icon))
1220- {
1221- s_pIconClicked = icon; // on ne definit pas l'animation FOLLOW_MOUSE ici , on le fera apres le 1er mouvement, pour eviter que l'icone soit dessinee comme tel quand on clique dessus alors que le dock est en train de jouer une animation (ca provoque un flash desagreable).
1222- cd_debug ("clicked on %s", icon->cName);
1223- }
1224- else
1225- s_pIconClicked = NULL;
1226- }
1227- break ;
1228-
1229- case GDK_2BUTTON_PRESS :
1230- if (icon && ! cairo_dock_icon_is_being_removed (icon))
1231- {
1232- if (icon->iSidDoubleClickDelay != 0)
1233- {
1234- g_source_remove (icon->iSidDoubleClickDelay);
1235- icon->iSidDoubleClickDelay = 0;
1236- }
1237- cairo_dock_notify_on_object (pDock, NOTIFICATION_DOUBLE_CLICK_ICON, icon, pDock);
1238- if (icon->iNbDoubleClickListeners > 0)
1239- pDock->container.bIgnoreNextReleaseEvent = TRUE;
1240- }
1241- break ;
1242-
1243- default :
1244- break ;
1245- }
1246- }
1247- else if (pButton->button == 3 && pButton->type == GDK_BUTTON_PRESS) // clique droit.
1248- {
1249- GtkWidget *menu = cairo_dock_build_menu (icon, CAIRO_CONTAINER (pDock)); // genere un CAIRO_DOCK_BUILD_CONTAINER_MENU et CAIRO_DOCK_BUILD_ICON_MENU.
1250-
1251- cairo_dock_popup_menu_on_icon (menu, icon, CAIRO_CONTAINER (pDock));
1252- }
1253- else if (pButton->button == 2 && pButton->type == GDK_BUTTON_PRESS) // clique milieu.
1254- {
1255- if (icon && ! cairo_dock_icon_is_being_removed (icon))
1256- {
1257- cairo_dock_notify_on_object (pDock, NOTIFICATION_MIDDLE_CLICK_ICON, icon, pDock);
1258- }
1259- }
1260-
1261- return FALSE;
1262-}
1263-
1264-
1265-gboolean cairo_dock_on_scroll (GtkWidget* pWidget, GdkEventScroll* pScroll, CairoDock *pDock)
1266-{
1267- if (pScroll->direction != GDK_SCROLL_UP && pScroll->direction != GDK_SCROLL_DOWN) // on degage les scrolls horizontaux.
1268- {
1269- return FALSE;
1270- }
1271- Icon *icon = cairo_dock_get_pointed_icon (pDock->icons); // can be NULL
1272- cairo_dock_notify_on_object (pDock, NOTIFICATION_SCROLL_ICON, icon, pDock, pScroll->direction);
1273-
1274- return FALSE;
1275-}
1276-
1277-
1278-gboolean cairo_dock_on_configure (GtkWidget* pWidget, GdkEventConfigure* pEvent, CairoDock *pDock)
1279-{
1280- //g_print ("%s (%p, main dock : %d) : (%d;%d) (%dx%d)\n", __func__, pDock, pDock->bIsMainDock, pEvent->x, pEvent->y, pEvent->width, pEvent->height);
1281- // set the new actual size of the container
1282- gint iNewWidth, iNewHeight, iNewX, iNewY;
1283- if (pDock->container.bIsHorizontal)
1284- {
1285- iNewWidth = pEvent->width;
1286- iNewHeight = pEvent->height;
1287-
1288- iNewX = pEvent->x;
1289- iNewY = pEvent->y;
1290- }
1291- else
1292- {
1293- iNewWidth = pEvent->height;
1294- iNewHeight = pEvent->width;
1295-
1296- iNewX = pEvent->y;
1297- iNewY = pEvent->x;
1298- }
1299-
1300- gboolean bSizeUpdated = (iNewWidth != pDock->container.iWidth || iNewHeight != pDock->container.iHeight);
1301- gboolean bIsNowSized = (pDock->container.iWidth == 1 && pDock->container.iHeight == 1 && bSizeUpdated);
1302- gboolean bPositionUpdated = (pDock->container.iWindowPositionX != iNewX || pDock->container.iWindowPositionY != iNewY);
1303- pDock->container.iWidth = iNewWidth;
1304- pDock->container.iHeight = iNewHeight;
1305- pDock->container.iWindowPositionX = iNewX;
1306- pDock->container.iWindowPositionY = iNewY;
1307-
1308- if (pDock->container.iWidth == 1 && pDock->container.iHeight == 1) // the X window has not yet reached its size.
1309- {
1310- return FALSE;
1311- }
1312-
1313- // if the size has changed, also update everything that depends on it.
1314- if (bSizeUpdated) // changement de taille
1315- {
1316- // update mouse relative position inside the window
1317- gldi_container_update_mouse_position (CAIRO_CONTAINER (pDock));
1318- if (pDock->container.iMouseX < 0 || pDock->container.iMouseX > pDock->container.iWidth) // utile ?
1319- pDock->container.iMouseX = 0;
1320-
1321- // update the input shape (it has been calculated in the function that made the resize)
1322- cairo_dock_update_input_shape (pDock);
1323- if (pDock->pHiddenShapeBitmap != NULL && pDock->iInputState == CAIRO_DOCK_INPUT_HIDDEN)
1324- {
1325- //g_print ("+++ input shape hidden on configure\n");
1326- cairo_dock_set_input_shape_hidden (pDock);
1327- }
1328- else if (pDock->pShapeBitmap != NULL && pDock->iInputState == CAIRO_DOCK_INPUT_AT_REST)
1329- {
1330- //g_print ("+++ input shape at rest on configure\n");
1331- cairo_dock_set_input_shape_at_rest (pDock);
1332- }
1333- else if (pDock->iInputState == CAIRO_DOCK_INPUT_ACTIVE)
1334- {
1335- //g_print ("+++ input shape active on configure\n");
1336- cairo_dock_set_input_shape_active (pDock);
1337- }
1338-
1339- // update the GL context
1340- if (g_bUseOpenGL)
1341- {
1342- if (! gldi_glx_make_current (CAIRO_CONTAINER (pDock)))
1343- return FALSE;
1344-
1345- cairo_dock_set_ortho_view (CAIRO_CONTAINER (pDock));
1346-
1347- glClearAccum (0., 0., 0., 0.);
1348- glClear (GL_ACCUM_BUFFER_BIT);
1349-
1350- if (pDock->iRedirectedTexture != 0)
1351- {
1352- _cairo_dock_delete_texture (pDock->iRedirectedTexture);
1353- pDock->iRedirectedTexture = cairo_dock_create_texture_from_raw_data (NULL, pEvent->width, pEvent->height);
1354- }
1355- }
1356-
1357- cairo_dock_calculate_dock_icons (pDock);
1358- //g_print ("configure size\n");
1359- cairo_dock_trigger_set_WM_icons_geometry (pDock); // changement de position ou de taille du dock => on replace les icones.
1360-
1361- cairo_dock_replace_all_dialogs ();
1362-
1363- if (bIsNowSized && g_bUseOpenGL) // in OpenGL,
1364- {
1365- Icon *icon;
1366- GList *ic;
1367- for (ic = pDock->icons; ic != NULL; ic = ic->next)
1368- {
1369- icon = ic->data;
1370- if (icon->bDamaged)
1371- {
1372- //g_print ("#### icon %s is damaged\n", icon->cName);
1373- icon->bDamaged = FALSE;
1374- if (cairo_dock_get_icon_data_renderer (icon) != NULL)
1375- {
1376- cairo_dock_refresh_data_renderer (icon, CAIRO_CONTAINER (pDock), NULL); // no cairo context in OpenGL
1377- }
1378- else if (icon->iSubdockViewType != 0)
1379- {
1380- cairo_dock_draw_subdock_content_on_icon (icon, pDock);
1381- }
1382- else if (CAIRO_DOCK_IS_APPLET (icon))
1383- {
1384- cairo_dock_reload_module_instance (icon->pModuleInstance, FALSE); // easy but safe way to redraw the icon properly.
1385- }
1386- else // if we don't know how thie icon should be drawn, just reload it.
1387- {
1388- cairo_dock_load_icon_image (icon, CAIRO_CONTAINER (pDock));
1389- }
1390- }
1391- }
1392- }
1393- }
1394- else if (bPositionUpdated) // changement de position.
1395- {
1396- //g_print ("configure x,y\n");
1397- cairo_dock_trigger_set_WM_icons_geometry (pDock); // changement de position de la fenetre du dock => on replace les icones.
1398-
1399- cairo_dock_replace_all_dialogs ();
1400- }
1401-
1402- if (pDock->iRefCount == 0 && (bSizeUpdated || bPositionUpdated))
1403- {
1404- if (pDock->iVisibility == CAIRO_DOCK_VISI_AUTO_HIDE_ON_OVERLAP)
1405- {
1406- Icon *pActiveAppli = cairo_dock_get_current_active_icon ();
1407- if (_cairo_dock_appli_is_on_our_way (pActiveAppli, pDock)) // la fenetre active nous gene.
1408- {
1409- if (!cairo_dock_is_temporary_hidden (pDock))
1410- cairo_dock_activate_temporary_auto_hide (pDock);
1411- }
1412- else
1413- {
1414- if (cairo_dock_is_temporary_hidden (pDock))
1415- cairo_dock_deactivate_temporary_auto_hide (pDock);
1416- }
1417- }
1418- else if (pDock->iVisibility == CAIRO_DOCK_VISI_AUTO_HIDE_ON_OVERLAP_ANY)
1419- {
1420- if (cairo_dock_search_window_overlapping_dock (pDock) != NULL)
1421- {
1422- if (!cairo_dock_is_temporary_hidden (pDock))
1423- cairo_dock_activate_temporary_auto_hide (pDock);
1424- }
1425- else
1426- {
1427- if (cairo_dock_is_temporary_hidden (pDock))
1428- cairo_dock_deactivate_temporary_auto_hide (pDock);
1429- }
1430- }
1431- }
1432-
1433- gtk_widget_queue_draw (pWidget);
1434-
1435- return FALSE;
1436-}
1437-
1438-
1439-
1440-static gboolean s_bWaitForData = FALSE;
1441-static gboolean s_bCouldDrop = FALSE;
1442-
1443-void cairo_dock_on_drag_data_received (GtkWidget *pWidget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint time, CairoDock *pDock)
1444-{
1445- cd_debug ("%s (%dx%d, %d, %d)", __func__, x, y, time, pDock->container.bInside);
1446- if (cairo_dock_is_hidden (pDock)) // X ne semble pas tenir compte de la zone d'input pour dropper les trucs...
1447- return ;
1448- //\_________________ On recupere l'URI.
1449- gchar *cReceivedData = (gchar *)gtk_selection_data_get_data (selection_data);
1450- g_return_if_fail (cReceivedData != NULL);
1451- int length = strlen (cReceivedData);
1452- if (cReceivedData[length-1] == '\n')
1453- cReceivedData[--length] = '\0'; // on vire le retour chariot final.
1454- if (cReceivedData[length-1] == '\r')
1455- cReceivedData[--length] = '\0';
1456-
1457- if (s_bWaitForData)
1458- {
1459- s_bWaitForData = FALSE;
1460- gdk_drag_status (dc, GDK_ACTION_COPY, time);
1461- cd_debug ("drag info : <%s>\n", cReceivedData);
1462- pDock->iAvoidingMouseIconType = CAIRO_DOCK_LAUNCHER;
1463- if (g_str_has_suffix (cReceivedData, ".desktop")/** || g_str_has_suffix (cReceivedData, ".sh")*/)
1464- pDock->fAvoidingMouseMargin = .5; // on ne sera jamais dessus.
1465- else
1466- pDock->fAvoidingMouseMargin = .25;
1467- return ;
1468- }
1469-
1470- //\_________________ On arrete l'animation.
1471- //cairo_dock_stop_marking_icons (pDock);
1472- pDock->iAvoidingMouseIconType = -1;
1473- pDock->fAvoidingMouseMargin = 0;
1474-
1475- //\_________________ On arrete le timer.
1476- if (s_iSidActionOnDragHover != 0)
1477- {
1478- //cd_debug ("on annule la demande de montrage d'appli");
1479- g_source_remove (s_iSidActionOnDragHover);
1480- s_iSidActionOnDragHover = 0;
1481- }
1482-
1483- //\_________________ On calcule la position a laquelle on l'a lache.
1484- cd_debug (">>> cReceivedData : '%s' (%d/%d)", cReceivedData, s_bCouldDrop, pDock->bCanDrop);
1485- /* icon => drop on icon
1486- no icon => if order undefined: drop on dock; else: drop between 2 icons.*/
1487- Icon *pPointedIcon = NULL;
1488- double fOrder;
1489- if (s_bCouldDrop) // can drop on the dock
1490- {
1491- cd_debug ("drop between icons");
1492- if (myDocksParam.bLockIcons || myDocksParam.bLockAll) // locked, can't add anything.
1493- {
1494- gtk_drag_finish (dc, FALSE, FALSE, time);
1495- return ;
1496- }
1497-
1498- pPointedIcon = NULL;
1499- fOrder = 0;
1500-
1501- // try to guess where we dropped.
1502- int iDropX = (pDock->container.bIsHorizontal ? x : y);
1503- Icon *pNeighboorIcon;
1504- Icon *icon;
1505- GList *ic;
1506- for (ic = pDock->icons; ic != NULL; ic = ic->next)
1507- {
1508- icon = ic->data;
1509- if (icon->bPointed)
1510- {
1511- if (iDropX < icon->fDrawX + icon->fWidth * icon->fScale/2) // on the left side of the icon
1512- {
1513- pNeighboorIcon = (ic->prev != NULL ? ic->prev->data : NULL);
1514- fOrder = (pNeighboorIcon != NULL ? (icon->fOrder + pNeighboorIcon->fOrder) / 2 : icon->fOrder - 1);
1515- }
1516- else // on the right side of the icon
1517- {
1518- pNeighboorIcon = (ic->next != NULL ? ic->next->data : NULL);
1519- fOrder = (pNeighboorIcon != NULL ? (icon->fOrder + pNeighboorIcon->fOrder) / 2 : icon->fOrder + 1);
1520- }
1521- break;
1522- }
1523- }
1524- }
1525- else // drop on an icon or nowhere.
1526- {
1527- pPointedIcon = cairo_dock_get_pointed_icon (pDock->icons);
1528- fOrder = CAIRO_DOCK_LAST_ORDER;
1529- if (pPointedIcon == NULL && ! g_str_has_suffix (cReceivedData, ".desktop")) // no icon => abort, but .desktop are always added
1530- {
1531- cd_debug ("drop nowhere");
1532- gtk_drag_finish (dc, FALSE, FALSE, time);
1533- return;
1534- }
1535- }
1536- cd_debug ("drop on %s (%.2f)", pPointedIcon?pPointedIcon->cName:"dock", fOrder);
1537- /**int iDropX = (pDock->container.bIsHorizontal ? x : y);
1538- Icon *pNeighboorIcon = NULL;
1539- Icon *icon;
1540- GList *ic;
1541- for (ic = pDock->icons; ic != NULL; ic = ic->next)
1542- {
1543- icon = ic->data;
1544- if (icon->bPointed)
1545- {
1546- //g_print ("On pointe sur %s\n", icon->cName);
1547- pPointedIcon = icon;
1548- double fMargin; /// deviendra obsolete si le drag-received fonctionne.
1549- if (g_str_has_suffix (cReceivedData, ".desktop")) // si c'est un .desktop, on l'ajoute.
1550- {
1551- if (myDocksParam.bLockIcons || myDocksParam.bLockAll)
1552- {
1553- gtk_drag_finish (dc, FALSE, FALSE, time);
1554- return ;
1555- }
1556- fMargin = 0.5; // on ne sera jamais dessus.
1557- ///fMargin = 0.25;
1558- }
1559- else // sinon on le lance si on est sur l'icone, et on l'ajoute autrement.
1560- fMargin = 0.25;
1561- cd_debug ("%d > %.2f", iDropX, icon->fX + icon->fWidth * icon->fScale * (1 - fMargin));
1562- cd_debug ("%d < %.2f", iDropX, icon->fX + icon->fWidth * icon->fScale * fMargin);
1563- if (iDropX > icon->fX + icon->fWidth * icon->fScale * (1 - fMargin)) // on est apres.
1564- {
1565- if (myDocksParam.bLockIcons || myDocksParam.bLockAll)
1566- {
1567- gtk_drag_finish (dc, FALSE, FALSE, time);
1568- return ;
1569- }
1570- pNeighboorIcon = (ic->next != NULL ? ic->next->data : NULL);
1571- fOrder = (pNeighboorIcon != NULL ? (icon->fOrder + pNeighboorIcon->fOrder) / 2 : icon->fOrder + 1);
1572- }
1573- else if (iDropX < icon->fX + icon->fWidth * icon->fScale * fMargin) // on est avant.
1574- {
1575- if (myDocksParam.bLockIcons || myDocksParam.bLockAll)
1576- {
1577- gtk_drag_finish (dc, FALSE, FALSE, time);
1578- return ;
1579- }
1580- pNeighboorIcon = (ic->prev != NULL ? ic->prev->data : NULL);
1581- fOrder = (pNeighboorIcon != NULL ? (icon->fOrder + pNeighboorIcon->fOrder) / 2 : icon->fOrder - 1);
1582- }
1583- else // on est dessus.
1584- {
1585- fOrder = CAIRO_DOCK_LAST_ORDER;
1586- }
1587- }
1588- }*/
1589-
1590- cairo_dock_notify_drop_data (cReceivedData, pPointedIcon, fOrder, CAIRO_CONTAINER (pDock));
1591-
1592- gtk_drag_finish (dc, TRUE, FALSE, time);
1593-}
1594-
1595-gboolean cairo_dock_on_drag_drop (GtkWidget *pWidget, GdkDragContext *dc, gint x, gint y, guint time, CairoDock *pDock)
1596-{
1597- cd_message ("%s (%dx%d, %d)", __func__, x, y, time);
1598- GdkAtom target = gtk_drag_dest_find_target (pWidget, dc, NULL);
1599- gtk_drag_get_data (pWidget, dc, target, time);
1600- return TRUE; // in a drop zone.
1601-}
1602-
1603-
1604-gboolean cairo_dock_on_drag_motion (GtkWidget *pWidget, GdkDragContext *dc, gint x, gint y, guint time, CairoDock *pDock)
1605-{
1606- cd_debug ("%s (%d;%d, %d)", __func__, x, y, time);
1607-
1608- //\_________________ On simule les evenements souris habituels.
1609- if (! pDock->bIsDragging)
1610- {
1611- cd_debug ("start dragging");
1612- pDock->bIsDragging = TRUE;
1613-
1614- /*GdkAtom gdkAtom = gdk_drag_get_selection (dc);
1615- Atom xAtom = gdk_x11_atom_to_xatom (gdkAtom);
1616- Window Xid = GDK_WINDOW_XID (dc->source_window);
1617- cd_debug (" <%s>\n", cairo_dock_get_property_name_on_xwindow (Xid, xAtom));*/
1618-
1619- gboolean bStartAnimation = FALSE;
1620- cairo_dock_notify_on_object (pDock, NOTIFICATION_START_DRAG_DATA, pDock, &bStartAnimation);
1621- if (bStartAnimation)
1622- cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
1623-
1624- /*pDock->iAvoidingMouseIconType = -1;
1625-
1626- GdkAtom target = gtk_drag_dest_find_target (pWidget, dc, NULL);
1627- if (target == GDK_NONE)
1628- gdk_drag_status (dc, 0, time);
1629- else
1630- {
1631- gtk_drag_get_data (pWidget, dc, target, time);
1632- s_bWaitForData = TRUE;
1633- cd_debug ("get-data envoye\n");
1634- }*/
1635-
1636- cairo_dock_on_enter_notify (pWidget, NULL, pDock); // ne sera effectif que la 1ere fois a chaque entree dans un dock.
1637- }
1638- else
1639- {
1640- //g_print ("move dragging\n");
1641- cairo_dock_on_motion_notify (pWidget, NULL, pDock);
1642- }
1643-
1644- int X, Y;
1645- if (pDock->container.bIsHorizontal)
1646- {
1647- X = x - pDock->container.iWidth/2;
1648- Y = y;
1649- }
1650- else
1651- {
1652- Y = x;
1653- X = y - pDock->container.iWidth/2;
1654- }
1655- int w, h;
1656- Icon *icon = cairo_dock_get_pointed_icon (pDock->icons);
1657- if (pDock->iInputState == CAIRO_DOCK_INPUT_AT_REST)
1658- {
1659- w = pDock->iMinDockWidth;
1660- h = pDock->iMinDockHeight;
1661-
1662- if (X <= -w/2 || X >= w/2)
1663- return FALSE; // on n'accepte pas le drop.
1664- if (pDock->container.bDirectionUp)
1665- {
1666- if (Y < pDock->container.iHeight - h || Y >= pDock->container.iHeight)
1667- return FALSE; // on n'accepte pas le drop.
1668- }
1669- else
1670- {
1671- if (Y < 0 || Y > h)
1672- return FALSE; // on n'accepte pas le drop.
1673- }
1674- }
1675- else if (pDock->iInputState == CAIRO_DOCK_INPUT_HIDDEN)
1676- {
1677- return FALSE; // on n'accepte pas le drop.
1678- }
1679-
1680- //g_print ("take the drop\n");
1681- gdk_drag_status (dc, GDK_ACTION_COPY, time);
1682- return TRUE; // on accepte le drop.
1683-}
1684-
1685-void cairo_dock_on_drag_leave (GtkWidget *pWidget, GdkDragContext *dc, guint time, CairoDock *pDock)
1686-{
1687- //g_print ("stop dragging 1\n");
1688- Icon *icon = cairo_dock_get_pointed_icon (pDock->icons);
1689- if ((icon && icon->pSubDock) || pDock->iRefCount > 0) // on retarde l'evenement, car il arrive avant le leave-event, et donc le sous-dock se cache avant qu'on puisse y entrer.
1690- {
1691- cd_debug (">>> on attend...");
1692- while (gtk_events_pending ()) // on laisse le temps au signal d'entree dans le sous-dock d'etre traite, de facon a avoir un start-dragging avant de quitter cette fonction.
1693- gtk_main_iteration ();
1694- cd_debug (">>> pDock->container.bInside : %d", pDock->container.bInside);
1695- }
1696- //g_print ("stop dragging 2\n");
1697- s_bWaitForData = FALSE;
1698- pDock->bIsDragging = FALSE;
1699- s_bCouldDrop = pDock->bCanDrop;
1700- pDock->bCanDrop = FALSE;
1701- //cairo_dock_stop_marking_icons (pDock);
1702- pDock->iAvoidingMouseIconType = -1;
1703-
1704- // emit a leave-event signal, since we don't get one if we leave the window too quickly (!)
1705- if (pDock->iSidLeaveDemand == 0)
1706- {
1707- pDock->iSidLeaveDemand = g_timeout_add (MAX (myDocksParam.iLeaveSubDockDelay, 330), (GSourceFunc) _emit_leave_signal_delayed, (gpointer) pDock); // emit with a delay, so that we can leave and enter the dock for a few ms without making it hide.
1708- }
1709- // emulate a motion event so that the mouse position is up-to-date (which is not the case if we leave the window too quickly).
1710- cairo_dock_on_motion_notify (pWidget, NULL, pDock);
1711-}
1712-
1713-
1714-static void _cairo_dock_show_dock_at_mouse (CairoDock *pDock)
1715-{
1716- g_return_if_fail (pDock != NULL);
1717- gldi_container_update_mouse_position (CAIRO_CONTAINER (pDock));
1718-
1719- ///pDock->iGapX = pDock->container.iWindowPositionX + iMouseX - g_desktopGeometry.iScreenWidth[pDock->container.bIsHorizontal] * pDock->fAlign;
1720- ///pDock->iGapY = (pDock->container.bDirectionUp ? g_desktopGeometry.iScreenHeight[pDock->container.bIsHorizontal] - (pDock->container.iWindowPositionY + iMouseY) : pDock->container.iWindowPositionY + iMouseY);
1721- pDock->iGapX = pDock->container.iWindowPositionX + pDock->container.iMouseX - (g_desktopGeometry.iScreenWidth[pDock->container.bIsHorizontal] - pDock->container.iWidth) * pDock->fAlign - pDock->container.iWidth/2 - pDock->iScreenOffsetX;
1722- pDock->iGapY = (pDock->container.bDirectionUp ? g_desktopGeometry.iScreenHeight[pDock->container.bIsHorizontal] - (pDock->container.iWindowPositionY + pDock->container.iMouseY) : pDock->container.iWindowPositionY + pDock->container.iMouseY) - pDock->iScreenOffsetY;
1723- cd_debug (" => %d;%d", g_pMainDock->iGapX, g_pMainDock->iGapY);
1724-
1725- int iNewPositionX, iNewPositionY;
1726- cairo_dock_get_window_position_at_balance (pDock,
1727- pDock->container.iWidth, pDock->container.iHeight,
1728- &iNewPositionX, &iNewPositionY);
1729- cd_debug (" ==> %d;%d", iNewPositionX, iNewPositionY);
1730- if (iNewPositionX < 0)
1731- iNewPositionX = 0;
1732- else if (iNewPositionX + pDock->container.iWidth > g_desktopGeometry.iScreenWidth[pDock->container.bIsHorizontal])
1733- iNewPositionX = g_desktopGeometry.iScreenWidth[pDock->container.bIsHorizontal] - pDock->container.iWidth;
1734-
1735- if (iNewPositionY < 0)
1736- iNewPositionY = 0;
1737- else if (iNewPositionY + pDock->container.iHeight > g_desktopGeometry.iScreenHeight[pDock->container.bIsHorizontal])
1738- iNewPositionY = g_desktopGeometry.iScreenHeight[pDock->container.bIsHorizontal] - pDock->container.iHeight;
1739-
1740- gtk_window_move (GTK_WINDOW (pDock->container.pWidget),
1741- (pDock->container.bIsHorizontal ? iNewPositionX : iNewPositionY),
1742- (pDock->container.bIsHorizontal ? iNewPositionY : iNewPositionX));
1743- gtk_widget_show (pDock->container.pWidget);
1744-}
1745-void cairo_dock_raise_from_shortcut (const char *cKeyShortcut, gpointer data)
1746-{
1747- if (gldi_container_is_visible (CAIRO_CONTAINER (g_pMainDock)))
1748- {
1749- gtk_widget_hide (g_pMainDock->container.pWidget);
1750- }
1751- else
1752- {
1753- _cairo_dock_show_dock_at_mouse (g_pMainDock);
1754- }
1755- if (g_pMainDock->iVisibility != CAIRO_DOCK_VISI_SHORTKEY) // could happen if we set the shortkey outside of the Visibility module.
1756- g_pMainDock->iVisibility == CAIRO_DOCK_VISI_SHORTKEY;
1757- s_bHideAfterShortcut = FALSE;
1758-}
1759-
1760-void cairo_dock_hide_after_shortcut (void)
1761-{
1762- if (s_bHideAfterShortcut && gldi_container_is_visible (CAIRO_CONTAINER (g_pMainDock)))
1763- {
1764- gtk_widget_hide (g_pMainDock->container.pWidget);
1765- s_bHideAfterShortcut = FALSE;
1766- }
1767-}
1768
1769=== removed file '.pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-dock-factory.c'
1770--- .pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-dock-factory.c 2012-04-25 01:29:46 +0000
1771+++ .pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-dock-factory.c 1970-01-01 00:00:00 +0000
1772@@ -1,1255 +0,0 @@
1773-/**
1774-* This file is a part of the Cairo-Dock project
1775-*
1776-* Copyright : (C) see the 'copyright' file.
1777-* E-mail : see the 'copyright' file.
1778-*
1779-* This program is free software; you can redistribute it and/or
1780-* modify it under the terms of the GNU General Public License
1781-* as published by the Free Software Foundation; either version 3
1782-* of the License, or (at your option) any later version.
1783-*
1784-* This program is distributed in the hope that it will be useful,
1785-* but WITHOUT ANY WARRANTY; without even the implied warranty of
1786-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1787-* GNU General Public License for more details.
1788-* You should have received a copy of the GNU General Public License
1789-* along with this program. If not, see <http://www.gnu.org/licenses/>.
1790-*/
1791-
1792-#include <math.h>
1793-#include <string.h>
1794-#include <stdio.h>
1795-#include <stdlib.h>
1796-
1797-#include <glib/gstdio.h>
1798-#include <gtk/gtk.h>
1799-#include <gdk/gdkx.h>
1800-
1801-#include <cairo.h>
1802-
1803-#include <X11/extensions/Xrender.h>
1804-#include <X11/extensions/shape.h>
1805-#include <GL/gl.h>
1806-#include <GL/glu.h>
1807-#include <GL/glx.h>
1808-
1809-#include "cairo-dock-draw.h"
1810-#include "cairo-dock-applications-manager.h"
1811-#include "cairo-dock-image-buffer.h"
1812-#include "cairo-dock-module-factory.h"
1813-#include "cairo-dock-callbacks.h"
1814-#include "cairo-dock-icon-factory.h"
1815-#include "cairo-dock-icon-facility.h"
1816-#include "cairo-dock-separator-manager.h"
1817-#include "cairo-dock-launcher-manager.h"
1818-#include "cairo-dock-backends-manager.h" // myBackendsParam.fSubDockSizeRatio
1819-#include "cairo-dock-X-utilities.h"
1820-#include "cairo-dock-log.h"
1821-#include "cairo-dock-application-facility.h" // cairo_dock_detach_appli
1822-#include "cairo-dock-dialog-manager.h" // cairo_dock_replace_all_dialogs
1823-#include "cairo-dock-keyfile-utilities.h"
1824-#include "cairo-dock-dock-manager.h"
1825-#include "cairo-dock-notifications.h"
1826-#include "cairo-dock-class-manager.h"
1827-#include "cairo-dock-animations.h"
1828-#include "cairo-dock-container.h"
1829-#include "cairo-dock-desktop-file-factory.h"
1830-#include "cairo-dock-themes-manager.h"
1831-#include "cairo-dock-gui-manager.h"
1832-#include "cairo-dock-dock-facility.h"
1833-#include "cairo-dock-desktop-file-factory.h"
1834-#include "cairo-dock-draw-opengl.h"
1835-#include "cairo-dock-opengl.h"
1836-#include "cairo-dock-dock-factory.h"
1837-
1838-extern gchar *g_cCurrentLaunchersPath;
1839-
1840-extern CairoDockGLConfig g_openglConfig;
1841-extern CairoDockHidingEffect *g_pHidingBackend;
1842-extern gboolean g_bUseOpenGL;
1843-
1844-
1845-static gboolean _cairo_dock_grow_up (CairoDock *pDock)
1846-{
1847- //g_print ("%s (%d ; %2f ; bInside:%d)\n", __func__, pDock->iMagnitudeIndex, pDock->fFoldingFactor, pDock->container.bInside);
1848-
1849- pDock->iMagnitudeIndex += myBackendsParam.iGrowUpInterval;
1850- if (pDock->iMagnitudeIndex > CAIRO_DOCK_NB_MAX_ITERATIONS)
1851- pDock->iMagnitudeIndex = CAIRO_DOCK_NB_MAX_ITERATIONS;
1852-
1853- if (pDock->fFoldingFactor != 0)
1854- {
1855- int iAnimationDeltaT = cairo_dock_get_animation_delta_t (pDock);
1856- pDock->fFoldingFactor -= (double) iAnimationDeltaT / myBackendsParam.iUnfoldingDuration;
1857- if (pDock->fFoldingFactor < 0)
1858- pDock->fFoldingFactor = 0;
1859- }
1860-
1861- gldi_container_update_mouse_position (CAIRO_CONTAINER (pDock));
1862-
1863- Icon *pLastPointedIcon = cairo_dock_get_pointed_icon (pDock->icons);
1864- Icon *pPointedIcon = cairo_dock_calculate_dock_icons (pDock);
1865- if (! pDock->bIsGrowingUp)
1866- return FALSE;
1867-
1868- if (pLastPointedIcon != pPointedIcon && pDock->container.bInside)
1869- cairo_dock_on_change_icon (pLastPointedIcon, pPointedIcon, pDock);
1870-
1871- if (pDock->iMagnitudeIndex == CAIRO_DOCK_NB_MAX_ITERATIONS && pDock->fFoldingFactor == 0) // fin de grossissement et de depliage.
1872- {
1873- /// TODO: check doing this in update_dock_size directly...
1874- /**if (pDock->bWMIconsNeedUpdate)
1875- {
1876- cairo_dock_trigger_set_WM_icons_geometry (pDock);
1877- pDock->bWMIconsNeedUpdate = FALSE;
1878- }*/
1879-
1880- cairo_dock_replace_all_dialogs ();
1881- return FALSE;
1882- }
1883- else
1884- return TRUE;
1885-}
1886-
1887-static gboolean _cairo_dock_shrink_down (CairoDock *pDock)
1888-{
1889- //g_print ("%s (%d, %f, %f)\n", __func__, pDock->iMagnitudeIndex, pDock->fFoldingFactor, pDock->fDecorationsOffsetX);
1890- //\_________________ On fait decroitre la magnitude du dock.
1891- int iPrevMagnitudeIndex = pDock->iMagnitudeIndex;
1892- pDock->iMagnitudeIndex -= myBackendsParam.iShrinkDownInterval;
1893- if (pDock->iMagnitudeIndex < 0)
1894- pDock->iMagnitudeIndex = 0;
1895-
1896- //\_________________ On replie le dock.
1897- if (pDock->fFoldingFactor != 0 && pDock->fFoldingFactor != 1)
1898- {
1899- int iAnimationDeltaT = cairo_dock_get_animation_delta_t (pDock);
1900- pDock->fFoldingFactor += (double) iAnimationDeltaT / myBackendsParam.iUnfoldingDuration;
1901- if (pDock->fFoldingFactor > 1)
1902- pDock->fFoldingFactor = 1;
1903- }
1904-
1905- //\_________________ On remet les decorations a l'equilibre.
1906- pDock->fDecorationsOffsetX *= .8;
1907- if (fabs (pDock->fDecorationsOffsetX) < 3)
1908- pDock->fDecorationsOffsetX = 0.;
1909-
1910- //\_________________ On recupere la position de la souris manuellement (car a priori on est hors du dock).
1911- gldi_container_update_mouse_position (CAIRO_CONTAINER (pDock)); // ce n'est pas le motion_notify qui va nous donner des coordonnees en dehors du dock, et donc le fait d'etre dedans va nous faire interrompre le shrink_down et re-grossir, du coup il faut le faire ici. L'inconvenient, c'est que quand on sort par les cotes, il n'y a soudain plus d'icone pointee, et donc le dock devient tout plat subitement au lieu de le faire doucement. Heureusement j'ai trouve une astuce. ^_^
1912-
1913- //\_________________ On recalcule les icones.
1914- ///if (iPrevMagnitudeIndex != 0)
1915- {
1916- cairo_dock_calculate_dock_icons (pDock);
1917- if (! pDock->bIsShrinkingDown)
1918- return FALSE;
1919-
1920- ///cairo_dock_replace_all_dialogs ();
1921- }
1922-
1923- if (pDock->iMagnitudeIndex == 0 && (pDock->fFoldingFactor == 0 || pDock->fFoldingFactor == 1)) // on est arrive en bas.
1924- {
1925- //g_print ("equilibre atteint (%d)\n", pDock->container.bInside);
1926- if (! pDock->container.bInside) // on peut etre hors des icones sans etre hors de la fenetre.
1927- {
1928- //g_print ("rideau !\n");
1929-
1930- //\__________________ On repasse derriere si on etait devant.
1931- if (pDock->iVisibility == CAIRO_DOCK_VISI_KEEP_BELOW && ! pDock->bIsBelow)
1932- cairo_dock_pop_down (pDock);
1933-
1934- //\__________________ On se redimensionne en taille normale.
1935- if (! pDock->bAutoHide && pDock->iRefCount == 0 && ! pDock->bMenuVisible) // fin de shrink sans auto-hide => taille normale.
1936- {
1937- //g_print ("taille normale (%x; %d)\n", pDock->pShapeBitmap , pDock->iInputState);
1938- if (pDock->pShapeBitmap && pDock->iInputState != CAIRO_DOCK_INPUT_AT_REST)
1939- {
1940- //g_print ("+++ input shape at rest on end shrinking\n");
1941- cairo_dock_set_input_shape_at_rest (pDock);
1942- pDock->iInputState = CAIRO_DOCK_INPUT_AT_REST;
1943- ///cairo_dock_replace_all_dialogs ();
1944- }
1945- }
1946-
1947- //\__________________ On se cache si sous-dock.
1948- if (pDock->iRefCount > 0)
1949- {
1950- //g_print ("on cache ce sous-dock en sortant par lui\n");
1951- gtk_widget_hide (pDock->container.pWidget);
1952- cairo_dock_hide_parent_dock (pDock);
1953- }
1954- cairo_dock_hide_after_shortcut ();
1955- }
1956- else
1957- {
1958- cairo_dock_calculate_dock_icons (pDock); // relance le grossissement si on est dedans.
1959- }
1960- if (!pDock->bIsGrowingUp)
1961- cairo_dock_replace_all_dialogs ();
1962- return (!pDock->bIsGrowingUp && (pDock->fDecorationsOffsetX != 0 || (pDock->fFoldingFactor != 0 && pDock->fFoldingFactor != 1)));
1963- }
1964- else
1965- {
1966- return (!pDock->bIsGrowingUp);
1967- }
1968-}
1969-
1970-static gboolean _cairo_dock_hide (CairoDock *pDock)
1971-{
1972- //g_print ("%s (%d, %.2f, %.2f)\n", __func__, pDock->iMagnitudeIndex, pDock->fHideOffset, pDock->fPostHideOffset);
1973-
1974- if (pDock->fHideOffset < 1) // the hiding animation is running.
1975- {
1976- pDock->fHideOffset += 1./myBackendsParam.iHideNbSteps;
1977- if (pDock->fHideOffset > .99) // fin d'anim.
1978- {
1979- pDock->fHideOffset = 1;
1980-
1981- //g_print ("on arrete le cachage\n");
1982- gboolean bVisibleIconsPresent = FALSE;
1983- Icon *pIcon;
1984- GList *ic;
1985- for (ic = pDock->icons; ic != NULL; ic = ic->next)
1986- {
1987- pIcon = ic->data;
1988- if (pIcon->fInsertRemoveFactor != 0) // on accelere l'animation d'apparition/disparition.
1989- {
1990- if (pIcon->fInsertRemoveFactor > 0)
1991- pIcon->fInsertRemoveFactor = 0.05;
1992- else
1993- pIcon->fInsertRemoveFactor = - 0.05;
1994- }
1995-
1996- if (! pIcon->bIsDemandingAttention && ! pIcon->bAlwaysVisible)
1997- cairo_dock_stop_icon_animation (pIcon); // s'il y'a une autre animation en cours, on l'arrete.
1998- else
1999- bVisibleIconsPresent = TRUE;
2000- }
2001-
2002- pDock->pRenderer->calculate_icons (pDock);
2003- ///pDock->fFoldingFactor = (myBackendsParam.bAnimateOnAutoHide ? .99 : 0.); // on arme le depliage.
2004- cairo_dock_allow_entrance (pDock);
2005-
2006- cairo_dock_replace_all_dialogs ();
2007-
2008- if (bVisibleIconsPresent) // il y'a des icones a montrer progressivement, on reste dans la boucle.
2009- {
2010- pDock->fPostHideOffset = 0.05;
2011- return TRUE;
2012- }
2013- else
2014- {
2015- pDock->fPostHideOffset = 1; // pour que les icones demandant l'attention plus tard soient visibles.
2016- return FALSE;
2017- }
2018- }
2019- }
2020- else if (pDock->fPostHideOffset > 0 && pDock->fPostHideOffset < 1) // the post-hiding animation is running.
2021- {
2022- pDock->fPostHideOffset += 1./myBackendsParam.iHideNbSteps;
2023- if (pDock->fPostHideOffset > .99)
2024- {
2025- pDock->fPostHideOffset = 1.;
2026- return FALSE;
2027- }
2028- }
2029- else // else no hiding animation is running.
2030- return FALSE;
2031- return TRUE;
2032-}
2033-
2034-static gboolean _cairo_dock_show (CairoDock *pDock)
2035-{
2036- pDock->fHideOffset -= 1./myBackendsParam.iUnhideNbSteps;
2037- if (pDock->fHideOffset < 0.01)
2038- {
2039- pDock->fHideOffset = 0;
2040- cairo_dock_allow_entrance (pDock);
2041- cairo_dock_replace_all_dialogs (); // we need it here so that a modal dialog is replaced when the dock unhides (else it would stay behind).
2042- return FALSE;
2043- }
2044- return TRUE;
2045-}
2046-
2047-static gboolean _cairo_dock_handle_inserting_removing_icons (CairoDock *pDock)
2048-{
2049- gboolean bRecalculateIcons = FALSE;
2050- GList* ic = pDock->icons, *next_ic;
2051- Icon *pIcon;
2052- while (ic != NULL)
2053- {
2054- pIcon = ic->data;
2055- next_ic = ic->next;
2056- if (pIcon->fInsertRemoveFactor == (gdouble)0.05)
2057- {
2058- gboolean bIsAppli = CAIRO_DOCK_IS_NORMAL_APPLI (pIcon);
2059- if (bIsAppli && pIcon->iLastCheckTime != -1) // c'est une icone d'appli non vieille qui disparait, elle s'est probablement cachee => on la detache juste.
2060- {
2061- cd_message ("cette (%s) appli est toujours valide, on la detache juste", pIcon->cName);
2062- pIcon->fInsertRemoveFactor = 0.; // on le fait avant le reload, sinon l'icone n'est pas rechargee.
2063- if (!pIcon->bIsHidden && myTaskbarParam.bHideVisibleApplis) // on lui remet l'image normale qui servira d'embleme lorsque l'icone sera inseree a nouveau dans le dock.
2064- cairo_dock_reload_icon_image (pIcon, CAIRO_CONTAINER (pDock));
2065- pDock = cairo_dock_detach_appli (pIcon);
2066- if (pDock == NULL) // the dock has been destroyed (empty class sub-dock).
2067- {
2068- cairo_dock_free_icon (pIcon);
2069- return FALSE;
2070- }
2071- }
2072- else
2073- {
2074- cd_message (" - %s va etre supprimee", pIcon->cName);
2075- cairo_dock_remove_icon_from_dock (pDock, pIcon); // enleve le separateur automatique avec; supprime le .desktop et le sous-dock des lanceurs; stoppe les applets; marque le theme.
2076-
2077- if (pIcon->cClass != NULL && pDock == cairo_dock_get_class_subdock (pIcon->cClass)) // appli icon in its class sub-dock => destroy the class sub-dock if it becomes empty (we don't want an empty sub-dock).
2078- {
2079- gboolean bEmptyClassSubDock = cairo_dock_check_class_subdock_is_empty (pDock, pIcon->cClass);
2080- if (bEmptyClassSubDock)
2081- {
2082- cairo_dock_free_icon (pIcon);
2083- return FALSE;
2084- }
2085- }
2086-
2087- cairo_dock_free_icon (pIcon);
2088- }
2089- }
2090- else if (pIcon->fInsertRemoveFactor == (gdouble)-0.05)
2091- {
2092- pIcon->fInsertRemoveFactor = 0; // cela n'arrete pas l'animation, qui peut se poursuivre meme apres que l'icone ait atteint sa taille maximale.
2093- bRecalculateIcons = TRUE;
2094- }
2095- else if (pIcon->fInsertRemoveFactor != 0)
2096- {
2097- bRecalculateIcons = TRUE;
2098- }
2099- ic = next_ic;
2100- }
2101-
2102- if (bRecalculateIcons)
2103- cairo_dock_calculate_dock_icons (pDock);
2104- return TRUE;
2105-}
2106-
2107-static gboolean _cairo_dock_dock_animation_loop (CairoContainer *pContainer)
2108-{
2109- CairoDock *pDock = CAIRO_DOCK (pContainer);
2110- gboolean bContinue = FALSE;
2111- gboolean bUpdateSlowAnimation = FALSE;
2112- pContainer->iAnimationStep ++;
2113- if (pContainer->iAnimationStep * pContainer->iAnimationDeltaT >= CAIRO_DOCK_MIN_SLOW_DELTA_T)
2114- {
2115- bUpdateSlowAnimation = TRUE;
2116- pContainer->iAnimationStep = 0;
2117- pContainer->bKeepSlowAnimation = FALSE;
2118- }
2119-
2120- if (pDock->bIsShrinkingDown)
2121- {
2122- pDock->bIsShrinkingDown = _cairo_dock_shrink_down (pDock);
2123- cairo_dock_redraw_container (CAIRO_CONTAINER (pDock));
2124- bContinue |= pDock->bIsShrinkingDown;
2125- }
2126- if (pDock->bIsGrowingUp)
2127- {
2128- pDock->bIsGrowingUp = _cairo_dock_grow_up (pDock);
2129- cairo_dock_redraw_container (CAIRO_CONTAINER (pDock));
2130- bContinue |= pDock->bIsGrowingUp;
2131- }
2132- if (pDock->bIsHiding)
2133- {
2134- //g_print ("le dock se cache\n");
2135- pDock->bIsHiding = _cairo_dock_hide (pDock);
2136- gtk_widget_queue_draw (pContainer->pWidget); // on n'utilise pas cairo_dock_redraw_container, sinon a la derniere iteration, le dock etant cache, la fonction ne le redessine pas.
2137- bContinue |= pDock->bIsHiding;
2138- }
2139- if (pDock->bIsShowing)
2140- {
2141- pDock->bIsShowing = _cairo_dock_show (pDock);
2142- cairo_dock_redraw_container (CAIRO_CONTAINER (pDock));
2143- bContinue |= pDock->bIsShowing;
2144- }
2145- //g_print (" => %d, %d\n", pDock->bIsShrinkingDown, pDock->bIsGrowingUp);
2146-
2147- double fDockMagnitude = cairo_dock_calculate_magnitude (pDock->iMagnitudeIndex);
2148- gboolean bIconIsAnimating;
2149- gboolean bNoMoreDemandingAttention = FALSE;
2150- Icon *icon;
2151- GList *ic;
2152- for (ic = pDock->icons; ic != NULL; ic = ic->next)
2153- {
2154- icon = ic->data;
2155-
2156- icon->fDeltaYReflection = 0;
2157- if (myIconsParam.fAlphaAtRest != 1)
2158- icon->fAlpha = fDockMagnitude + myIconsParam.fAlphaAtRest * (1 - fDockMagnitude);
2159-
2160- bIconIsAnimating = FALSE;
2161- if (bUpdateSlowAnimation)
2162- {
2163- cairo_dock_notify_on_object (icon, NOTIFICATION_UPDATE_ICON_SLOW, icon, pDock, &bIconIsAnimating);
2164- pContainer->bKeepSlowAnimation |= bIconIsAnimating;
2165- }
2166- cairo_dock_notify_on_object (icon, NOTIFICATION_UPDATE_ICON, icon, pDock, &bIconIsAnimating);
2167-
2168- if ((icon->bIsDemandingAttention || icon->bAlwaysVisible) && cairo_dock_is_hidden (pDock)) // animation d'une icone demandant l'attention dans un dock cache => on force le dessin qui normalement ne se fait pas.
2169- {
2170- gtk_widget_queue_draw (pContainer->pWidget);
2171- }
2172-
2173- bContinue |= bIconIsAnimating;
2174- if (! bIconIsAnimating)
2175- {
2176- icon->iAnimationState = CAIRO_DOCK_STATE_REST;
2177- if (icon->bIsDemandingAttention)
2178- {
2179- icon->bIsDemandingAttention = FALSE;
2180- bNoMoreDemandingAttention = TRUE;
2181- }
2182- }
2183- }
2184- bContinue |= pContainer->bKeepSlowAnimation;
2185-
2186- if (pDock->iVisibility == CAIRO_DOCK_VISI_KEEP_BELOW && bNoMoreDemandingAttention && ! pDock->bIsBelow && ! pContainer->bInside)
2187- {
2188- //g_print ("plus de raison d'etre devant\n");
2189- cairo_dock_pop_down (pDock);
2190- }
2191-
2192- if (! _cairo_dock_handle_inserting_removing_icons (pDock))
2193- {
2194- cd_debug ("ce dock n'a plus de raison d'etre");
2195- return FALSE;
2196- }
2197-
2198- if (bUpdateSlowAnimation)
2199- {
2200- cairo_dock_notify_on_object (pDock, NOTIFICATION_UPDATE_SLOW, pDock, &pContainer->bKeepSlowAnimation);
2201- }
2202- cairo_dock_notify_on_object (pDock, NOTIFICATION_UPDATE, pDock, &bContinue);
2203-
2204- if (! bContinue && ! pContainer->bKeepSlowAnimation)
2205- {
2206- pContainer->iSidGLAnimation = 0;
2207- return FALSE;
2208- }
2209- else
2210- return TRUE;
2211-}
2212-
2213-static gboolean _on_dock_destroyed (GtkWidget *menu, CairoContainer *pContainer);
2214-static void _on_menu_deactivated (GtkMenuShell *menu, CairoDock *pDock)
2215-{
2216- //g_print ("\n+++ %s ()\n\n", __func__);
2217- g_return_if_fail (CAIRO_DOCK_IS_DOCK (pDock));
2218- pDock->bMenuVisible = FALSE;
2219- cairo_dock_emit_leave_signal (CAIRO_CONTAINER (pDock));
2220-}
2221-static void _on_menu_destroyed (GtkWidget *menu, CairoDock *pDock)
2222-{
2223- //g_print ("\n+++ %s ()\n\n", __func__);
2224- cairo_dock_remove_notification_func_on_object (pDock,
2225- NOTIFICATION_DESTROY,
2226- (CairoDockNotificationFunc) _on_dock_destroyed,
2227- menu);
2228-}
2229-static gboolean _on_dock_destroyed (GtkWidget *menu, CairoContainer *pContainer)
2230-{
2231- //g_print ("\n+++ %s ()\n\n", __func__);
2232- g_signal_handlers_disconnect_matched
2233- (menu,
2234- G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
2235- 0,
2236- 0,
2237- NULL,
2238- _on_menu_deactivated,
2239- pContainer);
2240- g_signal_handlers_disconnect_matched
2241- (menu,
2242- G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
2243- 0,
2244- 0,
2245- NULL,
2246- _on_menu_destroyed,
2247- pContainer);
2248-}
2249-static void _setup_menu (CairoContainer *pContainer, Icon *pIcon, GtkWidget *pMenu)
2250-{
2251- // keep the dock visible
2252- CAIRO_DOCK (pContainer)->bMenuVisible = TRUE;
2253-
2254- // connect signals
2255- if (g_signal_handler_find (pMenu,
2256- G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
2257- 0,
2258- 0,
2259- NULL,
2260- _on_menu_deactivated,
2261- pContainer) == 0) // on evite de connecter 2 fois ce signal, donc la fonction est appelable plusieurs fois sur un meme menu.
2262- {
2263- // when the menu is deactivated, hide the dock back if necessary.
2264- g_signal_connect (G_OBJECT (pMenu),
2265- "deactivate",
2266- G_CALLBACK (_on_menu_deactivated),
2267- pContainer);
2268- // when the menu is destroyed, remove the 'destroyed' notification on the dock.
2269- g_signal_connect (G_OBJECT (pMenu),
2270- "destroy",
2271- G_CALLBACK (_on_menu_destroyed),
2272- pContainer);
2273- // when the dock is destroyed, remove the 2 signals on the menu.
2274- cairo_dock_register_notification_on_object (pContainer,
2275- NOTIFICATION_DESTROY,
2276- (CairoDockNotificationFunc) _on_dock_destroyed,
2277- CAIRO_DOCK_RUN_AFTER, pMenu); // the menu can stay alive even if the container disappear, so we need to ensure we won't call the callbacks then.
2278- }
2279-}
2280-
2281-
2282-CairoDock *cairo_dock_new_dock (void)
2283-{
2284- //\__________________ On cree un dock.
2285- CairoDock *pDock = g_new0 (CairoDock, 1);
2286- pDock->container.iType = CAIRO_DOCK_TYPE_DOCK;
2287-
2288- pDock->iRefCount = 0; // c'est un dock racine par defaut.
2289- pDock->iAvoidingMouseIconType = -1;
2290- pDock->fFlatDockWidth = - myIconsParam.iIconGap;
2291- ///pDock->container.iMouseX = -1; // utile ?
2292- ///pDock->container.iMouseY = -1;
2293- pDock->fMagnitudeMax = 1.;
2294- pDock->fPostHideOffset = 1.;
2295- pDock->iInputState = CAIRO_DOCK_INPUT_AT_REST; // le dock est cree au repos. La zone d'input sera mis en place lors du configure.
2296-
2297- pDock->container.iface.animation_loop = _cairo_dock_dock_animation_loop;
2298- pDock->container.iface.setup_menu = _setup_menu;
2299-
2300- //\__________________ On cree la fenetre GTK.
2301- GtkWidget *pWindow = cairo_dock_init_container (CAIRO_CONTAINER (pDock));
2302- ///cairo_dock_install_notifications_on_object (pDock, NB_NOTIFICATIONS_DOCKS);
2303- gldi_object_set_manager (GLDI_OBJECT (pDock), GLDI_MANAGER (&myDocksMgr));
2304- gtk_container_set_border_width (GTK_CONTAINER (pWindow), 0);
2305- gtk_window_set_gravity (GTK_WINDOW (pWindow), GDK_GRAVITY_STATIC);
2306- gtk_window_set_type_hint (GTK_WINDOW (pWindow), GDK_WINDOW_TYPE_HINT_DOCK);
2307- gtk_window_set_title (GTK_WINDOW (pWindow), "cairo-dock");
2308-
2309-
2310- cairo_dock_register_notification_on_object (pDock,
2311- NOTIFICATION_RENDER,
2312- (CairoDockNotificationFunc) cairo_dock_render_dock_notification,
2313- CAIRO_DOCK_RUN_FIRST, NULL);
2314-
2315- //\__________________ On connecte les evenements a la fenetre.
2316- gtk_widget_add_events (pWindow,
2317- GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_SCROLL_MASK |
2318- GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
2319- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK);
2320-
2321- g_signal_connect (G_OBJECT (pWindow),
2322- #if (GTK_MAJOR_VERSION < 3)
2323- "expose-event",
2324- #else
2325- "draw",
2326- #endif
2327- G_CALLBACK (cairo_dock_on_expose),
2328- pDock);
2329- g_signal_connect (G_OBJECT (pWindow),
2330- "configure-event",
2331- G_CALLBACK (cairo_dock_on_configure),
2332- pDock);
2333- g_signal_connect (G_OBJECT (pWindow),
2334- "key-release-event",
2335- G_CALLBACK (cairo_dock_on_key_release),
2336- pDock);
2337- g_signal_connect (G_OBJECT (pWindow),
2338- "key-press-event",
2339- G_CALLBACK (cairo_dock_on_key_release),
2340- pDock);
2341- g_signal_connect (G_OBJECT (pWindow),
2342- "button-press-event",
2343- G_CALLBACK (cairo_dock_on_button_press),
2344- pDock);
2345- g_signal_connect (G_OBJECT (pWindow),
2346- "button-release-event",
2347- G_CALLBACK (cairo_dock_on_button_press),
2348- pDock);
2349- g_signal_connect (G_OBJECT (pWindow),
2350- "scroll-event",
2351- G_CALLBACK (cairo_dock_on_scroll),
2352- pDock);
2353- g_signal_connect (G_OBJECT (pWindow),
2354- "motion-notify-event",
2355- G_CALLBACK (cairo_dock_on_motion_notify),
2356- pDock);
2357- g_signal_connect (G_OBJECT (pWindow),
2358- "enter-notify-event",
2359- G_CALLBACK (cairo_dock_on_enter_notify),
2360- pDock);
2361- g_signal_connect (G_OBJECT (pWindow),
2362- "leave-notify-event",
2363- G_CALLBACK (cairo_dock_on_leave_notify),
2364- pDock);
2365- gldi_container_enable_drop (CAIRO_CONTAINER (pDock),
2366- G_CALLBACK (cairo_dock_on_drag_data_received),
2367- pDock);
2368- g_signal_connect (G_OBJECT (pWindow),
2369- "drag-motion",
2370- G_CALLBACK (cairo_dock_on_drag_motion),
2371- pDock);
2372- g_signal_connect (G_OBJECT (pWindow),
2373- "drag-leave",
2374- G_CALLBACK (cairo_dock_on_drag_leave),
2375- pDock);
2376- /*g_signal_connect (G_OBJECT (pWindow),
2377- "drag-drop",
2378- G_CALLBACK (cairo_dock_on_drag_drop),
2379- pDock);*/
2380-
2381- gtk_window_get_size (GTK_WINDOW (pWindow), &pDock->container.iWidth, &pDock->container.iHeight); // ca n'est que la taille initiale allouee par GTK.
2382- gtk_widget_show_all (pWindow);
2383- #if (GTK_MAJOR_VERSION < 3)
2384- gdk_window_set_back_pixmap (pWindow->window, NULL, FALSE);
2385- #else
2386- gdk_window_set_background_pattern (gldi_container_get_gdk_window (CAIRO_CONTAINER (pDock)), NULL);
2387- #endif
2388- return pDock;
2389-}
2390-
2391-void cairo_dock_free_dock (CairoDock *pDock)
2392-{
2393- if (pDock->iSidUnhideDelayed != 0)
2394- g_source_remove (pDock->iSidUnhideDelayed);
2395- if (pDock->iSidHideBack != 0)
2396- g_source_remove (pDock->iSidHideBack);
2397- if (pDock->iSidMoveResize != 0)
2398- g_source_remove (pDock->iSidMoveResize);
2399- if (pDock->iSidLeaveDemand != 0)
2400- g_source_remove (pDock->iSidLeaveDemand);
2401- if (pDock->iSidUpdateWMIcons != 0)
2402- g_source_remove (pDock->iSidUpdateWMIcons);
2403- if (pDock->iSidLoadBg != 0)
2404- g_source_remove (pDock->iSidLoadBg);
2405- if (pDock->iSidDestroyEmptyDock != 0)
2406- g_source_remove (pDock->iSidDestroyEmptyDock);
2407- if (pDock->iSidTestMouseOutside != 0)
2408- g_source_remove (pDock->iSidTestMouseOutside);
2409- if (pDock->iSidUpdateDockSize != 0)
2410- g_source_remove (pDock->iSidUpdateDockSize);
2411-
2412- GList *icons = pDock->icons;
2413- pDock->icons = NULL; // remove the icons first, to avoid any use of 'icons' in the 'destroy' callbacks.
2414- g_list_foreach (icons, (GFunc) cairo_dock_free_icon, NULL);
2415- g_list_free (icons);
2416-
2417- if (pDock->pShapeBitmap != NULL)
2418- gldi_shape_destroy (pDock->pShapeBitmap);
2419-
2420- if (pDock->pHiddenShapeBitmap != NULL)
2421- gldi_shape_destroy (pDock->pHiddenShapeBitmap);
2422-
2423- if (pDock->pActiveShapeBitmap != NULL)
2424- gldi_shape_destroy (pDock->pActiveShapeBitmap);
2425-
2426- if (pDock->pRenderer != NULL && pDock->pRenderer->free_data != NULL)
2427- {
2428- pDock->pRenderer->free_data (pDock);
2429- }
2430-
2431- g_free (pDock->cRendererName);
2432-
2433- g_free (pDock->cBgImagePath);
2434- cairo_dock_unload_image_buffer (&pDock->backgroundBuffer);
2435-
2436- if (pDock->iFboId != 0)
2437- glDeleteFramebuffersEXT (1, &pDock->iFboId);
2438- if (pDock->iRedirectedTexture != 0)
2439- _cairo_dock_delete_texture (pDock->iRedirectedTexture);
2440-
2441- cairo_dock_finish_container (CAIRO_CONTAINER (pDock)); // -> NOTIFICATION_DESTROY
2442-
2443- g_free (pDock);
2444-}
2445-
2446-void cairo_dock_make_sub_dock (CairoDock *pDock, CairoDock *pParentDock, const gchar *cRendererName)
2447-{
2448- //\__________________ set sub-dock flag
2449- pDock->iRefCount = 1;
2450- gtk_window_set_title (GTK_WINDOW (pDock->container.pWidget), "cairo-dock-sub");
2451-
2452- //\__________________ set the orientation relatively to the parent dock
2453- pDock->container.bIsHorizontal = pParentDock->container.bIsHorizontal;
2454- pDock->container.bDirectionUp = pParentDock->container.bDirectionUp;
2455- pDock->iScreenOffsetX = pParentDock->iScreenOffsetX;
2456- pDock->iScreenOffsetY = pParentDock->iScreenOffsetY;
2457-
2458- //\__________________ set a renderer
2459- cairo_dock_set_renderer (pDock, cRendererName);
2460-
2461- //\__________________ update the icons size and the ratio.
2462- double fPrevRatio = pDock->container.fRatio;
2463- pDock->container.fRatio = MIN (pDock->container.fRatio, myBackendsParam.fSubDockSizeRatio);
2464- pDock->iIconSize = pParentDock->iIconSize;
2465-
2466- Icon *icon;
2467- GList *ic;
2468- pDock->fFlatDockWidth = - myIconsParam.iIconGap;
2469- for (ic = pDock->icons; ic != NULL; ic = ic->next)
2470- {
2471- icon = ic->data;
2472- icon->fWidth = icon->fHeight = icon->iImageWidth = icon->iImageHeight = 0; // no request
2473- cairo_dock_set_icon_size_in_dock (pDock, icon);
2474- pDock->fFlatDockWidth += icon->fWidth + myIconsParam.iIconGap;
2475- }
2476- pDock->iMaxIconHeight *= pDock->container.fRatio / fPrevRatio;
2477-
2478- //\__________________ remove any input shape
2479- if (pDock->pShapeBitmap != NULL)
2480- {
2481- gldi_shape_destroy (pDock->pShapeBitmap);
2482- pDock->pShapeBitmap = NULL;
2483- if (pDock->iInputState != CAIRO_DOCK_INPUT_ACTIVE)
2484- {
2485- cairo_dock_set_input_shape_active (pDock);
2486- pDock->iInputState = CAIRO_DOCK_INPUT_ACTIVE;
2487- }
2488- }
2489-
2490- //\__________________ hide the dock
2491- pDock->bAutoHide = FALSE;
2492- gtk_widget_hide (pDock->container.pWidget);
2493-
2494- ///cairo_dock_update_dock_size (pDock);
2495-}
2496-
2497-
2498-void cairo_dock_insert_icon_in_dock_full (Icon *icon, CairoDock *pDock, gboolean bAnimated, gboolean bInsertSeparator, GCompareFunc pCompareFunc)
2499-{
2500- //g_print ("%s (%s)\n", __func__, icon->cName);
2501- g_return_if_fail (icon != NULL);
2502- if (g_list_find (pDock->icons, icon) != NULL) // elle est deja dans ce dock.
2503- return ;
2504- if (icon->pContainer != NULL)
2505- {
2506- cd_warning ("This icon (%s) is already inside a container !", icon->cName);
2507- }
2508-
2509- //\______________ On regarde si on doit inserer un separateur.
2510- gboolean bSeparatorNeeded = FALSE;
2511- if (bInsertSeparator && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon))
2512- {
2513- Icon *pSameTypeIcon = cairo_dock_get_first_icon_of_group (pDock->icons, icon->iGroup);
2514- if (pSameTypeIcon == NULL && pDock->icons != NULL)
2515- {
2516- bSeparatorNeeded = TRUE;
2517- //g_print ("separateur necessaire\n");
2518- }
2519- }
2520-
2521- //\______________ On insere l'icone a sa place dans la liste.
2522- if (icon->fOrder == CAIRO_DOCK_LAST_ORDER)
2523- {
2524- Icon *pLastIcon = cairo_dock_get_last_icon_of_order (pDock->icons, icon->iGroup);
2525- if (pLastIcon != NULL)
2526- icon->fOrder = pLastIcon->fOrder + 1;
2527- else
2528- icon->fOrder = 1;
2529- }
2530-
2531- if (pCompareFunc == NULL)
2532- pCompareFunc = (GCompareFunc) cairo_dock_compare_icons_order;
2533- pDock->icons = g_list_insert_sorted (pDock->icons,
2534- icon,
2535- pCompareFunc);
2536- cairo_dock_set_icon_container (icon, pDock);
2537-
2538- //\______________ set the icon size, now that it's inside a container.
2539- int wi = icon->iImageWidth, hi = icon->iImageHeight;
2540- cairo_dock_set_icon_size_in_dock (pDock, icon);
2541-
2542- if (wi != icon->iImageWidth || hi != icon->iImageHeight) // if size has changed, reload the buffers
2543- cairo_dock_trigger_load_icon_buffers (icon);
2544-
2545- pDock->fFlatDockWidth += myIconsParam.iIconGap + icon->fWidth;
2546- if (! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon))
2547- pDock->iMaxIconHeight = MAX (pDock->iMaxIconHeight, icon->fHeight);
2548-
2549- //\______________ On insere un separateur si necessaire.
2550- if (bSeparatorNeeded)
2551- {
2552- // insert a separator after if needed
2553- Icon *pNextIcon = cairo_dock_get_next_icon (pDock->icons, icon);
2554- if (pNextIcon != NULL && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pNextIcon))
2555- {
2556- int iSeparatorGroup = cairo_dock_get_icon_order (icon) +
2557- (cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pNextIcon) ? 0 : 1); // for separators, group = order.
2558- double fOrder = (cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pNextIcon) ? (icon->fOrder + pNextIcon->fOrder) / 2 : 0);
2559- cairo_dock_insert_automatic_separator_in_dock (iSeparatorGroup, fOrder, pNextIcon->cParentDockName, pDock);
2560- }
2561-
2562- // insert a separator before if needed
2563- Icon *pPrevIcon = cairo_dock_get_previous_icon (pDock->icons, icon);
2564- if (pPrevIcon != NULL && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pPrevIcon))
2565- {
2566- int iSeparatorGroup = cairo_dock_get_icon_order (icon) -
2567- (cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pPrevIcon) ? 0 : 1); // for separators, group = order.
2568- double fOrder = (cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pPrevIcon) ? (icon->fOrder + pPrevIcon->fOrder) / 2 : 0);
2569- cairo_dock_insert_automatic_separator_in_dock (iSeparatorGroup, fOrder, pPrevIcon->cParentDockName, pDock);
2570- }
2571- }
2572-
2573- //\______________ On effectue les actions demandees.
2574- if (bAnimated)
2575- {
2576- if (cairo_dock_animation_will_be_visible (pDock))
2577- icon->fInsertRemoveFactor = - 0.95;
2578- else
2579- icon->fInsertRemoveFactor = - 0.05;
2580- cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
2581- }
2582- else
2583- icon->fInsertRemoveFactor = 0.;
2584-
2585- cairo_dock_trigger_update_dock_size (pDock);
2586-
2587- if (pDock->iRefCount != 0 && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon)) // on prevoit le redessin de l'icone pointant sur le sous-dock.
2588- {
2589- cairo_dock_trigger_redraw_subdock_content (pDock);
2590- }
2591-
2592- if (icon->pSubDock != NULL)
2593- cairo_dock_synchronize_one_sub_dock_orientation (icon->pSubDock, pDock, TRUE);
2594-
2595- //\______________ Notify everybody.
2596- cairo_dock_notify_on_object (pDock, NOTIFICATION_INSERT_ICON, icon, pDock);
2597-}
2598-
2599-
2600-static gboolean _destroy_empty_dock (CairoDock *pDock)
2601-{
2602- const gchar *cDockName = cairo_dock_search_dock_name (pDock); // safe meme si le dock n'existe plus.
2603- g_return_val_if_fail (cDockName != NULL, FALSE); // si NULL, cela signifie que le dock n'existe plus, donc on n'y touche pas. Ce cas ne devrait jamais arriver, c'est de la pure parano.
2604-
2605- if (pDock->bIconIsFlyingAway)
2606- return TRUE;
2607- pDock->iSidDestroyEmptyDock = 0;
2608- if (pDock->icons == NULL && pDock->iRefCount == 0 && ! pDock->bIsMainDock) // le dock est toujours a detruire.
2609- {
2610- cd_debug ("The dock '%s' is empty. No icon, no dock.", cDockName);
2611- cairo_dock_destroy_dock (pDock, cDockName);
2612- }
2613- return FALSE;
2614-}
2615-gboolean cairo_dock_detach_icon_from_dock_full (Icon *icon, CairoDock *pDock, gboolean bCheckUnusedSeparator)
2616-{
2617- if (pDock == NULL)
2618- return FALSE;
2619- if (icon->pContainer == NULL)
2620- {
2621- cd_warning ("This icon (%s) is already not inside a container !", icon->cName); // not a big deal, just print that for debug.
2622- }
2623-
2624- //\___________________ On trouve l'icone et ses 2 voisins.
2625- GList *prev_ic = NULL, *ic, *next_ic;
2626- Icon *pPrevIcon = NULL, *pNextIcon = NULL;
2627- for (ic = pDock->icons; ic != NULL; ic = ic->next)
2628- {
2629- if (ic -> data == icon)
2630- {
2631- prev_ic = ic->prev;
2632- next_ic = ic->next;
2633- if (prev_ic)
2634- pPrevIcon = prev_ic->data;
2635- if (next_ic)
2636- pNextIcon = next_ic->data;
2637- break;
2638- }
2639- }
2640- if (ic == NULL) // elle est deja detachee.
2641- return FALSE;
2642-
2643- cd_message ("%s (%s)", __func__, icon->cName);
2644- g_free (icon->cParentDockName);
2645- icon->cParentDockName = NULL;
2646- cairo_dock_set_icon_container (icon, NULL);
2647-
2648- //\___________________ On stoppe ses animations.
2649- cairo_dock_stop_icon_animation (icon);
2650-
2651- //\___________________ On desactive sa miniature.
2652- if (icon->Xid != 0)
2653- {
2654- //cd_debug ("on desactive la miniature de %s (Xid : %lx)", icon->cName, icon->Xid);
2655- cairo_dock_set_xicon_geometry (icon->Xid, 0, 0, 0, 0);
2656- }
2657-
2658- //\___________________ On l'enleve de la liste.
2659- pDock->icons = g_list_delete_link (pDock->icons, ic);
2660- ic = NULL;
2661- pDock->fFlatDockWidth -= icon->fWidth + myIconsParam.iIconGap;
2662-
2663- //\___________________ On enleve le separateur si c'est la derniere icone de son type.
2664- if (bCheckUnusedSeparator && ! CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (icon))
2665- {
2666- if ((pPrevIcon == NULL || CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pPrevIcon)) && CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (pNextIcon))
2667- {
2668- pDock->icons = g_list_delete_link (pDock->icons, next_ic);
2669- next_ic = NULL;
2670- pDock->fFlatDockWidth -= pNextIcon->fWidth + myIconsParam.iIconGap;
2671- cairo_dock_free_icon (pNextIcon);
2672- pNextIcon = NULL;
2673- }
2674- if ((pNextIcon == NULL || CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pNextIcon)) && CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (pPrevIcon))
2675- {
2676- pDock->icons = g_list_delete_link (pDock->icons, prev_ic);
2677- prev_ic = NULL;
2678- pDock->fFlatDockWidth -= pPrevIcon->fWidth + myIconsParam.iIconGap;
2679- cairo_dock_free_icon (pPrevIcon);
2680- pPrevIcon = NULL;
2681- }
2682- }
2683-
2684- //\___________________ Cette icone realisait peut-etre le max des hauteurs, comme on l'enleve on recalcule ce max.
2685- Icon *pOtherIcon;
2686- if (icon->fHeight >= pDock->iMaxIconHeight)
2687- {
2688- pDock->iMaxIconHeight = 0;
2689- for (ic = pDock->icons; ic != NULL; ic = ic->next)
2690- {
2691- pOtherIcon = ic->data;
2692- if (! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pOtherIcon))
2693- {
2694- pDock->iMaxIconHeight = MAX (pDock->iMaxIconHeight, pOtherIcon->fHeight);
2695- if (pOtherIcon->fHeight == icon->fHeight) // on sait qu'on n'ira pas plus haut.
2696- break;
2697- }
2698- }
2699- }
2700-
2701- //\___________________ On la remet a la taille normale en vue d'une reinsertion quelque part.
2702- icon->fWidth /= pDock->container.fRatio;
2703- icon->fHeight /= pDock->container.fRatio;
2704-
2705- //\___________________ On prevoit le redessin de l'icone pointant sur le sous-dock.
2706- if (pDock->iRefCount != 0 && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon))
2707- {
2708- cairo_dock_trigger_redraw_subdock_content (pDock);
2709- }
2710-
2711- //\___________________ On prevoit la destruction du dock si c'est un dock principal qui devient vide.
2712- if (pDock->iRefCount == 0 && pDock->icons == NULL && ! pDock->bIsMainDock) // on supprime les docks principaux vides.
2713- {
2714- if (pDock->iSidDestroyEmptyDock == 0)
2715- pDock->iSidDestroyEmptyDock = g_idle_add ((GSourceFunc) _destroy_empty_dock, pDock); // on ne passe pas le nom du dock en parametre, car le dock peut se faire renommer (improbable, mais bon).
2716- }
2717- else
2718- {
2719- cairo_dock_trigger_update_dock_size (pDock);
2720- }
2721-
2722- //\___________________ Notify everybody.
2723- icon->fInsertRemoveFactor = 0.;
2724- cairo_dock_notify_on_object (pDock, NOTIFICATION_REMOVE_ICON, icon, pDock);
2725-
2726- return TRUE;
2727-}
2728-void cairo_dock_remove_icon_from_dock_full (CairoDock *pDock, Icon *icon, gboolean bCheckUnusedSeparator)
2729-{
2730- g_return_if_fail (icon != NULL);
2731-
2732- //\___________________ On detache l'icone du dock.
2733- if (pDock != NULL)
2734- cairo_dock_detach_icon_from_dock_full (icon, pDock, bCheckUnusedSeparator); // on le fait maintenant, pour que l'icone ait son type correct, et ne soit pas confondue avec un separateur
2735-
2736- //\___________________ On supprime l'icone du theme courant.
2737- if (icon->iface.on_delete)
2738- {
2739- gboolean r = icon->iface.on_delete (icon);
2740- if (r)
2741- cairo_dock_mark_current_theme_as_modified (TRUE);
2742- }
2743-}
2744-
2745-
2746-void cairo_dock_remove_automatic_separators (CairoDock *pDock)
2747-{
2748- //g_print ("%s ()\n", __func__);
2749- Icon *icon;
2750- GList *ic = pDock->icons, *next_ic;
2751- while (ic != NULL)
2752- {
2753- icon = ic->data;
2754- next_ic = ic->next; // si l'icone se fait enlever, on perdrait le fil.
2755- if (CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (icon))
2756- {
2757- cairo_dock_remove_one_icon_from_dock (pDock, icon);
2758- cairo_dock_free_icon (icon);
2759- }
2760- ic = next_ic;
2761- }
2762-}
2763-
2764-void cairo_dock_insert_automatic_separators_in_dock (CairoDock *pDock)
2765-{
2766- //g_print ("%s ()\n", __func__);
2767- Icon *icon, *pNextIcon;
2768- GList *ic;
2769- for (ic = pDock->icons; ic != NULL; ic = ic->next)
2770- {
2771- icon = ic->data;
2772- if (! CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (icon))
2773- {
2774- if (ic->next != NULL)
2775- {
2776- pNextIcon = ic->next->data;
2777- if (! CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (pNextIcon) && icon->iGroup != pNextIcon->iGroup)
2778- {
2779- int iSeparatorGroup = cairo_dock_get_icon_order (icon) +
2780- (cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pNextIcon) ? 0 : 1); // for separators, group = order.
2781- double fOrder = (cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pNextIcon) ? (icon->fOrder + pNextIcon->fOrder) / 2 : 0);
2782- cairo_dock_insert_automatic_separator_in_dock (iSeparatorGroup, fOrder, icon->cParentDockName, pDock);
2783- }
2784- }
2785- }
2786- }
2787-}
2788-
2789-
2790-Icon *cairo_dock_add_new_launcher_by_uri_or_type (const gchar *cExternDesktopFileURI, CairoDockDesktopFileType iType, CairoDock *pReceivingDock, double fOrder)
2791-{
2792- //\_________________ On ajoute un fichier desktop dans le repertoire des lanceurs du theme courant.
2793- GError *erreur = NULL;
2794- const gchar *cDockName = cairo_dock_search_dock_name (pReceivingDock);
2795- if (fOrder == CAIRO_DOCK_LAST_ORDER && pReceivingDock != NULL)
2796- {
2797- Icon *pLastIcon = cairo_dock_get_last_launcher (pReceivingDock->icons);
2798- if (pLastIcon != NULL)
2799- fOrder = pLastIcon->fOrder + 1;
2800- else
2801- fOrder = 1;
2802- }
2803- gchar *cNewDesktopFileName;
2804- if (cExternDesktopFileURI != NULL)
2805- cNewDesktopFileName = cairo_dock_add_desktop_file_from_uri (cExternDesktopFileURI, cDockName, fOrder, &erreur);
2806- else
2807- cNewDesktopFileName = cairo_dock_add_desktop_file_from_type (iType, cDockName, fOrder, &erreur);
2808- if (erreur != NULL)
2809- {
2810- cd_warning (erreur->message);
2811- g_error_free (erreur);
2812- return NULL;
2813- }
2814-
2815- //\_________________ On verifie ici l'unicite du sous-dock.
2816- if (iType == CAIRO_DOCK_DESKTOP_FILE_FOR_CONTAINER && cExternDesktopFileURI == NULL)
2817- {
2818-
2819- }
2820-
2821- //\_________________ On charge ce nouveau lanceur.
2822- Icon *pNewIcon = NULL;
2823- if (cNewDesktopFileName != NULL)
2824- {
2825- cairo_dock_mark_current_theme_as_modified (TRUE);
2826-
2827- pNewIcon = cairo_dock_create_icon_from_desktop_file (cNewDesktopFileName);
2828- g_free (cNewDesktopFileName);
2829-
2830- if (pNewIcon != NULL)
2831- {
2832- cairo_dock_insert_icon_in_dock (pNewIcon, pReceivingDock, CAIRO_DOCK_ANIMATE_ICON);
2833-
2834- if (pNewIcon->pSubDock != NULL)
2835- cairo_dock_trigger_redraw_subdock_content (pNewIcon->pSubDock);
2836- }
2837- }
2838- return pNewIcon;
2839-}
2840-
2841-
2842-void cairo_dock_remove_icons_from_dock (CairoDock *pDock, CairoDock *pReceivingDock, const gchar *cReceivingDockName)
2843-{
2844- GList *pIconsList = pDock->icons;
2845- pDock->icons = NULL;
2846- Icon *icon;
2847- GList *ic;
2848- gchar *cDesktopFilePath;
2849- for (ic = pIconsList; ic != NULL; ic = ic->next)
2850- {
2851- icon = ic->data;
2852-
2853- if (icon->pSubDock != NULL)
2854- {
2855- cairo_dock_remove_icons_from_dock (icon->pSubDock, pReceivingDock, cReceivingDockName);
2856- }
2857-
2858- if (pReceivingDock == NULL || cReceivingDockName == NULL) // alors on les jete.
2859- {
2860- if (icon->iface.on_delete)
2861- icon->iface.on_delete (icon); // efface le .desktop / ecrit les modules actifs.
2862-
2863- if (CAIRO_DOCK_IS_APPLET (icon))
2864- {
2865- cairo_dock_update_icon_s_container_name (icon, CAIRO_DOCK_MAIN_DOCK_NAME); // on decide de les remettre dans le dock principal la prochaine fois qu'ils seront actives.
2866- }
2867- cairo_dock_free_icon (icon); // de-instancie l'applet.
2868- }
2869- else // on les re-attribue au dock receveur.
2870- {
2871- cairo_dock_update_icon_s_container_name (icon, cReceivingDockName);
2872-
2873- icon->fWidth /= pDock->container.fRatio; // optimization: no need to detach the icon, we just steal all of them.
2874- icon->fHeight /= pDock->container.fRatio;
2875-
2876- cd_debug (" on re-attribue %s au dock %s", icon->cName, icon->cParentDockName);
2877- cairo_dock_insert_icon_in_dock (icon, pReceivingDock, CAIRO_DOCK_ANIMATE_ICON);
2878-
2879- if (CAIRO_DOCK_IS_APPLET (icon))
2880- {
2881- icon->pModuleInstance->pContainer = CAIRO_CONTAINER (pReceivingDock); // astuce pour ne pas avoir a recharger le fichier de conf ^_^
2882- icon->pModuleInstance->pDock = pReceivingDock;
2883- cairo_dock_reload_module_instance (icon->pModuleInstance, FALSE);
2884- }
2885- }
2886- }
2887-
2888- g_list_free (pIconsList);
2889-}
2890-
2891-
2892-void cairo_dock_reload_buffers_in_dock (CairoDock *pDock, gboolean bRecursive, gboolean bUpdateIconSize)
2893-{
2894- //g_print ("************%s (%d, %d)\n", __func__, pDock->bIsMainDock, bRecursive);
2895- if (bUpdateIconSize && pDock->bGlobalIconSize)
2896- pDock->iIconSize = myIconsParam.iIconWidth;
2897-
2898- // for each icon, reload its buffer (size may change).
2899- Icon* icon;
2900- GList* ic;
2901- for (ic = pDock->icons; ic != NULL; ic = ic->next)
2902- {
2903- icon = ic->data;
2904-
2905- if (CAIRO_DOCK_IS_APPLET (icon)) // for an applet, we need to let the module know that the size or the theme has changed, so that it can reload its private buffers.
2906- {
2907- cairo_dock_reload_module_instance (icon->pModuleInstance, FALSE);
2908- }
2909- else
2910- {
2911- if (bUpdateIconSize)
2912- {
2913- icon->fWidth = icon->fHeight = 0; // no request
2914- icon->iImageWidth = icon->iImageHeight = 0;
2915- cairo_dock_set_icon_size_in_dock (pDock, icon);
2916- }
2917- cairo_dock_trigger_load_icon_buffers (icon);
2918- }
2919-
2920- if (bRecursive && icon->pSubDock != NULL) // we handle the sub-dock for applets too, so that they don't need to care.
2921- {
2922- ///cairo_dock_synchronize_one_sub_dock_orientation (icon->pSubDock, pDock, FALSE); /// should probably not be here.
2923- if (bUpdateIconSize)
2924- icon->pSubDock->iIconSize = pDock->iIconSize;
2925- cairo_dock_reload_buffers_in_dock (icon->pSubDock, bRecursive, bUpdateIconSize);
2926- }
2927- }
2928-
2929- if (bUpdateIconSize)
2930- {
2931- cairo_dock_update_dock_size (pDock);
2932- cairo_dock_calculate_dock_icons (pDock);
2933-
2934- cairo_dock_move_resize_dock (pDock);
2935- if (pDock->iVisibility == CAIRO_DOCK_VISI_RESERVE) // la position/taille a change, il faut refaire la reservation.
2936- cairo_dock_reserve_space_for_dock (pDock, TRUE);
2937- gtk_widget_queue_draw (pDock->container.pWidget);
2938- }
2939-}
2940-
2941-
2942-void cairo_dock_set_icon_size_in_dock (CairoDock *pDock, Icon *icon)
2943-{
2944- if (pDock->pRenderer && pDock->pRenderer->set_icon_size)
2945- {
2946- pDock->pRenderer->set_icon_size (icon, pDock);
2947- }
2948- else
2949- {
2950- int wi, hi;
2951- if (pDock->iIconSize != 0)
2952- {
2953- wi = hi = pDock->iIconSize;
2954- }
2955- else // same size as main dock.
2956- {
2957- wi = myIconsParam.iIconWidth;
2958- hi = myIconsParam.iIconHeight;
2959- }
2960- //g_print (" size: %d => %dx%d\n", pDock->iIconSize, wi, hi);
2961- double fMaxScale = cairo_dock_get_max_scale (pDock);
2962-
2963- // set the visible size at rest.
2964- if (CAIRO_DOCK_ICON_TYPE_IS_APPLET (icon)) // for applets, consider (fWidth,fHeight) as a requested size, if not 0.
2965- {
2966- //g_print ("%s (%s, %.1fx%.1f\n", __func__, icon->pModuleInstance->pModule->pVisitCard->cModuleName, icon->fWidth, icon->fHeight);
2967- if (icon->iImageWidth != 0)
2968- {
2969- if (pDock->container.bIsHorizontal)
2970- icon->fWidth = icon->iImageWidth / fMaxScale;
2971- else
2972- icon->fHeight = icon->iImageWidth / fMaxScale;
2973- }
2974- if (icon->iImageHeight != 0)
2975- {
2976- if (pDock->container.bIsHorizontal)
2977- icon->fHeight = icon->iImageHeight / fMaxScale;
2978- else
2979- icon->fWidth = icon->iImageHeight / fMaxScale;
2980- }
2981- if (icon->fWidth == 0)
2982- icon->fWidth = wi;
2983- if (icon->fHeight == 0 || icon->fHeight > hi)
2984- icon->fHeight = hi;
2985- }
2986- else if (CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon)) // separators have their own size.
2987- {
2988- icon->fWidth = myIconsParam.iSeparatorWidth;
2989- icon->fHeight = MIN (myIconsParam.iSeparatorHeight, hi);
2990- }
2991- else // any other icon use the global size
2992- {
2993- icon->fWidth = wi;
2994- icon->fHeight = hi;
2995- }
2996-
2997- // texture size can be deduced then.
2998- if (pDock->container.bIsHorizontal
2999- || (CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon) && myIconsParam.bRevolveSeparator))
3000- {
3001- icon->iImageWidth = icon->fWidth * fMaxScale;
3002- icon->iImageHeight = icon->fHeight * fMaxScale;
3003- }
3004- else
3005- {
3006- icon->iImageWidth = icon->fHeight * fMaxScale;
3007- icon->iImageHeight = icon->fWidth * fMaxScale;
3008- }
3009- }
3010- icon->fWidth *= pDock->container.fRatio;
3011- icon->fHeight *= pDock->container.fRatio;
3012-}
3013-
3014-
3015-void cairo_dock_create_redirect_texture_for_dock (CairoDock *pDock)
3016-{
3017- if (! g_openglConfig.bFboAvailable)
3018- return ;
3019- if (pDock->iRedirectedTexture == 0)
3020- {
3021- pDock->iRedirectedTexture = cairo_dock_create_texture_from_raw_data (NULL,
3022- (pDock->container.bIsHorizontal ? pDock->container.iWidth : pDock->container.iHeight),
3023- (pDock->container.bIsHorizontal ? pDock->container.iHeight : pDock->container.iWidth));
3024- }
3025- if (pDock->iFboId == 0)
3026- glGenFramebuffersEXT(1, &pDock->iFboId);
3027-}
3028
3029=== removed directory '.pc/02-bzr_fixed_compilation_error.patch'
3030=== removed directory '.pc/02-bzr_fixed_compilation_error.patch/src'
3031=== removed directory '.pc/02-bzr_fixed_compilation_error.patch/src/gldit'
3032=== removed file '.pc/02-bzr_fixed_compilation_error.patch/src/gldit/cairo-dock-keybinder.h'
3033--- .pc/02-bzr_fixed_compilation_error.patch/src/gldit/cairo-dock-keybinder.h 2012-04-25 01:29:46 +0000
3034+++ .pc/02-bzr_fixed_compilation_error.patch/src/gldit/cairo-dock-keybinder.h 1970-01-01 00:00:00 +0000
3035@@ -1,152 +0,0 @@
3036-/*
3037-* cairo-dock-keybinder.h
3038-* This file is a part of the Cairo-Dock project
3039-* Login : <ctaf42@localhost.localdomain>
3040-* Started on Thu Jan 31 03:57:17 2008 Cedric GESTES
3041-* $Id$
3042-*
3043-* Author(s)
3044-* - Cedric GESTES <ctaf42@gmail.com>
3045-* - Havoc Pennington
3046-* - Tim Janik
3047-*
3048-* Copyright : (C) 2008 Cedric GESTES
3049-* E-mail : see the 'copyright' file.
3050-*
3051-* This program is free software; you can redistribute it and/or
3052-* modify it under the terms of the GNU General Public License
3053-* as published by the Free Software Foundation; either version 3
3054-* of the License, or (at your option) any later version.
3055-*
3056-* This program is distributed in the hope that it will be useful,
3057-* but WITHOUT ANY WARRANTY; without even the implied warranty of
3058-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3059-* GNU General Public License for more details.
3060-* You should have received a copy of the GNU General Public License
3061-* along with this program. If not, see <http://www.gnu.org/licenses/>.
3062-*
3063-* imported from tomboy_key_binder.h
3064-*/
3065-
3066-#ifndef __CD_KEY_BINDER_H__
3067-#define __CD_KEY_BINDER_H__
3068-
3069-#include <glib/gtypes.h>
3070-#include "cairo-dock-struct.h"
3071-#include "cairo-dock-manager.h"
3072-
3073-G_BEGIN_DECLS
3074-
3075-/**
3076-*@file cairo-dock-keybinder.h This class contains functions to easily bind a keyboard shortcut to an action. These shortkeys are defined globally in your session, that is to say they will be effective whatever window has the focus.
3077-* Shortkeys are of the form &lt;alt&gt;F1 or &lt;ctrl&gt;&lt;shift&gt;s.
3078-*
3079-* You bind an action to a shortkey with \ref cd_keybinder_bind, and unbind it with \ref cd_keybinder_unbind.
3080-* To update a binding (on shortkey or description chenge, or just to re-grab it), use \ref cd_keybinder_rebind.
3081-*/
3082-
3083-
3084-/// Definition of a callback, called when a shortcut is pressed by the user.
3085-typedef void (* CDBindkeyHandler) (const gchar *keystring, gpointer user_data);
3086-
3087-struct _CairoKeyBinding {
3088- gchar *keystring;
3089- CDBindkeyHandler handler;
3090- gpointer user_data;
3091- guint keycode;
3092- guint modifiers;
3093- gboolean bSuccess;
3094- gchar *cDemander;
3095- gchar *cDescription;
3096- gchar *cIconFilePath;
3097- gchar *cConfFilePath;
3098- gchar *cGroupName;
3099- gchar *cKeyName;
3100-} ;
3101-
3102-
3103-typedef struct _CairoShortkeysManager CairoShortkeysManager;
3104-
3105-#ifndef _MANAGER_DEF_
3106-extern CairoShortkeysManager myShortkeysMgr;
3107-#endif
3108-
3109-// params
3110-
3111-// manager
3112-struct _CairoShortkeysManager {
3113- GldiManager mgr;
3114- gboolean (*bind) (const gchar *keystring, CDBindkeyHandler handler, gpointer user_data);
3115- void (*unbind) (const gchar *keystring, CDBindkeyHandler handler);
3116- gboolean (*trigger_shortkey) (const gchar *cKeyString);
3117- } ;
3118-
3119-// signals
3120-typedef enum {
3121- NOTIFICATION_SHORTKEY_ADDED = NB_NOTIFICATIONS_OBJECT,
3122- NOTIFICATION_SHORTKEY_REMOVED,
3123- NOTIFICATION_SHORTKEY_CHANGED,
3124- NB_NOTIFICATIONS_SHORTKEYS
3125- } CairoShortkeysNotifications;
3126-
3127-
3128-/** Bind a shortkey to an action. Unbind it when you don't want it anymore, or when 'user_data' is freed.
3129- * @param keystring a shortcut.
3130- * @param cDemander the actor making the demand
3131- * @param cDescription a short description of the action
3132- * @param cIconFilePath an icon that represents the demander
3133- * @param cConfFilePath conf file where the shortkey stored
3134- * @param cGroupName group name where it's stored in the conf file
3135- * @param cKeyName key name where it's stored in the conf file
3136- * @param handler function called when the shortkey is pressed by the user
3137- * @param user_data data passed to the callback
3138- * @return the key binding
3139-*/
3140-CairoKeyBinding *cd_keybinder_bind (const gchar *keystring,
3141- const gchar *cDemander,
3142- const gchar *cDescription,
3143- const gchar *cIconFilePath,
3144- const gchar *cConfFilePath,
3145- const gchar *cGroupName,
3146- const gchar *cKeyName,
3147- CDBindkeyHandler handler,
3148- gpointer user_data);
3149-
3150-/** Says if the shortkey of a key binding could be grabbed.
3151- * @param binding a key binding.
3152- * @return TRUE iif the shortkey has been successfuly grabbed by the key binding.
3153-*/
3154-#define cd_keybinder_could_grab(binding) ((binding)->bSuccess)
3155-
3156-/** Unbind a shortkey. The binding is destroyed.
3157- * @param binding a key binding.
3158-*/
3159-void cd_keybinder_unbind (CairoKeyBinding *binding);
3160-
3161-
3162-/** Rebind a shortkey to a new one. If the shortkey is the same, don't re-bind it.
3163- * @param binding a key binding.
3164- * @param .cNewKeyString the new shortkey
3165- * @param .cNewDescription the new description, or NULL to keep the current one.
3166- * @return TRUE on success
3167-*/
3168-gboolean cd_keybinder_rebind (CairoKeyBinding *binding,
3169- const gchar *cNewKeyString,
3170- const gchar *cNewDescription);
3171-
3172-
3173-void cd_keybinder_foreach (GFunc pCallback, gpointer data);
3174-
3175-/** Trigger the given shortkey. It will be as if the user effectively pressed the shortkey on its keyboard. It uses the 'XTest' X extension.
3176- * @param cKeyString a shortkey.
3177- * @return TRUE if success.
3178-*/
3179-gboolean cairo_dock_trigger_shortkey (const gchar *cKeyString);
3180-
3181-
3182-void gldi_register_shortkeys_manager (void);
3183-
3184-G_END_DECLS
3185-
3186-#endif /* __CD_KEY_BINDER_H__ */
3187-
3188
3189=== removed file '.pc/applied-patches'
3190--- .pc/applied-patches 2012-04-25 01:29:46 +0000
3191+++ .pc/applied-patches 1970-01-01 00:00:00 +0000
3192@@ -1,2 +0,0 @@
3193-02-bzr_fixed_compilation_error.patch
3194-01-bzr_dock-s_menu.patch
3195
3196=== modified file 'CMakeLists.txt'
3197--- CMakeLists.txt 2012-04-16 17:57:58 +0000
3198+++ CMakeLists.txt 2012-06-19 14:00:30 +0000
3199@@ -11,7 +11,7 @@
3200 ########### project ###############
3201
3202 project ("cairo-dock")
3203-set (VERSION "3.0.0")
3204+set (VERSION "3.0.2")
3205
3206 add_definitions (-std=c99 -Wextra -Wwrite-strings -Wuninitialized -Werror-implicit-function-declaration -Wstrict-prototypes) # removed for stable versions: -Wstrict-prototypes #-Wunreachable-code -Wno-unused-parameter -Wall
3207 if (NOT ${CMAKE_BUILD_TYPE})
3208@@ -22,6 +22,11 @@
3209 add_definitions (-DCAIRO_DOCK_ICON="cairo-dock.svg")
3210 add_definitions (-DCAIRO_DOCK_LOGO="cairo-dock-logo.png")
3211 add_definitions (-DCAIRO_DOCK_DATA_DIR="cairo-dock")
3212+if (NOT "${force-icon-in-menus}" STREQUAL "no") # we believe that not showing icons in the menus by default is a terrible idea; unfortunately, it's not easily undoable for an end-user; so until this is fixed by a big player (Gnome, Ubuntu or other), we'll force the display, unless "-Dforce-icon-in-menus=yes" is provided in the cmake command.
3213+ add_definitions (-DCAIRO_DOCK_FORCE_ICON_IN_MENUS=1)
3214+else()
3215+ add_definitions (-DCAIRO_DOCK_FORCE_ICON_IN_MENUS=0)
3216+endif()
3217 add_custom_target (uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
3218
3219 ############ sources tarball ############
3220
3221=== added file 'debian/cairo-dock-data.links'
3222--- debian/cairo-dock-data.links 1970-01-01 00:00:00 +0000
3223+++ debian/cairo-dock-data.links 2012-06-19 14:00:30 +0000
3224@@ -0,0 +1,2 @@
3225+usr/share/man/man1/cairo-dock.1.gz usr/share/man/man1/cairo-dock-package-theme.1.gz
3226+usr/share/man/man1/cairo-dock.1.gz usr/share/man/man1/cairo-dock-session.1.gz
3227
3228=== removed file 'debian/cairo-dock-data.lintian-overrides'
3229--- debian/cairo-dock-data.lintian-overrides 2011-10-11 10:53:26 +0000
3230+++ debian/cairo-dock-data.lintian-overrides 1970-01-01 00:00:00 +0000
3231@@ -1,2 +0,0 @@
3232-# Cairo-Dock uses custom scripts
3233-cairo-dock-data: binary-without-manpage
3234
3235=== modified file 'debian/changelog'
3236--- debian/changelog 2012-04-25 01:29:46 +0000
3237+++ debian/changelog 2012-06-19 14:00:30 +0000
3238@@ -1,3 +1,46 @@
3239+cairo-dock (3.0.2-0ubuntu1) UNRELEASED; urgency=low
3240+
3241+ * New upstream bug-fix release. (LP: #1014801)
3242+ * Upstream ChangeLog (3.0.0 -> 3.0.1):
3243+ - Dialogs: fixed a bug where the dock could auto-hide when a modal dialog
3244+ was raised
3245+ - Dialog: fixed a crash with gcc-4.7: the local variable can be corrupted
3246+ due to optimisations
3247+ - Fixed a bug where the dock didn't accept clicks when the mouse touches
3248+ the screen edge (with auto-hide)
3249+ - Added a compilation option to not force the display of icons in menus
3250+ (design request but disable by default)
3251+ - Fixed a bug where the hidden dock background color was not updated
3252+ properly
3253+ - Class-Manager: fixed a bug with Windows applications whose name is in
3254+ upper case (.EXE)
3255+ - GUI: use cairo_dock_get_xwindow_class to link a programm with a launcher
3256+ - French translations: fixed 2 small errors
3257+ * Upstream ChangeLog (3.0.1 -> 3.0.2):
3258+ - Main GUI: Fixed a crash when hovering group buttons too quickly
3259+ - Main GUI: The dialog and preview didn't appear when hovering the button
3260+ - Accelerators: On recent distro, 'Control' key is now called 'Primary'
3261+ - Icon Mgr: Added a mutex because of occasional crashes with
3262+ gtk_icon_theme_lookup_icon
3263+ - Icon Mgr: Don't call a 'change-icon' callback when clicking or scrolling
3264+ on an icon, and trigger an unneeded animation on the icon
3265+ - Dock Mgr: Avoid emitting an 'enter' event when not needed
3266+ - Class Mgr: Fixed 2 typos (special case for kdesu and not kdes)
3267+ - Class Mgr: Remove launching options (%U) in quick-list Exec command
3268+ (LP: #1002691)
3269+ - Dialogues: Prevent closing the dialog unexpectedly when clicking on it,
3270+ if the click is actually inside the interactive widget
3271+ - Background: When set to 'always visible', applets' background couldn't
3272+ be turned off
3273+ - Added a workaround for the Unity-panel which has a wrong window type
3274+ - po: Updated translations
3275+ * debian/patches:
3276+ - Removed all patches (now in upstream)
3277+ * debian/cairo-dock-data:
3278+ - Removed a lintian warning by added symlinks (binary-without-manpage)
3279+
3280+ -- Matthieu Baerts (matttbe) <matttbe@gmail.com> Mon, 18 Jun 2012 20:01:30 +0200
3281+
3282 cairo-dock (3.0.0.1-0ubuntu2) quantal; urgency=low
3283
3284 * debian/patches/01-bzr_dock-s_menu.patch: don't hide the dock if it's raised
3285
3286=== removed file 'debian/patches/01-bzr_dock-s_menu.patch'
3287--- debian/patches/01-bzr_dock-s_menu.patch 2012-04-25 01:29:46 +0000
3288+++ debian/patches/01-bzr_dock-s_menu.patch 1970-01-01 00:00:00 +0000
3289@@ -1,48 +0,0 @@
3290-## Description: Dock's menu: don't hide the dock if it is raised and don't try to check if the mouse has left the dock if the menu is raised
3291-## Origin/Author: Upstream (Fabrice Rey)
3292-## https://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-core/3.0.x/revision/1070
3293-
3294-Index: cairo-dock/src/gldit/cairo-dock-callbacks.c
3295-===================================================================
3296---- cairo-dock.orig/src/gldit/cairo-dock-callbacks.c 2012-04-16 18:03:45.645725000 +0200
3297-+++ cairo-dock/src/gldit/cairo-dock-callbacks.c 2012-04-24 02:34:27.416854701 +0200
3298-@@ -763,10 +763,10 @@
3299- {
3300- //g_print ("forced leave event: %d;%d\n", pDock->container.iMouseX, pDock->container.iMouseY);
3301- }
3302-- if (pEvent && !_mouse_is_really_outside(pDock)) // check that the mouse is really outside (only if the request comes from the Window Manager; this is to work around buggy WM like KWin).
3303-+ if (/**pEvent && */!_mouse_is_really_outside(pDock)) // check that the mouse is really outside (the request might not come from the Window Manager, for instance if we deactivate the menu; this also works around buggy WM like KWin).
3304- {
3305- //g_print ("not really outside (%d;%d ; %d/%d)\n", pDock->container.iMouseX, pDock->container.iMouseY, pDock->iMaxDockHeight, pDock->iMinDockHeight);
3306-- if (pDock->iSidTestMouseOutside == 0 && pEvent) // si l'action induit un changement de bureau, ou une appli qui bloque le focus (gksu), X envoit un signal de sortie alors qu'on est encore dans le dock, et donc n'en n'envoit plus lorsqu'on en sort reellement. On teste donc pendant qques secondes apres l'evenement.
3307-+ if (pDock->iSidTestMouseOutside == 0 && pEvent && ! pDock->bMenuVisible) // si l'action induit un changement de bureau, ou une appli qui bloque le focus (gksu), X envoit un signal de sortie alors qu'on est encore dans le dock, et donc n'en n'envoit plus lorsqu'on en sort reellement. On teste donc pendant qques secondes apres l'evenement. C'est ausi vrai pour l'affichage d'un menu, mais comme on envoie nous-meme un signal de sortie lorsque le menu disparait, il est inutile de le faire ici.
3308- {
3309- //g_print ("start checking mouse\n");
3310- pDock->iSidTestMouseOutside = g_timeout_add (500, (GSourceFunc)_check_mouse_outside, pDock);
3311-@@ -1038,7 +1038,7 @@
3312- static gboolean _check_mouse_outside (CairoDock *pDock) // ce test est principalement fait pour detecter les cas ou X nous envoit un signal leave errone alors qu'on est dedans (=> sortie refusee, bInside reste a TRUE), puis du coup ne nous en envoit pas de leave lorsqu'on quitte reellement le dock.
3313- {
3314- //g_print ("%s (%d, %d, %d)\n", __func__, pDock->bIsShrinkingDown, pDock->iMagnitudeIndex, pDock->container.bInside);
3315-- if (pDock->bIsShrinkingDown || pDock->iMagnitudeIndex == 0 || ! pDock->container.bInside) // cas triviaux : si le dock est deja retrecit, ou qu'on est deja plus dedans, on peut quitter.
3316-+ if (pDock->bIsShrinkingDown || pDock->iMagnitudeIndex == 0 || ! pDock->container.bInside) // trivial cases : if the dock has already shrunk, or we're not inside any more, we can quit the loop.
3317- {
3318- pDock->iSidTestMouseOutside = 0;
3319- return FALSE;
3320-Index: cairo-dock/src/gldit/cairo-dock-dock-factory.c
3321-===================================================================
3322---- cairo-dock.orig/src/gldit/cairo-dock-dock-factory.c 2012-04-16 18:03:45.645725000 +0200
3323-+++ cairo-dock/src/gldit/cairo-dock-dock-factory.c 2012-04-24 02:34:27.416854701 +0200
3324-@@ -443,8 +443,11 @@
3325- {
3326- //g_print ("\n+++ %s ()\n\n", __func__);
3327- g_return_if_fail (CAIRO_DOCK_IS_DOCK (pDock));
3328-- pDock->bMenuVisible = FALSE;
3329-- cairo_dock_emit_leave_signal (CAIRO_CONTAINER (pDock));
3330-+ if (pDock->bMenuVisible) // don't send the signal if the menu was already deactivated.
3331-+ {
3332-+ pDock->bMenuVisible = FALSE;
3333-+ cairo_dock_emit_leave_signal (CAIRO_CONTAINER (pDock));
3334-+ }
3335- }
3336- static void _on_menu_destroyed (GtkWidget *menu, CairoDock *pDock)
3337- {
3338
3339=== removed file 'debian/patches/02-bzr_fixed_compilation_error.patch'
3340--- debian/patches/02-bzr_fixed_compilation_error.patch 2012-04-25 01:29:46 +0000
3341+++ debian/patches/02-bzr_fixed_compilation_error.patch 1970-01-01 00:00:00 +0000
3342@@ -1,16 +0,0 @@
3343-## Description: ixed a compilation error with GLib >= 2.33
3344-## Origin/Author: Upstream (Fabrice Rey)
3345-## https://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-core/cairo-dock/revision/1073
3346-
3347-Index: cairo-dock/src/gldit/cairo-dock-keybinder.h
3348-===================================================================
3349---- cairo-dock.orig/src/gldit/cairo-dock-keybinder.h 2012-06-04 18:22:56.544276402 +0200
3350-+++ cairo-dock/src/gldit/cairo-dock-keybinder.h 2012-06-04 18:23:13.528276165 +0200
3351-@@ -31,7 +31,6 @@
3352- #ifndef __CD_KEY_BINDER_H__
3353- #define __CD_KEY_BINDER_H__
3354-
3355--#include <glib/gtypes.h>
3356- #include "cairo-dock-struct.h"
3357- #include "cairo-dock-manager.h"
3358-
3359
3360=== modified file 'debian/patches/series'
3361--- debian/patches/series 2012-04-25 01:29:46 +0000
3362+++ debian/patches/series 2012-06-19 14:00:30 +0000
3363@@ -1,2 +0,0 @@
3364-02-bzr_fixed_compilation_error.patch
3365-01-bzr_dock-s_menu.patch
3366
3367=== modified file 'po/ar.po'
3368--- po/ar.po 2012-04-16 16:03:43 +0000
3369+++ po/ar.po 2012-06-19 14:00:30 +0000
3370@@ -7,14 +7,14 @@
3371 msgstr ""
3372 "Project-Id-Version: cairo-dock-core\n"
3373 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
3374-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
3375-"PO-Revision-Date: 2012-03-22 13:22+0000\n"
3376+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
3377+"PO-Revision-Date: 2012-04-14 18:49+0000\n"
3378 "Last-Translator: Matthieu Baerts <matttbe@gmail.com>\n"
3379 "Language-Team: Arabic <ar@li.org>\n"
3380 "MIME-Version: 1.0\n"
3381 "Content-Type: text/plain; charset=UTF-8\n"
3382 "Content-Transfer-Encoding: 8bit\n"
3383-"X-Launchpad-Export-Date: 2012-04-13 05:20+0000\n"
3384+"X-Launchpad-Export-Date: 2012-04-15 04:37+0000\n"
3385 "X-Generator: Launchpad (build 15070)\n"
3386 "Language: ar\n"
3387
3388
3389=== modified file 'po/be.po'
3390--- po/be.po 2012-04-16 16:03:43 +0000
3391+++ po/be.po 2012-06-19 14:00:30 +0000
3392@@ -7,14 +7,14 @@
3393 msgstr ""
3394 "Project-Id-Version: cairo-dock-core\n"
3395 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
3396-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
3397-"PO-Revision-Date: 2012-04-01 14:07+0000\n"
3398-"Last-Translator: Vitaly Danilovich <Unknown>\n"
3399+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
3400+"PO-Revision-Date: 2012-04-14 18:54+0000\n"
3401+"Last-Translator: Matthieu Baerts <matttbe@gmail.com>\n"
3402 "Language-Team: Belarusian <be@li.org>\n"
3403 "MIME-Version: 1.0\n"
3404 "Content-Type: text/plain; charset=UTF-8\n"
3405 "Content-Transfer-Encoding: 8bit\n"
3406-"X-Launchpad-Export-Date: 2012-04-13 05:20+0000\n"
3407+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
3408 "X-Generator: Launchpad (build 15070)\n"
3409 "Language: be\n"
3410
3411@@ -420,6 +420,8 @@
3412 msgid "translator-credits"
3413 msgstr ""
3414 "Launchpad Contributions:\n"
3415+" Fabounet https://launchpad.net/~fabounet03\n"
3416+" Matthieu Baerts https://launchpad.net/~matttbe\n"
3417 " Vitaly Danilovich https://launchpad.net/~danvyr"
3418
3419 #: ../src/cairo-dock-menu.c:285
3420
3421=== modified file 'po/bn.po'
3422--- po/bn.po 2012-04-16 16:03:43 +0000
3423+++ po/bn.po 2012-06-19 14:00:30 +0000
3424@@ -7,14 +7,14 @@
3425 msgstr ""
3426 "Project-Id-Version: cairo-dock-core\n"
3427 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
3428-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
3429-"PO-Revision-Date: 2012-03-22 13:28+0000\n"
3430+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
3431+"PO-Revision-Date: 2012-04-14 18:51+0000\n"
3432 "Last-Translator: Fabounet <fabounet03@gmail.com>\n"
3433 "Language-Team: Bengali <bn@li.org>\n"
3434 "MIME-Version: 1.0\n"
3435 "Content-Type: text/plain; charset=UTF-8\n"
3436 "Content-Transfer-Encoding: 8bit\n"
3437-"X-Launchpad-Export-Date: 2012-04-13 05:20+0000\n"
3438+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
3439 "X-Generator: Launchpad (build 15070)\n"
3440 "Language: bn\n"
3441
3442
3443=== modified file 'po/ca.po'
3444--- po/ca.po 2012-04-16 16:03:43 +0000
3445+++ po/ca.po 2012-06-19 14:00:30 +0000
3446@@ -8,14 +8,14 @@
3447 msgstr ""
3448 "Project-Id-Version: cairo-dock-core\n"
3449 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
3450-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
3451-"PO-Revision-Date: 2012-03-22 13:42+0000\n"
3452+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
3453+"PO-Revision-Date: 2012-04-14 18:52+0000\n"
3454 "Last-Translator: Fabounet <fabounet03@gmail.com>\n"
3455 "Language-Team: Catalan <ca@li.org>\n"
3456 "MIME-Version: 1.0\n"
3457 "Content-Type: text/plain; charset=UTF-8\n"
3458 "Content-Transfer-Encoding: 8bit\n"
3459-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
3460+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
3461 "X-Generator: Launchpad (build 15070)\n"
3462 "Language: ca\n"
3463
3464
3465=== modified file 'po/cs.po'
3466--- po/cs.po 2012-04-16 16:03:43 +0000
3467+++ po/cs.po 2012-06-19 14:00:30 +0000
3468@@ -7,14 +7,14 @@
3469 msgstr ""
3470 "Project-Id-Version: cairo-dock-core\n"
3471 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
3472-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
3473+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
3474 "PO-Revision-Date: 2012-03-21 03:01+0000\n"
3475 "Last-Translator: Michal Mlejnek <chaemil72@gmail.com>\n"
3476 "Language-Team: Czech <cs@li.org>\n"
3477 "MIME-Version: 1.0\n"
3478 "Content-Type: text/plain; charset=UTF-8\n"
3479 "Content-Transfer-Encoding: 8bit\n"
3480-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
3481+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
3482 "X-Generator: Launchpad (build 15070)\n"
3483 "Language: cs\n"
3484
3485
3486=== modified file 'po/cy.po'
3487--- po/cy.po 2012-04-16 16:03:43 +0000
3488+++ po/cy.po 2012-06-19 14:00:30 +0000
3489@@ -7,14 +7,14 @@
3490 msgstr ""
3491 "Project-Id-Version: cairo-dock-core\n"
3492 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
3493-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
3494-"PO-Revision-Date: 2012-03-22 12:57+0000\n"
3495+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
3496+"PO-Revision-Date: 2012-04-14 18:53+0000\n"
3497 "Last-Translator: Fabounet <fabounet03@gmail.com>\n"
3498 "Language-Team: Welsh <cy@li.org>\n"
3499 "MIME-Version: 1.0\n"
3500 "Content-Type: text/plain; charset=UTF-8\n"
3501 "Content-Transfer-Encoding: 8bit\n"
3502-"X-Launchpad-Export-Date: 2012-04-13 05:23+0000\n"
3503+"X-Launchpad-Export-Date: 2012-04-15 04:40+0000\n"
3504 "X-Generator: Launchpad (build 15070)\n"
3505 "Language: cy\n"
3506
3507
3508=== modified file 'po/de.po'
3509--- po/de.po 2012-04-16 16:03:43 +0000
3510+++ po/de.po 2012-06-19 14:00:30 +0000
3511@@ -7,14 +7,14 @@
3512 msgstr ""
3513 "Project-Id-Version: cairo-dock-core\n"
3514 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
3515-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
3516-"PO-Revision-Date: 2012-04-10 11:01+0000\n"
3517+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
3518+"PO-Revision-Date: 2012-04-14 18:49+0000\n"
3519 "Last-Translator: Daniel Winzen <d@winzen4.de>\n"
3520 "Language-Team: German <de@li.org>\n"
3521 "MIME-Version: 1.0\n"
3522 "Content-Type: text/plain; charset=UTF-8\n"
3523 "Content-Transfer-Encoding: 8bit\n"
3524-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
3525+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
3526 "X-Generator: Launchpad (build 15070)\n"
3527 "Language: de\n"
3528
3529
3530=== modified file 'po/el.po'
3531--- po/el.po 2012-04-16 16:03:43 +0000
3532+++ po/el.po 2012-06-19 14:00:30 +0000
3533@@ -8,14 +8,14 @@
3534 msgstr ""
3535 "Project-Id-Version: cairo-dock_el\n"
3536 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
3537-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
3538-"PO-Revision-Date: 2012-03-22 13:29+0000\n"
3539+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
3540+"PO-Revision-Date: 2012-04-14 18:54+0000\n"
3541 "Last-Translator: Michael Kotsarinis <mk73628@gmail.com>\n"
3542 "Language-Team: Greek\n"
3543 "MIME-Version: 1.0\n"
3544 "Content-Type: text/plain; charset=UTF-8\n"
3545 "Content-Transfer-Encoding: 8bit\n"
3546-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
3547+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
3548 "X-Generator: Launchpad (build 15070)\n"
3549 "X-Poedit-Country: France\n"
3550 "Language: \n"
3551
3552=== modified file 'po/en_GB.po'
3553--- po/en_GB.po 2012-04-16 16:03:43 +0000
3554+++ po/en_GB.po 2012-06-19 14:00:30 +0000
3555@@ -7,14 +7,14 @@
3556 msgstr ""
3557 "Project-Id-Version: cairo-dock-core\n"
3558 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
3559-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
3560-"PO-Revision-Date: 2012-03-22 13:35+0000\n"
3561+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
3562+"PO-Revision-Date: 2012-04-14 18:54+0000\n"
3563 "Last-Translator: Philippe Le Toquin <philippe@ppmt.org>\n"
3564 "Language-Team: English (United Kingdom) <en_GB@li.org>\n"
3565 "MIME-Version: 1.0\n"
3566 "Content-Type: text/plain; charset=UTF-8\n"
3567 "Content-Transfer-Encoding: 8bit\n"
3568-"X-Launchpad-Export-Date: 2012-04-13 05:23+0000\n"
3569+"X-Launchpad-Export-Date: 2012-04-15 04:40+0000\n"
3570 "X-Generator: Launchpad (build 15070)\n"
3571 "Language: \n"
3572
3573
3574=== modified file 'po/eo.po'
3575--- po/eo.po 2012-04-16 16:03:43 +0000
3576+++ po/eo.po 2012-06-19 14:00:30 +0000
3577@@ -7,14 +7,14 @@
3578 msgstr ""
3579 "Project-Id-Version: cairo-dock-core\n"
3580 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
3581-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
3582-"PO-Revision-Date: 2012-03-22 12:51+0000\n"
3583+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
3584+"PO-Revision-Date: 2012-04-14 18:53+0000\n"
3585 "Last-Translator: Matthieu Baerts <matttbe@gmail.com>\n"
3586 "Language-Team: Esperanto <eo@li.org>\n"
3587 "MIME-Version: 1.0\n"
3588 "Content-Type: text/plain; charset=UTF-8\n"
3589 "Content-Transfer-Encoding: 8bit\n"
3590-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
3591+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
3592 "X-Generator: Launchpad (build 15070)\n"
3593 "Language: eo\n"
3594
3595
3596=== modified file 'po/es.po'
3597--- po/es.po 2012-04-16 16:03:43 +0000
3598+++ po/es.po 2012-06-19 14:00:30 +0000
3599@@ -2,15 +2,15 @@
3600 msgstr ""
3601 "Project-Id-Version: 1.6.2\n"
3602 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
3603-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
3604-"PO-Revision-Date: 2012-03-22 12:53+0000\n"
3605-"Last-Translator: Fabounet <fabounet03@gmail.com>\n"
3606+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
3607+"PO-Revision-Date: 2012-06-12 06:24+0000\n"
3608+"Last-Translator: Morgus <Unknown>\n"
3609 "Language-Team: \n"
3610 "MIME-Version: 1.0\n"
3611 "Content-Type: text/plain; charset=UTF-8\n"
3612 "Content-Transfer-Encoding: 8bit\n"
3613-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
3614-"X-Generator: Launchpad (build 15070)\n"
3615+"X-Launchpad-Export-Date: 2012-06-13 04:35+0000\n"
3616+"X-Generator: Launchpad (build 15389)\n"
3617 "Language: \n"
3618 "X-Poedit-Language: Spanish\n"
3619
3620@@ -30,7 +30,7 @@
3621
3622 #: ../src/cairo-dock-gui-commons.c:369
3623 msgid "Configure this applet"
3624-msgstr "Configurar esta mini-aplicación"
3625+msgstr "Configurar esta miniaplicación"
3626
3627 #: ../src/cairo-dock-gui-commons.c:406 ../src/cairo-dock-gui-main.c:131
3628 msgid "Files"
3629@@ -187,7 +187,7 @@
3630
3631 #: ../src/cairo-dock-gui-main.c:1541
3632 msgid "Applets can be displayed on your desktop as widgets."
3633-msgstr "Las mini-aplicaciones pueden situarse en el escritorio como objetos."
3634+msgstr "Las miniaplicaciones pueden situarse en el escritorio como objetos."
3635
3636 #: ../src/cairo-dock-gui-main.c:1542 ../data/messages:89 ../data/messages:989
3637 msgid "Desklets"
3638@@ -313,7 +313,7 @@
3639 msgid ""
3640 "Click on an applet in order to have a preview and a description for it."
3641 msgstr ""
3642-"Haga clic sobre una mini-aplicación para tener una vista previa y una "
3643+"Pulse sobre una miniaplicación para ver una previsualización y una "
3644 "descripción de ella."
3645
3646 #: ../src/cairo-dock-gui-simple.c:823
3647@@ -322,7 +322,7 @@
3648
3649 #: ../src/cairo-dock-gui-simple.c:825 ../data/messages:485
3650 msgid "On click:"
3651-msgstr "Al hacer clic:"
3652+msgstr "Al pulsar:"
3653
3654 #: ../src/cairo-dock-gui-simple.c:898
3655 msgid ""
3656@@ -374,7 +374,7 @@
3657
3658 #: ../src/cairo-dock-menu.c:219 ../src/cairo-dock-menu.c:953
3659 msgid "Get more applets!"
3660-msgstr "¡Obtener más complementos!"
3661+msgstr "Obtener más miniaplicaciones"
3662
3663 #: ../src/cairo-dock-menu.c:223 ../src/cairo-dock-menu.c:229
3664 msgid "Donate"
3665@@ -422,18 +422,42 @@
3666 msgid "translator-credits"
3667 msgstr ""
3668 "Launchpad Contributions:\n"
3669+" Adolfo Jayme Barrientos https://launchpad.net/~fitoschido\n"
3670+" Alain Jerrel Bustamante-López https://launchpad.net/~zanmato\n"
3671 " Albert Milian https://launchpad.net/~mln-gmx\n"
3672+" Andrés Casals Jahnsen https://launchpad.net/~mxwig23\n"
3673+" Carlos Joel Delgado Pizarro https://launchpad.net/~carlosj2585\n"
3674 " Carlos Rosales https://launchpad.net/~chartre\n"
3675+" Daniel O. Mondaca S. https://launchpad.net/~dnielm\n"
3676+" David Portella https://launchpad.net/~dobled\n"
3677 " DiegoJ https://launchpad.net/~diegojromerolopez\n"
3678+" FaPrO https://launchpad.net/~fabro-pro\n"
3679 " Fabounet https://launchpad.net/~fabounet03\n"
3680+" Florencia Mincucci https://launchpad.net/~flomincucci\n"
3681+" Gonzalo Testa https://launchpad.net/~gonzalogtesta\n"
3682+" Harold https://launchpad.net/~sancospi\n"
3683 " Joaquín Padilla Rivero https://launchpad.net/~logseman\n"
3684+" José A. Fuentes Santiago https://launchpad.net/~joanfusan\n"
3685+" José Luis Figueroa https://launchpad.net/~jolfig\n"
3686+" Juan Eduardo Riva https://launchpad.net/~juaneduardoriva\n"
3687+" Juan Pablo Marzetti https://launchpad.net/~yonpols\n"
3688+" Kaede https://launchpad.net/~caramelo--asesino\n"
3689 " Martín V. https://launchpad.net/~martinvukovic\n"
3690 " Miguel Valdiri Badillo https://launchpad.net/~catastro1\n"
3691 " Monkey https://launchpad.net/~monkey-libre\n"
3692 " Morgus https://launchpad.net/~morgus\n"
3693+" Patricio Gonzalez https://launchpad.net/~pagondel\n"
3694+" Ricardo A. Hermosilla Carrillo https://launchpad.net/~rahermosillac\n"
3695 " Sergio Meneses https://launchpad.net/~sergiomeneses\n"
3696+" Stefano Prenna https://launchpad.net/~stefanoprenna\n"
3697+" benjamin https://launchpad.net/~jesuisbenjamin\n"
3698 " david cg https://launchpad.net/~dcardelleg\n"
3699-" orvalius https://launchpad.net/~orvalius"
3700+" hoortiz https://launchpad.net/~hoortiz\n"
3701+" hug0 https://launchpad.net/~hug0\n"
3702+" orvalius https://launchpad.net/~orvalius\n"
3703+" polkillas https://launchpad.net/~paulsanzcalvo\n"
3704+" rubioo https://launchpad.net/~rubioo\n"
3705+" sebikul https://launchpad.net/~sebikul"
3706
3707 #: ../src/cairo-dock-menu.c:285
3708 msgid "Support"
3709@@ -487,9 +511,9 @@
3710 "Now move some launchers or applets into it by right-clicking on the icon -> "
3711 "move to another dock"
3712 msgstr ""
3713-"El nuevo lanzador ha sido creado.\n"
3714-"Ahora mueva algunos lanzadores o complementos dentro haciendo clic derecho "
3715-"en el ícono -> mover a otro lanzador"
3716+"Se ha creado el nuevo dock.\n"
3717+"Ahora, mueva algunos lanzadores o miniaplicaciones a él pulsando con el "
3718+"botón derecho sobre un icono ‣ Mover a otro dock"
3719
3720 #: ../src/cairo-dock-menu.c:567
3721 msgid "Add"
3722@@ -542,9 +566,9 @@
3723 "You can customize it by right-clicking on it -> cairo-dock -> configure this "
3724 "dock."
3725 msgstr ""
3726-"El nuevo lanzador ha sido creado.\n"
3727-"Puede personalizarlo haciendo clic derecho en él -> cairo-dock -> configurar "
3728-"este lanzador"
3729+"Se ha creado el nuevo dock.\n"
3730+"Puede personalizarlo pulsando con el botón derecho sobre él ‣ Cairo-Dock ‣ "
3731+"Configurar este dock"
3732
3733 #: ../src/cairo-dock-menu.c:754
3734 msgid ""
3735@@ -558,7 +582,7 @@
3736 #, c-format
3737 msgid "You're about to remove this applet (%s) from the dock. Are you sure?"
3738 msgstr ""
3739-"Está apunto de remover la mini-aplicación (%s) de la barra. ¿Está seguro?"
3740+"Está a punto de quitar esta miniaplicación (%s) del dock. ¿Está seguro?"
3741
3742 # SOME DESCRIPTIVE TITLE.
3743 # Copyright (C) 2007 Cairo-Dock project
3744@@ -572,7 +596,7 @@
3745
3746 #: ../src/cairo-dock-menu.c:858
3747 msgid "Configure behaviour, appearance, and applets."
3748-msgstr "Configurar el comportamiento, la apariencia y aplicaciones."
3749+msgstr "Configurar comportamiento, apariencia y miniaplicaciones."
3750
3751 #: ../src/cairo-dock-menu.c:863
3752 msgid "Configure this dock"
3753@@ -620,8 +644,8 @@
3754 msgid ""
3755 "Third-party applets provide integration with many programs, like Pidgin"
3756 msgstr ""
3757-"Los complementos de terceros proveen integración con otros programas, como "
3758-"Pidgin"
3759+"Las miniaplicaciones de terceros proporcionan integración con muchos "
3760+"programas, como Pidgin"
3761
3762 #: ../src/cairo-dock-menu.c:961 ../src/help/applet-init.c:28
3763 #: ../src/help/applet-notifications.c:257
3764@@ -688,7 +712,7 @@
3765
3766 #: ../src/cairo-dock-menu.c:1065
3767 msgid "Applet's handbook"
3768-msgstr "Guía de la mini-aplicación"
3769+msgstr "Guía de la miniaplicación"
3770
3771 #: ../src/cairo-dock-menu.c:1110
3772 msgid "Pick up an image"
3773@@ -1189,13 +1213,11 @@
3774 "Hope you will enjoy this soft !\n"
3775 " (you can now click on this dialog to close it)"
3776 msgstr ""
3777-"Bienvenido a Cairo-Dock !\n"
3778-"Esta aplicación esta aquí para ayudarlo a comenzar usando el dock; solo e "
3779-"click sobre el.\n"
3780-"Si tiene alguna pregunta/solicitud/observación, por favor visítenos en "
3781-"http://glx-dock.org.\n"
3782-"Esperamos disfrute este software!\n"
3783-" (ahora se puede hacer click en este cuadro de dialogo para cerrarlo)"
3784+"¡Bienvenido a Cairo-Dock!\n"
3785+"Esta miniaplicación le ayudará a usar el dock, solo pulse sobre ella.\n"
3786+"Si tiene preguntas/pedidos/sugerencias, visítenos en http://glx-dock.org.\n"
3787+"Esperamos que disfrute este software.\n"
3788+" (pulse en este diálogo para cerrarlo)"
3789
3790 #: ../src/help/applet-composite.c:160
3791 msgid "Don't ask me any more"
3792@@ -1244,13 +1266,12 @@
3793 "Middle-click to open the configuration window.\n"
3794 "Right-click to access some troubleshooting actions."
3795 msgstr ""
3796-"Esta aplicación se hace para ayudarlo.\n"
3797-"Haga click en el icono para que aparezca consejos útiles acerca de las "
3798-"posibilidades de El Cairo-Dock.\n"
3799-"Haga click con el botón central del ratón para abrir la ventana de "
3800-"configuración.\n"
3801-"Haga click con el botón derecho para acceder a algunas de las acciones de "
3802-"solución de problemas."
3803+"Esta miniaplicación tiene como objetivo ayudarle.\n"
3804+"Pulse en su icono para mostrar consejos útiles sobre las posibilidades de "
3805+"Cairo-Dock.\n"
3806+"Pulse con el botón central para abrir la ventana de configuración.\n"
3807+"Pulse con el botón derecho para acceder a algunas acciones de solución de "
3808+"problemas."
3809
3810 #: ../src/help/applet-notifications.c:247
3811 msgid "Open global settings"
3812@@ -1329,11 +1350,11 @@
3813 "Some applets let you bind a shortkey to an action, and decide which action "
3814 "sould be on middle-click."
3815 msgstr ""
3816-"La mayoría de los iconos del dock realizan varias acciones : la acción "
3817-"primaria con el botón izquierdo del ratón, una acción secundaria con el "
3818-"botón central y acciones adicionales con el botón derecho (en el menú).\n"
3819-"Algunos complementos permiten vincular una tecla de acceso rápido a una "
3820-"acción y decidir qué acción se realiza con el click central."
3821+"La mayoría de iconos en el dock tienen varias acciones: la acción primaria "
3822+"se ejecuta al pulsar, la acción secundaria al pulsar con el botón central, y "
3823+"acciones adicionales al pulsar con el botón derecho.\n"
3824+"Algunas miniaplicaciones le permiten vincular una tecla de acceso rápido a "
3825+"una acción y así decidir qué acción realizar al pulsar con el botón central."
3826
3827 #: ../data/messages:7
3828 msgid "Adding features"
3829@@ -1349,16 +1370,16 @@
3830 "the \"More applets\" button (which will lead you to our applets web page) "
3831 "and then just drag-and-drop the link of an applet into your dock."
3832 msgstr ""
3833-"Cairo-Dock tiene muchos complementos. Los complementos son pequeñas "
3834-"aplicaciones dentro del dock, por ejemplo un reloj o un botón de finalizar "
3835-"sesión.\n"
3836-"Para habilitar nuevos complementos, ir a preferencias (click derecho -> "
3837-"Cairo-Dock -> configurar), ir a \"Componentes adicionales\", y marcar el "
3838-"complemento que se desea.\n"
3839-"Más complementos se pueden instalar fácilmente: en la ventana de "
3840-"configuración, click en el botón de \"Obtener más complementos\" (que nos "
3841-"redireccionará a nuestra página web de complementos) y luego simplemente "
3842-"arrastrar el enlace del complemento deseado al dock."
3843+"Cairo-Dock tiene muchas miniaplicaciones. Las miniaplicaciones son pequeños "
3844+"complementos que residen en el dock, por ejemplo un reloj o un botón para "
3845+"cerrar sesión.\n"
3846+"Para activar miniaplicaciones nuevas, abra la configuración (pulsación "
3847+"derecha ‣ Cairo-Dock ‣ Configurar), vaya a «Añadidos», y active la "
3848+"miniaplicación que desee.\n"
3849+"Puede instalar más miniaplicaciones fácilmente: en la ventana de "
3850+"configuración, pulse en «Más miniaplicaciones» (que le llevará a nuestro "
3851+"sitio web de miniaplicaciones) y luego arrastre el enlace de una "
3852+"miniaplicación y suéltelo en su dock."
3853
3854 #: ../data/messages:13
3855 msgid "Adding a launcher"
3856@@ -1374,8 +1395,8 @@
3857 "Se puede añadir un lanzador arrastrándolo desde el menú de Aplicaciones y "
3858 "soltándolo dentro del dock. Una flecha animada aparecerá cuando se pueda "
3859 "soltar.\n"
3860-"Alternativamente, si una aplicación ya está abierta, se puede hacer click "
3861-"derecho en su icono y seleccionar \"Crear un lanzador\"."
3862+"Alternativamente, si una aplicación ya está abierta, puede pulsar su icono "
3863+"con el botón derecho y seleccionar «Crear un lanzador»."
3864
3865 #: ../data/messages:17
3866 msgid "Removing a launcher"
3867@@ -1441,6 +1462,17 @@
3868 "of them to be used instead of the default icon theme, in the global config "
3869 "window."
3870 msgstr ""
3871+"Para un lanzador o miniaplicación:\n"
3872+"Abra la configuración de un icono y establezca la ruta a una imagen.\n"
3873+"- Para un icono de aplicación:\n"
3874+"Pulsación derecha sobre el icono ‣ «Otras acciones» ‣ «Establecer un icono "
3875+"personalizado», y elija una imagen. Para quitar la imagen personalizada, "
3876+"pulsación derecha sobre el icono ‣ «Otras acciones» ‣ «Quitar el icono "
3877+"personalizado».\n"
3878+"\n"
3879+"Si ha instalado temas de iconos en su equipo, también puede seleccionar uno "
3880+"de ellos para su uso en lugar del tema predeterminado, en la ventana de "
3881+"configuración global."
3882
3883 #: ../data/messages:33
3884 msgid "Resizing icons"
3885@@ -1456,13 +1488,13 @@
3886 "Also, you can define the size of each applet independently in their own "
3887 "settings."
3888 msgstr ""
3889-"Se pueden hacer los iconos o el efecto de zoom mayor o menor. Aprir las "
3890-"opciones (click derecho -> Cairo-Dock -> configuración), e ir a Apariencia "
3891-"(o Iconos en modo avanzado).\n"
3892-"Notar que si hay demasiados iconos en el dock, serán emequeñecidos para "
3893-"caber en la pantalla.\n"
3894-"También se puede definir el tamaño de cada complemento independientemente en "
3895-"sus opciones."
3896+"Puede cambiar el tamaño de los iconos y el efecto de ampliación. Abra la "
3897+"configuración (pulsación derecha ‣ Cairo-Dock ‣ Configurar), y vaya a "
3898+"Apariencia (o Iconos en el modo avanzado).\n"
3899+"Note que si hay demasiados iconos en el dock, éstos se reducirán para caber "
3900+"en la pantalla.\n"
3901+"También puede definir el tamaño individual de cada miniaplicación en sus "
3902+"configuraciones."
3903
3904 #: ../data/messages:37
3905 msgid "Separating icons"
3906@@ -1515,8 +1547,8 @@
3907 msgid ""
3908 "You can close a window by middle-clicking on its icon (or from the menu)."
3909 msgstr ""
3910-"Puedes cerrar una ventana haciendo click medio sobre el icono (o desde el "
3911-"menú)"
3912+"Puede cerrar una ventana haciendo una pulsación central sobre su icono (o "
3913+"desde el menú)."
3914
3915 #: ../data/messages:51
3916 msgid "Minimizing / restauring a window"
3917@@ -1636,7 +1668,7 @@
3918
3919 #: ../data/messages:91
3920 msgid "Placing applets on your desktop"
3921-msgstr "Colocando complementos en tu escritorio"
3922+msgstr "Colocar miniaplicaciones en su escritorio"
3923
3924 #: ../data/messages:93
3925 msgid ""
3926@@ -1644,10 +1676,13 @@
3927 "wherever on your desktop.\n"
3928 "To detach an applet from the dock, simply drag and drop it outside the dock."
3929 msgstr ""
3930+"Las miniaplicaciones pueden posicionarse en «desklets» que son ventanas "
3931+"pequeñas que pueden ubicarse en cualquier lugar de su escritorio.\n"
3932+"Para separar una miniaplicación del dock, simplemente arrástrela fuera de él."
3933
3934 #: ../data/messages:95
3935 msgid "Moving desklets"
3936-msgstr ""
3937+msgstr "Moviendo desklets"
3938
3939 #: ../data/messages:97
3940 msgid ""
3941@@ -1683,6 +1718,9 @@
3942 "applet, go to Desklet, and select the decoration you want (you can provide "
3943 "your own one)."
3944 msgstr ""
3945+"Los «desklets» pueden tener decoraciones. Para cambiar eso, abra la "
3946+"configuración de la miniaplicación, vaya a Desklet, y seleccione la "
3947+"decoración que desee (puede proporcionar la suya propia)."
3948
3949 #: ../data/messages:107
3950 msgid "Useful Features"
3951@@ -1701,6 +1739,12 @@
3952 "When a task has been or is going to be scheduled, the applet will warn you "
3953 "(15mn before the event, and also 1 day before in the case of an anniversary)."
3954 msgstr ""
3955+"Active la miniaplicación Reloj.\n"
3956+"Al pulsar sobre él se abrirá un calendario.\n"
3957+"Al pulsar dos veces sobre él se abrirá un editor de tareas. Allí puede "
3958+"añadir o quitar tareas.\n"
3959+"Cuando una tarea ha sido o será programada, la miniaplicación le avisará "
3960+"(15min antes del evento, o un día antes en caso de un aniversario)."
3961
3962 #: ../data/messages:113
3963 msgid "Having a list of all windows"
3964@@ -1736,6 +1780,9 @@
3965 "Activate the Show-Desktop applet.\n"
3966 "Right-click on it -> \"change resolution\" -> select the one you want."
3967 msgstr ""
3968+"Active la miniaplicación Mostrar escritorio.\n"
3969+"Pulse con el botón derecho en él ‣ «Cambiar resolución» ‣ seleccione la que "
3970+"desee.t"
3971
3972 #: ../data/messages:125
3973 msgid "Locking your session"
3974@@ -2083,15 +2130,16 @@
3975 #: ../data/messages:229
3976 msgid "The «netspeed» applet displays 0 even when I'm downloading something"
3977 msgstr ""
3978-"El applet «Redrapidez» expone 0 incluso cuando estoy trasvasando algo."
3979+"La miniaplicación «Velocidad de red» muestra 0 aun cuando estoy descargando "
3980+"algo"
3981
3982 #: ../data/messages:231
3983 msgid ""
3984 "Tip: you can run several instances of this applet if you wish to monitor "
3985 "several interfaces."
3986 msgstr ""
3987-"Pista: se puede iniciar este aplique varias veces si se desea controlar "
3988-"varias interfaces."
3989+"Consejo: puede ejecutar varias instancias de esta miniaplicación si quiere "
3990+"monitorear varias interfaces."
3991
3992 #: ../data/messages:233
3993 msgid ""
3994@@ -2169,7 +2217,7 @@
3995 msgid ""
3996 "If you wish to develop an applet, a complete documentation is available here."
3997 msgstr ""
3998-"Si usted desea desarrollar un applet, una documentación completa está "
3999+"Si quiere desarrollar una miniaplicación, hay una completa documentación "
4000 "disponible aquí."
4001
4002 #: ../data/messages:255
4003@@ -2182,9 +2230,10 @@
4004 "or to interact with the dock in any kind of way, a full DBus API is "
4005 "described here."
4006 msgstr ""
4007-"Si quieres crear un appelt con Python, Perl o cualquier otro lenguaje,\n"
4008-"o si quieres interactura con el dock por cualquira manera, un API DBus "
4009-"complete esta describido ahí."
4010+"Si quiere desarrollar una miniaplicación con Python, Perl o cualquier otro "
4011+"lenguaje,\n"
4012+"o quiere interactuar con el dock de otra manera, aquí está descrita una API "
4013+"completa de DBus."
4014
4015 #: ../data/messages:259
4016 msgid "DBus API"
4017@@ -2214,7 +2263,7 @@
4018
4019 #: ../data/messages:273
4020 msgid "More applets available online!"
4021-msgstr ""
4022+msgstr "Más miniaplicaiones disponibles en línea"
4023
4024 #: ../data/messages:275
4025 msgid "Cairo-Dock-Plug-ins-Extras"
4026@@ -2316,15 +2365,15 @@
4027
4028 #: ../data/messages:315
4029 msgid "Set to 0 to use the default applet size"
4030-msgstr "Establezca a 0 para usar el tamaño de aplique predeterminado"
4031+msgstr "Configure a 0 para usar el tamaño predeterminado de miniaplicación"
4032
4033 #: ../data/messages:317
4034 msgid "Desired icon size for this applet"
4035-msgstr "Tamaño de icono deseado para este aplique"
4036+msgstr "Tamaño de icono deseado para esta miniaplicación"
4037
4038 #: ../data/messages:319
4039 msgid "Applet's Handbook"
4040-msgstr "Manual del aplique"
4041+msgstr "Manual de la miniaplicación"
4042
4043 #: ../data/messages:321
4044 msgid "Desklet"
4045@@ -2722,7 +2771,7 @@
4046
4047 #: ../data/messages:523
4048 msgid "Add or remove any applet"
4049-msgstr "Agrega o remueve cualquier applet"
4050+msgstr "Añadir o quitar cualquier miniaplicación"
4051
4052 #: ../data/messages:525
4053 msgid ""
4054@@ -2730,11 +2779,11 @@
4055 "Click on the left check-box to (de)activate an applet.\n"
4056 "Once an applet is active, you can configure it by right clicking on its icon."
4057 msgstr ""
4058-"Seleccione una línea para obtener una descripción y una vista previa de la "
4059-"mini-aplicación.\n"
4060-"Haga click en la casilla izquierda para (des)activar una miniaplicación.\n"
4061-"Una vez que la mini-aplicación está activa, puede configurarla haciendo "
4062-"click derecho en su icono"
4063+"Seleccione una línea para obtener una previsualización y descripción de la "
4064+"miniaplicación.\n"
4065+"Pulse en la casilla a la izquierda para (des)activar una miniaplicación.\n"
4066+"Una vez que la miniaplicación esté activa, puede configurarla haciendo una "
4067+"pulsación derecha sobre su icono."
4068
4069 #: ../data/messages:527
4070 msgid ""
4071@@ -3346,6 +3395,8 @@
4072 #: ../data/messages:909
4073 msgid "Several applets can be visible even when the dock is hidden"
4074 msgstr ""
4075+"Algunas miniaplicaciones pueden permanecer visibles incluso cuando el dock "
4076+"está oculto"
4077
4078 #: ../data/messages:911
4079 msgid "Default background color when the dock is hidden"
4080
4081=== modified file 'po/et.po'
4082--- po/et.po 2012-04-16 16:03:43 +0000
4083+++ po/et.po 2012-06-19 14:00:30 +0000
4084@@ -7,14 +7,14 @@
4085 msgstr ""
4086 "Project-Id-Version: cairo-dock-core\n"
4087 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
4088-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
4089-"PO-Revision-Date: 2012-03-22 13:42+0000\n"
4090+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
4091+"PO-Revision-Date: 2012-04-14 18:48+0000\n"
4092 "Last-Translator: Fabounet <fabounet03@gmail.com>\n"
4093 "Language-Team: Estonian <et@li.org>\n"
4094 "MIME-Version: 1.0\n"
4095 "Content-Type: text/plain; charset=UTF-8\n"
4096 "Content-Transfer-Encoding: 8bit\n"
4097-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
4098+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
4099 "X-Generator: Launchpad (build 15070)\n"
4100 "Language: et\n"
4101
4102
4103=== modified file 'po/eu.po'
4104--- po/eu.po 2012-04-16 16:03:43 +0000
4105+++ po/eu.po 2012-06-19 14:00:30 +0000
4106@@ -8,14 +8,14 @@
4107 msgstr ""
4108 "Project-Id-Version: cairo-dock-core\n"
4109 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
4110-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
4111+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
4112 "PO-Revision-Date: 2012-03-21 03:02+0000\n"
4113 "Last-Translator: Mendi <arrietaarambarri@hotmail.com>\n"
4114 "Language-Team: librezale.org\n"
4115 "MIME-Version: 1.0\n"
4116 "Content-Type: text/plain; charset=UTF-8\n"
4117 "Content-Transfer-Encoding: 8bit\n"
4118-"X-Launchpad-Export-Date: 2012-04-13 05:20+0000\n"
4119+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
4120 "X-Generator: Launchpad (build 15070)\n"
4121 "Language: eu\n"
4122
4123
4124=== modified file 'po/fi.po'
4125--- po/fi.po 2012-04-16 16:03:43 +0000
4126+++ po/fi.po 2012-06-19 14:00:30 +0000
4127@@ -7,14 +7,14 @@
4128 msgstr ""
4129 "Project-Id-Version: cairo-dock-core\n"
4130 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
4131-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
4132-"PO-Revision-Date: 2012-03-22 13:37+0000\n"
4133+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
4134+"PO-Revision-Date: 2012-04-14 18:54+0000\n"
4135 "Last-Translator: Rami Selin <rami.selin@gmail.com>\n"
4136 "Language-Team: Finnish <fi@li.org>\n"
4137 "MIME-Version: 1.0\n"
4138 "Content-Type: text/plain; charset=UTF-8\n"
4139 "Content-Transfer-Encoding: 8bit\n"
4140-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
4141+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
4142 "X-Generator: Launchpad (build 15070)\n"
4143 "Language: fi\n"
4144
4145
4146=== modified file 'po/fo.po'
4147--- po/fo.po 2012-04-16 16:03:43 +0000
4148+++ po/fo.po 2012-06-19 14:00:30 +0000
4149@@ -7,14 +7,14 @@
4150 msgstr ""
4151 "Project-Id-Version: cairo-dock-core\n"
4152 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
4153-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
4154+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
4155 "PO-Revision-Date: 2012-03-21 02:58+0000\n"
4156 "Last-Translator: Matthieu Baerts <matttbe@gmail.com>\n"
4157 "Language-Team: Faroese <fo@li.org>\n"
4158 "MIME-Version: 1.0\n"
4159 "Content-Type: text/plain; charset=UTF-8\n"
4160 "Content-Transfer-Encoding: 8bit\n"
4161-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
4162+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
4163 "X-Generator: Launchpad (build 15070)\n"
4164 "Language: fo\n"
4165
4166
4167=== modified file 'po/fr.po'
4168--- po/fr.po 2012-04-16 16:03:43 +0000
4169+++ po/fr.po 2012-06-19 14:00:30 +0000
4170@@ -7,15 +7,15 @@
4171 msgstr ""
4172 "Project-Id-Version: 2.1.0\n"
4173 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
4174-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
4175-"PO-Revision-Date: 2012-04-01 12:59+0000\n"
4176+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
4177+"PO-Revision-Date: 2012-05-08 02:24+0000\n"
4178 "Last-Translator: Matthieu Baerts <matttbe@gmail.com>\n"
4179 "Language-Team: Cairo-Dock <LL@li.org>\n"
4180 "MIME-Version: 1.0\n"
4181 "Content-Type: text/plain; charset=UTF-8\n"
4182 "Content-Transfer-Encoding: 8bit\n"
4183-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
4184-"X-Generator: Launchpad (build 15070)\n"
4185+"X-Launchpad-Export-Date: 2012-05-09 04:40+0000\n"
4186+"X-Generator: Launchpad (build 15213)\n"
4187 "X-Poedit-Country: France\n"
4188 "Language: \n"
4189 "X-Poedit-Language: French\n"
4190@@ -437,6 +437,7 @@
4191 " Lentdormi https://launchpad.net/~dahr974\n"
4192 " Matthieu Baerts https://launchpad.net/~matttbe\n"
4193 " Nicolas Delvaux https://launchpad.net/~malizor\n"
4194+" Pierre Slamich https://launchpad.net/~pierre-slamich\n"
4195 " SQP https://launchpad.net/~sqp\n"
4196 " Thibault Févry https://launchpad.net/~thibaultfevry\n"
4197 " bouchard renaud https://launchpad.net/~renaud-bouchard\n"
4198@@ -3555,12 +3556,12 @@
4199
4200 #: ../data/messages:907
4201 msgid "Background when hidden"
4202-msgstr "Arrière plan lorsque que c'est caché"
4203+msgstr "Arrière plan du dock caché"
4204
4205 #: ../data/messages:909
4206 msgid "Several applets can be visible even when the dock is hidden"
4207 msgstr ""
4208-"Plusieurs applets peuvent être visible même lorsque le dock est caché."
4209+"Plusieurs applets peuvent être visibles même lorsque le dock est caché."
4210
4211 #: ../data/messages:911
4212 msgid "Default background color when the dock is hidden"
4213
4214=== modified file 'po/gl.po'
4215--- po/gl.po 2012-04-16 16:03:43 +0000
4216+++ po/gl.po 2012-06-19 14:00:30 +0000
4217@@ -7,14 +7,14 @@
4218 msgstr ""
4219 "Project-Id-Version: cairo-dock-core\n"
4220 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
4221-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
4222-"PO-Revision-Date: 2012-03-22 13:17+0000\n"
4223+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
4224+"PO-Revision-Date: 2012-04-14 18:49+0000\n"
4225 "Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n"
4226 "Language-Team: Galician <gl@li.org>\n"
4227 "MIME-Version: 1.0\n"
4228 "Content-Type: text/plain; charset=UTF-8\n"
4229 "Content-Transfer-Encoding: 8bit\n"
4230-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
4231+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
4232 "X-Generator: Launchpad (build 15070)\n"
4233 "Language: gl\n"
4234
4235
4236=== modified file 'po/hu.po'
4237--- po/hu.po 2012-04-16 16:03:43 +0000
4238+++ po/hu.po 2012-06-19 14:00:30 +0000
4239@@ -7,15 +7,15 @@
4240 msgstr ""
4241 "Project-Id-Version: cairo-dock-core\n"
4242 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
4243-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
4244-"PO-Revision-Date: 2012-03-22 13:17+0000\n"
4245-"Last-Translator: Fabounet <fabounet03@gmail.com>\n"
4246+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
4247+"PO-Revision-Date: 2012-04-22 13:19+0000\n"
4248+"Last-Translator: Péter Trombitás <trombipeti@gmail.com>\n"
4249 "Language-Team: Hungarian <hu@li.org>\n"
4250 "MIME-Version: 1.0\n"
4251 "Content-Type: text/plain; charset=UTF-8\n"
4252 "Content-Transfer-Encoding: 8bit\n"
4253-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
4254-"X-Generator: Launchpad (build 15070)\n"
4255+"X-Launchpad-Export-Date: 2012-04-23 04:42+0000\n"
4256+"X-Generator: Launchpad (build 15135)\n"
4257 "Language: hu\n"
4258
4259 #: ../src/cairo-dock-gui-commons.c:221
4260@@ -70,15 +70,15 @@
4261
4262 #: ../src/cairo-dock-gui-commons.c:575
4263 msgid "Press the shortkey"
4264-msgstr ""
4265+msgstr "Nyomja meg a gyorsgombot"
4266
4267 #: ../src/cairo-dock-gui-commons.c:594
4268 msgid "Change the shortkey"
4269-msgstr ""
4270+msgstr "Gyorsgomb megváltoztatása"
4271
4272 #: ../src/cairo-dock-gui-commons.c:681
4273 msgid "Origin"
4274-msgstr ""
4275+msgstr "Forrás"
4276
4277 #: ../src/cairo-dock-gui-commons.c:686
4278 msgid "Action"
4279@@ -86,7 +86,7 @@
4280
4281 #: ../src/cairo-dock-gui-commons.c:690
4282 msgid "Shortkey"
4283-msgstr ""
4284+msgstr "Gyorsgomb"
4285
4286 #: ../src/cairo-dock-gui-items.c:242
4287 msgid ""
4288@@ -154,7 +154,7 @@
4289
4290 #: ../src/cairo-dock-gui-main.c:1502 ../data/messages:515 ../data/messages:767
4291 msgid "Shortkeys"
4292-msgstr ""
4293+msgstr "Gyorsgombok"
4294
4295 #: ../src/cairo-dock-gui-main.c:1508
4296 msgid "All of the parameters you will never want to tweak."
4297@@ -441,6 +441,8 @@
4298 "Thanks to all people that help us to improve the Cairo-Dock project.\n"
4299 "Thanks to all current, former and future contributors."
4300 msgstr ""
4301+"Köszönet mindenkinek, aki segíti a Cairo-Dock projekt fejlődését.\n"
4302+"Köszönet minden jelenlegi, volt és jövendőbeli közreműködőnek."
4303
4304 #: ../src/cairo-dock-menu.c:317
4305 msgid "How to help us?"
4306@@ -448,7 +450,7 @@
4307
4308 #: ../src/cairo-dock-menu.c:318
4309 msgid "Don't hesitate to join the project, we need you ;)"
4310-msgstr ""
4311+msgstr "Ne habozzon, csatlakozzon most a projekthez, szükségünk van Önre!"
4312
4313 #: ../src/cairo-dock-menu.c:319
4314 msgid "Former contributors"
4315@@ -460,7 +462,7 @@
4316
4317 #: ../src/cairo-dock-menu.c:321
4318 msgid "Users of our forum"
4319-msgstr ""
4320+msgstr "A fórum felhasználói"
4321
4322 #: ../src/cairo-dock-menu.c:322
4323 msgid "Artwork"
4324@@ -589,7 +591,7 @@
4325
4326 #: ../src/cairo-dock-menu.c:898
4327 msgid "Lock icons position"
4328-msgstr ""
4329+msgstr "Ikonok helyzetének rögzítése"
4330
4331 #: ../src/cairo-dock-menu.c:902
4332 msgid "This will (un)lock the position of the icons."
4333
4334=== modified file 'po/id.po'
4335--- po/id.po 2012-04-16 16:03:43 +0000
4336+++ po/id.po 2012-06-19 14:00:30 +0000
4337@@ -7,14 +7,14 @@
4338 msgstr ""
4339 "Project-Id-Version: cairo-dock-core\n"
4340 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
4341-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
4342-"PO-Revision-Date: 2012-03-22 13:36+0000\n"
4343+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
4344+"PO-Revision-Date: 2012-04-14 18:54+0000\n"
4345 "Last-Translator: Fabounet <fabounet03@gmail.com>\n"
4346 "Language-Team: Indonesian <id@li.org>\n"
4347 "MIME-Version: 1.0\n"
4348 "Content-Type: text/plain; charset=UTF-8\n"
4349 "Content-Transfer-Encoding: 8bit\n"
4350-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
4351+"X-Launchpad-Export-Date: 2012-04-15 04:39+0000\n"
4352 "X-Generator: Launchpad (build 15070)\n"
4353 "Language: id\n"
4354
4355
4356=== modified file 'po/it.po'
4357--- po/it.po 2012-04-16 16:03:43 +0000
4358+++ po/it.po 2012-06-19 14:00:30 +0000
4359@@ -7,15 +7,15 @@
4360 msgstr ""
4361 "Project-Id-Version: 1.4.5\n"
4362 "Report-Msgid-Bugs-To: fabounet@glx-dock.org\n"
4363-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
4364-"PO-Revision-Date: 2012-03-22 13:48+0000\n"
4365-"Last-Translator: Mattia Tavernini <maathias@interfree.it>\n"
4366+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
4367+"PO-Revision-Date: 2012-06-03 11:35+0000\n"
4368+"Last-Translator: Wonderfulheart <Unknown>\n"
4369 "Language-Team: Italian <kde-i18n-it@lists.kde.org>\n"
4370 "MIME-Version: 1.0\n"
4371 "Content-Type: text/plain; charset=UTF-8\n"
4372 "Content-Transfer-Encoding: 8bit\n"
4373-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
4374-"X-Generator: Launchpad (build 15070)\n"
4375+"X-Launchpad-Export-Date: 2012-06-04 04:35+0000\n"
4376+"X-Generator: Launchpad (build 15353)\n"
4377 "Language: it\n"
4378
4379 #: ../src/cairo-dock-gui-commons.c:221
4380@@ -71,23 +71,23 @@
4381
4382 #: ../src/cairo-dock-gui-commons.c:575
4383 msgid "Press the shortkey"
4384-msgstr ""
4385+msgstr "Premere il tasto scorciatoia"
4386
4387 #: ../src/cairo-dock-gui-commons.c:594
4388 msgid "Change the shortkey"
4389-msgstr ""
4390+msgstr "Cambia il tasto scorciatoia"
4391
4392 #: ../src/cairo-dock-gui-commons.c:681
4393 msgid "Origin"
4394-msgstr ""
4395+msgstr "Origine"
4396
4397 #: ../src/cairo-dock-gui-commons.c:686
4398 msgid "Action"
4399-msgstr ""
4400+msgstr "Azione"
4401
4402 #: ../src/cairo-dock-gui-commons.c:690
4403 msgid "Shortkey"
4404-msgstr ""
4405+msgstr "Tasto scorciatoia"
4406
4407 #: ../src/cairo-dock-gui-items.c:242
4408 msgid ""
4409@@ -102,7 +102,7 @@
4410
4411 #: ../src/cairo-dock-gui-items.c:878
4412 msgid "Remove this item"
4413-msgstr ""
4414+msgstr "Rimuovere questa voce"
4415
4416 #: ../src/cairo-dock-gui-main.c:129 ../data/messages:665
4417 msgid "Behaviour"
4418@@ -153,11 +153,11 @@
4419
4420 #: ../src/cairo-dock-gui-main.c:1501
4421 msgid "Define all the keyboard shortcuts currently available."
4422-msgstr ""
4423+msgstr "Rileva tutte le scorciatoie da tastiera attualmente disponibili."
4424
4425 #: ../src/cairo-dock-gui-main.c:1502 ../data/messages:515 ../data/messages:767
4426 msgid "Shortkeys"
4427-msgstr ""
4428+msgstr "Tasti scorciatoia"
4429
4430 #: ../src/cairo-dock-gui-main.c:1508
4431 msgid "All of the parameters you will never want to tweak."
4432@@ -315,7 +315,7 @@
4433 #: ../src/cairo-dock-gui-simple.c:797
4434 msgid ""
4435 "Click on an applet in order to have a preview and a description for it."
4436-msgstr "Clicca su di un'applet per averne un'anteprima e una sua descrizione"
4437+msgstr "Clicca su un'applet per avere un'anteprima e una sua descrizione."
4438
4439 #: ../src/cairo-dock-gui-simple.c:823
4440 msgid "On mouse hover:"
4441@@ -348,8 +348,8 @@
4442 "powerful tool to customise your current theme."
4443 msgstr ""
4444 "La Modalità avanzata dà la possibilità di configurare ogni singolo parametro "
4445-"della dock. E' uno strumento potente per customizzare il tema attualmente in "
4446-"uso."
4447+"della dock. E' uno strumento potente per personalizzare il tema attualmente "
4448+"in uso."
4449
4450 #: ../src/cairo-dock-gui-themes.c:149
4451 msgid "Importing theme ..."
4452@@ -387,24 +387,24 @@
4453 msgid ""
4454 "Support the people who spend countless hours to bring you the best dock ever."
4455 msgstr ""
4456-"Supporta le persone che spendono gratuitamente il loro tempo per consegnarti "
4457-"la migliore dock in assoluto."
4458+"Sostieni le persone che impiegano gratuitamente il loro tempo per "
4459+"consegnarti la migliore dock in assoluto."
4460
4461 #: ../src/cairo-dock-menu.c:260
4462 msgid "Here is a list of the current developers and contributors"
4463-msgstr ""
4464+msgstr "Ecco una lista degli attuali sviluppatori e collaboratori"
4465
4466 #: ../src/cairo-dock-menu.c:261
4467 msgid "Developers"
4468-msgstr ""
4469+msgstr "Sviluppatori"
4470
4471 #: ../src/cairo-dock-menu.c:262
4472 msgid "Main developer and project leader"
4473-msgstr ""
4474+msgstr "Sviluppatore principale e Leader del Progetto"
4475
4476 #: ../src/cairo-dock-menu.c:263
4477 msgid "Contributors / Hackers"
4478-msgstr ""
4479+msgstr "Collaboratori / Esperti"
4480
4481 #: ../src/cairo-dock-menu.c:265
4482 msgid "Development"
4483@@ -412,23 +412,33 @@
4484
4485 #: ../src/cairo-dock-menu.c:280
4486 msgid "Website"
4487-msgstr ""
4488+msgstr "Sito Web"
4489
4490 #: ../src/cairo-dock-menu.c:281
4491 msgid "Beta-testing / Suggestions / Forum animation"
4492-msgstr ""
4493+msgstr "Beta-testing / Suggerimenti / Animazione Forum"
4494
4495 #: ../src/cairo-dock-menu.c:282
4496 msgid "Translators for this language"
4497-msgstr ""
4498+msgstr "Traduttori nella lingua italiana"
4499
4500 #: ../src/cairo-dock-menu.c:283
4501 msgid "translator-credits"
4502 msgstr ""
4503 "Launchpad Contributions:\n"
4504 " Andrea Amoroso https://launchpad.net/~heiko81\n"
4505+" Andrea Calabrò https://launchpad.net/~mastropino\n"
4506+" Giampaolo Bozzali https://launchpad.net/~g.bozzali\n"
4507+" Loscuby https://launchpad.net/~scuby84\n"
4508+" Luca Vercelli https://launchpad.net/~luca-vercelli\n"
4509 " Mario Calabrese https://launchpad.net/~mario-calabrese\n"
4510-" Mattia Tavernini https://launchpad.net/~maathias"
4511+" Mattia Tavernini https://launchpad.net/~maathias\n"
4512+" Natale https://launchpad.net/~ngm270189\n"
4513+" Stefano Prenna https://launchpad.net/~stefanoprenna\n"
4514+" Wonderfulheart https://launchpad.net/~wonderfulheart\n"
4515+" bobol68 https://launchpad.net/~bobol68\n"
4516+" danielesil88 https://launchpad.net/~danielesil88\n"
4517+" yoruk https://launchpad.net/~yoruk87"
4518
4519 #: ../src/cairo-dock-menu.c:285
4520 msgid "Support"
4521@@ -439,26 +449,29 @@
4522 "Thanks to all people that help us to improve the Cairo-Dock project.\n"
4523 "Thanks to all current, former and future contributors."
4524 msgstr ""
4525+"Grazie a tutte le persone che ci aiutano a migliorare il progetto Cairo-"
4526+"Dock.\n"
4527+"Grazie a tutti i collaboratori attuali, precedenti e futuri."
4528
4529 #: ../src/cairo-dock-menu.c:317
4530 msgid "How to help us?"
4531-msgstr ""
4532+msgstr "Come aiutarci?"
4533
4534 #: ../src/cairo-dock-menu.c:318
4535 msgid "Don't hesitate to join the project, we need you ;)"
4536-msgstr ""
4537+msgstr "Non esitare ad unirti al progetto, abbiamo bisogno di te ;)"
4538
4539 #: ../src/cairo-dock-menu.c:319
4540 msgid "Former contributors"
4541-msgstr ""
4542+msgstr "Collaboratori di concetto"
4543
4544 #: ../src/cairo-dock-menu.c:320
4545 msgid "For a complete list, please have a look to BZR logs"
4546-msgstr ""
4547+msgstr "Per una lista completa, per favore date uno sguardo ai log della BZR"
4548
4549 #: ../src/cairo-dock-menu.c:321
4550 msgid "Users of our forum"
4551-msgstr ""
4552+msgstr "Utenti del nostro forum"
4553
4554 #: ../src/cairo-dock-menu.c:322
4555 msgid "Artwork"
4556@@ -466,11 +479,11 @@
4557
4558 #: ../src/cairo-dock-menu.c:324
4559 msgid "Thanks"
4560-msgstr ""
4561+msgstr "Ringraziamenti"
4562
4563 #: ../src/cairo-dock-menu.c:401
4564 msgid "Quit Cairo-Dock?"
4565-msgstr "Esci da Cairo-Dock?"
4566+msgstr "Uscire da Cairo-Dock?"
4567
4568 #: ../src/cairo-dock-menu.c:431 ../src/cairo-dock-menu.c:573
4569 msgid "Separator"
4570@@ -483,7 +496,7 @@
4571 "move to another dock"
4572 msgstr ""
4573 "La nuova dock è stata creata.\n"
4574-"Adesso sposta qualche lanciatore o applet su di lei con clic destro "
4575+"Adesso sposta qualche lanciatore o applet su di essa con clic destro "
4576 "sull'icona -> Sposta in un'altra dock"
4577
4578 #: ../src/cairo-dock-menu.c:567
4579@@ -500,12 +513,12 @@
4580
4581 #: ../src/cairo-dock-menu.c:575
4582 msgid "Custom launcher"
4583-msgstr "Lanciatori personalizzati"
4584+msgstr "Lanciatore personalizzato"
4585
4586 #: ../src/cairo-dock-menu.c:576
4587 msgid ""
4588 "Usually you would drag a launcher from the menu and drop it on the dock."
4589-msgstr "Di solito trascineresti un lanciatore dal menu alla dock."
4590+msgstr "Di solito dovresti trascinare un lanciatore dal menu alla dock."
4591
4592 #: ../src/cairo-dock-menu.c:593
4593 msgid "separator"
4594@@ -551,7 +564,7 @@
4595 #: ../src/cairo-dock-menu.c:795
4596 #, c-format
4597 msgid "You're about to remove this applet (%s) from the dock. Are you sure?"
4598-msgstr "Stai per rimuovere questo applet (%s) dalla dock. Sicuro?"
4599+msgstr "Stai per rimuovere questa applet (%s) dalla dock. Sei sicuro?"
4600
4601 #: ../src/cairo-dock-menu.c:853
4602 msgid "Configure"
4603@@ -559,7 +572,7 @@
4604
4605 #: ../src/cairo-dock-menu.c:858
4606 msgid "Configure behaviour, appearance, and applets."
4607-msgstr "Configura il comportamento, l'aspetto, e le applet."
4608+msgstr "Configura il comportamento, l'aspetto e le applet."
4609
4610 #: ../src/cairo-dock-menu.c:863
4611 msgid "Configure this dock"
4612@@ -568,7 +581,7 @@
4613 #: ../src/cairo-dock-menu.c:868
4614 msgid "Customize the position, visibility and appearance of this main dock."
4615 msgstr ""
4616-"Personalizza la posizione, visibilità e apparenza della dock principale."
4617+"Personalizza la posizione, la visibilità e l'aspetto della dock principale."
4618
4619 #: ../src/cairo-dock-menu.c:870
4620 msgid "Delete this dock"
4621@@ -582,12 +595,12 @@
4622 msgid ""
4623 "Choose from amongst many themes on the server or save your current theme."
4624 msgstr ""
4625-"Scegli uno tra i molti temi disponibili sul server, e salva il tuo tema "
4626+"Scegli tra uno dei molti temi disponibili sul server o salva il tuo tema "
4627 "corrente."
4628
4629 #: ../src/cairo-dock-menu.c:898
4630 msgid "Lock icons position"
4631-msgstr ""
4632+msgstr "Blocca le icone"
4633
4634 #: ../src/cairo-dock-menu.c:902
4635 msgid "This will (un)lock the position of the icons."
4636@@ -609,8 +622,8 @@
4637 msgid ""
4638 "Third-party applets provide integration with many programs, like Pidgin"
4639 msgstr ""
4640-"Le applet di terze-parti provvedono all'integrazione di molti programmi, "
4641-"come Pidgin"
4642+"Le applet di terze-parti forniscono un'integrazione a molti programmi, come "
4643+"Pidgin"
4644
4645 #: ../src/cairo-dock-menu.c:961 ../src/help/applet-init.c:28
4646 #: ../src/help/applet-notifications.c:257
4647@@ -636,14 +649,17 @@
4648 "It's not advised to quit the dock but you can press Shift to unlock this "
4649 "menu entry."
4650 msgstr ""
4651+"Stai usando una sessione Cairo-Dock!\n"
4652+"Non è consigliato uscire dalla dock ma è possibile premere Shift per "
4653+"sbloccare questa voce del menu."
4654
4655 #: ../src/cairo-dock-menu.c:1018 ../src/cairo-dock-menu.c:1039
4656 msgid "Edit"
4657-msgstr ""
4658+msgstr "Modifica"
4659
4660 #: ../src/cairo-dock-menu.c:1020 ../src/cairo-dock-menu.c:1046
4661 msgid "Remove"
4662-msgstr ""
4663+msgstr "Elimina"
4664
4665 #: ../src/cairo-dock-menu.c:1021
4666 msgid ""
4667@@ -666,7 +682,7 @@
4668
4669 #: ../src/cairo-dock-menu.c:1043
4670 msgid "Detach"
4671-msgstr ""
4672+msgstr "Distacca"
4673
4674 #: ../src/cairo-dock-menu.c:1043
4675 msgid "Return to the dock"
4676@@ -674,7 +690,7 @@
4677
4678 #: ../src/cairo-dock-menu.c:1050
4679 msgid "Duplicate"
4680-msgstr ""
4681+msgstr "Duplica"
4682
4683 #: ../src/cairo-dock-menu.c:1065
4684 msgid "Applet's handbook"
4685@@ -682,7 +698,7 @@
4686
4687 #: ../src/cairo-dock-menu.c:1110
4688 msgid "Pick up an image"
4689-msgstr ""
4690+msgstr "Trovare un'immagine"
4691
4692 #: ../src/cairo-dock-menu.c:1341
4693 #, c-format
4694@@ -778,7 +794,7 @@
4695 #: ../src/cairo-dock-menu.c:1666 ../src/cairo-dock-menu.c:1668
4696 #: ../data/messages:745
4697 msgid "Lower"
4698-msgstr ""
4699+msgstr "Arrotola"
4700
4701 #: ../src/cairo-dock-menu.c:1674 ../src/cairo-dock-menu.c:1676
4702 #: ../data/messages:739
4703@@ -832,7 +848,7 @@
4704 "config.\n"
4705 "It is located in the 'Taskbar' module."
4706 msgstr ""
4707-"L'opzione ' sovrascrivi le icone di X' è stata automaticamente abilitata "
4708+"L'opzione 'sovrascrivi le icone di X' è stata automaticamente abilitata "
4709 "nella configurazione.\n"
4710 "E' rintracciabile nel modulo 'Taskbar'."
4711
4712@@ -847,7 +863,7 @@
4713
4714 #: ../src/cairo-dock.c:328
4715 msgid "Use OpenGL backend."
4716-msgstr "Usa il backend OpenGL"
4717+msgstr "Usa il backend OpenGL."
4718
4719 #: ../src/cairo-dock.c:331
4720 msgid ""
4721@@ -859,7 +875,7 @@
4722
4723 #: ../src/cairo-dock.c:334
4724 msgid "Ask again on startup which backend to use."
4725-msgstr ""
4726+msgstr "Chiedi nuovamente all'avvio quale backend usare."
4727
4728 #: ../src/cairo-dock.c:337
4729 msgid "Force the dock to consider this environnement - use it with care."
4730@@ -870,7 +886,7 @@
4731 msgid ""
4732 "Force the dock to load from this directory, instead of ~/.config/cairo-dock."
4733 msgstr ""
4734-"Forza la dock a caricare da questa cartella, invece che da ~/.config/cairo-"
4735+"Forza la dock a caricare da questa directory, invece che da ~/.config/cairo-"
4736 "dock."
4737
4738 #: ../src/cairo-dock.c:343
4739@@ -879,15 +895,15 @@
4740 "default server address."
4741 msgstr ""
4742 "Indirizzo di un server contenente temi addizionali. Questo sovrascriverà "
4743-"l'indirizzo server di default."
4744+"l'indirizzo del server predefinito."
4745
4746 #: ../src/cairo-dock.c:346
4747 msgid ""
4748 "Wait for N seconds before starting; this is useful if you notice some "
4749 "problems when the dock starts with the session."
4750 msgstr ""
4751-"Attendi per N secondi prima di partire; questo è utile se sperimenti "
4752-"problemi quando la dock si avvia ad inizio sessione."
4753+"Attendi per N secondi prima di partire; questo è utile se hai problemi "
4754+"quando la dock si avvia ad inizio sessione."
4755
4756 #: ../src/cairo-dock.c:349
4757 msgid ""
4758@@ -910,7 +926,7 @@
4759 msgid ""
4760 "Log verbosity (debug,message,warning,critical,error); default is warning."
4761 msgstr ""
4762-"Log verboso (debug,message,warning,critical,error); di base è solo warning."
4763+"Log prolisso (debug,message,warning,critical,error); di base è solo warning."
4764
4765 #: ../src/cairo-dock.c:361
4766 msgid "Force to display some output messages with colors."
4767@@ -942,8 +958,8 @@
4768 "Ask the dock to load additionnal modules contained in this directory (though "
4769 "it is unsafe for your dock to load unnofficial modules)."
4770 msgstr ""
4771-"Domanda alla dock di caricare moduli addizionali contenuti in questa "
4772-"cartella (ricorda che non è sicuro per la tua dock, caricare moduli non "
4773+"Domanda alla dock di caricare i moduli addizionali contenuti in questa "
4774+"directory (sebbene non sia sicuro per la tua dock caricare moduli non "
4775 "ufficiali)."
4776
4777 #: ../src/cairo-dock.c:383
4778@@ -951,20 +967,20 @@
4779 "For debugging purpose only. The crash manager will not be started to hunt "
4780 "down the bugs."
4781 msgstr ""
4782-"Per interessi di debug soltanto. Il manager dei crash non verrà avviato per "
4783-"ricercare gli errori."
4784+"Solo per interesse di debug. Il manager dei crash non sarà avviato per "
4785+"ricercare degli errori."
4786
4787 #: ../src/cairo-dock.c:386
4788 msgid ""
4789 "For debugging purpose only. Some hidden and still unstable options will be "
4790 "activated."
4791 msgstr ""
4792-"Per interessi di debug soltanto. Qualche opzione ancora nascosta e instabile "
4793-"sarà attivata."
4794+"Solo per interesse di debug. Saranno attivate delle opzioni ancora nascoste "
4795+"ed instabili."
4796
4797 #: ../src/cairo-dock.c:503
4798 msgid "Use OpenGL in Cairo-Dock"
4799-msgstr "Utilizza OpenGL in Cairo-Dock?"
4800+msgstr "Utilizza OpenGL in Cairo-Dock"
4801
4802 #: ../src/cairo-dock.c:511
4803 msgid ""
4804@@ -983,10 +999,10 @@
4805 "In ogni caso, alcune schede video e/o i relativi driver non la supportano "
4806 "completamente, il che potrebbe causare un funzionamento non corretto della "
4807 "dock.\n"
4808-"Attiva OpenGL?\n"
4809+"Vuoi attivare OpenGL?\n"
4810 " (Per non mostrare questo avviso, lanciare la dock dal menu delle "
4811 "Applicazioni,\n"
4812-" oppure con l'opzione -o per forzare OpenGL e -c per forzare cairo.)"
4813+" oppure con l'opzione -o per forzare OpenGL e -c per forzare Cairo.)"
4814
4815 #: ../src/cairo-dock.c:522
4816 msgid "Remember this choice"
4817@@ -1004,8 +1020,8 @@
4818 "at http://glx-dock.org"
4819 msgstr ""
4820 "Il modulo '%s' potrebbe avere incontrato un problema.\n"
4821-"E' stato riavviato con successo, ma è accaduto ancora; ti ringraziamo se lo "
4822-"riferisci su http://glx-dock.org"
4823+"E' stato riavviato con successo, ma se accade ancora, per favore, "
4824+"riferiscilo su http://glx-dock.org"
4825
4826 #: ../src/gldit/cairo-dock-applet-facility.h:277
4827 msgid ""
4828@@ -1051,7 +1067,7 @@
4829 #: ../src/gldit/cairo-dock-dock-manager.c:1656
4830 #: ../src/gldit/cairo-dock-dock-manager.c:1757
4831 msgid "Pop up the main dock"
4832-msgstr ""
4833+msgstr "Fai apparire la Dock principale"
4834
4835 #: ../src/gldit/cairo-dock-gui-factory.c:243
4836 #, c-format
4837@@ -1060,7 +1076,7 @@
4838
4839 #: ../src/gldit/cairo-dock-gui-factory.c:255
4840 msgid "kB"
4841-msgstr "kB"
4842+msgstr "KB"
4843
4844 #: ../src/gldit/cairo-dock-gui-factory.c:257
4845 msgid "MB"
4846@@ -1088,11 +1104,11 @@
4847
4848 #: ../src/gldit/cairo-dock-gui-factory.c:724
4849 msgid "Pick up a file"
4850-msgstr ""
4851+msgstr "Trovare un file"
4852
4853 #: ../src/gldit/cairo-dock-gui-factory.c:724
4854 msgid "Pick up a directory"
4855-msgstr ""
4856+msgstr "Trovare una directory"
4857
4858 #: ../src/gldit/cairo-dock-gui-factory.c:984
4859 msgid "_Custom Icons_"
4860@@ -1135,7 +1151,7 @@
4861
4862 #: ../src/gldit/cairo-dock-gui-factory.c:2962
4863 msgid "Theme"
4864-msgstr "tema"
4865+msgstr "Tema"
4866
4867 #: ../src/gldit/cairo-dock-gui-factory.c:2975
4868 msgid "Rating"
4869@@ -1143,7 +1159,7 @@
4870
4871 #: ../src/gldit/cairo-dock-gui-factory.c:2981
4872 msgid "Sobriety"
4873-msgstr "sobrietà"
4874+msgstr "Sobrietà"
4875
4876 #: ../src/gldit/cairo-dock-gui-factory.c:3054
4877 msgid "link"
4878@@ -1151,7 +1167,7 @@
4879
4880 #: ../src/gldit/cairo-dock-gui-factory.c:3107
4881 msgid "Grab"
4882-msgstr "cattura"
4883+msgstr "Cattura"
4884
4885 #: ../src/gldit/cairo-dock-struct.h:423
4886 msgid "Default"
4887@@ -1172,6 +1188,8 @@
4888 "Could not access remote file %s. Maybe the server is down.\n"
4889 "Please retry later or contact us at glx-dock.org."
4890 msgstr ""
4891+"Non posso accedere al file remoto %s. Il server potrebbe essere spento.\n"
4892+"Per favore prova più tardi o contattaci su glx-dock.org."
4893
4894 #: ../src/gldit/cairo-dock-themes-manager.c:267
4895 #, c-format
4896@@ -1192,12 +1210,12 @@
4897 " (you can now click on this dialog to close it)"
4898 msgstr ""
4899 "Benvenuto in Cairo-Dock!\n"
4900-"Quest' applet è qui per aiutarti ad iniziare con l'utilizzo della dock; "
4901-"basta cliccarci sopra.\n"
4902-"Se hai delle domande/richieste/segnalazioni, per favore spendi una visita al "
4903+"Quest'applet è qui per aiutarti ad iniziare con l'utilizzo della dock; basta "
4904+"cliccarci sopra.\n"
4905+"Se hai delle domande/richieste/segnalazioni, per favore facci una visita al "
4906 "sito http://glx-dock.org.\n"
4907-"Speriamo tu gradisca questo software!\n"
4908-" (adesso puoi cliccare sul dialogo per chiuderlo)"
4909+"Speriamo che tu gradisca questo software!\n"
4910+" (adesso puoi cliccare su questo dialogo per chiuderlo)"
4911
4912 #: ../src/help/applet-composite.c:160
4913 msgid "Don't ask me any more"
4914@@ -1390,7 +1408,7 @@
4915
4916 #: ../data/messages:21
4917 msgid "Grouping icons into a sub-dock"
4918-msgstr "Ragruppare le icone in sub-dock"
4919+msgstr "Raggruppare le icone in una sub-dock"
4920
4921 #: ../data/messages:23
4922 msgid ""
4923@@ -1465,13 +1483,13 @@
4924 "Also, you can define the size of each applet independently in their own "
4925 "settings."
4926 msgstr ""
4927-"Puoi rendere più grandi o più piccoli sia le icone che l'effetto zoom. Apri "
4928-"le impostazioni (clic destro -> Cairo-Dock -> Configura) e vai su Aspetto (o "
4929+"Puoi ingrandire o rimpicciolire sia le icone che l'effetto zoom. Apri le "
4930+"impostazioni (clic destro -> Cairo-Dock -> Configura) e vai su Aspetto (o "
4931 "Icone nella modalità avanzata).\n"
4932-"Considera che se ci saranno troppe icone sulla dock, queste verranno "
4933+"Considera che se ci saranno troppe icone sulla dock, esse verranno "
4934 "ridimensionate per adattarsi allo schermo.\n"
4935-"In più puoi definire la dimensione di ogni applet indipendentemente, "
4936-"attraverso le loro impostazioni."
4937+"Inoltre puoi definire la dimensione di ciascuna applet impostandone ognuna "
4938+"indipendentemente."
4939
4940 #: ../data/messages:37
4941 msgid "Separating icons"
4942@@ -1964,8 +1982,8 @@
4943 "To remove a bookmark, right-click on its icon -> remove"
4944 msgstr ""
4945 "Attiva l'applet Scorciatoie.\n"
4946-"Successivamente ogni segnalibro delle cartelle (quelli che appaiono in "
4947-"Nautilus) sarà elencato in na sub-dock.\n"
4948+"Successivamente, ogni segnalibro delle cartelle (quelli che appaiono in "
4949+"Nautilus), sarà elencato in una sub-dock.\n"
4950 "Per aggiungere segnalibri, trascina semplicemente una cartella nell'icona "
4951 "dell'applet.\n"
4952 "Per rimuoverlo, clic destro sulla sua icona -> \"rimuovi\""
4953@@ -2146,10 +2164,10 @@
4954 "If the dock is running with OpenGL, try to disable it by launching the dock "
4955 "with «cairo-dock -c»."
4956 msgstr ""
4957-"Se hai una GeForce8, dovrai installare gli ultimi driver, perchè i "
4958-"precedenti avevano molti bug.\n"
4959+"Se hai una GeForce8, dovrai installare gli ultimi driver perché i precedenti "
4960+"avevano molti bug.\n"
4961 "Se la dock sta andando senza OpenGL, prova a ridurre il numero di icone "
4962-"sulla dock principale, oppure a ridurne la dimensione.\n"
4963+"sulla dock principale oppure a ridurne la dimensione.\n"
4964 "Se la dock va con OpenGL, prova a disattivarlo lanciandola con 'cairo-dock -"
4965 "c'."
4966
4967@@ -2172,7 +2190,7 @@
4968 "cards can do this, as can more and more Intel cards. Most ATI cards do not "
4969 "support OpenGL2.0."
4970 msgstr ""
4971-"Occorre una scheda grafica con driver che supportino openGL2.0. La maggior "
4972+"Occorre una scheda grafica con driver che supportino OpenGL2.0. La maggior "
4973 "parte delle schede Nvidia lo fanno, sempre più schede Intel ne sono in "
4974 "grado. La maggior parte delle schede ATI invece non può farlo."
4975
4976@@ -2241,7 +2259,7 @@
4977 "Se usi KDE, è possibile tu debba dirgli il percorso della cartella Cestino.\n"
4978 "Apri l'editor di configurazione, e riempi il percorso del cestino; "
4979 "probabilmente è ~/.local/share/Trash/files. Stai molto attento quando digiti "
4980-"un percorso qui!!! (Non inserire spazi nè caratteri invisibili)."
4981+"un percorso qui!!! (Non inserire spazi né caratteri invisibili)."
4982
4983 #: ../data/messages:239
4984 msgid ""
4985@@ -2355,8 +2373,8 @@
4986 " One for stable releases and another which is updated weekly (unstable "
4987 "version)"
4988 msgstr ""
4989-"Manteniamo due repository per Debian, Ubuntu e altre Debian-derivate:\n"
4990-" Uno per la release stable e un altro aggiornato setttimanalmente (versione "
4991+"Manteniamo due repository per Debian, Ubuntu e altre derivate Debian:\n"
4992+" Uno per la release stable e un altro aggiornato settimanalmente (versione "
4993 "unstable)"
4994
4995 #: ../data/messages:281
4996@@ -2425,7 +2443,7 @@
4997
4998 #: ../data/messages:307
4999 msgid "Name of the dock it belongs to:"
5000-msgstr "Nome della dock al quale appartiene:"
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches