← Back to team overview

cairo-dock-team team mailing list archive

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

 

Matthieu Baerts has proposed merging lp:~cairo-dock-team/ubuntu/quantal/cairo-dock/3.0.2 into lp:ubuntu/cairo-dock.

Requested reviews:
  Ubuntu Sponsors Team (ubuntu-sponsors)
Related bugs:
  Bug #1002691 in cairo-dock (Ubuntu): "Clicking 'New Document' from Cairo-Dock gives an error"
  https://bugs.launchpad.net/ubuntu/+source/cairo-dock/+bug/1002691
  Bug #1014801 in cairo-dock (Ubuntu): "Please update Cairo-Dock to 3.0.2 version (bug-fix version)"
  https://bugs.launchpad.net/ubuntu/+source/cairo-dock/+bug/1014801

For more details, see:
https://code.launchpad.net/~cairo-dock-team/ubuntu/quantal/cairo-dock/3.0.2/+merge/111020

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 )
-- 
https://code.launchpad.net/~cairo-dock-team/ubuntu/quantal/cairo-dock/3.0.2/+merge/111020
Your team Cairo-Dock Team is subscribed to branch lp:~cairo-dock-team/ubuntu/quantal/cairo-dock/3.0.2.
=== removed directory '.pc/01-bzr_dock-s_menu.patch'
=== removed directory '.pc/01-bzr_dock-s_menu.patch/src'
=== removed directory '.pc/01-bzr_dock-s_menu.patch/src/gldit'
=== removed file '.pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-callbacks.c'
--- .pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-callbacks.c	2012-04-25 01:29:46 +0000
+++ .pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-callbacks.c	1970-01-01 00:00:00 +0000
@@ -1,1760 +0,0 @@
-/**
-* This file is a part of the Cairo-Dock project
-*
-* Copyright : (C) see the 'copyright' file.
-* E-mail    : see the 'copyright' file.
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 3
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-* You should have received a copy of the GNU General Public License
-* along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <math.h>
-#include <sys/time.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h> 
-#include <cairo.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <gdk/gdkx.h>
-
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-#include "cairo-dock-draw.h"
-#include "cairo-dock-animations.h"
-#include "cairo-dock-image-buffer.h"
-#include "cairo-dock-module-factory.h"
-#include "cairo-dock-icon-factory.h"
-#include "cairo-dock-icon-facility.h"
-#include "cairo-dock-applications-manager.h"
-#include "cairo-dock-application-facility.h"
-#include "cairo-dock-desktop-file-factory.h"
-#include "cairo-dock-launcher-manager.h"
-#include "cairo-dock-config.h"
-#include "cairo-dock-container.h"
-#include "cairo-dock-dock-facility.h"
-#include "cairo-dock-notifications.h"
-#include "cairo-dock-dialog-manager.h"
-#include "cairo-dock-log.h"
-#include "cairo-dock-dock-manager.h"
-#include "cairo-dock-keybinder.h"
-#include "cairo-dock-draw-opengl.h"
-#include "cairo-dock-opengl.h"
-#include "cairo-dock-flying-container.h"
-#include "cairo-dock-animations.h"
-#include "cairo-dock-backends-manager.h"
-#include "cairo-dock-class-manager.h"
-#include "cairo-dock-X-manager.h"
-#include "cairo-dock-X-utilities.h"
-#include "cairo-dock-X-manager.h"
-#include "cairo-dock-data-renderer.h"  // cairo_dock_refresh_data_renderer
-#include "cairo-dock-callbacks.h"
-
-extern CairoDockDesktopGeometry g_desktopGeometry;
-extern CairoDockHidingEffect *g_pHidingBackend;
-extern CairoDockHidingEffect *g_pKeepingBelowBackend;
-extern CairoDockGLConfig g_openglConfig;
-
-static Icon *s_pIconClicked = NULL;  // pour savoir quand on deplace une icone a la souris. Dangereux si l'icone se fait effacer en cours ...
-static int s_iClickX, s_iClickY;  // coordonnees du clic dans le dock, pour pouvoir initialiser le deplacement apres un seuil.
-static int s_iSidShowSubDockDemand = 0;
-static int s_iSidActionOnDragHover = 0;
-static CairoDock *s_pDockShowingSubDock = NULL;  // on n'accede pas a son contenu, seulement l'adresse.
-static CairoDock *s_pSubDockShowing = NULL;  // on n'accede pas a son contenu, seulement l'adresse.
-static CairoFlyingContainer *s_pFlyingContainer = NULL;
-static int s_iFirstClickX=0, s_iFirstClickY=0;  // for double-click.
-
-extern CairoDock *g_pMainDock;  // pour le raise-on-shortcut
-
-extern gboolean g_bUseOpenGL;
-
-static gboolean s_bHideAfterShortcut = FALSE;
-static gboolean s_bFrozenDock = FALSE;
-static gboolean s_bIconDragged = FALSE;
-
-static gboolean _check_mouse_outside (CairoDock *pDock);
-
-static gboolean _mouse_is_really_outside (CairoDock *pDock)
-{
-	/**return (pDock->container.iMouseX <= 0
-		|| pDock->container.iMouseX >= pDock->container.iWidth
-		|| (pDock->container.bDirectionUp ?
-			(pDock->container.iMouseY > pDock->container.iHeight
-			|| pDock->container.iMouseY <= (pDock->fMagnitudeMax != 0 ? 0 : pDock->container.iHeight - pDock->iMinDockHeight))
-			: (pDock->container.iMouseY < 0
-			||
-		pDock->container.iMouseY >= (pDock->fMagnitudeMax != 0 ? pDock->container.iHeight : pDock->iMinDockHeight))));*/
-	double x1, x2, y1, y2;
-	if (pDock->iInputState == CAIRO_DOCK_INPUT_ACTIVE)
-	{
-		x1 = 0;
-		x2 = pDock->container.iWidth;
-		if (pDock->container.bDirectionUp)
-		{
-			///y1 = (pDock->fMagnitudeMax != 0 ? 0 : pDock->container.iHeight - pDock->iMinDockHeight);
-			y1 = pDock->container.iHeight - pDock->iActiveHeight;
-			y2 = pDock->container.iHeight;
-		}
-		else
-		{
-			y1 = 0;
-			///y2 = (pDock->fMagnitudeMax != 0 ? pDock->container.iHeight : pDock->iMinDockHeight);
-			y2 = pDock->iActiveHeight;
-		}
-	}
-	else if (pDock->iInputState == CAIRO_DOCK_INPUT_AT_REST)
-	{
-		x1 = (pDock->container.iWidth - pDock->iMinDockWidth) / 2;
-		x2 = (pDock->container.iWidth + pDock->iMinDockWidth) / 2;
-		if (pDock->container.bDirectionUp)
-		{
-			y1 = pDock->container.iHeight - pDock->iMinDockHeight;
-			y2 = pDock->container.iHeight;
-		}
-		else
-		{
-			y1 = 0;
-			y2 = pDock->iMinDockHeight;
-		}		
-	}
-	else  // hidden
-		return TRUE;
-	if (pDock->container.iMouseX <= x1
-	|| pDock->container.iMouseX >= x2)
-		return TRUE;
-	if (pDock->container.iMouseY <= y1
-	|| pDock->container.iMouseY >= y2)
-		return TRUE;	
-	
-	return FALSE;
-}
-#define CD_CLICK_ZONE 5
-
-void cairo_dock_freeze_docks (gboolean bFreeze)
-{
-	s_bFrozenDock = bFreeze;
-}
-
-gboolean cairo_dock_render_dock_notification (gpointer pUserData, CairoDock *pDock, cairo_t *pCairoContext)
-{
-	if (! pCairoContext)  // on n'a pas mis le rendu cairo ici a cause du rendu optimise.
-	{
-		glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | (pDock->pRenderer->bUseStencil && g_openglConfig.bStencilBufferAvailable ? GL_STENCIL_BUFFER_BIT : 0));
-		gldi_glx_apply_desktop_background (CAIRO_CONTAINER (pDock));
-		
-		if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->pre_render_opengl)
-			g_pHidingBackend->pre_render_opengl (pDock, pDock->fHideOffset);
-		
-		if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->pre_render_opengl)
-			g_pKeepingBelowBackend->pre_render_opengl (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps);
-		
-		pDock->pRenderer->render_opengl (pDock);
-		
-		if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->post_render_opengl)
-			g_pHidingBackend->post_render_opengl (pDock, pDock->fHideOffset);
-		
-		if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->post_render_opengl)
-			g_pKeepingBelowBackend->post_render_opengl (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps);
-	}
-	return CAIRO_DOCK_LET_PASS_NOTIFICATION;
-}
-
-gboolean cairo_dock_on_expose (GtkWidget *pWidget,
-#if (GTK_MAJOR_VERSION < 3)
-	GdkEventExpose *pExpose,
-#else
-	cairo_t *ctx,
-#endif
-	CairoDock *pDock)
-{
-	GdkRectangle area;
-	#if (GTK_MAJOR_VERSION < 3)
-	memcpy (&area, &pExpose->area, sizeof (GdkRectangle));
-	#else
-	double x1, x2, y1, y2;
-	cairo_clip_extents (ctx, &x1, &y1, &x2, &y2);
-	area.x = x1;
-	area.y = y1;
-	area.width = x2 - x1;
-	area.height = y2 - y1;  /// or the opposite ?...
-	#endif
-	//g_print ("%s ((%d;%d) %dx%d)\n", __func__, area.x, area.y, area.width, area.height);
-	
-	//\________________ OpenGL rendering
-	if (g_bUseOpenGL && pDock->pRenderer->render_opengl != NULL)
-	{
-		if (! gldi_glx_begin_draw_container_full (CAIRO_CONTAINER (pDock), FALSE))  // FALSE to keep the color buffer (motion-blur).
-			return FALSE;
-		
-		if (area.x + area.y != 0)
-		{
-			glEnable (GL_SCISSOR_TEST);  // ou comment diviser par 4 l'occupation CPU !
-			glScissor ((int) area.x,
-				(int) (pDock->container.bIsHorizontal ? pDock->container.iHeight : pDock->container.iWidth) -
-					area.y - area.height,  // lower left corner of the scissor box.
-				(int) area.width,
-				(int) area.height);
-		}
-		
-		if (cairo_dock_is_loading ())
-		{
-			// on laisse transparent
-		}
-		else if (cairo_dock_is_hidden (pDock) && (g_pHidingBackend == NULL || !g_pHidingBackend->bCanDisplayHiddenDock))
-		{
-			cairo_dock_render_hidden_dock_opengl (pDock);
-		}
-		else
-		{
-			cairo_dock_notify_on_object (pDock, NOTIFICATION_RENDER, pDock, NULL);
-		}
-		glDisable (GL_SCISSOR_TEST);
-		
-		gldi_glx_end_draw_container (CAIRO_CONTAINER (pDock));
-		
-		return FALSE ;
-	}
-	
-	//\________________ Cairo optimized rendering
-	if (area.x + area.y != 0)  // x et/ou y sont > 0.
-	{
-		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)
-		{
-			cairo_t *pCairoContext = cairo_dock_create_drawing_context_on_area (CAIRO_CONTAINER (pDock), &area, NULL);
-			
-			if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->pre_render)
-				g_pHidingBackend->pre_render (pDock, pDock->fHideOffset, pCairoContext);
-			
-			if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->pre_render)
-				g_pKeepingBelowBackend->pre_render (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps, pCairoContext);
-			
-			if (pDock->pRenderer->render_optimized != NULL)
-				pDock->pRenderer->render_optimized (pCairoContext, pDock, &area);
-			else
-				pDock->pRenderer->render (pCairoContext, pDock);
-			
-			if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->post_render)
-				g_pHidingBackend->post_render (pDock, pDock->fHideOffset, pCairoContext);
-		
-			if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->post_render)
-				g_pKeepingBelowBackend->post_render (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps, pCairoContext);
-			
-			cairo_dock_notify_on_object (pDock, NOTIFICATION_RENDER, pDock, pCairoContext);
-			
-			cairo_destroy (pCairoContext);
-			return FALSE;
-		}
-		
-	}
-	
-	//\________________ Cairo rendering
-	cairo_t *pCairoContext = cairo_dock_create_drawing_context_on_container (CAIRO_CONTAINER (pDock));
-	
-	if (cairo_dock_is_loading ())  // transparent pendant le chargement.
-	{
-		
-	}
-	else if (cairo_dock_is_hidden (pDock) && (g_pHidingBackend == NULL || !g_pHidingBackend->bCanDisplayHiddenDock))
-	{
-		cairo_dock_render_hidden_dock (pCairoContext, pDock);
-	}
-	else
-	{
-		if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->pre_render)
-			g_pHidingBackend->pre_render (pDock, pDock->fHideOffset, pCairoContext);
-		
-		if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->pre_render)
-			g_pKeepingBelowBackend->pre_render (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps, pCairoContext);
-		
-		pDock->pRenderer->render (pCairoContext, pDock);
-		
-		if (pDock->fHideOffset != 0 && g_pHidingBackend != NULL && g_pHidingBackend->post_render)
-			g_pHidingBackend->post_render (pDock, pDock->fHideOffset, pCairoContext);
-		
-		if (pDock->iFadeCounter != 0 && g_pKeepingBelowBackend != NULL && g_pKeepingBelowBackend->post_render)
-			g_pKeepingBelowBackend->post_render (pDock, (double) pDock->iFadeCounter / myBackendsParam.iHideNbSteps, pCairoContext);
-		
-		cairo_dock_notify_on_object (pDock, NOTIFICATION_RENDER, pDock, pCairoContext);
-	}
-	
-	cairo_destroy (pCairoContext);
-	return FALSE;
-}
-
-
-static gboolean _emit_leave_signal_delayed (CairoDock *pDock)
-{
-	cairo_dock_emit_leave_signal (CAIRO_CONTAINER (pDock));
-	pDock->iSidLeaveDemand = 0;
-	return FALSE;
-}
-static gboolean _cairo_dock_show_sub_dock_delayed (CairoDock *pDock)
-{
-	s_iSidShowSubDockDemand = 0;
-	s_pDockShowingSubDock = NULL;
-	s_pSubDockShowing = NULL;
-	Icon *icon = cairo_dock_get_pointed_icon (pDock->icons);
-	//g_print ("%s (%x, %x)", __func__, icon, icon ? icon->pSubDock:0);
-	if (icon != NULL && icon->pSubDock != NULL)
-		cairo_dock_show_subdock (icon, pDock);
-
-	return FALSE;
-}
-static void _search_icon (Icon *icon, CairoContainer *pContainer, gpointer *data)
-{
-	if (icon == data[0])
-		data[1] = icon;
-}
-static gboolean _cairo_dock_action_on_drag_hover (Icon *pIcon)
-{
-	gpointer data[2] = {pIcon, NULL};
-	cairo_dock_foreach_icons_in_docks ((CairoDockForeachIconFunc)_search_icon, data);  // on verifie que l'icone ne s'est pas faite effacee entre-temps.
-	pIcon = data[1];
-	if (pIcon && pIcon->iface.action_on_drag_hover)
-		pIcon->iface.action_on_drag_hover (pIcon);
-	s_iSidActionOnDragHover = 0;
-	return FALSE;
-}
-void cairo_dock_on_change_icon (Icon *pLastPointedIcon, Icon *pPointedIcon, CairoDock *pDock)
-{
-	//g_print ("%s (%s -> %s)\n", __func__, pLastPointedIcon?pLastPointedIcon->cName:"none", pPointedIcon?pPointedIcon->cName:"none");
-	//cd_debug ("on change d'icone dans %x (-> %s)", pDock, (pPointedIcon != NULL ? pPointedIcon->cName : "rien"));
-	if (s_iSidShowSubDockDemand != 0 && pDock == s_pDockShowingSubDock)
-	{
-		//cd_debug ("on annule la demande de montrage de sous-dock");
-		g_source_remove (s_iSidShowSubDockDemand);
-		s_iSidShowSubDockDemand = 0;
-		s_pDockShowingSubDock = NULL;
-		s_pSubDockShowing = NULL;
-	}
-	
-	// take action when dragging something onto an icon
-	if (s_iSidActionOnDragHover != 0)
-	{
-		//cd_debug ("on annule la demande de montrage d'appli");
-		g_source_remove (s_iSidActionOnDragHover);
-		s_iSidActionOnDragHover = 0;
-	}
-	
-	if (pDock->bIsDragging && pPointedIcon && pPointedIcon->iface.action_on_drag_hover)
-	{
-		s_iSidActionOnDragHover = g_timeout_add (600, (GSourceFunc) _cairo_dock_action_on_drag_hover, pPointedIcon);
-	}
-	
-	// replace dialogs
-	cairo_dock_refresh_all_dialogs (FALSE);
-	
-	// hide the sub-dock of the previous pointed icon
-	if (pLastPointedIcon != NULL && pLastPointedIcon->pSubDock != NULL)  // on a quitte une icone ayant un sous-dock.
-	{
-		CairoDock *pSubDock = pLastPointedIcon->pSubDock;
-		if (gldi_container_is_visible (CAIRO_CONTAINER (pSubDock)))  // le sous-dock est visible, on retarde son cachage.
-		{
-			//g_print ("on cache %s en changeant d'icone\n", pLastPointedIcon->cName);
-			if (pSubDock->iSidLeaveDemand == 0)
-			{
-				//g_print ("  on retarde le cachage du dock de %dms\n", MAX (myDocksParam.iLeaveSubDockDelay, 330));
-				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.
-			}
-		}
-	}
-	
-	// show the sub-dock of the current pointed icon
-	if (pPointedIcon != NULL && pPointedIcon->pSubDock != NULL && (! myDocksParam.bShowSubDockOnClick || CAIRO_DOCK_IS_APPLI (pPointedIcon) || pDock->bIsDragging))  // on entre sur une icone ayant un sous-dock.
-	{
-		// if we were leaving the sub-dock, cancel that.
-		if (pPointedIcon->pSubDock->iSidLeaveDemand != 0)
-		{
-			g_source_remove (pPointedIcon->pSubDock->iSidLeaveDemand);
-			pPointedIcon->pSubDock->iSidLeaveDemand = 0;
-		}
-		// and show the sub-dock, possibly with a delay.
-		if (myDocksParam.iShowSubDockDelay > 0)
-		{
-			if (s_iSidShowSubDockDemand != 0)
-				g_source_remove (s_iSidShowSubDockDemand);
-			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.
-			s_pDockShowingSubDock = pDock;
-			s_pSubDockShowing = pPointedIcon->pSubDock;
-		}
-		else
-			cairo_dock_show_subdock (pPointedIcon, pDock);
-	}
-	
-	// notify everybody
-	if (pPointedIcon != NULL && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pPointedIcon))
-	{
-		gboolean bStartAnimation = FALSE;
-		cairo_dock_notify_on_object (pDock, NOTIFICATION_ENTER_ICON, pPointedIcon, pDock, &bStartAnimation);
-		
-		if (bStartAnimation)
-		{
-			pPointedIcon->iAnimationState = CAIRO_DOCK_STATE_MOUSE_HOVERED;
-			cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
-		}
-	}
-}
-
-
-void cairo_dock_stop_icon_glide (CairoDock *pDock)
-{
-	Icon *icon;
-	GList *ic;
-	for (ic = pDock->icons; ic != NULL; ic = ic->next)
-	{
-		icon = ic->data;
-		icon->fGlideOffset = 0;
-		icon->iGlideDirection = 0;
-	}
-}
-static void _cairo_dock_make_icon_glide (Icon *pPointedIcon, Icon *pMovingicon, CairoDock *pDock)
-{
-	Icon *icon;
-	GList *ic;
-	for (ic = pDock->icons; ic != NULL; ic = ic->next)
-	{
-		icon = ic->data;
-		if (icon == pMovingicon)
-			continue;
-		//if (pDock->container.iMouseX > s_pMovingicon->fDrawXAtRest + s_pMovingicon->fWidth * s_pMovingicon->fScale /2)  // on a deplace l'icone a droite.  // fDrawXAtRest
-		if (pMovingicon->fXAtRest < pPointedIcon->fXAtRest)  // on a deplace l'icone a droite.
-		{
-			//g_print ("%s : %.2f / %.2f ; %.2f / %d (%.2f)\n", icon->cName, icon->fXAtRest, pMovingicon->fXAtRest, icon->fDrawX, pDock->container.iMouseX, icon->fGlideOffset);
-			if (icon->fXAtRest > pMovingicon->fXAtRest && icon->fDrawX < pDock->container.iMouseX + 5 && icon->fGlideOffset == 0)  // icone entre l'icone deplacee et le curseur.
-			{
-				//g_print ("  %s glisse vers la gauche\n", icon->cName);
-				icon->iGlideDirection = -1;
-			}
-			else if (icon->fXAtRest > pMovingicon->fXAtRest && icon->fDrawX > pDock->container.iMouseX && icon->fGlideOffset != 0)
-			{
-				//g_print ("  %s glisse vers la droite\n", icon->cName);
-				icon->iGlideDirection = 1;
-			}
-			else if (icon->fXAtRest < pMovingicon->fXAtRest && icon->fGlideOffset > 0)
-			{
-				//g_print ("  %s glisse en sens inverse vers la gauche\n", icon->cName);
-				icon->iGlideDirection = -1;
-			}
-		}
-		else
-		{
-			double fMaxScale = (icon->fHeight != 0 ? (pDock->container.bIsHorizontal ? icon->iImageHeight : icon->iImageWidth) / icon->fHeight : 1.);
-			//g_print ("deplacement de %s vers la gauche (%.2f / %d)\n", icon->cName, icon->fDrawX + icon->fWidth * fMaxScale + myIconsParam.iIconGap, pDock->container.iMouseX);
-			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.
-			{
-				//g_print ("  %s glisse vers la droite\n", icon->cName);
-				icon->iGlideDirection = 1;
-			}
-			else if (icon->fXAtRest < pMovingicon->fXAtRest && icon->fDrawX + icon->fWidth * fMaxScale + myIconsParam.iIconGap <= pDock->container.iMouseX && icon->fGlideOffset != 0)
-			{
-				//g_print ("  %s glisse vers la gauche\n", icon->cName);
-				icon->iGlideDirection = -1;
-			}
-			else if (icon->fXAtRest > pMovingicon->fXAtRest && icon->fGlideOffset < 0)
-			{
-				//g_print ("  %s glisse en sens inverse vers la droite\n", icon->cName);
-				icon->iGlideDirection = 1;
-			}
-		}
-	}
-}
-gboolean cairo_dock_on_motion_notify (GtkWidget* pWidget,
-	GdkEventMotion* pMotion,
-	CairoDock *pDock)
-{
-	static double fLastTime = 0;
-	if (s_bFrozenDock && pMotion != NULL && pMotion->time != 0)
-		return FALSE;
-	if (pDock->bMenuVisible)
-		return FALSE;
-	Icon *pPointedIcon=NULL, *pLastPointedIcon = cairo_dock_get_pointed_icon (pDock->icons);
-	int iLastMouseX = pDock->container.iMouseX;
-	//g_print ("%s (%.2f;%.2f, %d)\n", __func__, pMotion->x, pMotion->y, pDock->iInputState);
-	
-	if (pMotion != NULL)
-	{
-		//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);
-		//\_______________ On deplace le dock si ALT est enfoncee.
-		if ((pMotion->state & GDK_MOD1_MASK) && (pMotion->state & GDK_BUTTON1_MASK))
-		{
-			if (pDock->container.bIsHorizontal)
-			{
-				pDock->container.iWindowPositionX = pMotion->x_root - pDock->container.iMouseX;
-				pDock->container.iWindowPositionY = pMotion->y_root - pDock->container.iMouseY;
-				gtk_window_move (GTK_WINDOW (pWidget),
-					pDock->container.iWindowPositionX,
-					pDock->container.iWindowPositionY);
-			}
-			else
-			{
-				pDock->container.iWindowPositionX = pMotion->y_root - pDock->container.iMouseX;
-				pDock->container.iWindowPositionY = pMotion->x_root - pDock->container.iMouseY;
-				gtk_window_move (GTK_WINDOW (pWidget),
-					pDock->container.iWindowPositionY,
-					pDock->container.iWindowPositionX);
-			}
-			gdk_device_get_state (pMotion->device, pMotion->window, NULL, NULL);
-			return FALSE;
-		}
-		
-		//\_______________ On recupere la position de la souris.
-		if (pDock->container.bIsHorizontal)
-		{
-			pDock->container.iMouseX = (int) pMotion->x;
-			pDock->container.iMouseY = (int) pMotion->y;
-		}
-		else
-		{
-			pDock->container.iMouseX = (int) pMotion->y;
-			pDock->container.iMouseY = (int) pMotion->x;
-		}
-		
-		//\_______________ On tire l'icone volante.
-		if (s_pFlyingContainer != NULL && ! pDock->container.bInside)
-		{
-			cairo_dock_drag_flying_container (s_pFlyingContainer, pDock);
-		}
-		
-		//\_______________ On elague le flux des MotionNotify, sinon X en envoie autant que le permet le CPU !
-		if (pMotion->time != 0 && pMotion->time - fLastTime < myBackendsParam.fRefreshInterval && s_pIconClicked == NULL)
-		{
-			gdk_device_get_state (pMotion->device, pMotion->window, NULL, NULL);
-			return FALSE;
-		}
-		
-		//\_______________ On recalcule toutes les icones et on redessine.
-		pPointedIcon = cairo_dock_calculate_dock_icons (pDock);
-		//g_print ("pPointedIcon: %s\n", pPointedIcon?pPointedIcon->cName:"none");
-		gtk_widget_queue_draw (pWidget);
-		fLastTime = pMotion->time;
-		
-		//\_______________ On tire l'icone cliquee.
-		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)
-		{
-			s_bIconDragged = TRUE;
-			s_pIconClicked->iAnimationState = CAIRO_DOCK_STATE_FOLLOW_MOUSE;
-			//pDock->fAvoidingMouseMargin = .5;
-			pDock->iAvoidingMouseIconType = s_pIconClicked->iGroup;  // on pourrait le faire lors du clic aussi.
-			s_pIconClicked->fScale = cairo_dock_get_icon_max_scale (s_pIconClicked);
-			s_pIconClicked->fDrawX = pDock->container.iMouseX  - s_pIconClicked->fWidth * s_pIconClicked->fScale / 2;
-			s_pIconClicked->fDrawY = pDock->container.iMouseY - s_pIconClicked->fHeight * s_pIconClicked->fScale / 2 ;
-			s_pIconClicked->fAlpha = 0.75;
-		}
-
-		//gdk_event_request_motions (pMotion);  // ce sera pour GDK 2.12.
-		gdk_device_get_state (pMotion->device, pMotion->window, NULL, NULL);  // pour recevoir d'autres MotionNotify.
-	}
-	else  // cas d'un drag and drop.
-	{
-		//g_print ("motion on drag\n");
-		//\_______________ On recupere la position de la souris.
-		gldi_container_update_mouse_position (CAIRO_CONTAINER (pDock));
-		
-		//\_______________ On recalcule toutes les icones et on redessine.
-		pPointedIcon = cairo_dock_calculate_dock_icons (pDock);
-		gtk_widget_queue_draw (pWidget);
-		
-		pDock->fAvoidingMouseMargin = .25;  // on peut dropper entre 2 icones ...
-		pDock->iAvoidingMouseIconType = CAIRO_DOCK_LAUNCHER;  // ... seulement entre 2 icones du groupe "lanceurs".
-	}
-	
-	//\_______________ On gere le changement d'icone.
-	gboolean bStartAnimation = FALSE;
-	if (pPointedIcon != pLastPointedIcon)
-	{
-		cairo_dock_on_change_icon (pLastPointedIcon, pPointedIcon, pDock);
-		
-		if (pPointedIcon != NULL && s_pIconClicked != NULL && s_pIconClicked->iGroup == pPointedIcon->iGroup && ! myDocksParam.bLockIcons && ! myDocksParam.bLockAll && ! pDock->bPreventDraggingIcons)
-		{
-			_cairo_dock_make_icon_glide (pPointedIcon, s_pIconClicked, pDock);
-			bStartAnimation = TRUE;
-		}
-	}
-	
-	//\_______________ On notifie tout le monde.
-	cairo_dock_notify_on_object (pDock, NOTIFICATION_MOUSE_MOVED, pDock, &bStartAnimation);
-	if (bStartAnimation)
-		cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
-	
-	return FALSE;
-}
-
-gboolean cairo_dock_on_leave_dock_notification2 (gpointer data, CairoDock *pDock, gboolean *bStartAnimation)
-{
-	//\_______________ On gere le drag d'une icone hors du dock.
-	if (s_pIconClicked != NULL
-	&& (CAIRO_DOCK_ICON_TYPE_IS_LAUNCHER (s_pIconClicked)
-		|| CAIRO_DOCK_ICON_TYPE_IS_CONTAINER (s_pIconClicked)
-		|| (CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (s_pIconClicked) && s_pIconClicked->cDesktopFileName)
-		|| CAIRO_DOCK_IS_DETACHABLE_APPLET (s_pIconClicked))
-	&& s_pFlyingContainer == NULL
-	&& ! myDocksParam.bLockIcons
-	&& ! myDocksParam.bLockAll
-	&& ! pDock->bPreventDraggingIcons)
-	{
-		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);
-		
-		//if (! cairo_dock_hide_child_docks (pDock))  // on quitte si on entre dans un sous-dock, pour rester en position "haute".
-		//	return ;
-		
-		CairoDock *pOriginDock = cairo_dock_search_dock_from_name (s_pIconClicked->cParentDockName);
-		g_return_val_if_fail (pOriginDock != NULL, TRUE);
-		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.
-		{
-			cd_debug (" on detache l'icone");
-			pOriginDock->bIconIsFlyingAway = TRUE;
-			gchar *cParentDockName = s_pIconClicked->cParentDockName;
-			s_pIconClicked->cParentDockName = NULL;
-			cairo_dock_detach_icon_from_dock (s_pIconClicked, pOriginDock);
-			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.
-			cairo_dock_update_dock_size (pOriginDock);
-			cairo_dock_stop_icon_glide (pOriginDock);
-			
-			s_pFlyingContainer = cairo_dock_create_flying_container (s_pIconClicked, pOriginDock);
-			//g_print ("- s_pIconClicked <- NULL\n");
-			s_pIconClicked = NULL;
-			if (pDock->iRefCount > 0 || pDock->bAutoHide)  // pour garder le dock visible.
-			{
-				return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
-			}
-		}
-	}
-	else if (s_pFlyingContainer != NULL && s_pFlyingContainer->pIcon != NULL && pDock->iRefCount > 0)  // on evite les bouclages.
-	{
-		CairoDock *pOriginDock = cairo_dock_search_dock_from_name (s_pFlyingContainer->pIcon->cParentDockName);
-		if (pOriginDock == pDock)
-			return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
-	}
-	return CAIRO_DOCK_LET_PASS_NOTIFICATION;
-}
-gboolean cairo_dock_on_leave_dock_notification (gpointer data, CairoDock *pDock, gboolean *bStartAnimation)
-{
-	//\_______________ Arrive ici, on est sorti du dock.
-	pDock->container.bInside = FALSE;
-	pDock->iAvoidingMouseIconType = -1;
-	pDock->fAvoidingMouseMargin = 0;
-	
-	//\_______________ On cache ses sous-docks.
-	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".
-		return TRUE;
-	
-	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.
-	{
-		g_source_remove (s_iSidShowSubDockDemand);
-		s_iSidShowSubDockDemand = 0;
-		s_pDockShowingSubDock = NULL;
-		s_pSubDockShowing = NULL;
-	}
-	
-	//g_print ("%s (%d, %d)\n", __func__, pDock->iRefCount, pDock->bMenuVisible);
-	
-	//\_______________ On quitte si le menu est leve, pour rester en position haute.
-	if (pDock->bMenuVisible)
-		return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
-	
-	//\_______________ On gere le drag d'une icone hors du dock.
-	if (s_pIconClicked != NULL
-	&& (CAIRO_DOCK_ICON_TYPE_IS_LAUNCHER (s_pIconClicked)
-		|| CAIRO_DOCK_ICON_TYPE_IS_CONTAINER (s_pIconClicked)
-		|| (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...
-		|| CAIRO_DOCK_IS_DETACHABLE_APPLET (s_pIconClicked))
-	&& s_pFlyingContainer == NULL
-	&& ! myDocksParam.bLockIcons
-	&& ! myDocksParam.bLockAll
-	&& ! pDock->bPreventDraggingIcons)
-	{
-		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);
-		
-		//if (! cairo_dock_hide_child_docks (pDock))  // on quitte si on entre dans un sous-dock, pour rester en position "haute".
-		//	return ;
-		
-		CairoDock *pOriginDock = cairo_dock_search_dock_from_name (s_pIconClicked->cParentDockName);
-		g_return_val_if_fail (pOriginDock != NULL, TRUE);
-		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.
-		{
-			cd_debug (" on detache l'icone");
-			pOriginDock->bIconIsFlyingAway = TRUE;
-			gchar *cParentDockName = s_pIconClicked->cParentDockName;
-			s_pIconClicked->cParentDockName = NULL;
-			cairo_dock_detach_icon_from_dock (s_pIconClicked, pOriginDock);
-			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.
-			cairo_dock_update_dock_size (pOriginDock);
-			cairo_dock_stop_icon_glide (pOriginDock);
-			
-			s_pFlyingContainer = cairo_dock_create_flying_container (s_pIconClicked, pOriginDock);
-			//g_print ("- s_pIconClicked <- NULL\n");
-			s_pIconClicked = NULL;
-			if (pDock->iRefCount > 0 || pDock->bAutoHide)  // pour garder le dock visible.
-			{
-				return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
-			}
-		}
-	}
-	else if (s_pFlyingContainer != NULL && s_pFlyingContainer->pIcon != NULL && pDock->iRefCount > 0)  // on evite les bouclages.
-	{
-		CairoDock *pOriginDock = cairo_dock_search_dock_from_name (s_pFlyingContainer->pIcon->cParentDockName);
-		if (pOriginDock == pDock)
-			return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
-	}
-	
-	//\_______________ On lance l'animation du dock.
-	if (pDock->iRefCount == 0)
-	{
-		//g_print ("%s (auto-hide:%d)\n", __func__, pDock->bAutoHide);
-		if (pDock->bAutoHide)
-		{
-			///pDock->fFoldingFactor = (myBackendsParam.bAnimateOnAutoHide ? 0.001 : 0.);
-			cairo_dock_start_hiding (pDock);
-		}
-	}
-	else if (pDock->icons != NULL)
-	{
-		pDock->fFoldingFactor = (myDocksParam.bAnimateSubDock ? 0.001 : 0.);
-		Icon *pIcon = cairo_dock_search_icon_pointing_on_dock (pDock, NULL);
-		//g_print ("'%s' se replie\n", pIcon?pIcon->cName:"none");
-		cairo_dock_notify_on_object (pIcon, NOTIFICATION_UNFOLD_SUBDOCK, pIcon);
-	}
-	//g_print ("start shrinking\n");
-	cairo_dock_start_shrinking (pDock);  // on commence a faire diminuer la taille des icones.
-	return CAIRO_DOCK_LET_PASS_NOTIFICATION;
-}
-
-
-gboolean cairo_dock_on_leave_notify (GtkWidget* pWidget, GdkEventCrossing* pEvent, CairoDock *pDock)
-{
-	//g_print ("%s (bInside:%d; iState:%d; iRefCount:%d)\n", __func__, pDock->container.bInside, pDock->iInputState, pDock->iRefCount);
-	//\_______________ On tire le dock => on ignore le signal.
-	if (pEvent != NULL && (pEvent->state & GDK_MOD1_MASK) && (pEvent->state & GDK_BUTTON1_MASK))
-	{
-		return FALSE;
-	}
-	
-	//\_______________ On ignore les signaux errones venant d'un WM buggue (Kwin) ou meme de X (changement de bureau).
-	//if (pEvent)
-	//	//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);
-	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!
-	{
-		if (pDock->container.bIsHorizontal)
-		{
-			pDock->container.iMouseX = pEvent->x;
-			pDock->container.iMouseY = pEvent->y;
-		}
-		else
-		{
-			pDock->container.iMouseX = pEvent->y;
-			pDock->container.iMouseY = pEvent->x;
-		}
-	}
-	else
-	{
-		//g_print ("forced leave event: %d;%d\n", pDock->container.iMouseX, pDock->container.iMouseY);
-	}
-	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).
-	{
-		//g_print ("not really outside (%d;%d ; %d/%d)\n", pDock->container.iMouseX, pDock->container.iMouseY, pDock->iMaxDockHeight, pDock->iMinDockHeight);
-		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.
-		{
-			//g_print ("start checking mouse\n");
-			pDock->iSidTestMouseOutside = g_timeout_add (500, (GSourceFunc)_check_mouse_outside, pDock);
-		}
-		//g_print ("mouse: %d;%d\n", pDock->container.iMouseX, pDock->container.iMouseY);
-		return FALSE;
-	}
-	
-	//\_______________ On retarde la sortie.
-	if (pEvent != NULL)  // sortie naturelle.
-	{
-		if (pDock->iSidLeaveDemand == 0)  // pas encore de demande de sortie.
-		{
-			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.
-			{
-				//g_print (" leave event : %.1f;%.1f (%dx%d)\n", pEvent->x, pEvent->y, pDock->container.iWidth, pDock->container.iHeight);
-				Icon *pPointedIcon = cairo_dock_get_pointed_icon (pDock->icons);
-				if (pPointedIcon != NULL && pPointedIcon->pSubDock != NULL && gldi_container_is_visible (CAIRO_CONTAINER (pPointedIcon->pSubDock)))
-				{
-					//g_print ("  on retarde la sortie du dock de %dms\n", MAX (myDocksParam.iLeaveSubDockDelay, 330));
-					pDock->iSidLeaveDemand = g_timeout_add (MAX (myDocksParam.iLeaveSubDockDelay, 250), (GSourceFunc) _emit_leave_signal_delayed, (gpointer) pDock);
-					return TRUE;
-				}
-				else if (pDock->bAutoHide)
-				{
-					const int delay = 0;  // 250
-					if (delay != 0)  /// maybe try to se if we leaved the dock frankly, or just by a few pixels...
-					{
-						//g_print (" delay the leave event by %dms\n", delay);
-						pDock->iSidLeaveDemand = g_timeout_add (250, (GSourceFunc) _emit_leave_signal_delayed, (gpointer) pDock);
-						return TRUE;
-					}
-				}
-			}
-			else/** if (myDocksParam.iLeaveSubDockDelay != 0)*/  // cas d'un sous-dock : on retarde le cachage.
-			{
-				//g_print ("  on retarde la sortie du sous-dock de %dms\n", myDocksParam.iLeaveSubDockDelay);
-				pDock->iSidLeaveDemand = g_timeout_add (MAX (myDocksParam.iLeaveSubDockDelay, 50), (GSourceFunc) _emit_leave_signal_delayed, (gpointer) pDock);
-				return TRUE;
-			}
-		}
-		else  // deja une sortie en attente.
-		{
-			//g_print ("une sortie est deja programmee\n");
-			return TRUE;
-		}
-	}  // sinon c'est nous qui avons explicitement demande cette sortie, donc on continue.
-	
-	if (pDock->iSidTestMouseOutside != 0)
-	{
-		//g_print ("stop checking mouse (leave)\n");
-		g_source_remove (pDock->iSidTestMouseOutside);
-		pDock->iSidTestMouseOutside = 0;
-	}
-	
-	gboolean bStartAnimation = FALSE;
-	cairo_dock_notify_on_object (pDock, NOTIFICATION_LEAVE_DOCK, pDock, &bStartAnimation);
-	if (bStartAnimation)
-		cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
-	
-	return TRUE;
-}
-
-gboolean cairo_dock_on_enter_notification (gpointer pData, CairoDock *pDock, gboolean *bStartAnimation)
-{
-	// si on rentre avec une icone volante, on la met dedans.
-	if (s_pFlyingContainer != NULL)
-	{
-		Icon *pFlyingIcon = s_pFlyingContainer->pIcon;
-		if (pDock != pFlyingIcon->pSubDock)  // on evite les boucles.
-		{
-			struct timeval tv;
-			int r = gettimeofday (&tv, NULL);
-			double t = tv.tv_sec + tv.tv_usec * 1e-6;
-			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.
-			{
-				cd_debug ("on remet l'icone volante dans un dock (dock d'origine : %s)\n", pFlyingIcon->cParentDockName);
-				cairo_dock_free_flying_container (s_pFlyingContainer);
-				cairo_dock_stop_icon_animation (pFlyingIcon);
-				cairo_dock_insert_icon_in_dock (pFlyingIcon, pDock, CAIRO_DOCK_ANIMATE_ICON);
-				s_pFlyingContainer = NULL;
-				pDock->bIconIsFlyingAway = FALSE;
-			}
-		}
-	}
-	
-	return CAIRO_DOCK_LET_PASS_NOTIFICATION;
-}
-gboolean cairo_dock_on_enter_notify (GtkWidget* pWidget, GdkEventCrossing* pEvent, CairoDock *pDock)
-{
-	//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);
-	if (! cairo_dock_entrance_is_allowed (pDock))
-	{
-		cd_message ("* entree non autorisee");
-		return FALSE;
-	}
-	
-	// stop les timers.
-	if (pDock->iSidLeaveDemand != 0)
-	{
-		g_source_remove (pDock->iSidLeaveDemand);
-		pDock->iSidLeaveDemand = 0;
-	}
-	if (s_iSidShowSubDockDemand != 0)  // gere un cas tordu mais bien reel.
-	{
-		g_source_remove (s_iSidShowSubDockDemand);
-		s_iSidShowSubDockDemand = 0;
-	}
-	if (pDock->iSidHideBack != 0)
-	{
-		//g_print ("remove hide back timeout\n");
-		g_source_remove (pDock->iSidHideBack);
-		pDock->iSidHideBack = 0;
-	}
-	if (pDock->iSidTestMouseOutside != 0)
-	{
-		//g_print ("stop checking mouse (enter)\n");
-		g_source_remove (pDock->iSidTestMouseOutside);
-		pDock->iSidTestMouseOutside = 0;
-	}
-	
-	// input shape desactivee, le dock devient actif.
-	if ((pDock->pShapeBitmap || pDock->pHiddenShapeBitmap) && pDock->iInputState != CAIRO_DOCK_INPUT_ACTIVE)
-	{
-		//g_print ("+++ input shape active on enter\n");
-		cairo_dock_set_input_shape_active (pDock);
-	}
-	pDock->iInputState = CAIRO_DOCK_INPUT_ACTIVE;
-	
-	// si on etait deja dedans, ou qu'on etait cense l'etre, on relance juste le grossissement.
-	/**if (pDock->container.bInside || pDock->bIsHiding)
-	{
-		pDock->container.bInside = TRUE;
-		cairo_dock_start_growing (pDock);
-		if (pDock->bIsHiding || cairo_dock_is_hidden (pDock))  // on (re)monte.
-		{
-			cd_debug ("  on etait deja dedans\n");
-			cairo_dock_start_showing (pDock);
-		}
-		return FALSE;
-	}*/
-	
-	pDock->container.bInside = TRUE;
-	
-	// animation d'entree.
-	gboolean bStartAnimation = FALSE;
-	cairo_dock_notify_on_object (pDock, NOTIFICATION_ENTER_DOCK, pDock, &bStartAnimation);
-	if (bStartAnimation)
-		cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
-	
-	pDock->fDecorationsOffsetX = 0;
-	cairo_dock_stop_quick_hide ();
-	
-	if (s_pIconClicked != NULL)  // on pourrait le faire a chaque motion aussi.
-	{
-		pDock->iAvoidingMouseIconType = s_pIconClicked->iGroup;
-		pDock->fAvoidingMouseMargin = .5;  /// inutile il me semble ...
-	}
-	
-	// si on rentre avec une icone volante, on la met dedans.
-	if (s_pFlyingContainer != NULL)
-	{
-		Icon *pFlyingIcon = s_pFlyingContainer->pIcon;
-		if (pDock != pFlyingIcon->pSubDock)  // on evite les boucles.
-		{
-			struct timeval tv;
-			int r = gettimeofday (&tv, NULL);
-			double t = tv.tv_sec + tv.tv_usec * 1e-6;
-			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.
-			{
-				//g_print ("on remet l'icone volante dans un dock (dock d'origine : %s)\n", pFlyingIcon->cParentDockName);
-				cairo_dock_free_flying_container (s_pFlyingContainer);
-				cairo_dock_stop_icon_animation (pFlyingIcon);
-				// reinsert the icon where it was dropped, not at its original position.
-				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!
-				//g_print (" pointed icon: %s\n", icon?icon->cName:"none");
-				cairo_dock_insert_icon_in_dock (pFlyingIcon, pDock, CAIRO_DOCK_ANIMATE_ICON);
-				if (icon != NULL && cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pFlyingIcon))
-				{
-					cairo_dock_move_icon_after_icon (pDock, pFlyingIcon, icon);
-				}
-				s_pFlyingContainer = NULL;
-				pDock->bIconIsFlyingAway = FALSE;
-			}
-		}
-	}
-	
-	// si on etait derriere, on repasse au premier plan.
-	if (pDock->iVisibility == CAIRO_DOCK_VISI_KEEP_BELOW && pDock->bIsBelow && pDock->iRefCount == 0)
-	{
-		cairo_dock_pop_up (pDock);
-	}
-	
-	// si on etait cache (entierement ou partiellement), on montre.
-	if ((pDock->bIsHiding || cairo_dock_is_hidden (pDock)) && pDock->iRefCount == 0)
-	{
-		//g_print ("  on commence a monter\n");
-		cairo_dock_start_showing (pDock);  // on a mis a jour la zone d'input avant, sinon la fonction le ferait, ce qui serait inutile.
-	}
-	
-	// since we've just entered the dock, the pointed icon has changed from none to the current one.
-	if (pEvent != NULL)
-	{
-		// update the mouse coordinates
-		if (pDock->container.bIsHorizontal)
-		{
-			pDock->container.iMouseX = (int) pEvent->x;
-			pDock->container.iMouseY = (int) pEvent->y;
-		}
-		else
-		{
-			pDock->container.iMouseX = (int) pEvent->y;
-			pDock->container.iMouseY = (int) pEvent->x;
-		}
-		// then compute the icons (especially the pointed one).
-		Icon *icon = cairo_dock_calculate_dock_icons (pDock);  // returns the pointed icon
-		// trigger the change to trigger the animation and sub-dock popup
-		if (icon != NULL)
-		{
-			cairo_dock_on_change_icon (NULL, icon, pDock);  // we were out of the dock, so there is no previous pointed icon.
-		}
-	}
-	// on lance le grossissement.
-	cairo_dock_start_growing (pDock);
-	
-	return TRUE;
-}
-
-
-gboolean cairo_dock_on_key_release (GtkWidget *pWidget,
-	GdkEventKey *pKey,
-	CairoDock *pDock)
-{
-	cd_debug ("on a appuye sur une touche (%d/%d)", pKey->keyval, pKey->hardware_keycode);
-	if (pKey->type == GDK_KEY_PRESS)
-	{
-		cairo_dock_notify_on_object (pDock, NOTIFICATION_KEY_PRESSED, pDock, pKey->keyval, pKey->state, pKey->string, pKey->hardware_keycode);
-	}
-	else if (pKey->type == GDK_KEY_RELEASE)
-	{
-		//g_print ("release : pKey->keyval = %d\n", pKey->keyval);
-		if ((pKey->state & GDK_MOD1_MASK) && pKey->keyval == 0)  // On relache la touche ALT, typiquement apres avoir fait un ALT + clique gauche + deplacement.
-		{
-			if (pDock->iRefCount == 0 && pDock->iVisibility != CAIRO_DOCK_VISI_SHORTKEY)
-				cairo_dock_write_root_dock_gaps (pDock);
-		}
-	}
-	return TRUE;
-}
-
-
-static gboolean _double_click_delay_over (Icon *icon)
-{
-	CairoDock *pDock = cairo_dock_search_dock_from_name (icon->cParentDockName);
-	if (pDock)
-	{
-		pDock->container.iMouseX = s_iFirstClickX;
-		pDock->container.iMouseY = s_iFirstClickY;
-		cairo_dock_notify_on_object (pDock, NOTIFICATION_CLICK_ICON, icon, pDock, GDK_BUTTON1_MASK);
-		if (pDock->bIsMainDock && pDock->iVisibility == CAIRO_DOCK_VISI_SHORTKEY)
-			s_bHideAfterShortcut = TRUE;
-		
-		cairo_dock_start_icon_animation (icon, pDock);
-	}
-	icon->bIsDemandingAttention = FALSE;  // on considere que si l'utilisateur clique sur l'icone, c'est qu'il a pris acte de la notification.
-	icon->iSidDoubleClickDelay = 0;
-	return FALSE;
-}
-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.
-{
-	//g_print ("%s (%d, %d, %d)\n", __func__, pDock->bIsShrinkingDown, pDock->iMagnitudeIndex, pDock->container.bInside);
-	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.
-	{
-		pDock->iSidTestMouseOutside = 0;
-		return FALSE;
-	}
-	
-	gldi_container_update_mouse_position (CAIRO_CONTAINER (pDock));
-	//g_print (" -> (%d, %d)\n", pDock->container.iMouseX, pDock->container.iMouseY);
-	
-	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 :-/
-	return TRUE;
-}
-gboolean cairo_dock_on_button_press (GtkWidget* pWidget, GdkEventButton* pButton, CairoDock *pDock)
-{
-	//g_print ("+ %s (%d/%d, %x)\n", __func__, pButton->type, pButton->button, pWidget);
-	if (pDock->container.bIsHorizontal)  // utile ?
-	{
-		pDock->container.iMouseX = (int) pButton->x;
-		pDock->container.iMouseY = (int) pButton->y;
-	}
-	else
-	{
-		pDock->container.iMouseX = (int) pButton->y;
-		pDock->container.iMouseY = (int) pButton->x;
-	}
-
-	Icon *icon = cairo_dock_get_pointed_icon (pDock->icons);
-	if (pButton->button == 1)  // clic gauche.
-	{
-		//g_print ("+ left click\n");
-		switch (pButton->type)
-		{
-			case GDK_BUTTON_RELEASE :
-				//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
-				if (pDock->container.bIgnoreNextReleaseEvent)
-				{
-					pDock->container.bIgnoreNextReleaseEvent = FALSE;
-					s_pIconClicked = NULL;
-					s_bIconDragged = FALSE;
-					return TRUE;
-				}
-				
-				if ( ! (pButton->state & GDK_MOD1_MASK))
-				{
-					if (s_pIconClicked != NULL)
-					{
-						cd_debug ("activate %s (%s)", s_pIconClicked->cName, icon ? icon->cName : "none");
-						s_pIconClicked->iAnimationState = CAIRO_DOCK_STATE_REST;  // stoppe les animations de suivi du curseur.
-						pDock->iAvoidingMouseIconType = -1;
-						cairo_dock_stop_icon_glide (pDock);
-					}
-					if (icon != NULL && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon) && icon == s_pIconClicked)  // released the button on the clicked icon => trigger the CLICK signal.
-					{
-						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.
-						//g_print ("+ click on '%s' (%s)\n", icon->cName, icon->cCommand);
-						if (! s_bIconDragged)  // on ignore le drag'n'drop sur elle-meme.
-						{
-							if (icon->iNbDoubleClickListeners > 0)
-							{
-								if (icon->iSidDoubleClickDelay == 0)  // 1er release.
-								{
-									icon->iSidDoubleClickDelay = g_timeout_add (CD_DOUBLE_CLICK_DELAY, (GSourceFunc)_double_click_delay_over, icon);
-									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.
-									s_iFirstClickY = pDock->container.iMouseY;
-								}
-							}
-							else
-							{
-								cairo_dock_notify_on_object (pDock, NOTIFICATION_CLICK_ICON, icon, pDock, pButton->state);
-								if (pDock->bIsMainDock && pDock->iVisibility == CAIRO_DOCK_VISI_SHORTKEY)
-									s_bHideAfterShortcut = TRUE;
-								
-								cairo_dock_start_icon_animation (icon, pDock);
-								icon->bIsDemandingAttention = FALSE;  // on considere que si l'utilisateur clique sur l'icone, c'est qu'il a pris acte de la notification.
-							}
-						}
-					}
-					else if (s_pIconClicked != NULL && icon != NULL && icon != s_pIconClicked && ! myDocksParam.bLockIcons && ! myDocksParam.bLockAll && ! pDock->bPreventDraggingIcons)  // released the icon on another one.
-					{
-						//g_print ("deplacement de %s\n", s_pIconClicked->cName);
-						CairoDock *pOriginDock = CAIRO_DOCK (cairo_dock_search_container_from_icon (s_pIconClicked));
-						if (pOriginDock != NULL && pDock != pOriginDock)
-						{
-							cairo_dock_detach_icon_from_dock (s_pIconClicked, pOriginDock);
-							///cairo_dock_update_dock_size (pOriginDock);
-							
-							cairo_dock_update_icon_s_container_name (s_pIconClicked, icon->cParentDockName);
-							
-							cairo_dock_insert_icon_in_dock (s_pIconClicked, pDock, CAIRO_DOCK_ANIMATE_ICON);
-						}
-						
-						Icon *prev_icon, *next_icon;
-						if (icon->fXAtRest > s_pIconClicked->fXAtRest)
-						{
-							prev_icon = icon;
-							next_icon = cairo_dock_get_next_icon (pDock->icons, icon);
-						}
-						else
-						{
-							prev_icon = cairo_dock_get_previous_icon (pDock->icons, icon);
-							next_icon = icon;
-						}
-						if (icon->iGroup != s_pIconClicked->iGroup
-						&& (prev_icon == NULL || prev_icon->iGroup != s_pIconClicked->iGroup)
-						&& (next_icon == NULL || next_icon->iGroup != s_pIconClicked->iGroup))
-						{
-							s_pIconClicked = NULL;
-							return FALSE;
-						}
-						//g_print ("deplacement de %s\n", s_pIconClicked->cName);
-						///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.
-						///	prev_icon = NULL;  // => move to the beginning of the group/dock
-						cairo_dock_move_icon_after_icon (pDock, s_pIconClicked, prev_icon);
-
-						pDock->pRenderer->calculate_icons (pDock);
-
-						if (! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (s_pIconClicked))
-						{
-							cairo_dock_request_icon_animation (s_pIconClicked, CAIRO_CONTAINER (pDock), "bounce", 2);
-						}
-						gtk_widget_queue_draw (pDock->container.pWidget);
-					}
-					
-					if (s_pFlyingContainer != NULL)
-					{
-						cd_debug ("on relache l'icone volante");
-						if (pDock->container.bInside)
-						{
-							//g_print ("  on la remet dans son dock d'origine\n");
-							Icon *pFlyingIcon = s_pFlyingContainer->pIcon;
-							cairo_dock_free_flying_container (s_pFlyingContainer);
-							cairo_dock_stop_marking_icon_as_following_mouse (pFlyingIcon);
-							cairo_dock_stop_icon_animation (pFlyingIcon);
-							// reinsert the icon where it was dropped, not at its original position.
-							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!
-							cairo_dock_insert_icon_in_dock (pFlyingIcon, pDock, CAIRO_DOCK_ANIMATE_ICON);
-							if (icon != NULL && cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pFlyingIcon))
-							{
-								cairo_dock_move_icon_after_icon (pDock, pFlyingIcon, icon);
-							}
-						}
-						else
-						{
-							Icon *pFlyingIcon = s_pFlyingContainer->pIcon;
-							g_free (pFlyingIcon->cParentDockName);  // we have to remove it ourselves here, since we kept this data.
-							pFlyingIcon->cParentDockName = NULL;
-							cairo_dock_terminate_flying_container (s_pFlyingContainer);  // supprime ou detache l'icone, l'animation se terminera toute seule.
-						}
-						s_pFlyingContainer = NULL;
-						pDock->bIconIsFlyingAway = FALSE;
-						cairo_dock_stop_icon_glide (pDock);
-					}
-					/// a implementer ...
-					///cairo_dock_notify_on_object (CAIRO_CONTAINER (pDock), CAIRO_DOCK_RELEASE_ICON, icon, pDock);
-				}
-				else
-				{
-					if (pDock->iRefCount == 0 && pDock->iVisibility != CAIRO_DOCK_VISI_SHORTKEY)
-						cairo_dock_write_root_dock_gaps (pDock);
-				}
-				//g_print ("- apres clic : s_pIconClicked <- NULL\n");
-				s_pIconClicked = NULL;
-				s_bIconDragged = FALSE;
-			break ;
-			
-			case GDK_BUTTON_PRESS :
-				if ( ! (pButton->state & GDK_MOD1_MASK))
-				{
-					//g_print ("+ clic sur %s (%.2f)!\n", icon ? icon->cName : "rien", icon ? icon->fInsertRemoveFactor : 0.);
-					s_iClickX = pButton->x;
-					s_iClickY = pButton->y;
-					if (icon && ! cairo_dock_icon_is_being_removed (icon) && ! CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (icon))
-					{
-						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).
-						cd_debug ("clicked on %s", icon->cName);
-					}
-					else
-						s_pIconClicked = NULL;
-				}
-			break ;
-
-			case GDK_2BUTTON_PRESS :
-				if (icon && ! cairo_dock_icon_is_being_removed (icon))
-				{
-					if (icon->iSidDoubleClickDelay != 0)
-					{
-						g_source_remove (icon->iSidDoubleClickDelay);
-						icon->iSidDoubleClickDelay = 0;
-					}
-					cairo_dock_notify_on_object (pDock, NOTIFICATION_DOUBLE_CLICK_ICON, icon, pDock);
-					if (icon->iNbDoubleClickListeners > 0)
-						pDock->container.bIgnoreNextReleaseEvent = TRUE;
-				}
-			break ;
-
-			default :
-			break ;
-		}
-	}
-	else if (pButton->button == 3 && pButton->type == GDK_BUTTON_PRESS)  // clique droit.
-	{
-		GtkWidget *menu = cairo_dock_build_menu (icon, CAIRO_CONTAINER (pDock));  // genere un CAIRO_DOCK_BUILD_CONTAINER_MENU et CAIRO_DOCK_BUILD_ICON_MENU.
-		
-		cairo_dock_popup_menu_on_icon (menu, icon, CAIRO_CONTAINER (pDock));
-	}
-	else if (pButton->button == 2 && pButton->type == GDK_BUTTON_PRESS)  // clique milieu.
-	{
-		if (icon && ! cairo_dock_icon_is_being_removed (icon))
-		{
-			cairo_dock_notify_on_object (pDock, NOTIFICATION_MIDDLE_CLICK_ICON, icon, pDock);
-		}
-	}
-
-	return FALSE;
-}
-
-
-gboolean cairo_dock_on_scroll (GtkWidget* pWidget, GdkEventScroll* pScroll, CairoDock *pDock)
-{
-	if (pScroll->direction != GDK_SCROLL_UP && pScroll->direction != GDK_SCROLL_DOWN)  // on degage les scrolls horizontaux.
-	{
-		return FALSE;
-	}
-	Icon *icon = cairo_dock_get_pointed_icon (pDock->icons);  // can be NULL
-	cairo_dock_notify_on_object (pDock, NOTIFICATION_SCROLL_ICON, icon, pDock, pScroll->direction);
-	
-	return FALSE;
-}
-
-
-gboolean cairo_dock_on_configure (GtkWidget* pWidget, GdkEventConfigure* pEvent, CairoDock *pDock)
-{
-	//g_print ("%s (%p, main dock : %d) : (%d;%d) (%dx%d)\n", __func__, pDock, pDock->bIsMainDock, pEvent->x, pEvent->y, pEvent->width, pEvent->height);
-	// set the new actual size of the container
-	gint iNewWidth, iNewHeight, iNewX, iNewY;
-	if (pDock->container.bIsHorizontal)
-	{
-		iNewWidth = pEvent->width;
-		iNewHeight = pEvent->height;
-		
-		iNewX = pEvent->x;
-		iNewY = pEvent->y;
-	}
-	else
-	{
-		iNewWidth = pEvent->height;
-		iNewHeight = pEvent->width;
-		
-		iNewX = pEvent->y;
-		iNewY = pEvent->x;
-	}
-	
-	gboolean bSizeUpdated = (iNewWidth != pDock->container.iWidth || iNewHeight != pDock->container.iHeight);
-	gboolean bIsNowSized = (pDock->container.iWidth == 1 && pDock->container.iHeight == 1 && bSizeUpdated);
-	gboolean bPositionUpdated = (pDock->container.iWindowPositionX != iNewX || pDock->container.iWindowPositionY != iNewY);
-	pDock->container.iWidth = iNewWidth;
-	pDock->container.iHeight = iNewHeight;
-	pDock->container.iWindowPositionX = iNewX;
-	pDock->container.iWindowPositionY = iNewY;
-	
-	if (pDock->container.iWidth == 1 && pDock->container.iHeight == 1)  // the X window has not yet reached its size.
-	{
-		return FALSE;
-	}
-	
-	// if the size has changed, also update everything that depends on it.
-	if (bSizeUpdated)  // changement de taille
-	{
-		// update mouse relative position inside the window
-		gldi_container_update_mouse_position (CAIRO_CONTAINER (pDock));
-		if (pDock->container.iMouseX < 0 || pDock->container.iMouseX > pDock->container.iWidth)  // utile ?
-			pDock->container.iMouseX = 0;
-		
-		// update the input shape (it has been calculated in the function that made the resize)
-		cairo_dock_update_input_shape (pDock);
-		if (pDock->pHiddenShapeBitmap != NULL && pDock->iInputState == CAIRO_DOCK_INPUT_HIDDEN)
-		{
-			//g_print ("+++ input shape hidden on configure\n");
-			cairo_dock_set_input_shape_hidden (pDock);
-		}
-		else if (pDock->pShapeBitmap != NULL && pDock->iInputState == CAIRO_DOCK_INPUT_AT_REST)
-		{
-			//g_print ("+++ input shape at rest on configure\n");
-			cairo_dock_set_input_shape_at_rest (pDock);
-		}
-		else if (pDock->iInputState == CAIRO_DOCK_INPUT_ACTIVE)
-		{
-			//g_print ("+++ input shape active on configure\n");
-			cairo_dock_set_input_shape_active (pDock);
-		}
-		
-		// update the GL context
-		if (g_bUseOpenGL)
-		{
-			if (! gldi_glx_make_current (CAIRO_CONTAINER (pDock)))
-				return FALSE;
-			
-			cairo_dock_set_ortho_view (CAIRO_CONTAINER (pDock));
-			
-			glClearAccum (0., 0., 0., 0.);
-			glClear (GL_ACCUM_BUFFER_BIT);
-			
-			if (pDock->iRedirectedTexture != 0)
-			{
-				_cairo_dock_delete_texture (pDock->iRedirectedTexture);
-				pDock->iRedirectedTexture = cairo_dock_create_texture_from_raw_data (NULL, pEvent->width, pEvent->height);
-			}
-		}
-		
-		cairo_dock_calculate_dock_icons (pDock);
-		//g_print ("configure size\n");
-		cairo_dock_trigger_set_WM_icons_geometry (pDock);  // changement de position ou de taille du dock => on replace les icones.
-		
-		cairo_dock_replace_all_dialogs ();
-		
-		if (bIsNowSized && g_bUseOpenGL)  // in OpenGL, 
-		{
-			Icon *icon;
-			GList *ic;
-			for (ic = pDock->icons; ic != NULL; ic = ic->next)
-			{
-				icon = ic->data;
-				if (icon->bDamaged)
-				{
-					//g_print ("#### icon %s is damaged\n", icon->cName);
-					icon->bDamaged = FALSE;
-					if (cairo_dock_get_icon_data_renderer (icon) != NULL)
-					{
-						cairo_dock_refresh_data_renderer (icon, CAIRO_CONTAINER (pDock), NULL);  // no cairo context in OpenGL
-					}
-					else if (icon->iSubdockViewType != 0)
-					{
-						cairo_dock_draw_subdock_content_on_icon (icon, pDock);
-					}
-					else if (CAIRO_DOCK_IS_APPLET (icon))
-					{
-						cairo_dock_reload_module_instance (icon->pModuleInstance, FALSE);  // easy but safe way to redraw the icon properly.
-					}
-					else  // if we don't know how thie icon should be drawn, just reload it.
-					{
-						cairo_dock_load_icon_image (icon, CAIRO_CONTAINER (pDock));
-					}
-				}
-			}
-		}
-	}
-	else if (bPositionUpdated)  // changement de position.
-	{
-		//g_print ("configure x,y\n");
-		cairo_dock_trigger_set_WM_icons_geometry (pDock);  // changement de position de la fenetre du dock => on replace les icones.
-		
-		cairo_dock_replace_all_dialogs ();
-	}
-	
-	if (pDock->iRefCount == 0 && (bSizeUpdated || bPositionUpdated))
-	{
-		if (pDock->iVisibility == CAIRO_DOCK_VISI_AUTO_HIDE_ON_OVERLAP)
-		{
-			Icon *pActiveAppli = cairo_dock_get_current_active_icon ();
-			if (_cairo_dock_appli_is_on_our_way (pActiveAppli, pDock))  // la fenetre active nous gene.
-			{
-				if (!cairo_dock_is_temporary_hidden (pDock))
-					cairo_dock_activate_temporary_auto_hide (pDock);
-			}
-			else
-			{
-				if (cairo_dock_is_temporary_hidden (pDock))
-					cairo_dock_deactivate_temporary_auto_hide (pDock);
-			}
-		}
-		else if (pDock->iVisibility == CAIRO_DOCK_VISI_AUTO_HIDE_ON_OVERLAP_ANY)
-		{
-			if (cairo_dock_search_window_overlapping_dock (pDock) != NULL)
-			{
-				if (!cairo_dock_is_temporary_hidden (pDock))
-					cairo_dock_activate_temporary_auto_hide (pDock);
-			}
-			else
-			{
-				if (cairo_dock_is_temporary_hidden (pDock))
-					cairo_dock_deactivate_temporary_auto_hide (pDock);
-			}
-		}
-	}
-	
-	gtk_widget_queue_draw (pWidget);
-	
-	return FALSE;
-}
-
-
-
-static gboolean s_bWaitForData = FALSE;
-static gboolean s_bCouldDrop = FALSE;
-
-void cairo_dock_on_drag_data_received (GtkWidget *pWidget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint time, CairoDock *pDock)
-{
-	cd_debug ("%s (%dx%d, %d, %d)", __func__, x, y, time, pDock->container.bInside);
-	if (cairo_dock_is_hidden (pDock))  // X ne semble pas tenir compte de la zone d'input pour dropper les trucs...
-		return ;
-	//\_________________ On recupere l'URI.
-	gchar *cReceivedData = (gchar *)gtk_selection_data_get_data (selection_data);
-	g_return_if_fail (cReceivedData != NULL);
-	int length = strlen (cReceivedData);
-	if (cReceivedData[length-1] == '\n')
-		cReceivedData[--length] = '\0';  // on vire le retour chariot final.
-	if (cReceivedData[length-1] == '\r')
-		cReceivedData[--length] = '\0';
-	
-	if (s_bWaitForData)
-	{
-		s_bWaitForData = FALSE;
-		gdk_drag_status (dc, GDK_ACTION_COPY, time);
-		cd_debug ("drag info : <%s>\n", cReceivedData);
-		pDock->iAvoidingMouseIconType = CAIRO_DOCK_LAUNCHER;
-		if (g_str_has_suffix (cReceivedData, ".desktop")/** || g_str_has_suffix (cReceivedData, ".sh")*/)
-			pDock->fAvoidingMouseMargin = .5;  // on ne sera jamais dessus.
-		else
-			pDock->fAvoidingMouseMargin = .25;
-		return ;
-	}
-	
-	//\_________________ On arrete l'animation.
-	//cairo_dock_stop_marking_icons (pDock);
-	pDock->iAvoidingMouseIconType = -1;
-	pDock->fAvoidingMouseMargin = 0;
-	
-	//\_________________ On arrete le timer.
-	if (s_iSidActionOnDragHover != 0)
-	{
-		//cd_debug ("on annule la demande de montrage d'appli");
-		g_source_remove (s_iSidActionOnDragHover);
-		s_iSidActionOnDragHover = 0;
-	}
-	
-	//\_________________ On calcule la position a laquelle on l'a lache.
-	cd_debug (">>> cReceivedData : '%s' (%d/%d)", cReceivedData, s_bCouldDrop, pDock->bCanDrop);
-	/* icon => drop on icon
-	no icon => if order undefined: drop on dock; else: drop between 2 icons.*/
-	Icon *pPointedIcon = NULL;
-	double fOrder;
-	if (s_bCouldDrop)  // can drop on the dock
-	{
-		cd_debug ("drop between icons");
-		if (myDocksParam.bLockIcons || myDocksParam.bLockAll)  // locked, can't add anything.
-		{
-			gtk_drag_finish (dc, FALSE, FALSE, time);
-			return ;
-		}
-		
-		pPointedIcon = NULL;
-		fOrder = 0;
-		
-		// try to guess where we dropped.
-		int iDropX = (pDock->container.bIsHorizontal ? x : y);
-		Icon *pNeighboorIcon;
-		Icon *icon;
-		GList *ic;
-		for (ic = pDock->icons; ic != NULL; ic = ic->next)
-		{
-			icon = ic->data;
-			if (icon->bPointed)
-			{
-				if (iDropX < icon->fDrawX + icon->fWidth * icon->fScale/2)  // on the left side of the icon
-				{
-					pNeighboorIcon = (ic->prev != NULL ? ic->prev->data : NULL);
-					fOrder = (pNeighboorIcon != NULL ? (icon->fOrder + pNeighboorIcon->fOrder) / 2 : icon->fOrder - 1);
-				}
-				else  // on the right side of the icon
-				{
-					pNeighboorIcon = (ic->next != NULL ? ic->next->data : NULL);
-					fOrder = (pNeighboorIcon != NULL ? (icon->fOrder + pNeighboorIcon->fOrder) / 2 : icon->fOrder + 1);
-				}
-				break;
-			}
-		}
-	}
-	else  // drop on an icon or nowhere.
-	{
-		pPointedIcon = cairo_dock_get_pointed_icon (pDock->icons);
-		fOrder = CAIRO_DOCK_LAST_ORDER;
-		if (pPointedIcon == NULL && ! g_str_has_suffix (cReceivedData, ".desktop"))  // no icon => abort, but .desktop are always added
-		{
-			cd_debug ("drop nowhere");
-			gtk_drag_finish (dc, FALSE, FALSE, time);
-			return;
-		}
-	}
-	cd_debug ("drop on %s (%.2f)", pPointedIcon?pPointedIcon->cName:"dock", fOrder);
-	/**int iDropX = (pDock->container.bIsHorizontal ? x : y);
-	Icon *pNeighboorIcon = NULL;
-	Icon *icon;
-	GList *ic;
-	for (ic = pDock->icons; ic != NULL; ic = ic->next)
-	{
-		icon = ic->data;
-		if (icon->bPointed)
-		{
-			//g_print ("On pointe sur %s\n", icon->cName);
-			pPointedIcon = icon;
-			double fMargin;  /// deviendra obsolete si le drag-received fonctionne.
-			if (g_str_has_suffix (cReceivedData, ".desktop"))  // si c'est un .desktop, on l'ajoute.
-			{
-				if (myDocksParam.bLockIcons || myDocksParam.bLockAll)
-				{
-					gtk_drag_finish (dc, FALSE, FALSE, time);
-					return ;
-				}
-				fMargin = 0.5;  // on ne sera jamais dessus.
-				///fMargin = 0.25;
-			}
-			else  // sinon on le lance si on est sur l'icone, et on l'ajoute autrement.
-				fMargin = 0.25;
-			cd_debug ("%d > %.2f", iDropX, icon->fX + icon->fWidth * icon->fScale * (1 - fMargin));
-			cd_debug ("%d < %.2f", iDropX, icon->fX + icon->fWidth * icon->fScale * fMargin);
-			if (iDropX > icon->fX + icon->fWidth * icon->fScale * (1 - fMargin))  // on est apres.
-			{
-				if (myDocksParam.bLockIcons || myDocksParam.bLockAll)
-				{
-					gtk_drag_finish (dc, FALSE, FALSE, time);
-					return ;
-				}
-				pNeighboorIcon = (ic->next != NULL ? ic->next->data : NULL);
-				fOrder = (pNeighboorIcon != NULL ? (icon->fOrder + pNeighboorIcon->fOrder) / 2 : icon->fOrder + 1);
-			}
-			else if (iDropX < icon->fX + icon->fWidth * icon->fScale * fMargin)  // on est avant.
-			{
-				if (myDocksParam.bLockIcons || myDocksParam.bLockAll)
-				{
-					gtk_drag_finish (dc, FALSE, FALSE, time);
-					return ;
-				}
-				pNeighboorIcon = (ic->prev != NULL ? ic->prev->data : NULL);
-				fOrder = (pNeighboorIcon != NULL ? (icon->fOrder + pNeighboorIcon->fOrder) / 2 : icon->fOrder - 1);
-			}
-			else  // on est dessus.
-			{
-				fOrder = CAIRO_DOCK_LAST_ORDER;
-			}
-		}
-	}*/
-	
-	cairo_dock_notify_drop_data (cReceivedData, pPointedIcon, fOrder, CAIRO_CONTAINER (pDock));
-	
-	gtk_drag_finish (dc, TRUE, FALSE, time);
-}
-
-gboolean cairo_dock_on_drag_drop (GtkWidget *pWidget, GdkDragContext *dc, gint x, gint y, guint time, CairoDock *pDock)
-{
-	cd_message ("%s (%dx%d, %d)", __func__, x, y, time);
-	GdkAtom target = gtk_drag_dest_find_target (pWidget, dc, NULL);
-	gtk_drag_get_data (pWidget, dc, target, time);
-	return TRUE;  // in a drop zone.
-}
-
-
-gboolean cairo_dock_on_drag_motion (GtkWidget *pWidget, GdkDragContext *dc, gint x, gint y, guint time, CairoDock *pDock)
-{
-	cd_debug ("%s (%d;%d, %d)", __func__, x, y, time);
-	
-	//\_________________ On simule les evenements souris habituels.
-	if (! pDock->bIsDragging)
-	{
-		cd_debug ("start dragging");
-		pDock->bIsDragging = TRUE;
-		
-		/*GdkAtom gdkAtom = gdk_drag_get_selection (dc);
-		Atom xAtom = gdk_x11_atom_to_xatom (gdkAtom);
-		Window Xid = GDK_WINDOW_XID (dc->source_window);
-		cd_debug (" <%s>\n", cairo_dock_get_property_name_on_xwindow (Xid, xAtom));*/
-		
-		gboolean bStartAnimation = FALSE;
-		cairo_dock_notify_on_object (pDock, NOTIFICATION_START_DRAG_DATA, pDock, &bStartAnimation);
-		if (bStartAnimation)
-			cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
-		
-		/*pDock->iAvoidingMouseIconType = -1;
-		
-		GdkAtom target = gtk_drag_dest_find_target (pWidget, dc, NULL);
-		if (target == GDK_NONE)
-			gdk_drag_status (dc, 0, time);
-		else
-		{
-			gtk_drag_get_data (pWidget, dc, target, time);
-			s_bWaitForData = TRUE;
-			cd_debug ("get-data envoye\n");
-		}*/
-		
-		cairo_dock_on_enter_notify (pWidget, NULL, pDock);  // ne sera effectif que la 1ere fois a chaque entree dans un dock.
-	}
-	else
-	{
-		//g_print ("move dragging\n");
-		cairo_dock_on_motion_notify (pWidget, NULL, pDock);
-	}
-	
-	int X, Y;
-	if (pDock->container.bIsHorizontal)
-	{
-		X = x - pDock->container.iWidth/2;
-		Y = y;
-	}
-	else
-	{
-		Y = x;
-		X = y - pDock->container.iWidth/2;
-	}
-	int w, h;
-	Icon *icon = cairo_dock_get_pointed_icon (pDock->icons);
-	if (pDock->iInputState == CAIRO_DOCK_INPUT_AT_REST)
-	{
-		w = pDock->iMinDockWidth;
-		h = pDock->iMinDockHeight;
-		
-		if (X <= -w/2 || X >= w/2)
-			return FALSE;  // on n'accepte pas le drop.
-		if (pDock->container.bDirectionUp)
-		{
-			if (Y < pDock->container.iHeight - h || Y >= pDock->container.iHeight)
-				return FALSE;  // on n'accepte pas le drop.
-		}
-		else
-		{
-			if (Y < 0 || Y > h)
-				return FALSE;  // on n'accepte pas le drop.
-		}
-	}
-	else if (pDock->iInputState == CAIRO_DOCK_INPUT_HIDDEN)
-	{
-		return FALSE;  // on n'accepte pas le drop.
-	}
-	
-	//g_print ("take the drop\n");
-	gdk_drag_status (dc, GDK_ACTION_COPY, time);
-	return TRUE;  // on accepte le drop.
-}
-
-void cairo_dock_on_drag_leave (GtkWidget *pWidget, GdkDragContext *dc, guint time, CairoDock *pDock)
-{
-	//g_print ("stop dragging 1\n");
-	Icon *icon = cairo_dock_get_pointed_icon (pDock->icons);
-	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.
-	{
-		cd_debug (">>> on attend...");
-		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.
-			gtk_main_iteration ();
-		cd_debug (">>> pDock->container.bInside : %d", pDock->container.bInside);
-	}
-	//g_print ("stop dragging 2\n");
-	s_bWaitForData = FALSE;
-	pDock->bIsDragging = FALSE;
-	s_bCouldDrop = pDock->bCanDrop;
-	pDock->bCanDrop = FALSE;
-	//cairo_dock_stop_marking_icons (pDock);
-	pDock->iAvoidingMouseIconType = -1;
-	
-	// emit a leave-event signal, since we don't get one if we leave the window too quickly (!)
-	if (pDock->iSidLeaveDemand == 0)
-	{
-		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.
-	}
-	// 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).
-	cairo_dock_on_motion_notify (pWidget, NULL, pDock);
-}
-
-
-static void _cairo_dock_show_dock_at_mouse (CairoDock *pDock)
-{
-	g_return_if_fail (pDock != NULL);
-	gldi_container_update_mouse_position (CAIRO_CONTAINER (pDock));
-	
-	///pDock->iGapX = pDock->container.iWindowPositionX + iMouseX - g_desktopGeometry.iScreenWidth[pDock->container.bIsHorizontal] * pDock->fAlign;
-	///pDock->iGapY = (pDock->container.bDirectionUp ? g_desktopGeometry.iScreenHeight[pDock->container.bIsHorizontal] - (pDock->container.iWindowPositionY + iMouseY) : pDock->container.iWindowPositionY + iMouseY);
-	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;
-	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;
-	cd_debug (" => %d;%d", g_pMainDock->iGapX, g_pMainDock->iGapY);
-	
-	int iNewPositionX, iNewPositionY;
-	cairo_dock_get_window_position_at_balance (pDock,
-		pDock->container.iWidth, pDock->container.iHeight,
-		&iNewPositionX, &iNewPositionY);
-	cd_debug (" ==> %d;%d", iNewPositionX, iNewPositionY);
-	if (iNewPositionX < 0)
-		iNewPositionX = 0;
-	else if (iNewPositionX + pDock->container.iWidth > g_desktopGeometry.iScreenWidth[pDock->container.bIsHorizontal])
-		iNewPositionX = g_desktopGeometry.iScreenWidth[pDock->container.bIsHorizontal] - pDock->container.iWidth;
-	
-	if (iNewPositionY < 0)
-		iNewPositionY = 0;
-	else if (iNewPositionY + pDock->container.iHeight > g_desktopGeometry.iScreenHeight[pDock->container.bIsHorizontal])
-		iNewPositionY = g_desktopGeometry.iScreenHeight[pDock->container.bIsHorizontal] - pDock->container.iHeight;
-	
-	gtk_window_move (GTK_WINDOW (pDock->container.pWidget),
-		(pDock->container.bIsHorizontal ? iNewPositionX : iNewPositionY),
-		(pDock->container.bIsHorizontal ? iNewPositionY : iNewPositionX));
-	gtk_widget_show (pDock->container.pWidget);
-}
-void cairo_dock_raise_from_shortcut (const char *cKeyShortcut, gpointer data)
-{
-	if (gldi_container_is_visible (CAIRO_CONTAINER (g_pMainDock)))
-	{
-		gtk_widget_hide (g_pMainDock->container.pWidget);
-	}
-	else
-	{
-		_cairo_dock_show_dock_at_mouse (g_pMainDock);
-	}
-	if (g_pMainDock->iVisibility != CAIRO_DOCK_VISI_SHORTKEY)  // could happen if we set the shortkey outside of the Visibility module.
-		g_pMainDock->iVisibility == CAIRO_DOCK_VISI_SHORTKEY;
-	s_bHideAfterShortcut = FALSE;
-}
-
-void cairo_dock_hide_after_shortcut (void)
-{
-	if (s_bHideAfterShortcut && gldi_container_is_visible (CAIRO_CONTAINER (g_pMainDock)))
-	{
-		gtk_widget_hide (g_pMainDock->container.pWidget);
-		s_bHideAfterShortcut = FALSE;
-	}
-}

=== removed file '.pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-dock-factory.c'
--- .pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-dock-factory.c	2012-04-25 01:29:46 +0000
+++ .pc/01-bzr_dock-s_menu.patch/src/gldit/cairo-dock-dock-factory.c	1970-01-01 00:00:00 +0000
@@ -1,1255 +0,0 @@
-/**
-* This file is a part of the Cairo-Dock project
-*
-* Copyright : (C) see the 'copyright' file.
-* E-mail    : see the 'copyright' file.
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 3
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-* You should have received a copy of the GNU General Public License
-* along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <math.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <glib/gstdio.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkx.h>
-
-#include <cairo.h>
-
-#include <X11/extensions/Xrender.h>
-#include <X11/extensions/shape.h>
-#include <GL/gl.h> 
-#include <GL/glu.h> 
-#include <GL/glx.h> 
-
-#include "cairo-dock-draw.h"
-#include "cairo-dock-applications-manager.h"
-#include "cairo-dock-image-buffer.h"
-#include "cairo-dock-module-factory.h"
-#include "cairo-dock-callbacks.h"
-#include "cairo-dock-icon-factory.h"
-#include "cairo-dock-icon-facility.h"
-#include "cairo-dock-separator-manager.h"
-#include "cairo-dock-launcher-manager.h"
-#include "cairo-dock-backends-manager.h"  // myBackendsParam.fSubDockSizeRatio
-#include "cairo-dock-X-utilities.h"
-#include "cairo-dock-log.h"
-#include "cairo-dock-application-facility.h"  // cairo_dock_detach_appli
-#include "cairo-dock-dialog-manager.h"  // cairo_dock_replace_all_dialogs
-#include "cairo-dock-keyfile-utilities.h"
-#include "cairo-dock-dock-manager.h"
-#include "cairo-dock-notifications.h"
-#include "cairo-dock-class-manager.h"
-#include "cairo-dock-animations.h"
-#include "cairo-dock-container.h"
-#include "cairo-dock-desktop-file-factory.h"
-#include "cairo-dock-themes-manager.h"
-#include "cairo-dock-gui-manager.h"
-#include "cairo-dock-dock-facility.h"
-#include "cairo-dock-desktop-file-factory.h"
-#include "cairo-dock-draw-opengl.h"
-#include "cairo-dock-opengl.h"
-#include "cairo-dock-dock-factory.h"
-
-extern gchar *g_cCurrentLaunchersPath;
-
-extern CairoDockGLConfig g_openglConfig;
-extern CairoDockHidingEffect *g_pHidingBackend;
-extern gboolean g_bUseOpenGL;
-
-
-static gboolean _cairo_dock_grow_up (CairoDock *pDock)
-{
-	//g_print ("%s (%d ; %2f ; bInside:%d)\n", __func__, pDock->iMagnitudeIndex, pDock->fFoldingFactor, pDock->container.bInside);
-	
-	pDock->iMagnitudeIndex += myBackendsParam.iGrowUpInterval;
-	if (pDock->iMagnitudeIndex > CAIRO_DOCK_NB_MAX_ITERATIONS)
-		pDock->iMagnitudeIndex = CAIRO_DOCK_NB_MAX_ITERATIONS;
-
-	if (pDock->fFoldingFactor != 0)
-	{
-		int iAnimationDeltaT = cairo_dock_get_animation_delta_t (pDock);
-		pDock->fFoldingFactor -= (double) iAnimationDeltaT / myBackendsParam.iUnfoldingDuration;
-		if (pDock->fFoldingFactor < 0)
-			pDock->fFoldingFactor = 0;
-	}
-	
-	gldi_container_update_mouse_position (CAIRO_CONTAINER (pDock));
-	
-	Icon *pLastPointedIcon = cairo_dock_get_pointed_icon (pDock->icons);
-	Icon *pPointedIcon = cairo_dock_calculate_dock_icons (pDock);
-	if (! pDock->bIsGrowingUp)
-		return FALSE;
-	
-	if (pLastPointedIcon != pPointedIcon && pDock->container.bInside)
-		cairo_dock_on_change_icon (pLastPointedIcon, pPointedIcon, pDock);
-
-	if (pDock->iMagnitudeIndex == CAIRO_DOCK_NB_MAX_ITERATIONS && pDock->fFoldingFactor == 0)  // fin de grossissement et de depliage.
-	{
-		/// TODO: check doing this in update_dock_size directly...
-		/**if (pDock->bWMIconsNeedUpdate)
-		{
-			cairo_dock_trigger_set_WM_icons_geometry (pDock);
-			pDock->bWMIconsNeedUpdate = FALSE;
-		}*/
-		
-		cairo_dock_replace_all_dialogs ();
-		return FALSE;
-	}
-	else
-		return TRUE;
-}
-
-static gboolean _cairo_dock_shrink_down (CairoDock *pDock)
-{
-	//g_print ("%s (%d, %f, %f)\n", __func__, pDock->iMagnitudeIndex, pDock->fFoldingFactor, pDock->fDecorationsOffsetX);
-	//\_________________ On fait decroitre la magnitude du dock.
-	int iPrevMagnitudeIndex = pDock->iMagnitudeIndex;
-	pDock->iMagnitudeIndex -= myBackendsParam.iShrinkDownInterval;
-	if (pDock->iMagnitudeIndex < 0)
-		pDock->iMagnitudeIndex = 0;
-	
-	//\_________________ On replie le dock.
-	if (pDock->fFoldingFactor != 0 && pDock->fFoldingFactor != 1)
-	{
-		int iAnimationDeltaT = cairo_dock_get_animation_delta_t (pDock);
-		pDock->fFoldingFactor += (double) iAnimationDeltaT / myBackendsParam.iUnfoldingDuration;
-		if (pDock->fFoldingFactor > 1)
-			pDock->fFoldingFactor = 1;
-	}
-	
-	//\_________________ On remet les decorations a l'equilibre.
-	pDock->fDecorationsOffsetX *= .8;
-	if (fabs (pDock->fDecorationsOffsetX) < 3)
-		pDock->fDecorationsOffsetX = 0.;
-	
-	//\_________________ On recupere la position de la souris manuellement (car a priori on est hors du dock).
-	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. ^_^
-	
-	//\_________________ On recalcule les icones.
-	///if (iPrevMagnitudeIndex != 0)
-	{
-		cairo_dock_calculate_dock_icons (pDock);
-		if (! pDock->bIsShrinkingDown)
-			return FALSE;
-		
-		///cairo_dock_replace_all_dialogs ();
-	}
-
-	if (pDock->iMagnitudeIndex == 0 && (pDock->fFoldingFactor == 0 || pDock->fFoldingFactor == 1))  // on est arrive en bas.
-	{
-		//g_print ("equilibre atteint (%d)\n", pDock->container.bInside);
-		if (! pDock->container.bInside)  // on peut etre hors des icones sans etre hors de la fenetre.
-		{
-			//g_print ("rideau !\n");
-			
-			//\__________________ On repasse derriere si on etait devant.
-			if (pDock->iVisibility == CAIRO_DOCK_VISI_KEEP_BELOW && ! pDock->bIsBelow)
-				cairo_dock_pop_down (pDock);
-			
-			//\__________________ On se redimensionne en taille normale.
-			if (! pDock->bAutoHide && pDock->iRefCount == 0 && ! pDock->bMenuVisible)  // fin de shrink sans auto-hide => taille normale.
-			{
-				//g_print ("taille normale (%x; %d)\n", pDock->pShapeBitmap , pDock->iInputState);
-				if (pDock->pShapeBitmap && pDock->iInputState != CAIRO_DOCK_INPUT_AT_REST)
-				{
-					//g_print ("+++ input shape at rest on end shrinking\n");
-					cairo_dock_set_input_shape_at_rest (pDock);
-					pDock->iInputState = CAIRO_DOCK_INPUT_AT_REST;
-					///cairo_dock_replace_all_dialogs ();
-				}
-			}
-			
-			//\__________________ On se cache si sous-dock.
-			if (pDock->iRefCount > 0)
-			{
-				//g_print ("on cache ce sous-dock en sortant par lui\n");
-				gtk_widget_hide (pDock->container.pWidget);
-				cairo_dock_hide_parent_dock (pDock);
-			}
-			cairo_dock_hide_after_shortcut ();
-		}
-		else
-		{
-			cairo_dock_calculate_dock_icons (pDock);  // relance le grossissement si on est dedans.
-		}
-		if (!pDock->bIsGrowingUp)
-			cairo_dock_replace_all_dialogs ();
-		return (!pDock->bIsGrowingUp && (pDock->fDecorationsOffsetX != 0 || (pDock->fFoldingFactor != 0 && pDock->fFoldingFactor != 1)));
-	}
-	else
-	{
-		return (!pDock->bIsGrowingUp);
-	}
-}
-
-static gboolean _cairo_dock_hide (CairoDock *pDock)
-{
-	//g_print ("%s (%d, %.2f, %.2f)\n", __func__, pDock->iMagnitudeIndex, pDock->fHideOffset, pDock->fPostHideOffset);
-	
-	if (pDock->fHideOffset < 1)  // the hiding animation is running.
-	{
-		pDock->fHideOffset += 1./myBackendsParam.iHideNbSteps;
-		if (pDock->fHideOffset > .99)  // fin d'anim.
-		{
-			pDock->fHideOffset = 1;
-			
-			//g_print ("on arrete le cachage\n");
-			gboolean bVisibleIconsPresent = FALSE;
-			Icon *pIcon;
-			GList *ic;
-			for (ic = pDock->icons; ic != NULL; ic = ic->next)
-			{
-				pIcon = ic->data;
-				if (pIcon->fInsertRemoveFactor != 0)  // on accelere l'animation d'apparition/disparition.
-				{
-					if (pIcon->fInsertRemoveFactor > 0)
-						pIcon->fInsertRemoveFactor = 0.05;
-					else
-						pIcon->fInsertRemoveFactor = - 0.05;
-				}
-				
-				if (! pIcon->bIsDemandingAttention && ! pIcon->bAlwaysVisible)
-					cairo_dock_stop_icon_animation (pIcon);  // s'il y'a une autre animation en cours, on l'arrete.
-				else
-					bVisibleIconsPresent = TRUE;
-			}
-			
-			pDock->pRenderer->calculate_icons (pDock);
-			///pDock->fFoldingFactor = (myBackendsParam.bAnimateOnAutoHide ? .99 : 0.);  // on arme le depliage.
-			cairo_dock_allow_entrance (pDock);
-			
-			cairo_dock_replace_all_dialogs ();
-			
-			if (bVisibleIconsPresent)  // il y'a des icones a montrer progressivement, on reste dans la boucle.
-			{
-				pDock->fPostHideOffset = 0.05;
-				return TRUE;
-			}
-			else
-			{
-				pDock->fPostHideOffset = 1;  // pour que les icones demandant l'attention plus tard soient visibles.
-				return FALSE;
-			}
-		}
-	}
-	else if (pDock->fPostHideOffset > 0 && pDock->fPostHideOffset < 1)  // the post-hiding animation is running.
-	{
-		pDock->fPostHideOffset += 1./myBackendsParam.iHideNbSteps;
-		if (pDock->fPostHideOffset > .99)
-		{
-			pDock->fPostHideOffset = 1.;
-			return FALSE;
-		}
-	}
-	else  // else no hiding animation is running.
-		return FALSE;
-	return TRUE;
-}
-
-static gboolean _cairo_dock_show (CairoDock *pDock)
-{
-	pDock->fHideOffset -= 1./myBackendsParam.iUnhideNbSteps;
-	if (pDock->fHideOffset < 0.01)
-	{
-		pDock->fHideOffset = 0;
-		cairo_dock_allow_entrance (pDock);
-		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).
-		return FALSE;
-	}
-	return TRUE;
-}
-
-static gboolean _cairo_dock_handle_inserting_removing_icons (CairoDock *pDock)
-{
-	gboolean bRecalculateIcons = FALSE;
-	GList* ic = pDock->icons, *next_ic;
-	Icon *pIcon;
-	while (ic != NULL)
-	{
-		pIcon = ic->data;
-		next_ic = ic->next;
-		if (pIcon->fInsertRemoveFactor == (gdouble)0.05)
-		{
-			gboolean bIsAppli = CAIRO_DOCK_IS_NORMAL_APPLI (pIcon);
-			if (bIsAppli && pIcon->iLastCheckTime != -1)  // c'est une icone d'appli non vieille qui disparait, elle s'est probablement cachee => on la detache juste.
-			{
-				cd_message ("cette (%s) appli est toujours valide, on la detache juste", pIcon->cName);
-				pIcon->fInsertRemoveFactor = 0.;  // on le fait avant le reload, sinon l'icone n'est pas rechargee.
-				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.
-					cairo_dock_reload_icon_image (pIcon, CAIRO_CONTAINER (pDock));
-				pDock = cairo_dock_detach_appli (pIcon);
-				if (pDock == NULL)  // the dock has been destroyed (empty class sub-dock).
-				{
-					cairo_dock_free_icon (pIcon);
-					return FALSE;
-				}
-			}
-			else
-			{
-				cd_message (" - %s va etre supprimee", pIcon->cName);
-				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.
-				
-				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).
-				{
-					gboolean bEmptyClassSubDock = cairo_dock_check_class_subdock_is_empty (pDock, pIcon->cClass);
-					if (bEmptyClassSubDock)
-					{
-						cairo_dock_free_icon (pIcon);
-						return FALSE;
-					}
-				}
-				
-				cairo_dock_free_icon (pIcon);
-			}
-		}
-		else if (pIcon->fInsertRemoveFactor == (gdouble)-0.05)
-		{
-			pIcon->fInsertRemoveFactor = 0;  // cela n'arrete pas l'animation, qui peut se poursuivre meme apres que l'icone ait atteint sa taille maximale.
-			bRecalculateIcons = TRUE;
-		}
-		else if (pIcon->fInsertRemoveFactor != 0)
-		{
-			bRecalculateIcons = TRUE;
-		}
-		ic = next_ic;
-	}
-	
-	if (bRecalculateIcons)
-		cairo_dock_calculate_dock_icons (pDock);
-	return TRUE;
-}
-
-static gboolean _cairo_dock_dock_animation_loop (CairoContainer *pContainer)
-{
-	CairoDock *pDock = CAIRO_DOCK (pContainer);
-	gboolean bContinue = FALSE;
-	gboolean bUpdateSlowAnimation = FALSE;
-	pContainer->iAnimationStep ++;
-	if (pContainer->iAnimationStep * pContainer->iAnimationDeltaT >= CAIRO_DOCK_MIN_SLOW_DELTA_T)
-	{
-		bUpdateSlowAnimation = TRUE;
-		pContainer->iAnimationStep = 0;
-		pContainer->bKeepSlowAnimation = FALSE;
-	}
-	
-	if (pDock->bIsShrinkingDown)
-	{
-		pDock->bIsShrinkingDown = _cairo_dock_shrink_down (pDock);
-		cairo_dock_redraw_container (CAIRO_CONTAINER (pDock));
-		bContinue |= pDock->bIsShrinkingDown;
-	}
-	if (pDock->bIsGrowingUp)
-	{
-		pDock->bIsGrowingUp = _cairo_dock_grow_up (pDock);
-		cairo_dock_redraw_container (CAIRO_CONTAINER (pDock));
-		bContinue |= pDock->bIsGrowingUp;
-	}
-	if (pDock->bIsHiding)
-	{
-		//g_print ("le dock se cache\n");
-		pDock->bIsHiding = _cairo_dock_hide (pDock);
-		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.
-		bContinue |= pDock->bIsHiding;
-	}
-	if (pDock->bIsShowing)
-	{
-		pDock->bIsShowing = _cairo_dock_show (pDock);
-		cairo_dock_redraw_container (CAIRO_CONTAINER (pDock));
-		bContinue |= pDock->bIsShowing;
-	}
-	//g_print (" => %d, %d\n", pDock->bIsShrinkingDown, pDock->bIsGrowingUp);
-	
-	double fDockMagnitude = cairo_dock_calculate_magnitude (pDock->iMagnitudeIndex);
-	gboolean bIconIsAnimating;
-	gboolean bNoMoreDemandingAttention = FALSE;
-	Icon *icon;
-	GList *ic;
-	for (ic = pDock->icons; ic != NULL; ic = ic->next)
-	{
-		icon = ic->data;
-		
-		icon->fDeltaYReflection = 0;
-		if (myIconsParam.fAlphaAtRest != 1)
-			icon->fAlpha = fDockMagnitude + myIconsParam.fAlphaAtRest * (1 - fDockMagnitude);
-		
-		bIconIsAnimating = FALSE;
-		if (bUpdateSlowAnimation)
-		{
-			cairo_dock_notify_on_object (icon, NOTIFICATION_UPDATE_ICON_SLOW, icon, pDock, &bIconIsAnimating);
-			pContainer->bKeepSlowAnimation |= bIconIsAnimating;
-		}
-		cairo_dock_notify_on_object (icon, NOTIFICATION_UPDATE_ICON, icon, pDock, &bIconIsAnimating);
-		
-		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.
-		{
-			gtk_widget_queue_draw (pContainer->pWidget);
-		}
-		
-		bContinue |= bIconIsAnimating;
-		if (! bIconIsAnimating)
-		{
-			icon->iAnimationState = CAIRO_DOCK_STATE_REST;
-			if (icon->bIsDemandingAttention)
-			{
-				icon->bIsDemandingAttention = FALSE;
-				bNoMoreDemandingAttention = TRUE;
-			}
-		}
-	}
-	bContinue |= pContainer->bKeepSlowAnimation;
-	
-	if (pDock->iVisibility == CAIRO_DOCK_VISI_KEEP_BELOW && bNoMoreDemandingAttention && ! pDock->bIsBelow && ! pContainer->bInside)
-	{
-		//g_print ("plus de raison d'etre devant\n");
-		cairo_dock_pop_down (pDock);
-	}
-	
-	if (! _cairo_dock_handle_inserting_removing_icons (pDock))
-	{
-		cd_debug ("ce dock n'a plus de raison d'etre");
-		return FALSE;
-	}
-	
-	if (bUpdateSlowAnimation)
-	{
-		cairo_dock_notify_on_object (pDock, NOTIFICATION_UPDATE_SLOW, pDock, &pContainer->bKeepSlowAnimation);
-	}
-	cairo_dock_notify_on_object (pDock, NOTIFICATION_UPDATE, pDock, &bContinue);
-	
-	if (! bContinue && ! pContainer->bKeepSlowAnimation)
-	{
-		pContainer->iSidGLAnimation = 0;
-		return FALSE;
-	}
-	else
-		return TRUE;
-}
-
-static gboolean _on_dock_destroyed (GtkWidget *menu, CairoContainer *pContainer);
-static void _on_menu_deactivated (GtkMenuShell *menu, CairoDock *pDock)
-{
-	//g_print ("\n+++ %s ()\n\n", __func__);
-	g_return_if_fail (CAIRO_DOCK_IS_DOCK (pDock));
-	pDock->bMenuVisible = FALSE;
-	cairo_dock_emit_leave_signal (CAIRO_CONTAINER (pDock));
-}
-static void _on_menu_destroyed (GtkWidget *menu, CairoDock *pDock)
-{
-	//g_print ("\n+++ %s ()\n\n", __func__);
-	cairo_dock_remove_notification_func_on_object (pDock,
-		NOTIFICATION_DESTROY,
-		(CairoDockNotificationFunc) _on_dock_destroyed,
-		menu);
-}
-static gboolean _on_dock_destroyed (GtkWidget *menu, CairoContainer *pContainer)
-{
-	//g_print ("\n+++ %s ()\n\n", __func__);
-	g_signal_handlers_disconnect_matched
-		(menu,
-		G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
-		0,
-		0,
-		NULL,
-		_on_menu_deactivated,
-		pContainer);
-	g_signal_handlers_disconnect_matched
-		(menu,
-		G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
-		0,
-		0,
-		NULL,
-		_on_menu_destroyed,
-		pContainer);
-}
-static void _setup_menu (CairoContainer *pContainer, Icon *pIcon, GtkWidget *pMenu)
-{
-	// keep the dock visible
-	CAIRO_DOCK (pContainer)->bMenuVisible = TRUE;
-	
-	// connect signals
-	if (g_signal_handler_find (pMenu,
-		G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
-		0,
-		0,
-		NULL,
-		_on_menu_deactivated,
-		pContainer) == 0)  // on evite de connecter 2 fois ce signal, donc la fonction est appelable plusieurs fois sur un meme menu.
-	{
-		// when the menu is deactivated, hide the dock back if necessary.
-		g_signal_connect (G_OBJECT (pMenu),
-			"deactivate",
-			G_CALLBACK (_on_menu_deactivated),
-			pContainer);
-		// when the menu is destroyed, remove the 'destroyed' notification on the dock.
-		g_signal_connect (G_OBJECT (pMenu),
-			"destroy",
-			G_CALLBACK (_on_menu_destroyed),
-			pContainer);
-		// when the dock is destroyed, remove the 2 signals on the menu.
-		cairo_dock_register_notification_on_object (pContainer,
-			NOTIFICATION_DESTROY,
-			(CairoDockNotificationFunc) _on_dock_destroyed,
-			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.
-	}
-}
-
-
-CairoDock *cairo_dock_new_dock (void)
-{
-	//\__________________ On cree un dock.
-	CairoDock *pDock = g_new0 (CairoDock, 1);
-	pDock->container.iType = CAIRO_DOCK_TYPE_DOCK;
-	
-	pDock->iRefCount = 0;  // c'est un dock racine par defaut.
-	pDock->iAvoidingMouseIconType = -1;
-	pDock->fFlatDockWidth = - myIconsParam.iIconGap;
-	///pDock->container.iMouseX = -1; // utile ?
-	///pDock->container.iMouseY = -1;
-	pDock->fMagnitudeMax = 1.;
-	pDock->fPostHideOffset = 1.;
-	pDock->iInputState = CAIRO_DOCK_INPUT_AT_REST;  // le dock est cree au repos. La zone d'input sera mis en place lors du configure.
-	
-	pDock->container.iface.animation_loop = _cairo_dock_dock_animation_loop;
-	pDock->container.iface.setup_menu = _setup_menu;
-	
-	//\__________________ On cree la fenetre GTK.
-	GtkWidget *pWindow = cairo_dock_init_container (CAIRO_CONTAINER (pDock));
-	///cairo_dock_install_notifications_on_object (pDock, NB_NOTIFICATIONS_DOCKS);
-	gldi_object_set_manager (GLDI_OBJECT (pDock), GLDI_MANAGER (&myDocksMgr));
-	gtk_container_set_border_width (GTK_CONTAINER (pWindow), 0);
-	gtk_window_set_gravity (GTK_WINDOW (pWindow), GDK_GRAVITY_STATIC);
-	gtk_window_set_type_hint (GTK_WINDOW (pWindow), GDK_WINDOW_TYPE_HINT_DOCK);
-	gtk_window_set_title (GTK_WINDOW (pWindow), "cairo-dock");
-	
-	
-	cairo_dock_register_notification_on_object (pDock,
-		NOTIFICATION_RENDER,
-		(CairoDockNotificationFunc) cairo_dock_render_dock_notification,
-		CAIRO_DOCK_RUN_FIRST, NULL);
-	
-	//\__________________ On connecte les evenements a la fenetre.
-	gtk_widget_add_events (pWindow,
-		GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_SCROLL_MASK |
-		GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
-		GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK);
-	
-	g_signal_connect (G_OBJECT (pWindow),
-		#if (GTK_MAJOR_VERSION < 3)
-		"expose-event",
-		#else
-		"draw",
-		#endif
-		G_CALLBACK (cairo_dock_on_expose),
-		pDock);
-	g_signal_connect (G_OBJECT (pWindow),
-		"configure-event",
-		G_CALLBACK (cairo_dock_on_configure),
-		pDock);
-	g_signal_connect (G_OBJECT (pWindow),
-		"key-release-event",
-		G_CALLBACK (cairo_dock_on_key_release),
-		pDock);
-	g_signal_connect (G_OBJECT (pWindow),
-		"key-press-event",
-		G_CALLBACK (cairo_dock_on_key_release),
-		pDock);
-	g_signal_connect (G_OBJECT (pWindow),
-		"button-press-event",
-		G_CALLBACK (cairo_dock_on_button_press),
-		pDock);
-	g_signal_connect (G_OBJECT (pWindow),
-		"button-release-event",
-		G_CALLBACK (cairo_dock_on_button_press),
-		pDock);
-	g_signal_connect (G_OBJECT (pWindow),
-		"scroll-event",
-		G_CALLBACK (cairo_dock_on_scroll),
-		pDock);
-	g_signal_connect (G_OBJECT (pWindow),
-		"motion-notify-event",
-		G_CALLBACK (cairo_dock_on_motion_notify),
-		pDock);
-	g_signal_connect (G_OBJECT (pWindow),
-		"enter-notify-event",
-		G_CALLBACK (cairo_dock_on_enter_notify),
-		pDock);
-	g_signal_connect (G_OBJECT (pWindow),
-		"leave-notify-event",
-		G_CALLBACK (cairo_dock_on_leave_notify),
-		pDock);
-	gldi_container_enable_drop (CAIRO_CONTAINER (pDock),
-		G_CALLBACK (cairo_dock_on_drag_data_received),
-		pDock);
-	g_signal_connect (G_OBJECT (pWindow),
-		"drag-motion",
-		G_CALLBACK (cairo_dock_on_drag_motion),
-		pDock);
-	g_signal_connect (G_OBJECT (pWindow),
-		"drag-leave",
-		G_CALLBACK (cairo_dock_on_drag_leave),
-		pDock);
-	/*g_signal_connect (G_OBJECT (pWindow),
-		"drag-drop",
-		G_CALLBACK (cairo_dock_on_drag_drop),
-		pDock);*/
-
-	gtk_window_get_size (GTK_WINDOW (pWindow), &pDock->container.iWidth, &pDock->container.iHeight);  // ca n'est que la taille initiale allouee par GTK.
-	gtk_widget_show_all (pWindow);
-	#if (GTK_MAJOR_VERSION < 3)
-	gdk_window_set_back_pixmap (pWindow->window, NULL, FALSE);
-	#else
-	gdk_window_set_background_pattern (gldi_container_get_gdk_window (CAIRO_CONTAINER (pDock)), NULL);
-	#endif
-	return pDock;
-}
-
-void cairo_dock_free_dock (CairoDock *pDock)
-{
-	if (pDock->iSidUnhideDelayed != 0)
-		g_source_remove (pDock->iSidUnhideDelayed);
-	if (pDock->iSidHideBack != 0)
-		g_source_remove (pDock->iSidHideBack);
-	if (pDock->iSidMoveResize != 0)
-		g_source_remove (pDock->iSidMoveResize);
-	if (pDock->iSidLeaveDemand != 0)
-		g_source_remove (pDock->iSidLeaveDemand);
-	if (pDock->iSidUpdateWMIcons != 0)
-		g_source_remove (pDock->iSidUpdateWMIcons);
-	if (pDock->iSidLoadBg != 0)
-		g_source_remove (pDock->iSidLoadBg);
-	if (pDock->iSidDestroyEmptyDock != 0)
-		g_source_remove (pDock->iSidDestroyEmptyDock);
-	if (pDock->iSidTestMouseOutside != 0)
-		g_source_remove (pDock->iSidTestMouseOutside);
-	if (pDock->iSidUpdateDockSize != 0)
-		g_source_remove (pDock->iSidUpdateDockSize);
-	
-	GList *icons = pDock->icons;
-	pDock->icons = NULL;  // remove the icons first, to avoid any use of 'icons' in the 'destroy' callbacks.
-	g_list_foreach (icons, (GFunc) cairo_dock_free_icon, NULL);
-	g_list_free (icons);
-	
-	if (pDock->pShapeBitmap != NULL)
-		gldi_shape_destroy (pDock->pShapeBitmap);
-	
-	if (pDock->pHiddenShapeBitmap != NULL)
-		gldi_shape_destroy (pDock->pHiddenShapeBitmap);
-	
-	if (pDock->pActiveShapeBitmap != NULL)
-		gldi_shape_destroy (pDock->pActiveShapeBitmap);
-	
-	if (pDock->pRenderer != NULL && pDock->pRenderer->free_data != NULL)
-	{
-		pDock->pRenderer->free_data (pDock);
-	}
-	
-	g_free (pDock->cRendererName);
-	
-	g_free (pDock->cBgImagePath);
-	cairo_dock_unload_image_buffer (&pDock->backgroundBuffer);
-	
-	if (pDock->iFboId != 0)
-		glDeleteFramebuffersEXT (1, &pDock->iFboId);
-	if (pDock->iRedirectedTexture != 0)
-		_cairo_dock_delete_texture (pDock->iRedirectedTexture);
-	
-	cairo_dock_finish_container (CAIRO_CONTAINER (pDock));  // -> NOTIFICATION_DESTROY
-	
-	g_free (pDock);
-}
-
-void cairo_dock_make_sub_dock (CairoDock *pDock, CairoDock *pParentDock, const gchar *cRendererName)
-{
-	//\__________________ set sub-dock flag
-	pDock->iRefCount = 1;
-	gtk_window_set_title (GTK_WINDOW (pDock->container.pWidget), "cairo-dock-sub");
-	
-	//\__________________ set the orientation relatively to the parent dock
-	pDock->container.bIsHorizontal = pParentDock->container.bIsHorizontal;
-	pDock->container.bDirectionUp = pParentDock->container.bDirectionUp;
-	pDock->iScreenOffsetX = pParentDock->iScreenOffsetX;
-	pDock->iScreenOffsetY = pParentDock->iScreenOffsetY;
-	
-	//\__________________ set a renderer
-	cairo_dock_set_renderer (pDock, cRendererName);
-	
-	//\__________________ update the icons size and the ratio.
-	double fPrevRatio = pDock->container.fRatio;
-	pDock->container.fRatio = MIN (pDock->container.fRatio, myBackendsParam.fSubDockSizeRatio);
-	pDock->iIconSize = pParentDock->iIconSize;
-	
-	Icon *icon;
-	GList *ic;
-	pDock->fFlatDockWidth = - myIconsParam.iIconGap;
-	for (ic = pDock->icons; ic != NULL; ic = ic->next)
-	{
-		icon = ic->data;
-		icon->fWidth = icon->fHeight = icon->iImageWidth = icon->iImageHeight = 0;  // no request
-		cairo_dock_set_icon_size_in_dock (pDock, icon);
-		pDock->fFlatDockWidth += icon->fWidth + myIconsParam.iIconGap;
-	}
-	pDock->iMaxIconHeight *= pDock->container.fRatio / fPrevRatio;
-	
-	//\__________________ remove any input shape
-	if (pDock->pShapeBitmap != NULL)
-	{
-		gldi_shape_destroy (pDock->pShapeBitmap);
-		pDock->pShapeBitmap = NULL;
-		if (pDock->iInputState != CAIRO_DOCK_INPUT_ACTIVE)
-		{
-			cairo_dock_set_input_shape_active (pDock);
-			pDock->iInputState = CAIRO_DOCK_INPUT_ACTIVE;
-		}
-	}
-	
-	//\__________________ hide the dock
-	pDock->bAutoHide = FALSE;
-	gtk_widget_hide (pDock->container.pWidget);
-	
-	///cairo_dock_update_dock_size (pDock);
-}
-
-
-void cairo_dock_insert_icon_in_dock_full (Icon *icon, CairoDock *pDock, gboolean bAnimated, gboolean bInsertSeparator, GCompareFunc pCompareFunc)
-{
-	//g_print ("%s (%s)\n", __func__, icon->cName);
-	g_return_if_fail (icon != NULL);
-	if (g_list_find (pDock->icons, icon) != NULL)  // elle est deja dans ce dock.
-		return ;
-	if (icon->pContainer != NULL)
-	{
-		cd_warning ("This icon (%s) is already inside a container !", icon->cName);
-	}
-
-	//\______________ On regarde si on doit inserer un separateur.
-	gboolean bSeparatorNeeded = FALSE;
-	if (bInsertSeparator && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon))
-	{
-		Icon *pSameTypeIcon = cairo_dock_get_first_icon_of_group (pDock->icons, icon->iGroup);
-		if (pSameTypeIcon == NULL && pDock->icons != NULL)
-		{
-			bSeparatorNeeded = TRUE;
-			//g_print ("separateur necessaire\n");
-		}
-	}
-
-	//\______________ On insere l'icone a sa place dans la liste.
-	if (icon->fOrder == CAIRO_DOCK_LAST_ORDER)
-	{
-		Icon *pLastIcon = cairo_dock_get_last_icon_of_order (pDock->icons, icon->iGroup);
-		if (pLastIcon != NULL)
-			icon->fOrder = pLastIcon->fOrder + 1;
-		else
-			icon->fOrder = 1;
-	}
-	
-	if (pCompareFunc == NULL)
-		pCompareFunc = (GCompareFunc) cairo_dock_compare_icons_order;
-	pDock->icons = g_list_insert_sorted (pDock->icons,
-		icon,
-		pCompareFunc);
-	cairo_dock_set_icon_container (icon, pDock);
-	
-	//\______________ set the icon size, now that it's inside a container.
-	int wi = icon->iImageWidth, hi = icon->iImageHeight;
-	cairo_dock_set_icon_size_in_dock (pDock, icon);
-	
-	if (wi != icon->iImageWidth || hi != icon->iImageHeight)  // if size has changed, reload the buffers
-		cairo_dock_trigger_load_icon_buffers (icon);
-	
-	pDock->fFlatDockWidth += myIconsParam.iIconGap + icon->fWidth;
-	if (! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon))
-		pDock->iMaxIconHeight = MAX (pDock->iMaxIconHeight, icon->fHeight);
-
-	//\______________ On insere un separateur si necessaire.
-	if (bSeparatorNeeded)
-	{
-		// insert a separator after if needed
-		Icon *pNextIcon = cairo_dock_get_next_icon (pDock->icons, icon);
-		if (pNextIcon != NULL && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pNextIcon))
-		{
-			int iSeparatorGroup = cairo_dock_get_icon_order (icon) +
-				(cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pNextIcon) ? 0 : 1);  // for separators, group = order.
-			double fOrder = (cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pNextIcon) ? (icon->fOrder + pNextIcon->fOrder) / 2 : 0);
-			cairo_dock_insert_automatic_separator_in_dock (iSeparatorGroup, fOrder, pNextIcon->cParentDockName, pDock);
-		}
-		
-		// insert a separator before if needed
-		Icon *pPrevIcon = cairo_dock_get_previous_icon (pDock->icons, icon);
-		if (pPrevIcon != NULL && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pPrevIcon))
-		{
-			int iSeparatorGroup = cairo_dock_get_icon_order (icon) -
-				(cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pPrevIcon) ? 0 : 1);  // for separators, group = order.
-			double fOrder = (cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pPrevIcon) ? (icon->fOrder + pPrevIcon->fOrder) / 2 : 0);
-			cairo_dock_insert_automatic_separator_in_dock (iSeparatorGroup, fOrder, pPrevIcon->cParentDockName, pDock);
-		}
-	}
-	
-	//\______________ On effectue les actions demandees.
-	if (bAnimated)
-	{
-		if (cairo_dock_animation_will_be_visible (pDock))
-			icon->fInsertRemoveFactor = - 0.95;
-		else
-			icon->fInsertRemoveFactor = - 0.05;
-		cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
-	}
-	else
-		icon->fInsertRemoveFactor = 0.;
-	
-	cairo_dock_trigger_update_dock_size (pDock);
-	
-	if (pDock->iRefCount != 0 && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon))  // on prevoit le redessin de l'icone pointant sur le sous-dock.
-	{
-		cairo_dock_trigger_redraw_subdock_content (pDock);
-	}
-	
-	if (icon->pSubDock != NULL)
-		cairo_dock_synchronize_one_sub_dock_orientation (icon->pSubDock, pDock, TRUE);
-	
-	//\______________ Notify everybody.
-	cairo_dock_notify_on_object (pDock, NOTIFICATION_INSERT_ICON, icon, pDock);
-}
-
-
-static gboolean _destroy_empty_dock (CairoDock *pDock)
-{
-	const gchar *cDockName = cairo_dock_search_dock_name (pDock);  // safe meme si le dock n'existe plus.
-	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.
-	
-	if (pDock->bIconIsFlyingAway)
-		return TRUE;
-	pDock->iSidDestroyEmptyDock = 0;
-	if (pDock->icons == NULL && pDock->iRefCount == 0 && ! pDock->bIsMainDock)  // le dock est toujours a detruire.
-	{
-		cd_debug ("The dock '%s' is empty. No icon, no dock.", cDockName);
-		cairo_dock_destroy_dock (pDock, cDockName);
-	}
-	return FALSE;
-}
-gboolean cairo_dock_detach_icon_from_dock_full (Icon *icon, CairoDock *pDock, gboolean bCheckUnusedSeparator)
-{
-	if (pDock == NULL)
-		return FALSE;
-	if (icon->pContainer == NULL)
-	{
-		cd_warning ("This icon (%s) is already not inside a container !", icon->cName);  // not a big deal, just print that for debug.
-	}
-	
-	//\___________________ On trouve l'icone et ses 2 voisins.
-	GList *prev_ic = NULL, *ic, *next_ic;
-	Icon *pPrevIcon = NULL, *pNextIcon = NULL;
-	for (ic = pDock->icons; ic != NULL; ic = ic->next)
-	{
-		if (ic -> data == icon)
-		{
-			prev_ic = ic->prev;
-			next_ic = ic->next;
-			if (prev_ic)
-				pPrevIcon = prev_ic->data;
-			if (next_ic)
-				pNextIcon = next_ic->data;
-			break;
-		}
-	}
-	if (ic == NULL)  // elle est deja detachee.
-		return FALSE;
-	
-	cd_message ("%s (%s)", __func__, icon->cName);
-	g_free (icon->cParentDockName);
-	icon->cParentDockName = NULL;
-	cairo_dock_set_icon_container (icon, NULL);
-	
-	//\___________________ On stoppe ses animations.
-	cairo_dock_stop_icon_animation (icon);
-	
-	//\___________________ On desactive sa miniature.
-	if (icon->Xid != 0)
-	{
-		//cd_debug ("on desactive la miniature de %s (Xid : %lx)", icon->cName, icon->Xid);
-		cairo_dock_set_xicon_geometry (icon->Xid, 0, 0, 0, 0);
-	}
-	
-	//\___________________ On l'enleve de la liste.
-	pDock->icons = g_list_delete_link (pDock->icons, ic);
-	ic = NULL;
-	pDock->fFlatDockWidth -= icon->fWidth + myIconsParam.iIconGap;
-	
-	//\___________________ On enleve le separateur si c'est la derniere icone de son type.
-	if (bCheckUnusedSeparator && ! CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (icon))
-	{
-		if ((pPrevIcon == NULL || CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pPrevIcon)) && CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (pNextIcon))
-		{
-			pDock->icons = g_list_delete_link (pDock->icons, next_ic);
-			next_ic = NULL;
-			pDock->fFlatDockWidth -= pNextIcon->fWidth + myIconsParam.iIconGap;
-			cairo_dock_free_icon (pNextIcon);
-			pNextIcon = NULL;
-		}
-		if ((pNextIcon == NULL || CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pNextIcon)) && CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (pPrevIcon))
-		{
-			pDock->icons = g_list_delete_link (pDock->icons, prev_ic);
-			prev_ic = NULL;
-			pDock->fFlatDockWidth -= pPrevIcon->fWidth + myIconsParam.iIconGap;
-			cairo_dock_free_icon (pPrevIcon);
-			pPrevIcon = NULL;
-		}
-	}
-	
-	//\___________________ Cette icone realisait peut-etre le max des hauteurs, comme on l'enleve on recalcule ce max.
-	Icon *pOtherIcon;
-	if (icon->fHeight >= pDock->iMaxIconHeight)
-	{
-		pDock->iMaxIconHeight = 0;
-		for (ic = pDock->icons; ic != NULL; ic = ic->next)
-		{
-			pOtherIcon = ic->data;
-			if (! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (pOtherIcon))
-			{
-				pDock->iMaxIconHeight = MAX (pDock->iMaxIconHeight, pOtherIcon->fHeight);
-				if (pOtherIcon->fHeight == icon->fHeight)  // on sait qu'on n'ira pas plus haut.
-					break;
-			}
-		}
-	}
-
-	//\___________________ On la remet a la taille normale en vue d'une reinsertion quelque part.
-	icon->fWidth /= pDock->container.fRatio;
-	icon->fHeight /= pDock->container.fRatio;
-	
-	//\___________________ On prevoit le redessin de l'icone pointant sur le sous-dock.
-	if (pDock->iRefCount != 0 && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon))
-	{
-		cairo_dock_trigger_redraw_subdock_content (pDock);
-	}
-	
-	//\___________________ On prevoit la destruction du dock si c'est un dock principal qui devient vide.
-	if (pDock->iRefCount == 0 && pDock->icons == NULL && ! pDock->bIsMainDock)  // on supprime les docks principaux vides.
-	{
-		if (pDock->iSidDestroyEmptyDock == 0)
-			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).
-	}
-	else
-	{
-		cairo_dock_trigger_update_dock_size (pDock);
-	}
-	
-	//\___________________ Notify everybody.
-	icon->fInsertRemoveFactor = 0.;
-	cairo_dock_notify_on_object (pDock, NOTIFICATION_REMOVE_ICON, icon, pDock);
-	
-	return TRUE;
-}
-void cairo_dock_remove_icon_from_dock_full (CairoDock *pDock, Icon *icon, gboolean bCheckUnusedSeparator)
-{
-	g_return_if_fail (icon != NULL);
-	
-	//\___________________ On detache l'icone du dock.
-	if (pDock != NULL)
-		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
-	
-	//\___________________ On supprime l'icone du theme courant.
-	if (icon->iface.on_delete)
-	{
-		gboolean r = icon->iface.on_delete (icon);
-		if (r)
-			cairo_dock_mark_current_theme_as_modified (TRUE);
-	}
-}
-
-
-void cairo_dock_remove_automatic_separators (CairoDock *pDock)
-{
-	//g_print ("%s ()\n", __func__);
-	Icon *icon;
-	GList *ic = pDock->icons, *next_ic;
-	while (ic != NULL)
-	{
-		icon = ic->data;
-		next_ic = ic->next;  // si l'icone se fait enlever, on perdrait le fil.
-		if (CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (icon))
-		{
-			cairo_dock_remove_one_icon_from_dock (pDock, icon);
-			cairo_dock_free_icon (icon);
-		}
-		ic = next_ic;
-	}
-}
-
-void cairo_dock_insert_automatic_separators_in_dock (CairoDock *pDock)
-{
-	//g_print ("%s ()\n", __func__);
-	Icon *icon, *pNextIcon;
-	GList *ic;
-	for (ic = pDock->icons; ic != NULL; ic = ic->next)
-	{
-		icon = ic->data;
-		if (! CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (icon))
-		{
-			if (ic->next != NULL)
-			{
-				pNextIcon = ic->next->data;
-				if (! CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (pNextIcon) && icon->iGroup != pNextIcon->iGroup)
-				{
-					int iSeparatorGroup = cairo_dock_get_icon_order (icon) +
-						(cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pNextIcon) ? 0 : 1);  // for separators, group = order.
-					double fOrder = (cairo_dock_get_icon_order (icon) == cairo_dock_get_icon_order (pNextIcon) ? (icon->fOrder + pNextIcon->fOrder) / 2 : 0);
-					cairo_dock_insert_automatic_separator_in_dock (iSeparatorGroup, fOrder, icon->cParentDockName, pDock);
-				}
-			}
-		}
-	}
-}
-
-
-Icon *cairo_dock_add_new_launcher_by_uri_or_type (const gchar *cExternDesktopFileURI, CairoDockDesktopFileType iType, CairoDock *pReceivingDock, double fOrder)
-{
-	//\_________________ On ajoute un fichier desktop dans le repertoire des lanceurs du theme courant.
-	GError *erreur = NULL;
-	const gchar *cDockName = cairo_dock_search_dock_name (pReceivingDock);
-	if (fOrder == CAIRO_DOCK_LAST_ORDER && pReceivingDock != NULL)
-	{
-		Icon *pLastIcon = cairo_dock_get_last_launcher (pReceivingDock->icons);
-		if (pLastIcon != NULL)
-			fOrder = pLastIcon->fOrder + 1;
-		else
-			fOrder = 1;
-	}
-	gchar *cNewDesktopFileName;
-	if (cExternDesktopFileURI != NULL)
-		cNewDesktopFileName = cairo_dock_add_desktop_file_from_uri (cExternDesktopFileURI, cDockName, fOrder, &erreur);
-	else
-		cNewDesktopFileName = cairo_dock_add_desktop_file_from_type (iType, cDockName, fOrder, &erreur);
-	if (erreur != NULL)
-	{
-		cd_warning (erreur->message);
-		g_error_free (erreur);
-		return NULL;
-	}
-	
-	//\_________________ On verifie ici l'unicite du sous-dock.
-	if (iType == CAIRO_DOCK_DESKTOP_FILE_FOR_CONTAINER && cExternDesktopFileURI == NULL)
-	{
-		
-	}
-	
-	//\_________________ On charge ce nouveau lanceur.
-	Icon *pNewIcon = NULL;
-	if (cNewDesktopFileName != NULL)
-	{
-		cairo_dock_mark_current_theme_as_modified (TRUE);
-
-		pNewIcon = cairo_dock_create_icon_from_desktop_file (cNewDesktopFileName);
-		g_free (cNewDesktopFileName);
-
-		if (pNewIcon != NULL)
-		{
-			cairo_dock_insert_icon_in_dock (pNewIcon, pReceivingDock, CAIRO_DOCK_ANIMATE_ICON);
-			
-			if (pNewIcon->pSubDock != NULL)
-				cairo_dock_trigger_redraw_subdock_content (pNewIcon->pSubDock);
-		}
-	}
-	return pNewIcon;
-}
-
-
-void cairo_dock_remove_icons_from_dock (CairoDock *pDock, CairoDock *pReceivingDock, const gchar *cReceivingDockName)
-{
-	GList *pIconsList = pDock->icons;
-	pDock->icons = NULL;
-	Icon *icon;
-	GList *ic;
-	gchar *cDesktopFilePath;
-	for (ic = pIconsList; ic != NULL; ic = ic->next)
-	{
-		icon = ic->data;
-
-		if (icon->pSubDock != NULL)
-		{
-			cairo_dock_remove_icons_from_dock (icon->pSubDock, pReceivingDock, cReceivingDockName);
-		}
-
-		if (pReceivingDock == NULL || cReceivingDockName == NULL)  // alors on les jete.
-		{
-			if (icon->iface.on_delete)
-				icon->iface.on_delete (icon);  // efface le .desktop / ecrit les modules actifs.
-			
-			if (CAIRO_DOCK_IS_APPLET (icon))
-			{
-				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.
-			}
-			cairo_dock_free_icon (icon);  // de-instancie l'applet.
-		}
-		else  // on les re-attribue au dock receveur.
-		{
-			cairo_dock_update_icon_s_container_name (icon, cReceivingDockName);
-			
-			icon->fWidth /= pDock->container.fRatio;  // optimization: no need to detach the icon, we just steal all of them.
-			icon->fHeight /= pDock->container.fRatio;
-			
-			cd_debug (" on re-attribue %s au dock %s", icon->cName, icon->cParentDockName);
-			cairo_dock_insert_icon_in_dock (icon, pReceivingDock, CAIRO_DOCK_ANIMATE_ICON);
-			
-			if (CAIRO_DOCK_IS_APPLET (icon))
-			{
-				icon->pModuleInstance->pContainer = CAIRO_CONTAINER (pReceivingDock);  // astuce pour ne pas avoir a recharger le fichier de conf ^_^
-				icon->pModuleInstance->pDock = pReceivingDock;
-				cairo_dock_reload_module_instance (icon->pModuleInstance, FALSE);
-			}
-		}
-	}
-
-	g_list_free (pIconsList);
-}
-
-
-void cairo_dock_reload_buffers_in_dock (CairoDock *pDock, gboolean bRecursive, gboolean bUpdateIconSize)
-{
-	//g_print ("************%s (%d, %d)\n", __func__, pDock->bIsMainDock, bRecursive);
-	if (bUpdateIconSize && pDock->bGlobalIconSize)
-		pDock->iIconSize = myIconsParam.iIconWidth;
-	
-	// for each icon, reload its buffer (size may change).
-	Icon* icon;
-	GList* ic;
-	for (ic = pDock->icons; ic != NULL; ic = ic->next)
-	{
-		icon = ic->data;
-		
-		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.
-		{
-			cairo_dock_reload_module_instance (icon->pModuleInstance, FALSE);
-		}
-		else
-		{
-			if (bUpdateIconSize)
-			{
-				icon->fWidth = icon->fHeight = 0;  // no request
-				icon->iImageWidth = icon->iImageHeight = 0;
-				cairo_dock_set_icon_size_in_dock (pDock, icon);
-			}
-			cairo_dock_trigger_load_icon_buffers (icon);
-		}
-		
-		if (bRecursive && icon->pSubDock != NULL)  // we handle the sub-dock for applets too, so that they don't need to care.
-		{
-			///cairo_dock_synchronize_one_sub_dock_orientation (icon->pSubDock, pDock, FALSE);  /// should probably not be here.
-			if (bUpdateIconSize)
-				icon->pSubDock->iIconSize = pDock->iIconSize;
-			cairo_dock_reload_buffers_in_dock (icon->pSubDock, bRecursive, bUpdateIconSize);
-		}
-	}
-	
-	if (bUpdateIconSize)
-	{
-		cairo_dock_update_dock_size (pDock);
-		cairo_dock_calculate_dock_icons (pDock);
-
-		cairo_dock_move_resize_dock (pDock);
-		if (pDock->iVisibility == CAIRO_DOCK_VISI_RESERVE)  // la position/taille a change, il faut refaire la reservation.
-			cairo_dock_reserve_space_for_dock (pDock, TRUE);
-		gtk_widget_queue_draw (pDock->container.pWidget);
-	}
-}
-
-
-void cairo_dock_set_icon_size_in_dock (CairoDock *pDock, Icon *icon)
-{
-	if (pDock->pRenderer && pDock->pRenderer->set_icon_size)
-	{
-		pDock->pRenderer->set_icon_size (icon, pDock);
-	}
-	else
-	{
-		int wi, hi;
-		if (pDock->iIconSize != 0)
-		{
-			wi = hi = pDock->iIconSize;
-		}
-		else  // same size as main dock.
-		{
-			wi = myIconsParam.iIconWidth;
-			hi = myIconsParam.iIconHeight;
-		}
-		//g_print (" size: %d => %dx%d\n", pDock->iIconSize, wi, hi);
-		double fMaxScale = cairo_dock_get_max_scale (pDock);
-		
-		// set the visible size at rest.
-		if (CAIRO_DOCK_ICON_TYPE_IS_APPLET (icon))  // for applets, consider (fWidth,fHeight) as a requested size, if not 0.
-		{
-			//g_print ("%s (%s, %.1fx%.1f\n", __func__, icon->pModuleInstance->pModule->pVisitCard->cModuleName, icon->fWidth, icon->fHeight);
-			if (icon->iImageWidth != 0)
-			{
-				if (pDock->container.bIsHorizontal)
-					icon->fWidth = icon->iImageWidth / fMaxScale;
-				else
-					icon->fHeight = icon->iImageWidth / fMaxScale;
-			}
-			if (icon->iImageHeight != 0)
-			{
-				if (pDock->container.bIsHorizontal)
-					icon->fHeight = icon->iImageHeight / fMaxScale;
-				else
-					icon->fWidth = icon->iImageHeight / fMaxScale;
-			}
-			if (icon->fWidth == 0)
-				icon->fWidth = wi;
-			if (icon->fHeight == 0 || icon->fHeight > hi)
-				icon->fHeight = hi;
-		}
-		else if (CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon))  // separators have their own size.
-		{
-			icon->fWidth = myIconsParam.iSeparatorWidth;
-			icon->fHeight = MIN (myIconsParam.iSeparatorHeight, hi);
-		}
-		else  // any other icon use the global size
-		{
-			icon->fWidth = wi;
-			icon->fHeight = hi;
-		}
-		
-		// texture size can be deduced then.
-		if (pDock->container.bIsHorizontal
-		|| (CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon) && myIconsParam.bRevolveSeparator))
-		{
-			icon->iImageWidth = icon->fWidth * fMaxScale;
-			icon->iImageHeight = icon->fHeight * fMaxScale;
-		}
-		else
-		{
-			icon->iImageWidth = icon->fHeight * fMaxScale;
-			icon->iImageHeight = icon->fWidth * fMaxScale;
-		}
-	}
-	icon->fWidth *= pDock->container.fRatio;
-	icon->fHeight *= pDock->container.fRatio;
-}
-
-
-void cairo_dock_create_redirect_texture_for_dock (CairoDock *pDock)
-{
-	if (! g_openglConfig.bFboAvailable)
-		return ;
-	if (pDock->iRedirectedTexture == 0)
-	{
-		pDock->iRedirectedTexture = cairo_dock_create_texture_from_raw_data (NULL,
-			(pDock->container.bIsHorizontal ? pDock->container.iWidth : pDock->container.iHeight),
-			(pDock->container.bIsHorizontal ? pDock->container.iHeight : pDock->container.iWidth));
-	}
-	if (pDock->iFboId == 0)
-		glGenFramebuffersEXT(1, &pDock->iFboId);
-}

=== removed directory '.pc/02-bzr_fixed_compilation_error.patch'
=== removed directory '.pc/02-bzr_fixed_compilation_error.patch/src'
=== removed directory '.pc/02-bzr_fixed_compilation_error.patch/src/gldit'
=== removed file '.pc/02-bzr_fixed_compilation_error.patch/src/gldit/cairo-dock-keybinder.h'
--- .pc/02-bzr_fixed_compilation_error.patch/src/gldit/cairo-dock-keybinder.h	2012-04-25 01:29:46 +0000
+++ .pc/02-bzr_fixed_compilation_error.patch/src/gldit/cairo-dock-keybinder.h	1970-01-01 00:00:00 +0000
@@ -1,152 +0,0 @@
-/*
-* cairo-dock-keybinder.h
-* This file is a part of the Cairo-Dock project
-* Login : <ctaf42@localhost.localdomain>
-* Started on  Thu Jan 31 03:57:17 2008 Cedric GESTES
-* $Id$
-*
-* Author(s)
-*  - Cedric GESTES <ctaf42@xxxxxxxxx>
-*  - Havoc Pennington
-*  - Tim Janik
-*
-* Copyright : (C) 2008 Cedric GESTES
-* E-mail    : see the 'copyright' file.
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 3
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-* You should have received a copy of the GNU General Public License
-* along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*
-* imported from tomboy_key_binder.h
-*/
-
-#ifndef __CD_KEY_BINDER_H__
-#define __CD_KEY_BINDER_H__
-
-#include <glib/gtypes.h>
-#include "cairo-dock-struct.h"
-#include "cairo-dock-manager.h"
-
-G_BEGIN_DECLS
-
-/**
-*@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.
-* Shortkeys are of the form &lt;alt&gt;F1 or &lt;ctrl&gt;&lt;shift&gt;s.
-* 
-* You bind an action to a shortkey with \ref cd_keybinder_bind, and unbind it with \ref cd_keybinder_unbind.
-* To update a binding (on shortkey or description chenge, or just to re-grab it), use \ref cd_keybinder_rebind.
-*/
-
-
-/// Definition of a callback, called when a shortcut is pressed by the user.
-typedef void (* CDBindkeyHandler) (const gchar *keystring, gpointer user_data);
-
-struct _CairoKeyBinding {
-	gchar            *keystring;
-	CDBindkeyHandler  handler;
-	gpointer          user_data;
-	guint             keycode;
-	guint             modifiers;
-	gboolean          bSuccess;
-	gchar            *cDemander;
-	gchar            *cDescription;
-	gchar            *cIconFilePath;
-	gchar            *cConfFilePath;
-	gchar            *cGroupName;
-	gchar            *cKeyName;
-} ;
-
-
-typedef struct _CairoShortkeysManager CairoShortkeysManager;
-
-#ifndef _MANAGER_DEF_
-extern CairoShortkeysManager myShortkeysMgr;
-#endif
-
-// params
-
-// manager
-struct _CairoShortkeysManager {
-	GldiManager mgr;
-	gboolean (*bind) (const gchar *keystring, CDBindkeyHandler handler, gpointer user_data);
-	void (*unbind) (const gchar *keystring, CDBindkeyHandler handler);
-	gboolean (*trigger_shortkey) (const gchar *cKeyString);
-	} ;
-
-// signals
-typedef enum {
-	NOTIFICATION_SHORTKEY_ADDED = NB_NOTIFICATIONS_OBJECT,
-	NOTIFICATION_SHORTKEY_REMOVED,
-	NOTIFICATION_SHORTKEY_CHANGED,
-	NB_NOTIFICATIONS_SHORTKEYS
-	} CairoShortkeysNotifications;
-
-
-/** Bind a shortkey to an action. Unbind it when you don't want it anymore, or when 'user_data' is freed.
- * @param keystring a shortcut.
- * @param cDemander the actor making the demand
- * @param cDescription a short description of the action
- * @param cIconFilePath an icon that represents the demander
- * @param cConfFilePath conf file where the shortkey stored
- * @param cGroupName group name where it's stored in the conf file
- * @param cKeyName key name where it's stored in the conf file
- * @param handler function called when the shortkey is pressed by the user
- * @param user_data data passed to the callback
- * @return the key binding
-*/
-CairoKeyBinding *cd_keybinder_bind (const gchar *keystring,
-	const gchar *cDemander,
-	const gchar *cDescription,
-	const gchar *cIconFilePath,
-	const gchar *cConfFilePath,
-	const gchar *cGroupName,
-	const gchar *cKeyName,
-	CDBindkeyHandler handler,
-	gpointer user_data);
-
-/** Says if the shortkey of a key binding could be grabbed.
- * @param binding a key binding.
- * @return TRUE iif the shortkey has been successfuly grabbed by the key binding.
-*/
-#define cd_keybinder_could_grab(binding) ((binding)->bSuccess)
-
-/** Unbind a shortkey. The binding is destroyed.
- * @param binding a key binding.
-*/
-void cd_keybinder_unbind (CairoKeyBinding *binding);
-
-
-/** Rebind a shortkey to a new one. If the shortkey is the same, don't re-bind it.
- * @param binding a key binding.
- * @param .cNewKeyString the new shortkey
- * @param .cNewDescription the new description, or NULL to keep the current one.
- * @return TRUE on success
-*/
-gboolean cd_keybinder_rebind (CairoKeyBinding *binding,
-	const gchar *cNewKeyString,
-	const gchar *cNewDescription);
-
-
-void cd_keybinder_foreach (GFunc pCallback, gpointer data);
-
-/** Trigger the given shortkey. It will be as if the user effectively pressed the shortkey on its keyboard. It uses the 'XTest' X extension.
- * @param cKeyString a shortkey.
- * @return TRUE if success.
-*/
-gboolean cairo_dock_trigger_shortkey (const gchar *cKeyString);
-
-
-void gldi_register_shortkeys_manager (void);
-
-G_END_DECLS
-
-#endif /* __CD_KEY_BINDER_H__ */
-

=== removed file '.pc/applied-patches'
--- .pc/applied-patches	2012-04-25 01:29:46 +0000
+++ .pc/applied-patches	1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
-02-bzr_fixed_compilation_error.patch
-01-bzr_dock-s_menu.patch

=== modified file 'CMakeLists.txt'
--- CMakeLists.txt	2012-04-16 17:57:58 +0000
+++ CMakeLists.txt	2012-06-19 14:00:30 +0000
@@ -11,7 +11,7 @@
 ########### project ###############
 
 project ("cairo-dock")
-set (VERSION "3.0.0")
+set (VERSION "3.0.2")
 
 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 
 if (NOT ${CMAKE_BUILD_TYPE})
@@ -22,6 +22,11 @@
 add_definitions (-DCAIRO_DOCK_ICON="cairo-dock.svg")
 add_definitions (-DCAIRO_DOCK_LOGO="cairo-dock-logo.png")
 add_definitions (-DCAIRO_DOCK_DATA_DIR="cairo-dock")
+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.
+	add_definitions (-DCAIRO_DOCK_FORCE_ICON_IN_MENUS=1)
+else()
+	add_definitions (-DCAIRO_DOCK_FORCE_ICON_IN_MENUS=0)
+endif()
 add_custom_target (uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
 
 ############ sources tarball ############

=== added file 'debian/cairo-dock-data.links'
--- debian/cairo-dock-data.links	1970-01-01 00:00:00 +0000
+++ debian/cairo-dock-data.links	2012-06-19 14:00:30 +0000
@@ -0,0 +1,2 @@
+usr/share/man/man1/cairo-dock.1.gz usr/share/man/man1/cairo-dock-package-theme.1.gz
+usr/share/man/man1/cairo-dock.1.gz usr/share/man/man1/cairo-dock-session.1.gz

=== removed file 'debian/cairo-dock-data.lintian-overrides'
--- debian/cairo-dock-data.lintian-overrides	2011-10-11 10:53:26 +0000
+++ debian/cairo-dock-data.lintian-overrides	1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
-# Cairo-Dock uses custom scripts
-cairo-dock-data: binary-without-manpage

=== modified file 'debian/changelog'
--- debian/changelog	2012-04-25 01:29:46 +0000
+++ debian/changelog	2012-06-19 14:00:30 +0000
@@ -1,3 +1,46 @@
+cairo-dock (3.0.2-0ubuntu1) UNRELEASED; urgency=low
+
+  * New upstream bug-fix release. (LP: #1014801)
+  * Upstream ChangeLog (3.0.0 -> 3.0.1):
+   - Dialogs: 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
+  * Upstream ChangeLog (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
+  * debian/patches:
+   - Removed all patches (now in upstream)
+  * debian/cairo-dock-data:
+   - Removed a lintian warning by added symlinks (binary-without-manpage)
+
+ -- Matthieu Baerts (matttbe) <matttbe@xxxxxxxxx>  Mon, 18 Jun 2012 20:01:30 +0200
+
 cairo-dock (3.0.0.1-0ubuntu2) quantal; urgency=low
 
   * debian/patches/01-bzr_dock-s_menu.patch: don't hide the dock if it's raised

=== removed file 'debian/patches/01-bzr_dock-s_menu.patch'
--- debian/patches/01-bzr_dock-s_menu.patch	2012-04-25 01:29:46 +0000
+++ debian/patches/01-bzr_dock-s_menu.patch	1970-01-01 00:00:00 +0000
@@ -1,48 +0,0 @@
-## 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 
-## Origin/Author: Upstream (Fabrice Rey)
-## https://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-core/3.0.x/revision/1070
-
-Index: cairo-dock/src/gldit/cairo-dock-callbacks.c
-===================================================================
---- cairo-dock.orig/src/gldit/cairo-dock-callbacks.c	2012-04-16 18:03:45.645725000 +0200
-+++ cairo-dock/src/gldit/cairo-dock-callbacks.c	2012-04-24 02:34:27.416854701 +0200
-@@ -763,10 +763,10 @@
- 	{
- 		//g_print ("forced leave event: %d;%d\n", pDock->container.iMouseX, pDock->container.iMouseY);
- 	}
--	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).
-+	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).
- 	{
- 		//g_print ("not really outside (%d;%d ; %d/%d)\n", pDock->container.iMouseX, pDock->container.iMouseY, pDock->iMaxDockHeight, pDock->iMinDockHeight);
--		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.
-+		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.
- 		{
- 			//g_print ("start checking mouse\n");
- 			pDock->iSidTestMouseOutside = g_timeout_add (500, (GSourceFunc)_check_mouse_outside, pDock);
-@@ -1038,7 +1038,7 @@
- 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.
- {
- 	//g_print ("%s (%d, %d, %d)\n", __func__, pDock->bIsShrinkingDown, pDock->iMagnitudeIndex, pDock->container.bInside);
--	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.
-+	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.
- 	{
- 		pDock->iSidTestMouseOutside = 0;
- 		return FALSE;
-Index: cairo-dock/src/gldit/cairo-dock-dock-factory.c
-===================================================================
---- cairo-dock.orig/src/gldit/cairo-dock-dock-factory.c	2012-04-16 18:03:45.645725000 +0200
-+++ cairo-dock/src/gldit/cairo-dock-dock-factory.c	2012-04-24 02:34:27.416854701 +0200
-@@ -443,8 +443,11 @@
- {
- 	//g_print ("\n+++ %s ()\n\n", __func__);
- 	g_return_if_fail (CAIRO_DOCK_IS_DOCK (pDock));
--	pDock->bMenuVisible = FALSE;
--	cairo_dock_emit_leave_signal (CAIRO_CONTAINER (pDock));
-+	if (pDock->bMenuVisible)  // don't send the signal if the menu was already deactivated.
-+	{
-+		pDock->bMenuVisible = FALSE;
-+		cairo_dock_emit_leave_signal (CAIRO_CONTAINER (pDock));
-+	}
- }
- static void _on_menu_destroyed (GtkWidget *menu, CairoDock *pDock)
- {

=== removed file 'debian/patches/02-bzr_fixed_compilation_error.patch'
--- debian/patches/02-bzr_fixed_compilation_error.patch	2012-04-25 01:29:46 +0000
+++ debian/patches/02-bzr_fixed_compilation_error.patch	1970-01-01 00:00:00 +0000
@@ -1,16 +0,0 @@
-## Description: ixed a compilation error with GLib >= 2.33
-## Origin/Author: Upstream (Fabrice Rey)
-## https://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-core/cairo-dock/revision/1073
-
-Index: cairo-dock/src/gldit/cairo-dock-keybinder.h
-===================================================================
---- cairo-dock.orig/src/gldit/cairo-dock-keybinder.h	2012-06-04 18:22:56.544276402 +0200
-+++ cairo-dock/src/gldit/cairo-dock-keybinder.h	2012-06-04 18:23:13.528276165 +0200
-@@ -31,7 +31,6 @@
- #ifndef __CD_KEY_BINDER_H__
- #define __CD_KEY_BINDER_H__
- 
--#include <glib/gtypes.h>
- #include "cairo-dock-struct.h"
- #include "cairo-dock-manager.h"
- 

=== modified file 'debian/patches/series'
--- debian/patches/series	2012-04-25 01:29:46 +0000
+++ debian/patches/series	2012-06-19 14:00:30 +0000
@@ -1,2 +0,0 @@
-02-bzr_fixed_compilation_error.patch
-01-bzr_dock-s_menu.patch

=== modified file 'po/ar.po'
--- po/ar.po	2012-04-16 16:03:43 +0000
+++ po/ar.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:22+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:49+0000\n"
 "Last-Translator: Matthieu Baerts <matttbe@xxxxxxxxx>\n"
 "Language-Team: Arabic <ar@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:20+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:37+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: ar\n"
 

=== modified file 'po/be.po'
--- po/be.po	2012-04-16 16:03:43 +0000
+++ po/be.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-04-01 14:07+0000\n"
-"Last-Translator: Vitaly Danilovich <Unknown>\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:54+0000\n"
+"Last-Translator: Matthieu Baerts <matttbe@xxxxxxxxx>\n"
 "Language-Team: Belarusian <be@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:20+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: be\n"
 
@@ -420,6 +420,8 @@
 msgid "translator-credits"
 msgstr ""
 "Launchpad Contributions:\n"
+"  Fabounet https://launchpad.net/~fabounet03\n";
+"  Matthieu Baerts https://launchpad.net/~matttbe\n";
 "  Vitaly Danilovich https://launchpad.net/~danvyr";
 
 #: ../src/cairo-dock-menu.c:285

=== modified file 'po/bn.po'
--- po/bn.po	2012-04-16 16:03:43 +0000
+++ po/bn.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:28+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:51+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Bengali <bn@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:20+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: bn\n"
 

=== modified file 'po/ca.po'
--- po/ca.po	2012-04-16 16:03:43 +0000
+++ po/ca.po	2012-06-19 14:00:30 +0000
@@ -8,14 +8,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:42+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:52+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Catalan <ca@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: ca\n"
 

=== modified file 'po/cs.po'
--- po/cs.po	2012-04-16 16:03:43 +0000
+++ po/cs.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
 "PO-Revision-Date: 2012-03-21 03:01+0000\n"
 "Last-Translator: Michal Mlejnek <chaemil72@xxxxxxxxx>\n"
 "Language-Team: Czech <cs@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: cs\n"
 

=== modified file 'po/cy.po'
--- po/cy.po	2012-04-16 16:03:43 +0000
+++ po/cy.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 12:57+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:53+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Welsh <cy@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:23+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:40+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: cy\n"
 

=== modified file 'po/de.po'
--- po/de.po	2012-04-16 16:03:43 +0000
+++ po/de.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-04-10 11:01+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:49+0000\n"
 "Last-Translator: Daniel Winzen <d@xxxxxxxxxx>\n"
 "Language-Team: German <de@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: de\n"
 

=== modified file 'po/el.po'
--- po/el.po	2012-04-16 16:03:43 +0000
+++ po/el.po	2012-06-19 14:00:30 +0000
@@ -8,14 +8,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock_el\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:29+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:54+0000\n"
 "Last-Translator: Michael Kotsarinis <mk73628@xxxxxxxxx>\n"
 "Language-Team: Greek\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "X-Poedit-Country: France\n"
 "Language: \n"

=== modified file 'po/en_GB.po'
--- po/en_GB.po	2012-04-16 16:03:43 +0000
+++ po/en_GB.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:35+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:54+0000\n"
 "Last-Translator: Philippe Le Toquin <philippe@xxxxxxxx>\n"
 "Language-Team: English (United Kingdom) <en_GB@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:23+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:40+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: \n"
 

=== modified file 'po/eo.po'
--- po/eo.po	2012-04-16 16:03:43 +0000
+++ po/eo.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 12:51+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:53+0000\n"
 "Last-Translator: Matthieu Baerts <matttbe@xxxxxxxxx>\n"
 "Language-Team: Esperanto <eo@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: eo\n"
 

=== modified file 'po/es.po'
--- po/es.po	2012-04-16 16:03:43 +0000
+++ po/es.po	2012-06-19 14:00:30 +0000
@@ -2,15 +2,15 @@
 msgstr ""
 "Project-Id-Version: 1.6.2\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 12:53+0000\n"
-"Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-06-12 06:24+0000\n"
+"Last-Translator: Morgus <Unknown>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
-"X-Generator: Launchpad (build 15070)\n"
+"X-Launchpad-Export-Date: 2012-06-13 04:35+0000\n"
+"X-Generator: Launchpad (build 15389)\n"
 "Language: \n"
 "X-Poedit-Language: Spanish\n"
 
@@ -30,7 +30,7 @@
 
 #: ../src/cairo-dock-gui-commons.c:369
 msgid "Configure this applet"
-msgstr "Configurar esta mini-aplicación"
+msgstr "Configurar esta miniaplicación"
 
 #: ../src/cairo-dock-gui-commons.c:406 ../src/cairo-dock-gui-main.c:131
 msgid "Files"
@@ -187,7 +187,7 @@
 
 #: ../src/cairo-dock-gui-main.c:1541
 msgid "Applets can be displayed on your desktop as widgets."
-msgstr "Las mini-aplicaciones pueden situarse en el escritorio como objetos."
+msgstr "Las miniaplicaciones pueden situarse en el escritorio como objetos."
 
 #: ../src/cairo-dock-gui-main.c:1542 ../data/messages:89 ../data/messages:989
 msgid "Desklets"
@@ -313,7 +313,7 @@
 msgid ""
 "Click on an applet in order to have a preview and a description for it."
 msgstr ""
-"Haga clic sobre una mini-aplicación para tener una vista previa y una "
+"Pulse sobre una miniaplicación para ver una previsualización y una "
 "descripción de ella."
 
 #: ../src/cairo-dock-gui-simple.c:823
@@ -322,7 +322,7 @@
 
 #: ../src/cairo-dock-gui-simple.c:825 ../data/messages:485
 msgid "On click:"
-msgstr "Al hacer clic:"
+msgstr "Al pulsar:"
 
 #: ../src/cairo-dock-gui-simple.c:898
 msgid ""
@@ -374,7 +374,7 @@
 
 #: ../src/cairo-dock-menu.c:219 ../src/cairo-dock-menu.c:953
 msgid "Get more applets!"
-msgstr "¡Obtener más complementos!"
+msgstr "Obtener más miniaplicaciones"
 
 #: ../src/cairo-dock-menu.c:223 ../src/cairo-dock-menu.c:229
 msgid "Donate"
@@ -422,18 +422,42 @@
 msgid "translator-credits"
 msgstr ""
 "Launchpad Contributions:\n"
+"  Adolfo Jayme Barrientos https://launchpad.net/~fitoschido\n";
+"  Alain Jerrel Bustamante-López https://launchpad.net/~zanmato\n";
 "  Albert Milian https://launchpad.net/~mln-gmx\n";
+"  Andrés Casals Jahnsen https://launchpad.net/~mxwig23\n";
+"  Carlos Joel Delgado Pizarro https://launchpad.net/~carlosj2585\n";
 "  Carlos Rosales https://launchpad.net/~chartre\n";
+"  Daniel O. Mondaca S. https://launchpad.net/~dnielm\n";
+"  David Portella https://launchpad.net/~dobled\n";
 "  DiegoJ https://launchpad.net/~diegojromerolopez\n";
+"  FaPrO https://launchpad.net/~fabro-pro\n";
 "  Fabounet https://launchpad.net/~fabounet03\n";
+"  Florencia Mincucci https://launchpad.net/~flomincucci\n";
+"  Gonzalo Testa https://launchpad.net/~gonzalogtesta\n";
+"  Harold https://launchpad.net/~sancospi\n";
 "  Joaquín Padilla Rivero https://launchpad.net/~logseman\n";
+"  José A. Fuentes Santiago https://launchpad.net/~joanfusan\n";
+"  José Luis Figueroa https://launchpad.net/~jolfig\n";
+"  Juan Eduardo Riva https://launchpad.net/~juaneduardoriva\n";
+"  Juan Pablo Marzetti https://launchpad.net/~yonpols\n";
+"  Kaede https://launchpad.net/~caramelo--asesino\n";
 "  Martín V. https://launchpad.net/~martinvukovic\n";
 "  Miguel Valdiri Badillo https://launchpad.net/~catastro1\n";
 "  Monkey https://launchpad.net/~monkey-libre\n";
 "  Morgus https://launchpad.net/~morgus\n";
+"  Patricio Gonzalez https://launchpad.net/~pagondel\n";
+"  Ricardo A. Hermosilla Carrillo https://launchpad.net/~rahermosillac\n";
 "  Sergio Meneses https://launchpad.net/~sergiomeneses\n";
+"  Stefano Prenna https://launchpad.net/~stefanoprenna\n";
+"  benjamin https://launchpad.net/~jesuisbenjamin\n";
 "  david cg https://launchpad.net/~dcardelleg\n";
-"  orvalius https://launchpad.net/~orvalius";
+"  hoortiz https://launchpad.net/~hoortiz\n";
+"  hug0 https://launchpad.net/~hug0\n";
+"  orvalius https://launchpad.net/~orvalius\n";
+"  polkillas https://launchpad.net/~paulsanzcalvo\n";
+"  rubioo https://launchpad.net/~rubioo\n";
+"  sebikul https://launchpad.net/~sebikul";
 
 #: ../src/cairo-dock-menu.c:285
 msgid "Support"
@@ -487,9 +511,9 @@
 "Now move some launchers or applets into it by right-clicking on the icon -> "
 "move to another dock"
 msgstr ""
-"El nuevo lanzador ha sido creado.\n"
-"Ahora mueva algunos lanzadores o complementos dentro haciendo clic derecho "
-"en el ícono -> mover a otro lanzador"
+"Se ha creado el nuevo dock.\n"
+"Ahora, mueva algunos lanzadores o miniaplicaciones a él pulsando con el "
+"botón derecho sobre un icono ‣ Mover a otro dock"
 
 #: ../src/cairo-dock-menu.c:567
 msgid "Add"
@@ -542,9 +566,9 @@
 "You can customize it by right-clicking on it -> cairo-dock -> configure this "
 "dock."
 msgstr ""
-"El nuevo lanzador ha sido creado.\n"
-"Puede personalizarlo haciendo clic derecho en él -> cairo-dock -> configurar "
-"este lanzador"
+"Se ha creado el nuevo dock.\n"
+"Puede personalizarlo pulsando con el botón derecho sobre él ‣ Cairo-Dock ‣ "
+"Configurar este dock"
 
 #: ../src/cairo-dock-menu.c:754
 msgid ""
@@ -558,7 +582,7 @@
 #, c-format
 msgid "You're about to remove this applet (%s) from the dock. Are you sure?"
 msgstr ""
-"Está apunto de remover la mini-aplicación (%s) de la barra. ¿Está seguro?"
+"Está a punto de quitar esta miniaplicación (%s) del dock. ¿Está seguro?"
 
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) 2007 Cairo-Dock project
@@ -572,7 +596,7 @@
 
 #: ../src/cairo-dock-menu.c:858
 msgid "Configure behaviour, appearance, and applets."
-msgstr "Configurar el comportamiento, la apariencia y aplicaciones."
+msgstr "Configurar comportamiento, apariencia y miniaplicaciones."
 
 #: ../src/cairo-dock-menu.c:863
 msgid "Configure this dock"
@@ -620,8 +644,8 @@
 msgid ""
 "Third-party applets provide integration with many programs, like Pidgin"
 msgstr ""
-"Los complementos de terceros proveen integración con otros programas, como "
-"Pidgin"
+"Las miniaplicaciones de terceros proporcionan integración con muchos "
+"programas, como Pidgin"
 
 #: ../src/cairo-dock-menu.c:961 ../src/help/applet-init.c:28
 #: ../src/help/applet-notifications.c:257
@@ -688,7 +712,7 @@
 
 #: ../src/cairo-dock-menu.c:1065
 msgid "Applet's handbook"
-msgstr "Guía de la mini-aplicación"
+msgstr "Guía de la miniaplicación"
 
 #: ../src/cairo-dock-menu.c:1110
 msgid "Pick up an image"
@@ -1189,13 +1213,11 @@
 "Hope you will enjoy this soft !\n"
 "  (you can now click on this dialog to close it)"
 msgstr ""
-"Bienvenido a Cairo-Dock !\n"
-"Esta aplicación esta aquí para ayudarlo a comenzar usando el dock; solo e "
-"click sobre el.\n"
-"Si tiene alguna pregunta/solicitud/observación, por favor visítenos en "
-"http://glx-dock.org.\n";
-"Esperamos disfrute este software!\n"
-"  (ahora se puede hacer click en este cuadro de dialogo para cerrarlo)"
+"¡Bienvenido a Cairo-Dock!\n"
+"Esta miniaplicación le ayudará a usar el dock, solo pulse sobre ella.\n"
+"Si tiene preguntas/pedidos/sugerencias, visítenos en http://glx-dock.org.\n";
+"Esperamos que disfrute este software.\n"
+"  (pulse en este diálogo para cerrarlo)"
 
 #: ../src/help/applet-composite.c:160
 msgid "Don't ask me any more"
@@ -1244,13 +1266,12 @@
 "Middle-click to open the configuration window.\n"
 "Right-click to access some troubleshooting actions."
 msgstr ""
-"Esta aplicación se hace para ayudarlo.\n"
-"Haga click en el icono para que aparezca consejos útiles acerca de las "
-"posibilidades de El Cairo-Dock.\n"
-"Haga click con el botón central del ratón para abrir la ventana de "
-"configuración.\n"
-"Haga click con el botón derecho para acceder a algunas de las acciones de "
-"solución de problemas."
+"Esta miniaplicación tiene como objetivo ayudarle.\n"
+"Pulse en su icono para mostrar consejos útiles sobre las posibilidades de "
+"Cairo-Dock.\n"
+"Pulse con el botón central para abrir la ventana de configuración.\n"
+"Pulse con el botón derecho para acceder a algunas acciones de solución de "
+"problemas."
 
 #: ../src/help/applet-notifications.c:247
 msgid "Open global settings"
@@ -1329,11 +1350,11 @@
 "Some applets let you bind a shortkey to an action, and decide which action "
 "sould be on middle-click."
 msgstr ""
-"La mayoría de los iconos del dock realizan varias acciones : la acción "
-"primaria con el botón izquierdo del ratón, una acción secundaria con el "
-"botón central y acciones adicionales con el botón derecho (en el menú).\n"
-"Algunos complementos permiten vincular una tecla de acceso rápido a una "
-"acción y decidir qué acción se realiza con el click central."
+"La mayoría de iconos en el dock tienen varias acciones: la acción primaria "
+"se ejecuta al pulsar, la acción secundaria al pulsar con el botón central, y "
+"acciones adicionales al pulsar con el botón derecho.\n"
+"Algunas miniaplicaciones le permiten vincular una tecla de acceso rápido a "
+"una acción y así decidir qué acción realizar al pulsar con el botón central."
 
 #: ../data/messages:7
 msgid "Adding features"
@@ -1349,16 +1370,16 @@
 "the \"More applets\" button (which will lead you to our applets web page) "
 "and then just drag-and-drop the link of an applet into your dock."
 msgstr ""
-"Cairo-Dock tiene muchos complementos. Los complementos son pequeñas "
-"aplicaciones dentro del dock, por ejemplo un reloj o un botón de finalizar "
-"sesión.\n"
-"Para habilitar nuevos complementos, ir a preferencias (click derecho -> "
-"Cairo-Dock -> configurar), ir a \"Componentes adicionales\", y marcar el "
-"complemento que se desea.\n"
-"Más complementos se pueden instalar fácilmente: en la ventana de "
-"configuración, click en el botón de \"Obtener más complementos\" (que nos "
-"redireccionará a nuestra página web de complementos) y luego simplemente "
-"arrastrar el enlace del complemento deseado al dock."
+"Cairo-Dock tiene muchas miniaplicaciones. Las miniaplicaciones son pequeños "
+"complementos que residen en el dock, por ejemplo un reloj o un botón para "
+"cerrar sesión.\n"
+"Para activar miniaplicaciones nuevas, abra la configuración (pulsación "
+"derecha ‣ Cairo-Dock ‣ Configurar), vaya a «Añadidos», y active la "
+"miniaplicación que desee.\n"
+"Puede instalar más miniaplicaciones fácilmente: en la ventana de "
+"configuración, pulse en «Más miniaplicaciones» (que le llevará a nuestro "
+"sitio web de miniaplicaciones) y luego arrastre el enlace de una "
+"miniaplicación y suéltelo en su dock."
 
 #: ../data/messages:13
 msgid "Adding a launcher"
@@ -1374,8 +1395,8 @@
 "Se puede añadir un lanzador arrastrándolo desde el menú de Aplicaciones y "
 "soltándolo dentro del dock. Una flecha animada aparecerá cuando se pueda "
 "soltar.\n"
-"Alternativamente, si una aplicación ya está abierta, se puede hacer click "
-"derecho en su icono y seleccionar \"Crear un lanzador\"."
+"Alternativamente, si una aplicación ya está abierta, puede pulsar su icono "
+"con el botón derecho y seleccionar «Crear un lanzador»."
 
 #: ../data/messages:17
 msgid "Removing a launcher"
@@ -1441,6 +1462,17 @@
 "of them to be used instead of the default icon theme, in the global config "
 "window."
 msgstr ""
+"Para un lanzador o miniaplicación:\n"
+"Abra la configuración de un icono y establezca la ruta a una imagen.\n"
+"- Para un icono de aplicación:\n"
+"Pulsación derecha sobre el icono ‣ «Otras acciones» ‣ «Establecer un icono "
+"personalizado», y elija una imagen. Para quitar la imagen personalizada, "
+"pulsación derecha sobre el icono ‣ «Otras acciones» ‣ «Quitar el icono "
+"personalizado».\n"
+"\n"
+"Si ha instalado temas de iconos en su equipo, también puede seleccionar uno "
+"de ellos para su uso en lugar del tema predeterminado, en la ventana de "
+"configuración global."
 
 #: ../data/messages:33
 msgid "Resizing icons"
@@ -1456,13 +1488,13 @@
 "Also, you can define the size of each applet independently in their own "
 "settings."
 msgstr ""
-"Se pueden hacer los iconos o el efecto de zoom mayor o menor. Aprir las "
-"opciones (click derecho -> Cairo-Dock -> configuración), e ir a Apariencia "
-"(o Iconos en modo avanzado).\n"
-"Notar que si hay demasiados iconos en el dock, serán emequeñecidos para "
-"caber en la pantalla.\n"
-"También se puede definir el tamaño de cada complemento independientemente en "
-"sus opciones."
+"Puede cambiar el tamaño de los iconos y el efecto de ampliación. Abra la "
+"configuración (pulsación derecha ‣ Cairo-Dock ‣ Configurar), y vaya a "
+"Apariencia (o Iconos en el modo avanzado).\n"
+"Note que si hay demasiados iconos en el dock, éstos se reducirán para caber "
+"en la pantalla.\n"
+"También puede definir el tamaño individual de cada miniaplicación en sus "
+"configuraciones."
 
 #: ../data/messages:37
 msgid "Separating icons"
@@ -1515,8 +1547,8 @@
 msgid ""
 "You can close a window by middle-clicking on its icon (or from the menu)."
 msgstr ""
-"Puedes cerrar una ventana haciendo click medio sobre el icono (o desde el "
-"menú)"
+"Puede cerrar una ventana haciendo una pulsación central sobre su icono (o "
+"desde el menú)."
 
 #: ../data/messages:51
 msgid "Minimizing / restauring a window"
@@ -1636,7 +1668,7 @@
 
 #: ../data/messages:91
 msgid "Placing applets on your desktop"
-msgstr "Colocando complementos en tu escritorio"
+msgstr "Colocar miniaplicaciones en su escritorio"
 
 #: ../data/messages:93
 msgid ""
@@ -1644,10 +1676,13 @@
 "wherever on your desktop.\n"
 "To detach an applet from the dock, simply drag and drop it outside the dock."
 msgstr ""
+"Las miniaplicaciones pueden posicionarse en «desklets» que son ventanas "
+"pequeñas que pueden ubicarse en cualquier lugar de su escritorio.\n"
+"Para separar una miniaplicación del dock, simplemente arrástrela fuera de él."
 
 #: ../data/messages:95
 msgid "Moving desklets"
-msgstr ""
+msgstr "Moviendo desklets"
 
 #: ../data/messages:97
 msgid ""
@@ -1683,6 +1718,9 @@
 "applet, go to Desklet, and select the decoration you want (you can provide "
 "your own one)."
 msgstr ""
+"Los «desklets» pueden tener decoraciones. Para cambiar eso, abra la "
+"configuración de la miniaplicación, vaya a Desklet, y seleccione la "
+"decoración que desee (puede proporcionar la suya propia)."
 
 #: ../data/messages:107
 msgid "Useful Features"
@@ -1701,6 +1739,12 @@
 "When a task has been or is going to be scheduled, the applet will warn you "
 "(15mn before the event, and also 1 day before in the case of an anniversary)."
 msgstr ""
+"Active la miniaplicación Reloj.\n"
+"Al pulsar sobre él se abrirá un calendario.\n"
+"Al pulsar dos veces sobre él se abrirá un editor de tareas. Allí puede "
+"añadir o quitar tareas.\n"
+"Cuando una tarea ha sido o será programada, la miniaplicación le avisará "
+"(15min antes del evento, o un día antes en caso de un aniversario)."
 
 #: ../data/messages:113
 msgid "Having a list of all windows"
@@ -1736,6 +1780,9 @@
 "Activate the Show-Desktop applet.\n"
 "Right-click on it -> \"change resolution\" -> select the one you want."
 msgstr ""
+"Active la miniaplicación Mostrar escritorio.\n"
+"Pulse con el botón derecho en él ‣ «Cambiar resolución» ‣ seleccione la que "
+"desee.t"
 
 #: ../data/messages:125
 msgid "Locking your session"
@@ -2083,15 +2130,16 @@
 #: ../data/messages:229
 msgid "The «netspeed» applet displays 0 even when I'm downloading something"
 msgstr ""
-"El applet «Redrapidez» expone 0 incluso cuando estoy trasvasando algo."
+"La miniaplicación «Velocidad de red» muestra 0 aun cuando estoy descargando "
+"algo"
 
 #: ../data/messages:231
 msgid ""
 "Tip: you can run several instances of this applet if you wish to monitor "
 "several interfaces."
 msgstr ""
-"Pista: se puede iniciar este aplique varias veces si se desea controlar "
-"varias interfaces."
+"Consejo: puede ejecutar varias instancias de esta miniaplicación si quiere "
+"monitorear varias interfaces."
 
 #: ../data/messages:233
 msgid ""
@@ -2169,7 +2217,7 @@
 msgid ""
 "If you wish to develop an applet, a complete documentation is available here."
 msgstr ""
-"Si usted desea desarrollar un applet, una documentación completa está "
+"Si quiere desarrollar una miniaplicación, hay una completa documentación "
 "disponible aquí."
 
 #: ../data/messages:255
@@ -2182,9 +2230,10 @@
 "or to interact with the dock in any kind of way, a full DBus API is "
 "described here."
 msgstr ""
-"Si quieres crear un appelt con Python, Perl o cualquier otro lenguaje,\n"
-"o si quieres interactura con el dock por cualquira manera, un API DBus "
-"complete esta describido ahí."
+"Si quiere desarrollar una miniaplicación con Python, Perl o cualquier otro "
+"lenguaje,\n"
+"o quiere interactuar con el dock de otra manera, aquí está descrita una API "
+"completa de DBus."
 
 #: ../data/messages:259
 msgid "DBus API"
@@ -2214,7 +2263,7 @@
 
 #: ../data/messages:273
 msgid "More applets available online!"
-msgstr ""
+msgstr "Más miniaplicaiones disponibles en línea"
 
 #: ../data/messages:275
 msgid "Cairo-Dock-Plug-ins-Extras"
@@ -2316,15 +2365,15 @@
 
 #: ../data/messages:315
 msgid "Set to 0 to use the default applet size"
-msgstr "Establezca a 0 para usar el tamaño de aplique predeterminado"
+msgstr "Configure a 0 para usar el tamaño predeterminado de miniaplicación"
 
 #: ../data/messages:317
 msgid "Desired icon size for this applet"
-msgstr "Tamaño de icono deseado para este aplique"
+msgstr "Tamaño de icono deseado para esta miniaplicación"
 
 #: ../data/messages:319
 msgid "Applet's Handbook"
-msgstr "Manual del aplique"
+msgstr "Manual de la miniaplicación"
 
 #: ../data/messages:321
 msgid "Desklet"
@@ -2722,7 +2771,7 @@
 
 #: ../data/messages:523
 msgid "Add or remove any applet"
-msgstr "Agrega o remueve cualquier applet"
+msgstr "Añadir o quitar cualquier miniaplicación"
 
 #: ../data/messages:525
 msgid ""
@@ -2730,11 +2779,11 @@
 "Click on the left check-box to (de)activate an applet.\n"
 "Once an applet is active, you can configure it by right clicking on its icon."
 msgstr ""
-"Seleccione una línea para obtener una descripción y una vista previa de la "
-"mini-aplicación.\n"
-"Haga click en la casilla izquierda para (des)activar una miniaplicación.\n"
-"Una vez que la mini-aplicación está activa, puede configurarla haciendo "
-"click derecho en su icono"
+"Seleccione una línea para obtener una previsualización y descripción de la "
+"miniaplicación.\n"
+"Pulse en la casilla a la izquierda para (des)activar una miniaplicación.\n"
+"Una vez que la miniaplicación esté activa, puede configurarla haciendo una "
+"pulsación derecha sobre su icono."
 
 #: ../data/messages:527
 msgid ""
@@ -3346,6 +3395,8 @@
 #: ../data/messages:909
 msgid "Several applets can be visible even when the dock is hidden"
 msgstr ""
+"Algunas miniaplicaciones pueden permanecer visibles incluso cuando el dock "
+"está oculto"
 
 #: ../data/messages:911
 msgid "Default background color when the dock is hidden"

=== modified file 'po/et.po'
--- po/et.po	2012-04-16 16:03:43 +0000
+++ po/et.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:42+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:48+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Estonian <et@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: et\n"
 

=== modified file 'po/eu.po'
--- po/eu.po	2012-04-16 16:03:43 +0000
+++ po/eu.po	2012-06-19 14:00:30 +0000
@@ -8,14 +8,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
 "PO-Revision-Date: 2012-03-21 03:02+0000\n"
 "Last-Translator: Mendi <arrietaarambarri@xxxxxxxxxxx>\n"
 "Language-Team: librezale.org\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:20+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: eu\n"
 

=== modified file 'po/fi.po'
--- po/fi.po	2012-04-16 16:03:43 +0000
+++ po/fi.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:37+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:54+0000\n"
 "Last-Translator: Rami Selin <rami.selin@xxxxxxxxx>\n"
 "Language-Team: Finnish <fi@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: fi\n"
 

=== modified file 'po/fo.po'
--- po/fo.po	2012-04-16 16:03:43 +0000
+++ po/fo.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
 "PO-Revision-Date: 2012-03-21 02:58+0000\n"
 "Last-Translator: Matthieu Baerts <matttbe@xxxxxxxxx>\n"
 "Language-Team: Faroese <fo@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: fo\n"
 

=== modified file 'po/fr.po'
--- po/fr.po	2012-04-16 16:03:43 +0000
+++ po/fr.po	2012-06-19 14:00:30 +0000
@@ -7,15 +7,15 @@
 msgstr ""
 "Project-Id-Version: 2.1.0\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-04-01 12:59+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-05-08 02:24+0000\n"
 "Last-Translator: Matthieu Baerts <matttbe@xxxxxxxxx>\n"
 "Language-Team: Cairo-Dock <LL@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
-"X-Generator: Launchpad (build 15070)\n"
+"X-Launchpad-Export-Date: 2012-05-09 04:40+0000\n"
+"X-Generator: Launchpad (build 15213)\n"
 "X-Poedit-Country: France\n"
 "Language: \n"
 "X-Poedit-Language: French\n"
@@ -437,6 +437,7 @@
 "  Lentdormi https://launchpad.net/~dahr974\n";
 "  Matthieu Baerts https://launchpad.net/~matttbe\n";
 "  Nicolas Delvaux https://launchpad.net/~malizor\n";
+"  Pierre Slamich https://launchpad.net/~pierre-slamich\n";
 "  SQP https://launchpad.net/~sqp\n";
 "  Thibault Févry https://launchpad.net/~thibaultfevry\n";
 "  bouchard renaud https://launchpad.net/~renaud-bouchard\n";
@@ -3555,12 +3556,12 @@
 
 #: ../data/messages:907
 msgid "Background when hidden"
-msgstr "Arrière plan lorsque que c'est caché"
+msgstr "Arrière plan du dock caché"
 
 #: ../data/messages:909
 msgid "Several applets can be visible even when the dock is hidden"
 msgstr ""
-"Plusieurs applets peuvent être visible même lorsque le dock est caché."
+"Plusieurs applets peuvent être visibles même lorsque le dock est caché."
 
 #: ../data/messages:911
 msgid "Default background color when the dock is hidden"

=== modified file 'po/gl.po'
--- po/gl.po	2012-04-16 16:03:43 +0000
+++ po/gl.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:17+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:49+0000\n"
 "Last-Translator: Miguel Anxo Bouzada <mbouzada@xxxxxxxxx>\n"
 "Language-Team: Galician <gl@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:38+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: gl\n"
 

=== modified file 'po/hu.po'
--- po/hu.po	2012-04-16 16:03:43 +0000
+++ po/hu.po	2012-06-19 14:00:30 +0000
@@ -7,15 +7,15 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:17+0000\n"
-"Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-22 13:19+0000\n"
+"Last-Translator: Péter Trombitás <trombipeti@xxxxxxxxx>\n"
 "Language-Team: Hungarian <hu@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
-"X-Generator: Launchpad (build 15070)\n"
+"X-Launchpad-Export-Date: 2012-04-23 04:42+0000\n"
+"X-Generator: Launchpad (build 15135)\n"
 "Language: hu\n"
 
 #: ../src/cairo-dock-gui-commons.c:221
@@ -70,15 +70,15 @@
 
 #: ../src/cairo-dock-gui-commons.c:575
 msgid "Press the shortkey"
-msgstr ""
+msgstr "Nyomja meg a gyorsgombot"
 
 #: ../src/cairo-dock-gui-commons.c:594
 msgid "Change the shortkey"
-msgstr ""
+msgstr "Gyorsgomb megváltoztatása"
 
 #: ../src/cairo-dock-gui-commons.c:681
 msgid "Origin"
-msgstr ""
+msgstr "Forrás"
 
 #: ../src/cairo-dock-gui-commons.c:686
 msgid "Action"
@@ -86,7 +86,7 @@
 
 #: ../src/cairo-dock-gui-commons.c:690
 msgid "Shortkey"
-msgstr ""
+msgstr "Gyorsgomb"
 
 #: ../src/cairo-dock-gui-items.c:242
 msgid ""
@@ -154,7 +154,7 @@
 
 #: ../src/cairo-dock-gui-main.c:1502 ../data/messages:515 ../data/messages:767
 msgid "Shortkeys"
-msgstr ""
+msgstr "Gyorsgombok"
 
 #: ../src/cairo-dock-gui-main.c:1508
 msgid "All of the parameters you will never want to tweak."
@@ -441,6 +441,8 @@
 "Thanks to all people that help us to improve the Cairo-Dock project.\n"
 "Thanks to all current, former and future contributors."
 msgstr ""
+"Köszönet mindenkinek, aki segíti a Cairo-Dock projekt fejlődését.\n"
+"Köszönet minden jelenlegi, volt és jövendőbeli közreműködőnek."
 
 #: ../src/cairo-dock-menu.c:317
 msgid "How to help us?"
@@ -448,7 +450,7 @@
 
 #: ../src/cairo-dock-menu.c:318
 msgid "Don't hesitate to join the project, we need you ;)"
-msgstr ""
+msgstr "Ne habozzon, csatlakozzon most a projekthez, szükségünk van Önre!"
 
 #: ../src/cairo-dock-menu.c:319
 msgid "Former contributors"
@@ -460,7 +462,7 @@
 
 #: ../src/cairo-dock-menu.c:321
 msgid "Users of our forum"
-msgstr ""
+msgstr "A fórum felhasználói"
 
 #: ../src/cairo-dock-menu.c:322
 msgid "Artwork"
@@ -589,7 +591,7 @@
 
 #: ../src/cairo-dock-menu.c:898
 msgid "Lock icons position"
-msgstr ""
+msgstr "Ikonok helyzetének rögzítése"
 
 #: ../src/cairo-dock-menu.c:902
 msgid "This will (un)lock the position of the icons."

=== modified file 'po/id.po'
--- po/id.po	2012-04-16 16:03:43 +0000
+++ po/id.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:36+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:54+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Indonesian <id@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:39+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: id\n"
 

=== modified file 'po/it.po'
--- po/it.po	2012-04-16 16:03:43 +0000
+++ po/it.po	2012-06-19 14:00:30 +0000
@@ -7,15 +7,15 @@
 msgstr ""
 "Project-Id-Version: 1.4.5\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:48+0000\n"
-"Last-Translator: Mattia Tavernini <maathias@xxxxxxxxxxxx>\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-06-03 11:35+0000\n"
+"Last-Translator: Wonderfulheart <Unknown>\n"
 "Language-Team: Italian <kde-i18n-it@xxxxxxxxxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
-"X-Generator: Launchpad (build 15070)\n"
+"X-Launchpad-Export-Date: 2012-06-04 04:35+0000\n"
+"X-Generator: Launchpad (build 15353)\n"
 "Language: it\n"
 
 #: ../src/cairo-dock-gui-commons.c:221
@@ -71,23 +71,23 @@
 
 #: ../src/cairo-dock-gui-commons.c:575
 msgid "Press the shortkey"
-msgstr ""
+msgstr "Premere il tasto scorciatoia"
 
 #: ../src/cairo-dock-gui-commons.c:594
 msgid "Change the shortkey"
-msgstr ""
+msgstr "Cambia il tasto scorciatoia"
 
 #: ../src/cairo-dock-gui-commons.c:681
 msgid "Origin"
-msgstr ""
+msgstr "Origine"
 
 #: ../src/cairo-dock-gui-commons.c:686
 msgid "Action"
-msgstr ""
+msgstr "Azione"
 
 #: ../src/cairo-dock-gui-commons.c:690
 msgid "Shortkey"
-msgstr ""
+msgstr "Tasto scorciatoia"
 
 #: ../src/cairo-dock-gui-items.c:242
 msgid ""
@@ -102,7 +102,7 @@
 
 #: ../src/cairo-dock-gui-items.c:878
 msgid "Remove this item"
-msgstr ""
+msgstr "Rimuovere questa voce"
 
 #: ../src/cairo-dock-gui-main.c:129 ../data/messages:665
 msgid "Behaviour"
@@ -153,11 +153,11 @@
 
 #: ../src/cairo-dock-gui-main.c:1501
 msgid "Define all the keyboard shortcuts currently available."
-msgstr ""
+msgstr "Rileva tutte le scorciatoie da tastiera attualmente disponibili."
 
 #: ../src/cairo-dock-gui-main.c:1502 ../data/messages:515 ../data/messages:767
 msgid "Shortkeys"
-msgstr ""
+msgstr "Tasti scorciatoia"
 
 #: ../src/cairo-dock-gui-main.c:1508
 msgid "All of the parameters you will never want to tweak."
@@ -315,7 +315,7 @@
 #: ../src/cairo-dock-gui-simple.c:797
 msgid ""
 "Click on an applet in order to have a preview and a description for it."
-msgstr "Clicca su di un'applet per averne un'anteprima e una sua descrizione"
+msgstr "Clicca su un'applet per avere un'anteprima e una sua descrizione."
 
 #: ../src/cairo-dock-gui-simple.c:823
 msgid "On mouse hover:"
@@ -348,8 +348,8 @@
 "powerful tool to customise your current theme."
 msgstr ""
 "La Modalità avanzata dà la possibilità di configurare ogni singolo parametro "
-"della dock. E' uno strumento potente per customizzare il tema attualmente in "
-"uso."
+"della dock. E' uno strumento potente per personalizzare il tema attualmente "
+"in uso."
 
 #: ../src/cairo-dock-gui-themes.c:149
 msgid "Importing theme ..."
@@ -387,24 +387,24 @@
 msgid ""
 "Support the people who spend countless hours to bring you the best dock ever."
 msgstr ""
-"Supporta le persone che spendono gratuitamente il loro tempo per consegnarti "
-"la migliore dock in assoluto."
+"Sostieni le persone che impiegano gratuitamente il loro tempo per "
+"consegnarti la migliore dock in assoluto."
 
 #: ../src/cairo-dock-menu.c:260
 msgid "Here is a list of the current developers and contributors"
-msgstr ""
+msgstr "Ecco una lista degli attuali sviluppatori e collaboratori"
 
 #: ../src/cairo-dock-menu.c:261
 msgid "Developers"
-msgstr ""
+msgstr "Sviluppatori"
 
 #: ../src/cairo-dock-menu.c:262
 msgid "Main developer and project leader"
-msgstr ""
+msgstr "Sviluppatore principale e Leader del Progetto"
 
 #: ../src/cairo-dock-menu.c:263
 msgid "Contributors / Hackers"
-msgstr ""
+msgstr "Collaboratori / Esperti"
 
 #: ../src/cairo-dock-menu.c:265
 msgid "Development"
@@ -412,23 +412,33 @@
 
 #: ../src/cairo-dock-menu.c:280
 msgid "Website"
-msgstr ""
+msgstr "Sito Web"
 
 #: ../src/cairo-dock-menu.c:281
 msgid "Beta-testing / Suggestions / Forum animation"
-msgstr ""
+msgstr "Beta-testing / Suggerimenti / Animazione Forum"
 
 #: ../src/cairo-dock-menu.c:282
 msgid "Translators for this language"
-msgstr ""
+msgstr "Traduttori nella lingua italiana"
 
 #: ../src/cairo-dock-menu.c:283
 msgid "translator-credits"
 msgstr ""
 "Launchpad Contributions:\n"
 "  Andrea Amoroso https://launchpad.net/~heiko81\n";
+"  Andrea Calabrò https://launchpad.net/~mastropino\n";
+"  Giampaolo Bozzali https://launchpad.net/~g.bozzali\n";
+"  Loscuby https://launchpad.net/~scuby84\n";
+"  Luca Vercelli https://launchpad.net/~luca-vercelli\n";
 "  Mario Calabrese https://launchpad.net/~mario-calabrese\n";
-"  Mattia Tavernini https://launchpad.net/~maathias";
+"  Mattia Tavernini https://launchpad.net/~maathias\n";
+"  Natale https://launchpad.net/~ngm270189\n";
+"  Stefano Prenna https://launchpad.net/~stefanoprenna\n";
+"  Wonderfulheart https://launchpad.net/~wonderfulheart\n";
+"  bobol68 https://launchpad.net/~bobol68\n";
+"  danielesil88 https://launchpad.net/~danielesil88\n";
+"  yoruk https://launchpad.net/~yoruk87";
 
 #: ../src/cairo-dock-menu.c:285
 msgid "Support"
@@ -439,26 +449,29 @@
 "Thanks to all people that help us to improve the Cairo-Dock project.\n"
 "Thanks to all current, former and future contributors."
 msgstr ""
+"Grazie a tutte le persone che ci aiutano a migliorare il progetto Cairo-"
+"Dock.\n"
+"Grazie a tutti i collaboratori attuali, precedenti e futuri."
 
 #: ../src/cairo-dock-menu.c:317
 msgid "How to help us?"
-msgstr ""
+msgstr "Come aiutarci?"
 
 #: ../src/cairo-dock-menu.c:318
 msgid "Don't hesitate to join the project, we need you ;)"
-msgstr ""
+msgstr "Non esitare ad unirti al progetto, abbiamo bisogno di te ;)"
 
 #: ../src/cairo-dock-menu.c:319
 msgid "Former contributors"
-msgstr ""
+msgstr "Collaboratori di concetto"
 
 #: ../src/cairo-dock-menu.c:320
 msgid "For a complete list, please have a look to BZR logs"
-msgstr ""
+msgstr "Per una lista completa, per favore date uno sguardo ai log della BZR"
 
 #: ../src/cairo-dock-menu.c:321
 msgid "Users of our forum"
-msgstr ""
+msgstr "Utenti del nostro forum"
 
 #: ../src/cairo-dock-menu.c:322
 msgid "Artwork"
@@ -466,11 +479,11 @@
 
 #: ../src/cairo-dock-menu.c:324
 msgid "Thanks"
-msgstr ""
+msgstr "Ringraziamenti"
 
 #: ../src/cairo-dock-menu.c:401
 msgid "Quit Cairo-Dock?"
-msgstr "Esci da Cairo-Dock?"
+msgstr "Uscire da Cairo-Dock?"
 
 #: ../src/cairo-dock-menu.c:431 ../src/cairo-dock-menu.c:573
 msgid "Separator"
@@ -483,7 +496,7 @@
 "move to another dock"
 msgstr ""
 "La nuova dock è stata creata.\n"
-"Adesso sposta qualche lanciatore o applet su di lei con clic destro "
+"Adesso sposta qualche lanciatore o applet su di essa con clic destro "
 "sull'icona -> Sposta in un'altra dock"
 
 #: ../src/cairo-dock-menu.c:567
@@ -500,12 +513,12 @@
 
 #: ../src/cairo-dock-menu.c:575
 msgid "Custom launcher"
-msgstr "Lanciatori personalizzati"
+msgstr "Lanciatore personalizzato"
 
 #: ../src/cairo-dock-menu.c:576
 msgid ""
 "Usually you would drag a launcher from the menu and drop it on the dock."
-msgstr "Di solito trascineresti un lanciatore dal menu alla dock."
+msgstr "Di solito dovresti trascinare un lanciatore dal menu alla dock."
 
 #: ../src/cairo-dock-menu.c:593
 msgid "separator"
@@ -551,7 +564,7 @@
 #: ../src/cairo-dock-menu.c:795
 #, c-format
 msgid "You're about to remove this applet (%s) from the dock. Are you sure?"
-msgstr "Stai per rimuovere questo applet (%s) dalla dock. Sicuro?"
+msgstr "Stai per rimuovere questa applet (%s) dalla dock. Sei sicuro?"
 
 #: ../src/cairo-dock-menu.c:853
 msgid "Configure"
@@ -559,7 +572,7 @@
 
 #: ../src/cairo-dock-menu.c:858
 msgid "Configure behaviour, appearance, and applets."
-msgstr "Configura il comportamento, l'aspetto, e le applet."
+msgstr "Configura il comportamento, l'aspetto e le applet."
 
 #: ../src/cairo-dock-menu.c:863
 msgid "Configure this dock"
@@ -568,7 +581,7 @@
 #: ../src/cairo-dock-menu.c:868
 msgid "Customize the position, visibility and appearance of this main dock."
 msgstr ""
-"Personalizza la posizione, visibilità e apparenza della dock principale."
+"Personalizza la posizione, la visibilità e l'aspetto della dock principale."
 
 #: ../src/cairo-dock-menu.c:870
 msgid "Delete this dock"
@@ -582,12 +595,12 @@
 msgid ""
 "Choose from amongst many themes on the server or save your current theme."
 msgstr ""
-"Scegli uno tra i molti temi disponibili sul server, e salva il tuo tema "
+"Scegli tra uno dei molti temi disponibili sul server o salva il tuo tema "
 "corrente."
 
 #: ../src/cairo-dock-menu.c:898
 msgid "Lock icons position"
-msgstr ""
+msgstr "Blocca le icone"
 
 #: ../src/cairo-dock-menu.c:902
 msgid "This will (un)lock the position of the icons."
@@ -609,8 +622,8 @@
 msgid ""
 "Third-party applets provide integration with many programs, like Pidgin"
 msgstr ""
-"Le applet di terze-parti provvedono all'integrazione di molti programmi, "
-"come Pidgin"
+"Le applet di terze-parti forniscono un'integrazione a molti programmi, come "
+"Pidgin"
 
 #: ../src/cairo-dock-menu.c:961 ../src/help/applet-init.c:28
 #: ../src/help/applet-notifications.c:257
@@ -636,14 +649,17 @@
 "It's not advised to quit the dock but you can press Shift to unlock this "
 "menu entry."
 msgstr ""
+"Stai usando una sessione Cairo-Dock!\n"
+"Non è consigliato uscire dalla dock ma è possibile premere Shift per "
+"sbloccare questa voce del menu."
 
 #: ../src/cairo-dock-menu.c:1018 ../src/cairo-dock-menu.c:1039
 msgid "Edit"
-msgstr ""
+msgstr "Modifica"
 
 #: ../src/cairo-dock-menu.c:1020 ../src/cairo-dock-menu.c:1046
 msgid "Remove"
-msgstr ""
+msgstr "Elimina"
 
 #: ../src/cairo-dock-menu.c:1021
 msgid ""
@@ -666,7 +682,7 @@
 
 #: ../src/cairo-dock-menu.c:1043
 msgid "Detach"
-msgstr ""
+msgstr "Distacca"
 
 #: ../src/cairo-dock-menu.c:1043
 msgid "Return to the dock"
@@ -674,7 +690,7 @@
 
 #: ../src/cairo-dock-menu.c:1050
 msgid "Duplicate"
-msgstr ""
+msgstr "Duplica"
 
 #: ../src/cairo-dock-menu.c:1065
 msgid "Applet's handbook"
@@ -682,7 +698,7 @@
 
 #: ../src/cairo-dock-menu.c:1110
 msgid "Pick up an image"
-msgstr ""
+msgstr "Trovare un'immagine"
 
 #: ../src/cairo-dock-menu.c:1341
 #, c-format
@@ -778,7 +794,7 @@
 #: ../src/cairo-dock-menu.c:1666 ../src/cairo-dock-menu.c:1668
 #: ../data/messages:745
 msgid "Lower"
-msgstr ""
+msgstr "Arrotola"
 
 #: ../src/cairo-dock-menu.c:1674 ../src/cairo-dock-menu.c:1676
 #: ../data/messages:739
@@ -832,7 +848,7 @@
 "config.\n"
 "It is located in the 'Taskbar' module."
 msgstr ""
-"L'opzione ' sovrascrivi le icone di X' è stata automaticamente abilitata "
+"L'opzione 'sovrascrivi le icone di X' è stata automaticamente abilitata "
 "nella configurazione.\n"
 "E' rintracciabile nel modulo 'Taskbar'."
 
@@ -847,7 +863,7 @@
 
 #: ../src/cairo-dock.c:328
 msgid "Use OpenGL backend."
-msgstr "Usa il backend OpenGL"
+msgstr "Usa il backend OpenGL."
 
 #: ../src/cairo-dock.c:331
 msgid ""
@@ -859,7 +875,7 @@
 
 #: ../src/cairo-dock.c:334
 msgid "Ask again on startup which backend to use."
-msgstr ""
+msgstr "Chiedi nuovamente all'avvio quale backend usare."
 
 #: ../src/cairo-dock.c:337
 msgid "Force the dock to consider this environnement - use it with care."
@@ -870,7 +886,7 @@
 msgid ""
 "Force the dock to load from this directory, instead of ~/.config/cairo-dock."
 msgstr ""
-"Forza la dock a caricare da questa cartella, invece che da ~/.config/cairo-"
+"Forza la dock a caricare da questa directory, invece che da ~/.config/cairo-"
 "dock."
 
 #: ../src/cairo-dock.c:343
@@ -879,15 +895,15 @@
 "default server address."
 msgstr ""
 "Indirizzo di un server contenente temi addizionali. Questo sovrascriverà "
-"l'indirizzo server di default."
+"l'indirizzo del server predefinito."
 
 #: ../src/cairo-dock.c:346
 msgid ""
 "Wait for N seconds before starting; this is useful if you notice some "
 "problems when the dock starts with the session."
 msgstr ""
-"Attendi per N secondi prima di partire; questo è utile se sperimenti "
-"problemi quando la dock si avvia ad inizio sessione."
+"Attendi per N secondi prima di partire; questo è utile se hai problemi "
+"quando la dock si avvia ad inizio sessione."
 
 #: ../src/cairo-dock.c:349
 msgid ""
@@ -910,7 +926,7 @@
 msgid ""
 "Log verbosity (debug,message,warning,critical,error); default is warning."
 msgstr ""
-"Log verboso (debug,message,warning,critical,error); di base è solo warning."
+"Log prolisso (debug,message,warning,critical,error); di base è solo warning."
 
 #: ../src/cairo-dock.c:361
 msgid "Force to display some output messages with colors."
@@ -942,8 +958,8 @@
 "Ask the dock to load additionnal modules contained in this directory (though "
 "it is unsafe for your dock to load unnofficial modules)."
 msgstr ""
-"Domanda alla dock di caricare moduli addizionali contenuti in questa "
-"cartella (ricorda che non è sicuro per la tua dock, caricare moduli non "
+"Domanda alla dock di caricare i moduli addizionali contenuti in questa "
+"directory (sebbene non sia sicuro per la tua dock caricare moduli non "
 "ufficiali)."
 
 #: ../src/cairo-dock.c:383
@@ -951,20 +967,20 @@
 "For debugging purpose only. The crash manager will not be started to hunt "
 "down the bugs."
 msgstr ""
-"Per interessi di debug soltanto. Il manager dei crash non verrà avviato per "
-"ricercare gli errori."
+"Solo per interesse di debug. Il manager dei crash non sarà avviato per "
+"ricercare degli errori."
 
 #: ../src/cairo-dock.c:386
 msgid ""
 "For debugging purpose only. Some hidden and still unstable options will be "
 "activated."
 msgstr ""
-"Per interessi di debug soltanto. Qualche opzione ancora nascosta e instabile "
-"sarà attivata."
+"Solo per interesse di debug. Saranno attivate delle opzioni ancora nascoste "
+"ed instabili."
 
 #: ../src/cairo-dock.c:503
 msgid "Use OpenGL in Cairo-Dock"
-msgstr "Utilizza OpenGL in Cairo-Dock?"
+msgstr "Utilizza OpenGL in Cairo-Dock"
 
 #: ../src/cairo-dock.c:511
 msgid ""
@@ -983,10 +999,10 @@
 "In ogni caso, alcune schede video e/o i relativi driver non la supportano "
 "completamente, il che potrebbe causare un funzionamento non corretto della "
 "dock.\n"
-"Attiva OpenGL?\n"
+"Vuoi attivare OpenGL?\n"
 " (Per non mostrare questo avviso, lanciare la dock dal menu delle "
 "Applicazioni,\n"
-"  oppure con l'opzione -o per forzare OpenGL e -c per forzare cairo.)"
+"  oppure con l'opzione -o per forzare OpenGL e -c per forzare Cairo.)"
 
 #: ../src/cairo-dock.c:522
 msgid "Remember this choice"
@@ -1004,8 +1020,8 @@
 "at http://glx-dock.org";
 msgstr ""
 "Il modulo '%s' potrebbe avere incontrato un problema.\n"
-"E' stato riavviato con successo, ma è accaduto ancora; ti ringraziamo se lo "
-"riferisci su http://glx-dock.org";
+"E' stato riavviato con successo, ma se accade ancora, per favore, "
+"riferiscilo su http://glx-dock.org";
 
 #: ../src/gldit/cairo-dock-applet-facility.h:277
 msgid ""
@@ -1051,7 +1067,7 @@
 #: ../src/gldit/cairo-dock-dock-manager.c:1656
 #: ../src/gldit/cairo-dock-dock-manager.c:1757
 msgid "Pop up the main dock"
-msgstr ""
+msgstr "Fai apparire la Dock principale"
 
 #: ../src/gldit/cairo-dock-gui-factory.c:243
 #, c-format
@@ -1060,7 +1076,7 @@
 
 #: ../src/gldit/cairo-dock-gui-factory.c:255
 msgid "kB"
-msgstr "kB"
+msgstr "KB"
 
 #: ../src/gldit/cairo-dock-gui-factory.c:257
 msgid "MB"
@@ -1088,11 +1104,11 @@
 
 #: ../src/gldit/cairo-dock-gui-factory.c:724
 msgid "Pick up a file"
-msgstr ""
+msgstr "Trovare un file"
 
 #: ../src/gldit/cairo-dock-gui-factory.c:724
 msgid "Pick up a directory"
-msgstr ""
+msgstr "Trovare una directory"
 
 #: ../src/gldit/cairo-dock-gui-factory.c:984
 msgid "_Custom Icons_"
@@ -1135,7 +1151,7 @@
 
 #: ../src/gldit/cairo-dock-gui-factory.c:2962
 msgid "Theme"
-msgstr "tema"
+msgstr "Tema"
 
 #: ../src/gldit/cairo-dock-gui-factory.c:2975
 msgid "Rating"
@@ -1143,7 +1159,7 @@
 
 #: ../src/gldit/cairo-dock-gui-factory.c:2981
 msgid "Sobriety"
-msgstr "sobrietà"
+msgstr "Sobrietà"
 
 #: ../src/gldit/cairo-dock-gui-factory.c:3054
 msgid "link"
@@ -1151,7 +1167,7 @@
 
 #: ../src/gldit/cairo-dock-gui-factory.c:3107
 msgid "Grab"
-msgstr "cattura"
+msgstr "Cattura"
 
 #: ../src/gldit/cairo-dock-struct.h:423
 msgid "Default"
@@ -1172,6 +1188,8 @@
 "Could not access remote file %s. Maybe the server is down.\n"
 "Please retry later or contact us at glx-dock.org."
 msgstr ""
+"Non posso accedere al file remoto %s. Il server potrebbe essere spento.\n"
+"Per favore prova più tardi o contattaci su glx-dock.org."
 
 #: ../src/gldit/cairo-dock-themes-manager.c:267
 #, c-format
@@ -1192,12 +1210,12 @@
 "  (you can now click on this dialog to close it)"
 msgstr ""
 "Benvenuto in Cairo-Dock!\n"
-"Quest' applet è qui per aiutarti ad iniziare con l'utilizzo della dock; "
-"basta cliccarci sopra.\n"
-"Se hai delle domande/richieste/segnalazioni, per favore spendi una visita al "
+"Quest'applet è qui per aiutarti ad iniziare con l'utilizzo della dock; basta "
+"cliccarci sopra.\n"
+"Se hai delle domande/richieste/segnalazioni, per favore facci una visita al "
 "sito http://glx-dock.org.\n";
-"Speriamo tu gradisca questo software!\n"
-"  (adesso puoi cliccare sul dialogo per chiuderlo)"
+"Speriamo che tu gradisca questo software!\n"
+"  (adesso puoi cliccare su questo dialogo per chiuderlo)"
 
 #: ../src/help/applet-composite.c:160
 msgid "Don't ask me any more"
@@ -1390,7 +1408,7 @@
 
 #: ../data/messages:21
 msgid "Grouping icons into a sub-dock"
-msgstr "Ragruppare le icone in sub-dock"
+msgstr "Raggruppare le icone in una sub-dock"
 
 #: ../data/messages:23
 msgid ""
@@ -1465,13 +1483,13 @@
 "Also, you can define the size of each applet independently in their own "
 "settings."
 msgstr ""
-"Puoi rendere più grandi o più piccoli sia le icone che l'effetto zoom. Apri "
-"le impostazioni (clic destro -> Cairo-Dock -> Configura) e vai su Aspetto (o "
+"Puoi ingrandire o rimpicciolire sia le icone che l'effetto zoom. Apri le "
+"impostazioni (clic destro -> Cairo-Dock -> Configura) e vai su Aspetto (o "
 "Icone nella modalità avanzata).\n"
-"Considera che se ci saranno troppe icone sulla dock, queste verranno "
+"Considera che se ci saranno troppe icone sulla dock, esse verranno "
 "ridimensionate per adattarsi allo schermo.\n"
-"In più puoi definire la dimensione di ogni applet indipendentemente, "
-"attraverso le loro impostazioni."
+"Inoltre puoi definire la dimensione di ciascuna applet impostandone ognuna "
+"indipendentemente."
 
 #: ../data/messages:37
 msgid "Separating icons"
@@ -1964,8 +1982,8 @@
 "To remove a bookmark, right-click on its icon -> remove"
 msgstr ""
 "Attiva l'applet Scorciatoie.\n"
-"Successivamente ogni segnalibro delle cartelle (quelli che appaiono in "
-"Nautilus) sarà elencato in na sub-dock.\n"
+"Successivamente, ogni segnalibro delle cartelle (quelli che appaiono in "
+"Nautilus), sarà elencato in una sub-dock.\n"
 "Per aggiungere segnalibri, trascina semplicemente una cartella nell'icona "
 "dell'applet.\n"
 "Per rimuoverlo, clic destro sulla sua icona -> \"rimuovi\""
@@ -2146,10 +2164,10 @@
 "If the dock is running with OpenGL, try to disable it by launching the dock "
 "with «cairo-dock -c»."
 msgstr ""
-"Se hai una GeForce8, dovrai installare gli ultimi driver, perchè i "
-"precedenti avevano molti bug.\n"
+"Se hai una GeForce8, dovrai installare gli ultimi driver perché i precedenti "
+"avevano molti bug.\n"
 "Se la dock sta andando senza OpenGL, prova a ridurre il numero di icone "
-"sulla dock principale, oppure a ridurne la dimensione.\n"
+"sulla dock principale oppure a ridurne la dimensione.\n"
 "Se la dock va con OpenGL, prova a disattivarlo lanciandola con 'cairo-dock -"
 "c'."
 
@@ -2172,7 +2190,7 @@
 "cards can do this, as can more and more Intel cards. Most ATI cards do not "
 "support OpenGL2.0."
 msgstr ""
-"Occorre una scheda grafica con driver che supportino openGL2.0. La maggior "
+"Occorre una scheda grafica con driver che supportino OpenGL2.0. La maggior "
 "parte delle schede Nvidia lo fanno, sempre più schede Intel ne sono in "
 "grado. La maggior parte delle schede ATI invece non può farlo."
 
@@ -2241,7 +2259,7 @@
 "Se usi KDE, è possibile tu debba dirgli il percorso della cartella Cestino.\n"
 "Apri l'editor di configurazione, e riempi il percorso del cestino; "
 "probabilmente è ~/.local/share/Trash/files. Stai molto attento quando digiti "
-"un percorso qui!!! (Non inserire spazi nè caratteri invisibili)."
+"un percorso qui!!! (Non inserire spazi né caratteri invisibili)."
 
 #: ../data/messages:239
 msgid ""
@@ -2355,8 +2373,8 @@
 " One for stable releases and another which is updated weekly (unstable "
 "version)"
 msgstr ""
-"Manteniamo due repository per Debian, Ubuntu e altre Debian-derivate:\n"
-" Uno per la release stable e un altro aggiornato setttimanalmente (versione "
+"Manteniamo due repository per Debian, Ubuntu e altre derivate Debian:\n"
+" Uno per la release stable e un altro aggiornato settimanalmente (versione "
 "unstable)"
 
 #: ../data/messages:281
@@ -2425,7 +2443,7 @@
 
 #: ../data/messages:307
 msgid "Name of the dock it belongs to:"
-msgstr "Nome della dock al quale appartiene:"
+msgstr "Nome della dock alla quale appartiene:"
 
 #: ../data/messages:309
 msgid "Name of the icon as it will appear in its caption in the dock:"
@@ -2741,6 +2759,14 @@
 "Separated   : Separate the taskbar from the launchers and only show windows "
 "that are on the current desktop."
 msgstr ""
+"Nessuna : Non mostrare le finestre aperte nella dock.\n"
+"Minimalista: Le applicazioni sono unite al proprio lanciatore, mostra solo "
+"le altre finestre se esse sono minimizzate (come nel MacOSX).\n"
+"Integrata  : Le applicazioni sono unite al proprio lanciatore, mostra tutte "
+"le altre finestre, e i gruppi di esse, insieme nella sub-dock "
+"(predefinito).\n"
+"Separata : Separa la taskbar dai lanciatori e mostra solo le finestre che si "
+"trovano sulla scrivania corrente."
 
 #: ../data/messages:461
 msgid "Behaviour of the Taskbar:"
@@ -2748,35 +2774,35 @@
 
 #: ../data/messages:465
 msgid "Minimalistic"
-msgstr ""
+msgstr "Minimalista"
 
 #: ../data/messages:467
 msgid "Integrated"
-msgstr ""
+msgstr "Integrata"
 
 #: ../data/messages:469
 msgid "Separated"
-msgstr ""
+msgstr "Separata"
 
 #: ../data/messages:471 ../data/messages:679
 msgid "Place new icons"
-msgstr ""
+msgstr "Posiziona le nuove icone"
 
 #: ../data/messages:473 ../data/messages:681
 msgid "At the beginning of the dock"
-msgstr ""
+msgstr "All'inizio della dock"
 
 #: ../data/messages:475 ../data/messages:683
 msgid "Before the launchers"
-msgstr ""
+msgstr "Prima dei lanciatori"
 
 #: ../data/messages:477 ../data/messages:685
 msgid "After the launchers"
-msgstr ""
+msgstr "Dopo i lanciatori"
 
 #: ../data/messages:479 ../data/messages:687
 msgid "At the end of the dock"
-msgstr ""
+msgstr "Alla fine della dock"
 
 #: ../data/messages:481
 msgid "Icons' animations and effects"
@@ -2784,13 +2810,14 @@
 
 #: ../data/messages:483
 msgid "& On mouse hover:"
-msgstr ""
+msgstr "& Al passaggio del mouse:"
 
 #: ../data/messages:487
 msgid ""
 "&[Evaporate;Fade out;Explode;Break;Black Hole;Random] On "
 "appearance/disappearance:"
 msgstr ""
+"&[Evapora;Dissolve;Esplode;Rompe;Buco Nero;Casuale] Alla comparsa/scomparsa:"
 
 #: ../data/messages:493
 msgid "Choose a theme of icons :"
@@ -2834,7 +2861,7 @@
 
 #: ../data/messages:517 ../data/messages:769
 msgid "Keyboard shortcuts currently available"
-msgstr ""
+msgstr "Scorciatoie da tastiera attualmente disponibili"
 
 #: ../data/messages:519 ../data/messages:771
 msgid ""
@@ -2843,6 +2870,10 @@
 "Double-click on a line, and press the shortkey you want to use for the "
 "corresponding action."
 msgstr ""
+"Molte applet forniscono dei tasti scorciatoia per le loro azioni. Non appena "
+"un'applet viene attivata, le scorciatoie divengono disponibili.\n"
+"Fare doppio clic su una riga, quindi premere il tasto scorciatoia che volete "
+"usare per l'azione corrispondente."
 
 #: ../data/messages:521
 msgid "Add-ons"
@@ -2950,19 +2981,19 @@
 
 #: ../data/messages:613
 msgid "The higher, the faster the dock will appear"
-msgstr ""
+msgstr "Più alta è, più velocemente apparirà la dock"
 
 #: ../data/messages:615
 msgid "Callback sensitivity:"
-msgstr ""
+msgstr "Sensibilità di richiamo:"
 
 #: ../data/messages:617
 msgid "high"
-msgstr ""
+msgstr "alta"
 
 #: ../data/messages:619
 msgid "low"
-msgstr ""
+msgstr "bassa"
 
 #: ../data/messages:621
 msgid "How to call the dock back:"
@@ -3065,11 +3096,11 @@
 
 #: ../data/messages:689
 msgid "After a given icon"
-msgstr ""
+msgstr "Dopo una determinata icona"
 
 #: ../data/messages:691
 msgid "Place new icons after this one"
-msgstr ""
+msgstr "Posiziona le nuove icone dopo quest'ultima"
 
 #: ../data/messages:693
 msgid ""
@@ -3136,7 +3167,7 @@
 
 #: ../data/messages:721
 msgid "Transparency of icons whose window is minimised:"
-msgstr "Trasparenza dell'icona  di cui la finestra è o non è minimizzata:"
+msgstr "Trasparenza dell'icona la cui finestra è o non è minimizzata:"
 
 #: ../data/messages:723 ../data/messages:885 ../data/messages:1005
 #: ../data/messages:1031 ../data/messages:1129
@@ -3293,11 +3324,11 @@
 
 #: ../data/messages:819
 msgid "&[15;60] Animation frequency for the OpenGL backend :"
-msgstr ""
+msgstr "&[15;60] Frequenza dell'animazione per il backend OpenGL:"
 
 #: ../data/messages:823
 msgid "*[15;50] Animation frequency for the Cairo backend :"
-msgstr ""
+msgstr "*[15;50] Frequenza dell'animazione per il backend Cairo:"
 
 #: ../data/messages:825
 msgid ""
@@ -3309,7 +3340,7 @@
 
 #: ../data/messages:827
 msgid "* Reflections should be calculated in real-time?"
-msgstr ""
+msgstr "* I riflessi dovrebbero essere calcolati in tempo reale?"
 
 # #################################
 # ########### cairo-dock.conf #############
@@ -3474,15 +3505,16 @@
 
 #: ../data/messages:907
 msgid "Background when hidden"
-msgstr ""
+msgstr "Oscurato quando nascosto"
 
 #: ../data/messages:909
 msgid "Several applets can be visible even when the dock is hidden"
 msgstr ""
+"Diverse applet possono essere visibili anche quando la dock è nascosta"
 
 #: ../data/messages:911
 msgid "Default background color when the dock is hidden"
-msgstr ""
+msgstr "Colore predefinito di sfondo quando la dock è nascosta"
 
 #: ../data/messages:913 ../data/messages:1363
 msgid "Stretch the dock to always fill the screen"
@@ -3559,7 +3591,7 @@
 
 #: ../data/messages:959
 msgid "Shape of the bubble:"
-msgstr "Forma delle notifich :"
+msgstr "Forma delle notifiche:"
 
 #: ../data/messages:961
 msgid "Text"
@@ -3737,7 +3769,7 @@
 
 #: ../data/messages:1065
 msgid "Icons' size at rest (width x height) :"
-msgstr ""
+msgstr "Dimensione delle icone a riposo (larghezza x altezza):"
 
 #: ../data/messages:1067
 msgid "Zoom effect"
@@ -3793,7 +3825,7 @@
 
 #: ../data/messages:1091
 msgid "Use an image."
-msgstr "Utilizza un immagine."
+msgstr "Utilizza un'immagine."
 
 #: ../data/messages:1093
 msgid "Flat separator"
@@ -3824,7 +3856,7 @@
 
 #: ../data/messages:1105
 msgid "Reflections"
-msgstr "Rifessi"
+msgstr "Riflessi"
 
 #: ../data/messages:1107
 msgid ""
@@ -4028,7 +4060,7 @@
 
 #: ../data/messages:1197
 msgid "Draw an emblem"
-msgstr "Disegna un'emblema"
+msgstr "Disegna un emblema"
 
 #: ../data/messages:1199
 msgid "Draw the sub-dock's icons as a stack"
@@ -4145,7 +4177,7 @@
 "If checked, the pattern will go from top to bottom, otherwise from left to "
 "right."
 msgstr ""
-"Se scelto il motivo andrà dall'alto in basso, altrimenti da sinistra a "
+"Se scelto, il motivo andrà dall'alto in basso, altrimenti da sinistra a "
 "destra."
 
 #: ../data/messages:1255
@@ -4162,7 +4194,7 @@
 
 #: ../data/messages:1261
 msgid "Use the same look as the labels?"
-msgstr "Utilzza lo stesso stile delle etichette?"
+msgstr "Utilizza lo stesso stile delle etichette?"
 
 #: ../data/messages:1265
 msgid "Background color:"
@@ -4182,7 +4214,7 @@
 
 #: ../data/messages:1325
 msgid "Tiny"
-msgstr ""
+msgstr "Piccolo"
 
 #: ../data/messages:1339
 msgid "Leave it empty to use the same view as the main dock."
@@ -4223,7 +4255,7 @@
 "Otherwise the current behaviour will be kept. This defines the dock's "
 "position, behavioural settings such as auto-hide, using taskbar or not, etc."
 msgstr ""
-"Altrimenti il comportamento attuale sarà conservato. E' tutto ciò che "
+"Altrimenti il comportamento attuale sarà conservato. E tutto ciò che "
 "riguarda la posizione della dock, i parametri di comportamento come l'auto-"
 "nascondimento, l'utilizzo della TaskBar o meno, etc."
 
@@ -4281,7 +4313,7 @@
 
 #: ../data/messages:1403 ../data/messages:1405
 msgid "Desktop Entry"
-msgstr "Elementi Scrivania"
+msgstr "Elementi della Scrivania"
 
 #: ../data/messages:1407
 msgid ""
@@ -4326,3 +4358,21 @@
 " - Few additions to the DBus API.\n"
 " - It's possible to donate to support the project!"
 msgstr ""
+"<b>Nuova versione: <span color='red'>GLX-Dock 3.0</span>!</b>\n"
+" - La <b>taskbar</b> è stata notevolmente migliorata.\n"
+" - L'applet <b>Log out</b> è stata riscritta, adesso consente il cambio "
+"utente.\n"
+" - Il <b>controllo della dock dalla tastiera</b> è ora più potente:\n"
+"   - sono state aggiunte molte scorciatoie in diverse applet\n"
+"   - potete attivare un lanciatore premendo una scorciatoia + il suo numero\n"
+"   - ora le scorciatoie possono essere tutte gestite nella finestra di "
+"configurazione.\n"
+" - Il <b>Sound Menu</b> di Ubuntu è stato integrato dentro l'applet Sound-"
+"Control.\n"
+" - Una nuova <b>applet Twitter</b> vi permette di 'cinguettare' in un clic.\n"
+" - Una nuova applet per <b>inibire il salvaschermo</b> in un clic.\n"
+" - I separatori sono trasparenti al clic nella modalità <b>'Pannello'</b>\n"
+" - Cairo-Dock adesso usa le <b>GTK3</b>, per una migliore integrazione "
+"nell'ambiente Gnome\n"
+" - Poche aggiunte alle API DBus.\n"
+" - E' possibile fare delle donazioni per sostenere il progetto!"

=== modified file 'po/ja.po'
--- po/ja.po	2012-04-16 16:03:43 +0000
+++ po/ja.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: 1.4.5\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:23+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:50+0000\n"
 "Last-Translator: kawaji <jiro.kawada@xxxxxxxxx>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:39+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: \n"
 

=== modified file 'po/ko.po'
--- po/ko.po	2012-04-16 16:03:43 +0000
+++ po/ko.po	2012-06-19 14:00:30 +0000
@@ -8,14 +8,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:13+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:51+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Korean <ko@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:39+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: ko\n"
 

=== modified file 'po/nb.po'
--- po/nb.po	2012-04-16 16:03:43 +0000
+++ po/nb.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:24+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:51+0000\n"
 "Last-Translator: EspenK <espen.kromke@xxxxxxxxxxxx>\n"
 "Language-Team: Norwegian Bokmal <nb@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:39+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: nb\n"
 

=== modified file 'po/nl.po'
--- po/nl.po	2012-04-16 16:03:43 +0000
+++ po/nl.po	2012-06-19 14:00:30 +0000
@@ -7,15 +7,15 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 21:20+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-06-03 19:40+0000\n"
 "Last-Translator: rob <linuxned@xxxxxxxxx>\n"
 "Language-Team: LANGUAGE <LL@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:21+0000\n"
-"X-Generator: Launchpad (build 15070)\n"
+"X-Launchpad-Export-Date: 2012-06-04 04:35+0000\n"
+"X-Generator: Launchpad (build 15353)\n"
 "Language: \n"
 
 #: ../src/cairo-dock-gui-commons.c:221
@@ -1219,8 +1219,8 @@
 "Do you want to activate it now?"
 msgstr ""
 "Om de zwarte achtergrond rond het dock kwijt te raken, dient u een composite-"
-"manager te activeren.\n"
-"Wilt u deze nu activeren?"
+"beheerder in te schakelen.\n"
+"Wilt u deze nu inschakelen?"
 
 #: ../src/help/applet-composite.c:177
 msgid ""
@@ -1267,7 +1267,7 @@
 
 #: ../src/help/applet-notifications.c:252
 msgid "Activate composite"
-msgstr "Composite activeren"
+msgstr "Composite inschakelen"
 
 #: ../src/help/applet-notifications.c:254
 msgid "Disable the gnome-panel"
@@ -1359,10 +1359,10 @@
 "and then just drag-and-drop the link of an applet into your dock."
 msgstr ""
 "Cairo-Dock heeft vele applets. Applets zijn kleine programma's die zich "
-"bevinden in het dock, bijvoorbeeld een uitlogknop\n"
+"bevinden in het dock, bijvoorbeeld een afmeldknop.\n"
 "Om nieuwe applets te activeren, opent u de instellingen (rechtermuisklik -> "
 "Cairo-Dock -> Configureren), gaat naar \"Extra's\" en vinkt het applet aan "
-"dat u wilt.\n"
+"dat u wilt gaan gebruiken.\n"
 "Als u meer applets wilt installeren, klikt u op de knop \"Meer applets\" "
 "(hierdoor wordt u verder geleid naar onze applets-website) en kunt applets "
 "installeren door de link van een applet naar uw dock te verslepen."
@@ -1821,7 +1821,7 @@
 "Right-click on it -> \"lock screen\".\n"
 "You can bind this action to the middle-click."
 msgstr ""
-"Activeer het applet \"Uitloggen\".\n"
+"Activeer het applet \"Afmelden\".\n"
 "Klik er met rechts op -> \"Beeldscherm vergrendelen\".\n"
 "U kunt deze actie verbinden aan een middelklik."
 
@@ -1855,10 +1855,10 @@
 "smooth.\n"
 "Clicking again on it will enable the Composite."
 msgstr ""
-"Activeer het applet \"Composite-Manager\".\n"
-"Klik op het icoon om composite uit te schakelen, waardoor het spelen van "
+"Activeer het applet \"Composite-beheer\".\n"
+"Klik op het pictogram om composite uit te schakelen, waardoor het spelen van "
 "games wat soepeler zal verlopen.\n"
-"Klik nog een keer op het icoon om composite weer in te schakelen."
+"Klik nog een keer op het pictogram om composite weer in te schakelen."
 
 #: ../data/messages:137
 msgid "Seeing the hourly weather forecast"
@@ -2131,8 +2131,8 @@
 "draaien.\n"
 "Als u XFCE of KDE gebruikt, dan kunt u composite inschakelen in de "
 "vensterbeheerder’s opties.\n"
-"Als u Gnome gebruikt, kunt u het inschakelen in Metacity op de volgende "
-"manier :\n"
+"Als u Gnome gebruikt, kunt u het in Metacity op de volgende manier "
+"inschakelen :\n"
 " Open de Configuratie-editor, bewerk de sleutel "
 "'/apps/metacity/general/compositing_manager' en vink het vakje onder "
 "´waarde´ aan."
@@ -3324,7 +3324,7 @@
 
 #: ../data/messages:789
 msgid "Number of steps in the zoom animation (grow/shrink):"
-msgstr "Aantal stappen voor wijzigen afmetingen icoon (groter/kleiner) :"
+msgstr "Aantal stappen voor wijzigen afmetingen pictogram (groter/kleiner) :"
 
 #: ../data/messages:801
 msgid "Number of steps in the auto-hide animation (move up/move down):"

=== modified file 'po/oc.po'
--- po/oc.po	2012-04-16 16:03:43 +0000
+++ po/oc.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
 "PO-Revision-Date: 2012-03-21 02:54+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Occitan (post 1500) <oc@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:39+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: \n"
 

=== modified file 'po/pl.po'
--- po/pl.po	2012-04-16 16:03:43 +0000
+++ po/pl.po	2012-06-19 14:00:30 +0000
@@ -7,15 +7,15 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-04-05 15:27+0000\n"
-"Last-Translator: Andrzej Król <andrzej.krol@xxxxxxxxxxxxxx>\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-17 23:22+0000\n"
+"Last-Translator: rasik <Unknown>\n"
 "Language-Team: Polish <pl@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
-"X-Generator: Launchpad (build 15070)\n"
+"X-Launchpad-Export-Date: 2012-04-19 04:35+0000\n"
+"X-Generator: Launchpad (build 15108)\n"
 "Language: pl\n"
 
 #: ../src/cairo-dock-gui-commons.c:221
@@ -430,7 +430,8 @@
 "  NINa https://launchpad.net/~factory\n";
 "  Rafał Rudzik https://launchpad.net/~rrudzik\n";
 "  Szymon Sieciński https://launchpad.net/~szymon-siecinski\n";
-"  Wojciech Górnaś https://launchpad.net/~wojciech";
+"  Wojciech Górnaś https://launchpad.net/~wojciech\n";
+"  rasik https://launchpad.net/~rasik01";
 
 #: ../src/cairo-dock-menu.c:285
 msgid "Support"
@@ -686,7 +687,7 @@
 
 #: ../src/cairo-dock-menu.c:1110
 msgid "Pick up an image"
-msgstr ""
+msgstr "Odbierz obraz"
 
 #: ../src/cairo-dock-menu.c:1341
 #, c-format
@@ -1085,11 +1086,11 @@
 
 #: ../src/gldit/cairo-dock-gui-factory.c:724
 msgid "Pick up a file"
-msgstr ""
+msgstr "Odbierz plik"
 
 #: ../src/gldit/cairo-dock-gui-factory.c:724
 msgid "Pick up a directory"
-msgstr ""
+msgstr "Odbierz folder"
 
 #: ../src/gldit/cairo-dock-gui-factory.c:984
 msgid "_Custom Icons_"
@@ -2579,6 +2580,8 @@
 "Image to be displayed above the drawings, e.g. a reflection. Leave empty for "
 "no image."
 msgstr ""
+"Obraz wyświetlany nad rysunkami, np odbicie. Pozostaw puste, gdy nie ma "
+"obrazu."
 
 #: ../data/messages:391
 msgid "Foreground image:"
@@ -2730,7 +2733,7 @@
 
 #: ../data/messages:471 ../data/messages:679
 msgid "Place new icons"
-msgstr ""
+msgstr "Umieść nowe ikony"
 
 #: ../data/messages:473 ../data/messages:681
 msgid "At the beginning of the dock"
@@ -2738,11 +2741,11 @@
 
 #: ../data/messages:475 ../data/messages:683
 msgid "Before the launchers"
-msgstr ""
+msgstr "Przed aktywatorami"
 
 #: ../data/messages:477 ../data/messages:685
 msgid "After the launchers"
-msgstr ""
+msgstr "Za aktywatorami"
 
 #: ../data/messages:479 ../data/messages:687
 msgid "At the end of the dock"
@@ -2914,7 +2917,7 @@
 
 #: ../data/messages:613
 msgid "The higher, the faster the dock will appear"
-msgstr ""
+msgstr "Im więcej, tym szybciej dock będzie się pojawiał"
 
 #: ../data/messages:615
 msgid "Callback sensitivity:"
@@ -3033,7 +3036,7 @@
 
 #: ../data/messages:691
 msgid "Place new icons after this one"
-msgstr ""
+msgstr "Umieść nowe ikony po tej"
 
 #: ../data/messages:693
 msgid ""

=== modified file 'po/pt.po'
--- po/pt.po	2012-04-16 16:03:43 +0000
+++ po/pt.po	2012-06-19 14:00:30 +0000
@@ -6,14 +6,14 @@
 msgstr ""
 "Project-Id-Version: 2.1.0-alpha\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:19+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:49+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:39+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: \n"
 

=== modified file 'po/pt_BR.po'
--- po/pt_BR.po	2012-04-16 16:03:43 +0000
+++ po/pt_BR.po	2012-06-19 14:00:30 +0000
@@ -6,15 +6,15 @@
 msgstr ""
 "Project-Id-Version: 2.1.0-alpha\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:31+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-05-23 20:20+0000\n"
 "Last-Translator: Eduardo Mucelli Rezende Oliveira <edumucelli@xxxxxxxxx>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:23+0000\n"
-"X-Generator: Launchpad (build 15070)\n"
+"X-Launchpad-Export-Date: 2012-05-24 10:36+0000\n"
+"X-Generator: Launchpad (build 15288)\n"
 "Language: \n"
 
 #: ../src/cairo-dock-gui-commons.c:221
@@ -643,6 +643,9 @@
 "It's not advised to quit the dock but you can press Shift to unlock this "
 "menu entry."
 msgstr ""
+"Você está usando uma sessão Cairo-Dock!\n"
+"Não é aconselhado sair do dock, mas você pode pressionar Shift para "
+"desbloquear este item do menu."
 
 #: ../src/cairo-dock-menu.c:1018 ../src/cairo-dock-menu.c:1039
 msgid "Edit"
@@ -891,12 +894,16 @@
 "Wait for N seconds before starting; this is useful if you notice some "
 "problems when the dock starts with the session."
 msgstr ""
+"Esperar por N segundos antes de executar; isto é útil se você perceber "
+"problemas quando o dock começa com a sessão."
 
 #: ../src/cairo-dock.c:349
 msgid ""
 "Allow to edit the config before the dock is started and show the config "
 "panel on start."
 msgstr ""
+"Permite editar a configuração antes de executar o dock e mostra o painel de "
+"configuração na inicialização."
 
 #: ../src/cairo-dock.c:352
 msgid "Exclude a given plug-in from activating (it is still loaded though)."
@@ -923,6 +930,7 @@
 #: ../src/cairo-dock.c:367
 msgid "Lock the dock so that any modification is impossible for users."
 msgstr ""
+"Bloquear o dock, assim qualquer modificação é impossível para os usuários."
 
 #: ../src/cairo-dock.c:371
 msgid "Keep the dock above other windows whatever."
@@ -1303,6 +1311,11 @@
 "Some applets let you bind a shortkey to an action, and decide which action "
 "sould be on middle-click."
 msgstr ""
+"A maioria dos ícones no dock tem várias ações: a primeira é clicando com o "
+"botão esquerdo do mouse, a segunda com o botão do meio e ações adicionais "
+"com o botão da direita (no menu).\n"
+"Alguns mini-aplicativos deixam você atribuir um atalho a uma ação, e decidir "
+"que ação usar com o botão do meio."
 
 #: ../data/messages:7
 msgid "Adding features"
@@ -1458,6 +1471,8 @@
 "You can launch an application several times by SHIFT+clicking on its icon "
 "(or from the menu)."
 msgstr ""
+"Você pode executar um aplicativo várias vezes usando SHIFT+clique no ícone "
+"(ou a partir do menu)."
 
 #: ../data/messages:59
 msgid "Switching between the windows of a same application"
@@ -1528,7 +1543,7 @@
 
 #: ../data/messages:85
 msgid "Hiding the dock to use all the screen"
-msgstr ""
+msgstr "Esconder o dock para usar a tela toda"
 
 #: ../data/messages:87
 msgid ""

=== modified file 'po/ro.po'
--- po/ro.po	2012-04-16 16:03:43 +0000
+++ po/ro.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-04-03 14:35+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:52+0000\n"
 "Last-Translator: dahas <bogdan.daja@xxxxxxxx>\n"
 "Language-Team: Romanian <ro@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:39+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: ro\n"
 

=== modified file 'po/ru.po'
--- po/ru.po	2012-04-16 16:03:43 +0000
+++ po/ru.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: Cairo-Dock II\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-04-03 08:30+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 19:04+0000\n"
 "Last-Translator: Alex Nikolaenko <ceekay80@xxxxxxxxx>\n"
 "Language-Team: Russian <ru@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:39+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "X-Poedit-Country: RUSSIAN FEDERATION\n"
 "Language: ru\n"
@@ -634,6 +634,9 @@
 "It's not advised to quit the dock but you can press Shift to unlock this "
 "menu entry."
 msgstr ""
+"У вас запущен Cairo-Dock!\n"
+"Не рекомендуется выходить, но вы можете зажать Shift, чтобы отобразить пункт "
+"меню."
 
 #: ../src/cairo-dock-menu.c:1018 ../src/cairo-dock-menu.c:1039
 msgid "Edit"

=== modified file 'po/sk.po'
--- po/sk.po	2012-04-16 16:03:43 +0000
+++ po/sk.po	2012-06-19 14:00:30 +0000
@@ -7,15 +7,15 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-04-06 10:31+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-23 20:15+0000\n"
 "Last-Translator: milboy <Unknown>\n"
 "Language-Team: Slovak <sk@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
-"X-Generator: Launchpad (build 15070)\n"
+"X-Launchpad-Export-Date: 2012-04-24 04:42+0000\n"
+"X-Generator: Launchpad (build 15135)\n"
 "Language: sk\n"
 
 #: ../src/cairo-dock-gui-commons.c:221
@@ -413,7 +413,7 @@
 
 #: ../src/cairo-dock-menu.c:281
 msgid "Beta-testing / Suggestions / Forum animation"
-msgstr ""
+msgstr "Beta testovanie / Návrhy / Fórum"
 
 #: ../src/cairo-dock-menu.c:282
 msgid "Translators for this language"
@@ -867,12 +867,16 @@
 "Address of a server containing additional themes. This will overwrite the "
 "default server address."
 msgstr ""
+"Adresa servera obsahujúca ďalšie témy. Toto prepíše predvolenú adresu "
+"servera."
 
 #: ../src/cairo-dock.c:346
 msgid ""
 "Wait for N seconds before starting; this is useful if you notice some "
 "problems when the dock starts with the session."
 msgstr ""
+"Počkať N sekúnd pred spustením, čo je vhodné, ak zistíte nejaké problémy pri "
+"spustení sedenia."
 
 #: ../src/cairo-dock.c:349
 msgid ""
@@ -926,6 +930,8 @@
 "Ask the dock to load additionnal modules contained in this directory (though "
 "it is unsafe for your dock to load unnofficial modules)."
 msgstr ""
+"Spýtať sa či majú byť načítatané moduly obsiahnuté v tomto adresári (nie je "
+"bezpečné spúšťať neoficiálne moduly)."
 
 #: ../src/cairo-dock.c:383
 msgid ""
@@ -1170,6 +1176,12 @@
 "Hope you will enjoy this soft !\n"
 "  (you can now click on this dialog to close it)"
 msgstr ""
+"Víta vás Cairo-Dock!\n"
+"Tento aplet vám pomôže pri spustení panelu jednoduchým kliknutím.\n"
+"Ak máte otázky či otázky/požiadavky/poznámky, prosím podporte nás návštevou "
+"na http://glx-dock.org.\n";
+"Veríme, že si tento program užijete!\n"
+"  (kliknutím na tento dialóg ho ukončíte)"
 
 #: ../src/help/applet-composite.c:160
 msgid "Don't ask me any more"
@@ -1450,13 +1462,15 @@
 
 #: ../data/messages:55
 msgid "Launching an application several times"
-msgstr ""
+msgstr "Viacnásobné spustenie aplikácie"
 
 #: ../data/messages:57
 msgid ""
 "You can launch an application several times by SHIFT+clicking on its icon "
 "(or from the menu)."
 msgstr ""
+"Aplikáciu môžete viacnásobne spustiť podržaním SHIFT + kliknutím na ikonu "
+"(alebo v menu)."
 
 #: ../data/messages:59
 msgid "Switching between the windows of a same application"
@@ -1470,7 +1484,7 @@
 
 #: ../data/messages:63
 msgid "Grouping windows of a given application"
-msgstr ""
+msgstr "Zoskupenie okien danej aplikácie"
 
 #: ../data/messages:65
 msgid ""
@@ -1497,6 +1511,8 @@
 "You need to run Compiz, and enable the \"Window Preview\" plug-in in Compiz. "
 "Install \"ccsm\" to be able to configure Compiz."
 msgstr ""
+"Je potrebné spustiť Compiz a povoliť rozšírenie \"náhľad okna\" v Compize. "
+"Nainštalujte \"ccsm\", aby ste nastavili Compiz."
 
 #: ../data/messages:75 ../data/messages:185 ../data/messages:205
 #: ../data/messages:243 ../data/messages:285 ../data/messages:289
@@ -1557,7 +1573,7 @@
 
 #: ../data/messages:95
 msgid "Moving desklets"
-msgstr ""
+msgstr "Premiestnenie deskletov"
 
 #: ../data/messages:97
 msgid ""
@@ -1567,10 +1583,14 @@
 "If you don't want to move it any more, you can lock its position by right-"
 "clicking on it -> \"lock position\". To unlock it, de-select this option."
 msgstr ""
+"Desklety môžete premiestňovať jednoducho myšou.\n"
+"Môžete nimi otáčať malými šípkami navrchu a na ľavej strane.\n"
+"Ak nechcete nimi pohybovať, uzamknite pozíciu pravým kliknutím -> \"lock "
+"position\". Odomknete odkliknutím tohto nastavenia."
 
 #: ../data/messages:99
 msgid "Placing desklets"
-msgstr ""
+msgstr "Umiestnenie deskletov"
 
 #: ../data/messages:101
 msgid ""
@@ -1585,7 +1605,7 @@
 
 #: ../data/messages:103
 msgid "Changing the desklets decorations"
-msgstr ""
+msgstr "Zmena ozdobenia deskletov"
 
 #: ../data/messages:105
 msgid ""
@@ -1593,14 +1613,16 @@
 "applet, go to Desklet, and select the decoration you want (you can provide "
 "your own one)."
 msgstr ""
+"Desklety môžu byť ozdobené.  Pre zmenu otvorte nastavenie apletu, chodte do "
+"Deskletu a vyberte ozdobu akú chcete (môžete použiť aj vlastnú)"
 
 #: ../data/messages:107
 msgid "Useful Features"
-msgstr ""
+msgstr "Užitočné funkcie"
 
 #: ../data/messages:109
 msgid "Having a calendar with tasks"
-msgstr ""
+msgstr "Kalendár s plánovaním úloh"
 
 #: ../data/messages:111
 msgid ""
@@ -1614,7 +1636,7 @@
 
 #: ../data/messages:113
 msgid "Having a list of all windows"
-msgstr ""
+msgstr "Zoznam všetkých okien"
 
 #: ../data/messages:115
 msgid ""
@@ -1628,7 +1650,7 @@
 
 #: ../data/messages:117
 msgid "Showing all the desktops"
-msgstr ""
+msgstr "Zobraziť všetky plochy"
 
 #: ../data/messages:119
 msgid ""
@@ -1639,17 +1661,19 @@
 
 #: ../data/messages:121
 msgid "Changing the screen resolution"
-msgstr ""
+msgstr "Zmeniť rozlíšenie obrazovky"
 
 #: ../data/messages:123
 msgid ""
 "Activate the Show-Desktop applet.\n"
 "Right-click on it -> \"change resolution\" -> select the one you want."
 msgstr ""
+"Aktivovať aplet Zobraziť Plochu.\n"
+"Pravé kliknutie -> \"zmeniť rozlíšenie\" -> a vyberte také ktoré chcete."
 
 #: ../data/messages:125
 msgid "Locking your session"
-msgstr ""
+msgstr "Zamknúť vaše sedenie"
 
 #: ../data/messages:127
 msgid ""
@@ -1660,7 +1684,7 @@
 
 #: ../data/messages:129
 msgid "Quick-launching a program from keyboard (replacing ALT+F2)"
-msgstr ""
+msgstr "Rýchle spustenie programu (nahrádza ALT+F2)"
 
 #: ../data/messages:131
 msgid ""
@@ -1673,7 +1697,7 @@
 
 #: ../data/messages:133
 msgid "Turning Composite OFF during games"
-msgstr ""
+msgstr "Vypnúť kompozitné efekty počas hier"
 
 #: ../data/messages:135
 msgid ""
@@ -1682,10 +1706,13 @@
 "smooth.\n"
 "Clicking again on it will enable the Composite."
 msgstr ""
+"Aktivácia apletu kompozitného správcu.\n"
+"Kliknutím na neho zakáže kompozíciu, čo spôsobí, že hry pôjdu hladšie.\n"
+"Kliknutím na neho opäť umožní kompozíciu."
 
 #: ../data/messages:137
 msgid "Seeing the hourly weather forecast"
-msgstr ""
+msgstr "Pohľad na hodinovú predpoveď počasia"
 
 #: ../data/messages:139
 msgid ""
@@ -1699,7 +1726,7 @@
 
 #: ../data/messages:141
 msgid "Adding a file or a web page into the dock"
-msgstr ""
+msgstr "Pridanie súboru alebo webstránky do panelu"
 
 #: ../data/messages:143
 msgid ""
@@ -1713,7 +1740,7 @@
 
 #: ../data/messages:145
 msgid "Importing a folder into the dock"
-msgstr ""
+msgstr "Importovanie priečinka do panela"
 
 #: ../data/messages:147
 msgid ""
@@ -1724,7 +1751,7 @@
 
 #: ../data/messages:149
 msgid "Accessing the recent events"
-msgstr ""
+msgstr "Prístup k nedávnym udalostiam"
 
 #: ../data/messages:151
 msgid ""
@@ -1738,7 +1765,7 @@
 
 #: ../data/messages:153
 msgid "Quickly opening a recent file with a launcher"
-msgstr ""
+msgstr "Rýchle otvorenie nedávno použitého súboru spúšťačom"
 
 #: ../data/messages:155
 msgid ""
@@ -1751,7 +1778,7 @@
 
 #: ../data/messages:157
 msgid "Accessing disks"
-msgstr ""
+msgstr "Prístup k diskom"
 
 #: ../data/messages:159
 msgid ""
@@ -1763,7 +1790,7 @@
 
 #: ../data/messages:161
 msgid "Accessing folder bookmarks"
-msgstr ""
+msgstr "Prístup k záložkám priečinkov"
 
 #: ../data/messages:163
 msgid ""
@@ -1776,7 +1803,7 @@
 
 #: ../data/messages:165
 msgid "Having multiple instances of an applet"
-msgstr ""
+msgstr "Viac inštancií apletu"
 
 #: ../data/messages:167
 msgid ""
@@ -1790,7 +1817,7 @@
 
 #: ../data/messages:169
 msgid "Adding / removing a desktop"
-msgstr ""
+msgstr "Pridanie / odstránenie plochy"
 
 #: ../data/messages:171
 msgid ""
@@ -1798,10 +1825,14 @@
 "Right-click on it -> \"add a desktop\" or \"remove this desktop\".\n"
 "You can even name each of them."
 msgstr ""
+"Aktivácia apletu prepínač.\n"
+"Kliknutím pravým tlačidlom myši na neho -> \"Pridať plochu\" alebo "
+"\"odstrániť túto plochu\".\n"
+"Každú z nich si môžete pomenovať inak."
 
 #: ../data/messages:173
 msgid "Controling the sound volume"
-msgstr ""
+msgstr "Ovládanie hlasitosti"
 
 #: ../data/messages:175
 msgid ""
@@ -1813,7 +1844,7 @@
 
 #: ../data/messages:177
 msgid "Controling the screen brightness"
-msgstr ""
+msgstr "Ovládanie jasu obrazovky"
 
 #: ../data/messages:179
 msgid ""
@@ -1824,7 +1855,7 @@
 
 #: ../data/messages:181
 msgid "Removing completely the gnome-panel"
-msgstr ""
+msgstr "Úplne odstrániť gnome panel"
 
 #: ../data/messages:183
 msgid ""
@@ -1834,12 +1865,19 @@
 "Then restart your session : the gnome-panel has not been started, and the "
 "dock has been started (if not, you can add it to the startup programs)."
 msgstr ""
+"Otvorte gconf-editor, upravte kľúč "
+"/desktop/gnome/sesion/required_components/panel, a nahradte jeho obsah s "
+"\"cairo-dock\".\n"
+"Reštartujte sedenie: gnome-panel sa nespustí, a panel bude spustený (ak nie, "
+"pridajte do programov po spustení)."
 
 #: ../data/messages:187
 msgid ""
 "If you are on Gnome, you can click on this button in order to automatically "
 "modify this key:"
 msgstr ""
+"Ak používate Gnome, kliknutím na toto tlačítko automaticky upravíte tento "
+"kľúč:"
 
 #: ../data/messages:189
 msgid "Troubleshooting"
@@ -1896,6 +1934,7 @@
 "If you're on Gnome with Metacity (without Compiz), you can click on this "
 "button:"
 msgstr ""
+"Ak používate Gnome s metacity (bez Compizu), môžete kliknúť na toto tlačítko:"
 
 #: ../data/messages:209
 msgid "My machine is too old to run a composite manager."
@@ -2037,11 +2076,11 @@
 
 #: ../data/messages:245
 msgid "If you're on Gnome you can click on this button:"
-msgstr ""
+msgstr "Ak používate Gnome môžete kliknúť na toto tlačítko:"
 
 #: ../data/messages:247
 msgid "The Project"
-msgstr ""
+msgstr "Projekt"
 
 #: ../data/messages:249
 msgid "Join the project!"
@@ -2066,7 +2105,7 @@
 
 #: ../data/messages:255
 msgid "Documentation"
-msgstr ""
+msgstr "Dokumentácia"
 
 #: ../data/messages:257
 msgid ""
@@ -2088,10 +2127,13 @@
 "\n"
 "The Cairo-Dock Team"
 msgstr ""
+"\n"
+"\n"
+"Skupina Cairo-Dock"
 
 #: ../data/messages:263
 msgid "Websites"
-msgstr ""
+msgstr "Webové stránky"
 
 #: ../data/messages:265
 msgid "Problems? Suggestions? Just want to talk to us? Come on over!"
@@ -2103,7 +2145,7 @@
 
 #: ../data/messages:273
 msgid "More applets available online!"
-msgstr ""
+msgstr "Viac apletov je k dispozícii online!"
 
 #: ../data/messages:275
 msgid "Cairo-Dock-Plug-ins-Extras"
@@ -2111,7 +2153,7 @@
 
 #: ../data/messages:277
 msgid "Repositories"
-msgstr ""
+msgstr "Repozitáre"
 
 #: ../data/messages:279
 msgid ""
@@ -2122,11 +2164,11 @@
 
 #: ../data/messages:281
 msgid "Debian/Ubuntu"
-msgstr ""
+msgstr "Debian/Ubuntu"
 
 #: ../data/messages:283
 msgid "Ubuntu"
-msgstr ""
+msgstr "Ubuntu"
 
 #: ../data/messages:287
 msgid ""
@@ -2135,6 +2177,10 @@
 " After that, you can launch your update manager in order to install the "
 "latest stable version."
 msgstr ""
+"Ak používate Ubuntu, môžete pridať náš 'stabilný' zdroj softvéru kliknutím "
+"na toto tlačítko:\n"
+" Potom, môžete spustiť Správcu Aktualizácií pre inštaláciu najnovšej "
+"stabilnej verzie."
 
 #: ../data/messages:291
 msgid ""
@@ -2143,10 +2189,14 @@
 " After that, you can launch your update manager in order to install the "
 "latest weekly version."
 msgstr ""
+"Ak používate Ubuntu, môžete pridať náš 'týždenný' zdroj softvéru kliknutím "
+"na toto tlačítko:\n"
+" Potom, môžete spustiť Správcu Aktualizácií pre inštaláciu najnovšej "
+"týždennej verzie."
 
 #: ../data/messages:293
 msgid "Debian"
-msgstr ""
+msgstr "Debian"
 
 #: ../data/messages:297
 msgid ""
@@ -2155,6 +2205,10 @@
 " After that, you can purge all 'cairo-dock*' packages, update the your "
 "system and reinstall 'cairo-dock' package."
 msgstr ""
+"Ak používate Debian stable, môžete pridať náš 'stabilný' zdroj softvéru "
+"kliknutím na toto tlačítko:\n"
+" Potom, môžete môžete vymazať všetky 'cairo-dock *' balíčky, aktualizujte "
+"svoj ​​systém a preinštalujte cairo-dock."
 
 #: ../data/messages:301
 msgid ""
@@ -2163,38 +2217,42 @@
 " After that, you can purge all 'cairo-dock*' packages, update the your "
 "system and reinstall 'cairo-dock' package."
 msgstr ""
+"Ak používate Debian Unstable, môžete pridať náš 'stabilný' zdroj softvéru "
+"kliknutím na toto tlačítko:\n"
+" Potom, môžete môžete vymazať všetky 'cairo-dock *' balíčky, aktualizujte "
+"svoj ​​systém a preinštalujte cairo-dock."
 
 #: ../data/messages:303 ../data/messages:305
 msgid "Icon"
-msgstr ""
+msgstr "Ikona"
 
 #: ../data/messages:307
 msgid "Name of the dock it belongs to:"
-msgstr ""
+msgstr "Názov panela ku ktorému patrí :"
 
 #: ../data/messages:309
 msgid "Name of the icon as it will appear in its caption in the dock:"
-msgstr ""
+msgstr "Názov ikony, ktorá sa objaví na štítku v paneli :"
 
 #: ../data/messages:311
 msgid "Leave empty to use the default one."
-msgstr ""
+msgstr "Ponechať prázdne a použiť predvolené."
 
 #: ../data/messages:313
 msgid "Image filename:"
-msgstr ""
+msgstr "Názov súboru obrázku :"
 
 #: ../data/messages:315
 msgid "Set to 0 to use the default applet size"
-msgstr ""
+msgstr "Nastavte na 0 pre použitie predvolenej veľkosti appletu"
 
 #: ../data/messages:317
 msgid "Desired icon size for this applet"
-msgstr ""
+msgstr "Požadovaná veľkosť ikony pre tento applet"
 
 #: ../data/messages:319
 msgid "Applet's Handbook"
-msgstr ""
+msgstr "Príručka apletov"
 
 #: ../data/messages:321
 msgid "Desklet"
@@ -2205,50 +2263,60 @@
 "If locked, the desklet cannot be moved by simply dragging it with the left "
 "mouse button. It can still be moved with ALT + left-click."
 msgstr ""
+"Ak je je zamknutý, nedá sa deskletom pohybovať ťahaním ľavým tlačítkom myši. "
+"Samozrejme s ním stále môžete pohybovať kombináciou ALT + ľavé tlačítko myši."
 
 #: ../data/messages:327
 msgid "Lock position?"
-msgstr ""
+msgstr "Zamknúť pozíciu ?"
 
 #: ../data/messages:329
 msgid ""
 "Depending on your WindowManager, you may be able to resize this with ALT + "
 "middle-click or ALT + left-click."
 msgstr ""
+"V závislosti na manažérovi vašich okien, môžete zmeniť jeho veľkosť s ALT + "
+"stredné_klik alebo  ALT + ľavé_klik napr."
 
 #: ../data/messages:331
 msgid "Desklet dimensions (width x height):"
-msgstr ""
+msgstr "Rozmery deskletov (šírka x výška) :"
 
 #: ../data/messages:333
 msgid ""
 "Depending on your WindowManager, you may be able to move this with ALT + "
 "left-click.. Negative values are counted from the right/bottom of the screen"
 msgstr ""
+"V závislosti na vašom správcovi okien, budete môcť pohybovať pomocou ALT + "
+"ľavé tlačidlo.. Záporné hodnoty sú počítané z pravej/dolnej časti obrazovky"
 
 #: ../data/messages:335
 msgid "Desklet position (x, y):"
-msgstr ""
+msgstr "Pozícia deskletu (x ; y) :"
 
 #: ../data/messages:337
 msgid ""
 "You can quickly rotate the desklet with the mouse, by dragging the little "
 "buttons on its left and top sides."
 msgstr ""
+"Môžete rýchlo otočiť deskletom s myšou, ťahaním malého tlačidla na ľavej a "
+"hornej strane."
 
 #: ../data/messages:339
 msgid "Rotation:"
-msgstr ""
+msgstr "Otočenie:"
 
 #: ../data/messages:343
 msgid "Is detached from the dock"
-msgstr ""
+msgstr "Je oddelený od panelu ?"
 
 #: ../data/messages:345
 msgid ""
 "for CompizFusion's \"widget layer\", set behaviour in Compiz to: "
 "(class=Cairo-dock & type=Utility)"
 msgstr ""
+"pre CompizFusion's \"widget layer\", nastaviť správanie Compiz na: "
+"(class=Cairo-dock & type=utility)"
 
 #: ../data/messages:347 ../data/messages:413 ../data/messages:451
 #: ../data/messages:583 ../data/messages:649 ../data/messages:1303
@@ -2257,15 +2325,15 @@
 
 #: ../data/messages:353
 msgid "Keep below"
-msgstr ""
+msgstr "Ponechať na pozadí"
 
 #: ../data/messages:355
 msgid "Keep on widget layer"
-msgstr ""
+msgstr "Ponechať na vrstve widgetu"
 
 #: ../data/messages:359
 msgid "Should be visible on all desktops?"
-msgstr ""
+msgstr "Má byť viditeľný na všetkých plochách ?"
 
 #: ../data/messages:361 ../data/messages:991
 msgid "Decorations"
@@ -2274,69 +2342,74 @@
 #: ../data/messages:363
 msgid "Choose 'Custom decorations' to define your own decorations below."
 msgstr ""
+"Vyberte 'vlastné dekorácie' pre možnosť definovať si vlastné ozdoby nižšie."
 
 #: ../data/messages:365
 msgid "Choose a decoration theme for this desklet:"
-msgstr ""
+msgstr "Vyberte ozdobu témy pre tento desklet :"
 
 #: ../data/messages:367
 msgid ""
 "Image to be displayed below drawings, e.g. a frame. Leave empty for no image."
 msgstr ""
+"Je to obrázok, ktorý se zobrazí pod kresbami, ako napríklad rámček. Ak "
+"žiadny nechcete, nechajte nevyplnené."
 
 #: ../data/messages:369
 msgid "Background image:"
-msgstr ""
+msgstr "Obrázok pozadia:"
 
 #: ../data/messages:371
 msgid "Background transparency:"
-msgstr ""
+msgstr "Priehľadnosť pozadia:"
 
 #: ../data/messages:373
 msgid "in pixels. Use this to adjust the left position of drawings."
-msgstr ""
+msgstr "v pixeloch. Použite pre nastavenie ľavej polohy vykreslenia."
 
 #: ../data/messages:375
 msgid "Left offset:"
-msgstr ""
+msgstr "Odsadenie zľava :"
 
 #: ../data/messages:377
 msgid "in pixels. Use this to adjust the top position of drawings."
-msgstr ""
+msgstr "v pixeloch. Použite pre nastavenie hornej polohy vykreslenia."
 
 #: ../data/messages:379
 msgid "Top offset:"
-msgstr ""
+msgstr "Odsadenie zhora :"
 
 #: ../data/messages:381
 msgid "in pixels. Use this to adjust the right position of drawings."
-msgstr ""
+msgstr "v pixeloch. Použite pre nastavenie pravej polohy vykreslenia."
 
 #: ../data/messages:383
 msgid "Right offset:"
-msgstr ""
+msgstr "Odsadenie vpravo :"
 
 #: ../data/messages:385
 msgid "in pixels. Use this to adjust the bottom position of drawings."
-msgstr ""
+msgstr "v pixeloch. Použite pre nastavenie dolnej polohy vykreslenia."
 
 #: ../data/messages:387
 msgid "Bottom offset:"
-msgstr ""
+msgstr "Odsadenie zdola"
 
 #: ../data/messages:389
 msgid ""
 "Image to be displayed above the drawings, e.g. a reflection. Leave empty for "
 "no image."
 msgstr ""
+"Je to obrázok, ktorý sa zobrazí nad kresbami, ako napríklad odraz. Ak žiadny "
+"nechcete, nevyplňujte."
 
 #: ../data/messages:391
 msgid "Foreground image:"
-msgstr ""
+msgstr "Obrázok popredia :"
 
 #: ../data/messages:393
 msgid "Foreground tansparency:"
-msgstr ""
+msgstr "Priehľadné popredie :"
 
 #: ../data/messages:395 ../data/messages:1267
 msgid "Behavior"
@@ -2461,35 +2534,35 @@
 
 #: ../data/messages:465
 msgid "Minimalistic"
-msgstr ""
+msgstr "Minimalistické"
 
 #: ../data/messages:467
 msgid "Integrated"
-msgstr ""
+msgstr "Integrované"
 
 #: ../data/messages:469
 msgid "Separated"
-msgstr ""
+msgstr "Oddelené"
 
 #: ../data/messages:471 ../data/messages:679
 msgid "Place new icons"
-msgstr ""
+msgstr "Umiestniť nové ikony"
 
 #: ../data/messages:473 ../data/messages:681
 msgid "At the beginning of the dock"
-msgstr ""
+msgstr "Na začiatku panela"
 
 #: ../data/messages:475 ../data/messages:683
 msgid "Before the launchers"
-msgstr ""
+msgstr "Pred spúšťačmi"
 
 #: ../data/messages:477 ../data/messages:685
 msgid "After the launchers"
-msgstr ""
+msgstr "Po spúšťačoch"
 
 #: ../data/messages:479 ../data/messages:687
 msgid "At the end of the dock"
-msgstr ""
+msgstr "Na konci panela"
 
 #: ../data/messages:481
 msgid "Icons' animations and effects"
@@ -2547,7 +2620,7 @@
 
 #: ../data/messages:517 ../data/messages:769
 msgid "Keyboard shortcuts currently available"
-msgstr ""
+msgstr "Aktuálne dostupné klávesové skratky"
 
 #: ../data/messages:519 ../data/messages:771
 msgid ""
@@ -2563,7 +2636,7 @@
 
 #: ../data/messages:523
 msgid "Add or remove any applet"
-msgstr ""
+msgstr "Pridať alebo odstrániť aplet"
 
 #: ../data/messages:525
 msgid ""
@@ -2662,7 +2735,7 @@
 
 #: ../data/messages:613
 msgid "The higher, the faster the dock will appear"
-msgstr ""
+msgstr "Čím vyššie, tým rýchlejšie sa panel objaví"
 
 #: ../data/messages:615
 msgid "Callback sensitivity:"
@@ -2670,11 +2743,11 @@
 
 #: ../data/messages:617
 msgid "high"
-msgstr ""
+msgstr "vysoká"
 
 #: ../data/messages:619
 msgid "low"
-msgstr ""
+msgstr "nízka"
 
 #: ../data/messages:621
 msgid "How to call the dock back:"
@@ -2881,7 +2954,7 @@
 
 #: ../data/messages:737
 msgid "Nothing"
-msgstr ""
+msgstr "Nič"
 
 #: ../data/messages:741
 msgid "Minimize"
@@ -2904,7 +2977,7 @@
 
 #: ../data/messages:751
 msgid "Only if your Window Manager supports it."
-msgstr ""
+msgstr "Iba ak to podporuje váš správca okien."
 
 #: ../data/messages:753
 msgid ""
@@ -3171,15 +3244,15 @@
 
 #: ../data/messages:907
 msgid "Background when hidden"
-msgstr ""
+msgstr "Pozadie pri skrytí"
 
 #: ../data/messages:909
 msgid "Several applets can be visible even when the dock is hidden"
-msgstr ""
+msgstr "Niektoré aplety môžu byť viditeľné aj ked je panel skrytý"
 
 #: ../data/messages:911
 msgid "Default background color when the dock is hidden"
-msgstr ""
+msgstr "Predvolené pozadie pri skrytí panela"
 
 #: ../data/messages:913 ../data/messages:1363
 msgid "Stretch the dock to always fill the screen"
@@ -3240,7 +3313,7 @@
 
 #: ../data/messages:951
 msgid "larger"
-msgstr ""
+msgstr "väčšie"
 
 #: ../data/messages:953
 msgid "Dialogs"
@@ -3425,7 +3498,7 @@
 
 #: ../data/messages:1065
 msgid "Icons' size at rest (width x height) :"
-msgstr ""
+msgstr "Veľkosť ikon v pokoji (šírka x výška):"
 
 #: ../data/messages:1067
 msgid "Zoom effect"
@@ -3704,7 +3777,7 @@
 
 #: ../data/messages:1197
 msgid "Draw an emblem"
-msgstr ""
+msgstr "Nakresliť znak"
 
 #: ../data/messages:1199
 msgid "Draw the sub-dock's icons as a stack"
@@ -3824,19 +3897,19 @@
 
 #: ../data/messages:1257
 msgid "Quick-info are short information drawn on the icons."
-msgstr ""
+msgstr "Krátke info je krátka informácia vykreslená nad ikonami."
 
 #: ../data/messages:1259
 msgid "Quick-info"
-msgstr ""
+msgstr "Krátke-info"
 
 #: ../data/messages:1261
 msgid "Use the same look as the labels?"
-msgstr ""
+msgstr "Použiť rovnaký vzhľad ako štítky?"
 
 #: ../data/messages:1265
 msgid "Background color:"
-msgstr ""
+msgstr "Farba pozadia:"
 
 #: ../data/messages:1295
 msgid "starting from 0"
@@ -3844,15 +3917,15 @@
 
 #: ../data/messages:1299
 msgid "Visibility of the dock"
-msgstr ""
+msgstr "Viditeľnosť panela"
 
 #: ../data/messages:1323 ../data/messages:1347
 msgid "Same as main dock"
-msgstr ""
+msgstr "Rovnako ako hlavný panel"
 
 #: ../data/messages:1325
 msgid "Tiny"
-msgstr ""
+msgstr "Drobné"
 
 #: ../data/messages:1339
 msgid "Leave it empty to use the same view as the main dock."

=== modified file 'po/sl.po'
--- po/sl.po	2012-04-16 16:03:43 +0000
+++ po/sl.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:37+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:54+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Slovenian <sl@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:40+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: sl\n"
 

=== modified file 'po/sr.po'
--- po/sr.po	2012-04-16 16:03:43 +0000
+++ po/sr.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:07+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:51+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Serbian <sr@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:39+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: sr\n"
 

=== modified file 'po/sv.po'
--- po/sv.po	2012-04-16 16:03:43 +0000
+++ po/sv.po	2012-06-19 14:00:30 +0000
@@ -8,14 +8,14 @@
 msgstr ""
 "Project-Id-Version: 1.6.2\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
 "PO-Revision-Date: 2012-03-21 02:58+0000\n"
 "Last-Translator: Daniel Nylander <yeager@xxxxxxxxxx>\n"
 "Language-Team: Swedish\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:40+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "X-Poedit-Country: SWEDEN\n"
 "Language: \n"

=== modified file 'po/tr.po'
--- po/tr.po	2012-04-16 16:03:43 +0000
+++ po/tr.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:39+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:53+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Turkish <tr@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:40+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: tr\n"
 

=== modified file 'po/uk.po'
--- po/uk.po	2012-04-16 16:03:43 +0000
+++ po/uk.po	2012-06-19 14:00:30 +0000
@@ -6,15 +6,15 @@
 msgstr ""
 "Project-Id-Version: Cairo-Dock II\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-21 02:56+0000\n"
-"Last-Translator: Maks Mokriev <mcree@xxxxxxx>\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-06-14 06:32+0000\n"
+"Last-Translator: ma$terok <Unknown>\n"
 "Language-Team: Ukrainian <kde-i18n-doc@xxxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:22+0000\n"
-"X-Generator: Launchpad (build 15070)\n"
+"X-Launchpad-Export-Date: 2012-06-15 04:40+0000\n"
+"X-Generator: Launchpad (build 15414)\n"
 "X-Poedit-Country: Ukraine\n"
 "Language: uk\n"
 "X-Poedit-Language: Ukrainian\n"
@@ -392,7 +392,7 @@
 
 #: ../src/cairo-dock-menu.c:261
 msgid "Developers"
-msgstr ""
+msgstr "Розробники"
 
 #: ../src/cairo-dock-menu.c:262
 msgid "Main developer and project leader"
@@ -408,7 +408,7 @@
 
 #: ../src/cairo-dock-menu.c:280
 msgid "Website"
-msgstr ""
+msgstr "Сайт"
 
 #: ../src/cairo-dock-menu.c:281
 msgid "Beta-testing / Suggestions / Forum animation"
@@ -416,13 +416,16 @@
 
 #: ../src/cairo-dock-menu.c:282
 msgid "Translators for this language"
-msgstr ""
+msgstr "Перекладачі"
 
 #: ../src/cairo-dock-menu.c:283
 msgid "translator-credits"
 msgstr ""
 "Launchpad Contributions:\n"
-"  Maks Mokriev https://launchpad.net/~mcree";
+"  Anton Sukhonosenko https://launchpad.net/~zoreslav\n";
+"  Evhen https://launchpad.net/~d3dxdll\n";
+"  Maks Mokriev https://launchpad.net/~mcree\n";
+"  ma$terok https://launchpad.net/~m-shein";
 
 #: ../src/cairo-dock-menu.c:285
 msgid "Support"
@@ -436,7 +439,7 @@
 
 #: ../src/cairo-dock-menu.c:317
 msgid "How to help us?"
-msgstr ""
+msgstr "Як нам допомогти?"
 
 #: ../src/cairo-dock-menu.c:318
 msgid "Don't hesitate to join the project, we need you ;)"
@@ -444,7 +447,7 @@
 
 #: ../src/cairo-dock-menu.c:319
 msgid "Former contributors"
-msgstr ""
+msgstr "Попередні розробники"
 
 #: ../src/cairo-dock-menu.c:320
 msgid "For a complete list, please have a look to BZR logs"
@@ -460,7 +463,7 @@
 
 #: ../src/cairo-dock-menu.c:324
 msgid "Thanks"
-msgstr ""
+msgstr "Подяки"
 
 #: ../src/cairo-dock-menu.c:401
 msgid "Quit Cairo-Dock?"
@@ -630,11 +633,11 @@
 
 #: ../src/cairo-dock-menu.c:1018 ../src/cairo-dock-menu.c:1039
 msgid "Edit"
-msgstr ""
+msgstr "Редагувати"
 
 #: ../src/cairo-dock-menu.c:1020 ../src/cairo-dock-menu.c:1046
 msgid "Remove"
-msgstr ""
+msgstr "Видалити"
 
 #: ../src/cairo-dock-menu.c:1021
 msgid ""
@@ -657,7 +660,7 @@
 
 #: ../src/cairo-dock-menu.c:1043
 msgid "Detach"
-msgstr ""
+msgstr "Від’єднати"
 
 #: ../src/cairo-dock-menu.c:1043
 msgid "Return to the dock"
@@ -665,7 +668,7 @@
 
 #: ../src/cairo-dock-menu.c:1050
 msgid "Duplicate"
-msgstr ""
+msgstr "Дублювати"
 
 #: ../src/cairo-dock-menu.c:1065
 msgid "Applet's handbook"

=== modified file 'po/vi.po'
--- po/vi.po	2012-04-16 16:03:43 +0000
+++ po/vi.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
 "PO-Revision-Date: 2012-02-12 03:51+0000\n"
 "Last-Translator: Launchpad Translations Administrators <Unknown>\n"
 "Language-Team: Vietnamese <vi@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:23+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:40+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: vi\n"
 

=== modified file 'po/zh_CN.po'
--- po/zh_CN.po	2012-04-16 16:03:43 +0000
+++ po/zh_CN.po	2012-06-19 14:00:30 +0000
@@ -6,15 +6,15 @@
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:38+0000\n"
-"Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-06-10 09:22+0000\n"
+"Last-Translator: XiaoJSoft <whs_jwc@xxxxxxx>\n"
 "Language-Team: LANGUAGE <LL@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:23+0000\n"
-"X-Generator: Launchpad (build 15070)\n"
+"X-Launchpad-Export-Date: 2012-06-11 04:33+0000\n"
+"X-Generator: Launchpad (build 15376)\n"
 "Language: \n"
 
 #: ../src/cairo-dock-gui-commons.c:221
@@ -69,23 +69,23 @@
 
 #: ../src/cairo-dock-gui-commons.c:575
 msgid "Press the shortkey"
-msgstr ""
+msgstr "按下快捷键"
 
 #: ../src/cairo-dock-gui-commons.c:594
 msgid "Change the shortkey"
-msgstr ""
+msgstr "更改快捷键"
 
 #: ../src/cairo-dock-gui-commons.c:681
 msgid "Origin"
-msgstr ""
+msgstr "来源"
 
 #: ../src/cairo-dock-gui-commons.c:686
 msgid "Action"
-msgstr ""
+msgstr "动作"
 
 #: ../src/cairo-dock-gui-commons.c:690
 msgid "Shortkey"
-msgstr ""
+msgstr "快捷键"
 
 #: ../src/cairo-dock-gui-items.c:242
 msgid ""
@@ -98,7 +98,7 @@
 
 #: ../src/cairo-dock-gui-items.c:878
 msgid "Remove this item"
-msgstr ""
+msgstr "移除此项"
 
 #: ../src/cairo-dock-gui-main.c:129 ../data/messages:665
 msgid "Behaviour"
@@ -152,11 +152,11 @@
 
 #: ../src/cairo-dock-gui-main.c:1501
 msgid "Define all the keyboard shortcuts currently available."
-msgstr ""
+msgstr "定义所有当前可设置的键盘快捷键。"
 
 #: ../src/cairo-dock-gui-main.c:1502 ../data/messages:515 ../data/messages:767
 msgid "Shortkeys"
-msgstr ""
+msgstr "快捷键"
 
 #: ../src/cairo-dock-gui-main.c:1508
 msgid "All of the parameters you will never want to tweak."
@@ -383,19 +383,19 @@
 
 #: ../src/cairo-dock-menu.c:260
 msgid "Here is a list of the current developers and contributors"
-msgstr ""
+msgstr "当前开发者与贡献者名单"
 
 #: ../src/cairo-dock-menu.c:261
 msgid "Developers"
-msgstr ""
+msgstr "开发者"
 
 #: ../src/cairo-dock-menu.c:262
 msgid "Main developer and project leader"
-msgstr ""
+msgstr "主要开发者与项目领导人"
 
 #: ../src/cairo-dock-menu.c:263
 msgid "Contributors / Hackers"
-msgstr ""
+msgstr "贡献者/黑客"
 
 #: ../src/cairo-dock-menu.c:265
 msgid "Development"
@@ -403,23 +403,33 @@
 
 #: ../src/cairo-dock-menu.c:280
 msgid "Website"
-msgstr ""
+msgstr "网站"
 
 #: ../src/cairo-dock-menu.c:281
 msgid "Beta-testing / Suggestions / Forum animation"
-msgstr ""
+msgstr "Beta 测试/建议/论坛"
 
 #: ../src/cairo-dock-menu.c:282
 msgid "Translators for this language"
-msgstr ""
+msgstr "该语言翻译人员"
 
 #: ../src/cairo-dock-menu.c:283
 msgid "translator-credits"
 msgstr ""
 "Launchpad Contributions:\n"
+"  Cairo-Dock Team https://launchpad.net/~cairo-dock-team\n";
+"  Eleanor Chen https://launchpad.net/~chenyueg\n";
 "  Fabounet https://launchpad.net/~fabounet03\n";
 "  GrayWaLL https://launchpad.net/~graywall\n";
+"  Homer Xing https://launchpad.net/~homer-xing\n";
+"  Matthieu Baerts https://launchpad.net/~matttbe\n";
+"  Rossi Liu https://launchpad.net/~liueigi\n";
+"  Saturn https://launchpad.net/~saturntoad\n";
+"  Wang Dianjin https://launchpad.net/~tuhaihe\n";
+"  Wylmer Wang https://launchpad.net/~wantinghard\n";
+"  XiaoJSoft https://launchpad.net/~whs-jwc\n";
 "  Yann SLADEK https://launchpad.net/~yann-sladek\n";
+"  efree https://launchpad.net/~efree\n";
 "  guofengzone https://launchpad.net/~guofengzone\n";
 "  jarryson https://launchpad.net/~jarryson\n";
 "  leng https://launchpad.net/~lengjingxu\n";
@@ -436,26 +446,28 @@
 "Thanks to all people that help us to improve the Cairo-Dock project.\n"
 "Thanks to all current, former and future contributors."
 msgstr ""
+"感谢所有帮助改进 Cairo-Dock 项目的人们。\n"
+"感谢所有现在、过去和未来的贡献者们。"
 
 #: ../src/cairo-dock-menu.c:317
 msgid "How to help us?"
-msgstr ""
+msgstr "如何帮助我们?"
 
 #: ../src/cairo-dock-menu.c:318
 msgid "Don't hesitate to join the project, we need you ;)"
-msgstr ""
+msgstr "加入项目别犹豫,我们需要您 :)"
 
 #: ../src/cairo-dock-menu.c:319
 msgid "Former contributors"
-msgstr ""
+msgstr "先前贡献者"
 
 #: ../src/cairo-dock-menu.c:320
 msgid "For a complete list, please have a look to BZR logs"
-msgstr ""
+msgstr "完整列表,请前往查看 BZR 记录"
 
 #: ../src/cairo-dock-menu.c:321
 msgid "Users of our forum"
-msgstr ""
+msgstr "论坛用户"
 
 #: ../src/cairo-dock-menu.c:322
 msgid "Artwork"
@@ -463,7 +475,7 @@
 
 #: ../src/cairo-dock-menu.c:324
 msgid "Thanks"
-msgstr ""
+msgstr "感谢"
 
 #: ../src/cairo-dock-menu.c:401
 msgid "Quit Cairo-Dock?"
@@ -583,7 +595,7 @@
 
 #: ../src/cairo-dock-menu.c:898
 msgid "Lock icons position"
-msgstr ""
+msgstr "锁定图标位置"
 
 #: ../src/cairo-dock-menu.c:902
 msgid "This will (un)lock the position of the icons."
@@ -629,14 +641,16 @@
 "It's not advised to quit the dock but you can press Shift to unlock this "
 "menu entry."
 msgstr ""
+"您正在使用 Cairo-Dock 会话!\n"
+"退出本程序并不是明智之举,但您可以按下 Shift 解锁该菜单项。"
 
 #: ../src/cairo-dock-menu.c:1018 ../src/cairo-dock-menu.c:1039
 msgid "Edit"
-msgstr ""
+msgstr "编辑"
 
 #: ../src/cairo-dock-menu.c:1020 ../src/cairo-dock-menu.c:1046
 msgid "Remove"
-msgstr ""
+msgstr "移除"
 
 #: ../src/cairo-dock-menu.c:1021
 msgid ""
@@ -658,7 +672,7 @@
 
 #: ../src/cairo-dock-menu.c:1043
 msgid "Detach"
-msgstr ""
+msgstr "分离"
 
 #: ../src/cairo-dock-menu.c:1043
 msgid "Return to the dock"
@@ -666,7 +680,7 @@
 
 #: ../src/cairo-dock-menu.c:1050
 msgid "Duplicate"
-msgstr ""
+msgstr "复制"
 
 #: ../src/cairo-dock-menu.c:1065
 msgid "Applet's handbook"
@@ -674,7 +688,7 @@
 
 #: ../src/cairo-dock-menu.c:1110
 msgid "Pick up an image"
-msgstr ""
+msgstr "选取一张图片"
 
 #: ../src/cairo-dock-menu.c:1341
 #, c-format
@@ -848,7 +862,7 @@
 
 #: ../src/cairo-dock.c:334
 msgid "Ask again on startup which backend to use."
-msgstr ""
+msgstr "再次询问启动时使用哪个后端。"
 
 #: ../src/cairo-dock.c:337
 msgid "Force the dock to consider this environnement - use it with care."
@@ -1013,7 +1027,7 @@
 #: ../src/gldit/cairo-dock-dock-manager.c:1656
 #: ../src/gldit/cairo-dock-dock-manager.c:1757
 msgid "Pop up the main dock"
-msgstr ""
+msgstr "弹出主 dock"
 
 #: ../src/gldit/cairo-dock-gui-factory.c:243
 #, c-format
@@ -1050,11 +1064,11 @@
 
 #: ../src/gldit/cairo-dock-gui-factory.c:724
 msgid "Pick up a file"
-msgstr ""
+msgstr "选取文件"
 
 #: ../src/gldit/cairo-dock-gui-factory.c:724
 msgid "Pick up a directory"
-msgstr ""
+msgstr "选取目录"
 
 #: ../src/gldit/cairo-dock-gui-factory.c:984
 msgid "_Custom Icons_"
@@ -1133,6 +1147,8 @@
 "Could not access remote file %s. Maybe the server is down.\n"
 "Please retry later or contact us at glx-dock.org."
 msgstr ""
+"无法访问远程文件 %s。或许服务器当机。\n"
+"请重试或在 glx-dock.org 上联系我们。"
 
 #: ../src/gldit/cairo-dock-themes-manager.c:267
 #, c-format
@@ -1227,7 +1243,7 @@
 
 #: ../src/help/applet-tips-dialog.c:152
 msgid "Tips and Tricks"
-msgstr ""
+msgstr "提示与技巧"
 
 #: ../src/help/applet-tips-dialog.c:307
 msgid "Category"
@@ -1446,37 +1462,39 @@
 
 #: ../data/messages:51
 msgid "Minimizing / restauring a window"
-msgstr ""
+msgstr "最小化/恢复窗口"
 
 #: ../data/messages:53
 msgid ""
 "Clicking on its icon will bring the window on top.\n"
 "When the window has the focus, clicking on its icon will minimize the window."
 msgstr ""
+"点击它的图标将使窗口置顶。\n"
+"当窗口拥有焦点时,点击它的图标将最小化窗口。"
 
 #: ../data/messages:55
 msgid "Launching an application several times"
-msgstr ""
+msgstr "多次启动一个应用"
 
 #: ../data/messages:57
 msgid ""
 "You can launch an application several times by SHIFT+clicking on its icon "
 "(or from the menu)."
-msgstr ""
+msgstr "您可以通过 SHIFT+点击应用程序图标(或从菜单) 来多次启动一个应用。"
 
 #: ../data/messages:59
 msgid "Switching between the windows of a same application"
-msgstr ""
+msgstr "在相同应用窗口间切换"
 
 #: ../data/messages:61
 msgid ""
 "With your mouse, scroll up/down on one of the icons of the application. Each "
 "time you scroll, the next/previous window will be presented to you."
-msgstr ""
+msgstr "使用您的鼠标,向上/下滚动应用程序的图标。您每次滚动时,将显示下一个/上一个窗口。"
 
 #: ../data/messages:63
 msgid "Grouping windows of a given application"
-msgstr ""
+msgstr "给定应用程序的分组窗口"
 
 #: ../data/messages:65
 msgid ""
@@ -1485,24 +1503,26 @@
 "Clicking on the main icon will display all the windows of the application "
 "side-by-side (if your Window Manager is able to do that)."
 msgstr ""
+"当每个应用程序有多个窗口时,每个窗口的图标将出现在 dock 上;它们将在子 dock 中合成一组。\n"
+"点击主图标将并排显示应用程序的所有窗口(如果您的窗口管理器可以这样做)。"
 
 #: ../data/messages:67
 msgid "Setting a custom icon for an application"
-msgstr ""
+msgstr "设置应用程序的自定义图标"
 
 #: ../data/messages:69
 msgid "See \"Changing an icon's image\" in the \"Icons\" category."
-msgstr ""
+msgstr "在“图标”分类查看“更改图标图像”。"
 
 #: ../data/messages:71
 msgid "Showing windows preview over the icons"
-msgstr ""
+msgstr "鼠标移到图标上时显示窗口预览"
 
 #: ../data/messages:73
 msgid ""
 "You need to run Compiz, and enable the \"Window Preview\" plug-in in Compiz. "
 "Install \"ccsm\" to be able to configure Compiz."
-msgstr ""
+msgstr "您需要运行 Compiz,并启用 Compiz 中的“窗口预览”插件。安装“ccsm”可配置 Compiz。"
 
 #: ../data/messages:75 ../data/messages:185 ../data/messages:205
 #: ../data/messages:243 ../data/messages:285 ../data/messages:289
@@ -1516,11 +1536,11 @@
 
 #: ../data/messages:79
 msgid "Docks"
-msgstr ""
+msgstr "Dock"
 
 #: ../data/messages:81
 msgid "Positionning the dock on the screen"
-msgstr ""
+msgstr "在屏幕上定位 dock"
 
 #: ../data/messages:83
 msgid ""
@@ -1530,10 +1550,13 @@
 "In the case of a 2nd or 3rd dock, right-click -> Cairo-Dock -> set up this "
 "dock, and then select the position you want."
 msgstr ""
+"该 dock 可以被放置在屏幕的任何位置。\n"
+"考虑到主 dock,需 右击-> Cairo-Dock -> 配置,然后选择您希望的位置。\n"
+"考虑到第 2 个或第 3 个 dock,右击-> Cairo-Dock -> 设置本 dock,并选择您希望的位置。"
 
 #: ../data/messages:85
 msgid "Hiding the dock to use all the screen"
-msgstr ""
+msgstr "隐藏停靠栏以使用整个屏幕"
 
 #: ../data/messages:87
 msgid ""
@@ -1544,10 +1567,13 @@
 "In the case of a 2nd or 3rd dock, right-click -> Cairo-Dock -> set up this "
 "dock, and then select the visibility you want."
 msgstr ""
+"停靠栏可以隐藏自身为应用程序腾出屏幕空间,但是它也可以像面板一样一直保持可见。\n"
+"按如下的方式修改:右键 -> Cairo-Dock -> 配置,然后将你想要的选为可见(visibility)即可。\n"
+"对于第二个或者第三个停靠栏来说,可以点击右键 -> Cairo-Dock -> 设置此停靠栏,然后将你想要的选为可见即可。"
 
 #: ../data/messages:91
 msgid "Placing applets on your desktop"
-msgstr ""
+msgstr "防止插件到您的桌面"
 
 #: ../data/messages:93
 msgid ""
@@ -1586,7 +1612,7 @@
 
 #: ../data/messages:103
 msgid "Changing the desklets decorations"
-msgstr ""
+msgstr "正在更改桌面装饰"
 
 #: ../data/messages:105
 msgid ""
@@ -1597,7 +1623,7 @@
 
 #: ../data/messages:107
 msgid "Useful Features"
-msgstr ""
+msgstr "有用的功能"
 
 #: ../data/messages:109
 msgid "Having a calendar with tasks"
@@ -1629,7 +1655,7 @@
 
 #: ../data/messages:117
 msgid "Showing all the desktops"
-msgstr ""
+msgstr "显示所有桌面"
 
 #: ../data/messages:119
 msgid ""
@@ -1640,7 +1666,7 @@
 
 #: ../data/messages:121
 msgid "Changing the screen resolution"
-msgstr ""
+msgstr "更改屏幕分辨率"
 
 #: ../data/messages:123
 msgid ""
@@ -1650,7 +1676,7 @@
 
 #: ../data/messages:125
 msgid "Locking your session"
-msgstr ""
+msgstr "锁定您的会话"
 
 #: ../data/messages:127
 msgid ""
@@ -1674,7 +1700,7 @@
 
 #: ../data/messages:133
 msgid "Turning Composite OFF during games"
-msgstr ""
+msgstr "在游戏期间关闭组件"
 
 #: ../data/messages:135
 msgid ""
@@ -1686,7 +1712,7 @@
 
 #: ../data/messages:137
 msgid "Seeing the hourly weather forecast"
-msgstr ""
+msgstr "查看每小时的天气预报"
 
 #: ../data/messages:139
 msgid ""
@@ -1700,7 +1726,7 @@
 
 #: ../data/messages:141
 msgid "Adding a file or a web page into the dock"
-msgstr ""
+msgstr "添加文件或网页到 dock"
 
 #: ../data/messages:143
 msgid ""
@@ -1714,7 +1740,7 @@
 
 #: ../data/messages:145
 msgid "Importing a folder into the dock"
-msgstr ""
+msgstr "将文件夹导入到 dock"
 
 #: ../data/messages:147
 msgid ""
@@ -1725,7 +1751,7 @@
 
 #: ../data/messages:149
 msgid "Accessing the recent events"
-msgstr ""
+msgstr "访问最近事件"
 
 #: ../data/messages:151
 msgid ""
@@ -1739,7 +1765,7 @@
 
 #: ../data/messages:153
 msgid "Quickly opening a recent file with a launcher"
-msgstr ""
+msgstr "使用启动器快速打开一个最近文件"
 
 #: ../data/messages:155
 msgid ""
@@ -1752,7 +1778,7 @@
 
 #: ../data/messages:157
 msgid "Accessing disks"
-msgstr ""
+msgstr "访问磁盘"
 
 #: ../data/messages:159
 msgid ""
@@ -1764,7 +1790,7 @@
 
 #: ../data/messages:161
 msgid "Accessing folder bookmarks"
-msgstr ""
+msgstr "访问文件夹书签"
 
 #: ../data/messages:163
 msgid ""
@@ -1791,7 +1817,7 @@
 
 #: ../data/messages:169
 msgid "Adding / removing a desktop"
-msgstr ""
+msgstr "添加/移除一个桌面"
 
 #: ../data/messages:171
 msgid ""
@@ -1802,7 +1828,7 @@
 
 #: ../data/messages:173
 msgid "Controling the sound volume"
-msgstr ""
+msgstr "控制声音音量"
 
 #: ../data/messages:175
 msgid ""
@@ -1814,7 +1840,7 @@
 
 #: ../data/messages:177
 msgid "Controling the screen brightness"
-msgstr ""
+msgstr "控制屏幕亮度"
 
 #: ../data/messages:179
 msgid ""
@@ -1825,7 +1851,7 @@
 
 #: ../data/messages:181
 msgid "Removing completely the gnome-panel"
-msgstr ""
+msgstr "完全移除 gnome-panel"
 
 #: ../data/messages:183
 msgid ""
@@ -1840,7 +1866,7 @@
 msgid ""
 "If you are on Gnome, you can click on this button in order to automatically "
 "modify this key:"
-msgstr ""
+msgstr "如果您在 Gnome 下,您可以点击该按钮以自动更改该按键:"
 
 #: ../data/messages:189
 msgid "Troubleshooting"
@@ -2009,11 +2035,11 @@
 
 #: ../data/messages:245
 msgid "If you're on Gnome you can click on this button:"
-msgstr ""
+msgstr "如果您在 Gnome 下,您可以点击该按钮:"
 
 #: ../data/messages:247
 msgid "The Project"
-msgstr ""
+msgstr "项目"
 
 #: ../data/messages:249
 msgid "Join the project!"
@@ -2058,6 +2084,9 @@
 "\n"
 "The Cairo-Dock Team"
 msgstr ""
+"\n"
+"\n"
+"Cairo-Dock 团队"
 
 #: ../data/messages:263
 msgid "Websites"
@@ -2073,7 +2102,7 @@
 
 #: ../data/messages:273
 msgid "More applets available online!"
-msgstr ""
+msgstr "在线获取更多插件!"
 
 #: ../data/messages:275
 msgid "Cairo-Dock-Plug-ins-Extras"
@@ -2089,6 +2118,8 @@
 " One for stable releases and another which is updated weekly (unstable "
 "version)"
 msgstr ""
+"我们维护了 Debian、Ubuntu 和其它 Debian 系列发行版本 2 个仓库:\n"
+" 一个是稳定版本,另一个为每周更新仓库(非稳定版本)"
 
 #: ../data/messages:281
 msgid "Debian/Ubuntu"
@@ -2152,19 +2183,19 @@
 
 #: ../data/messages:313
 msgid "Image filename:"
-msgstr ""
+msgstr "图片文件名:"
 
 #: ../data/messages:315
 msgid "Set to 0 to use the default applet size"
-msgstr ""
+msgstr "设为 0 使用默认小程序大小"
 
 #: ../data/messages:317
 msgid "Desired icon size for this applet"
-msgstr ""
+msgstr "希望的该小程序图标大小"
 
 #: ../data/messages:319
 msgid "Applet's Handbook"
-msgstr ""
+msgstr "小程序手册"
 
 #: ../data/messages:321
 msgid "Desklet"
@@ -2178,7 +2209,7 @@
 
 #: ../data/messages:327
 msgid "Lock position?"
-msgstr ""
+msgstr "锁定位置?"
 
 #: ../data/messages:329
 msgid ""
@@ -2188,7 +2219,7 @@
 
 #: ../data/messages:331
 msgid "Desklet dimensions (width x height):"
-msgstr ""
+msgstr "小工具维度(宽 x 高 ):"
 
 #: ../data/messages:333
 msgid ""
@@ -2198,7 +2229,7 @@
 
 #: ../data/messages:335
 msgid "Desklet position (x, y):"
-msgstr ""
+msgstr "小工具位置(横坐标,纵坐标):"
 
 #: ../data/messages:337
 msgid ""
@@ -2208,11 +2239,11 @@
 
 #: ../data/messages:339
 msgid "Rotation:"
-msgstr ""
+msgstr "旋转:"
 
 #: ../data/messages:343
 msgid "Is detached from the dock"
-msgstr ""
+msgstr "从 dock 分离?"
 
 #: ../data/messages:345
 msgid ""
@@ -2260,7 +2291,7 @@
 
 #: ../data/messages:371
 msgid "Background transparency:"
-msgstr ""
+msgstr "背景透明度:"
 
 #: ../data/messages:373
 msgid "in pixels. Use this to adjust the left position of drawings."
@@ -2306,7 +2337,7 @@
 
 #: ../data/messages:393
 msgid "Foreground tansparency:"
-msgstr ""
+msgstr "前景透明度:"
 
 #: ../data/messages:395 ../data/messages:1267
 msgid "Behavior"
@@ -2444,7 +2475,7 @@
 
 #: ../data/messages:471 ../data/messages:679
 msgid "Place new icons"
-msgstr ""
+msgstr "放置新图标"
 
 #: ../data/messages:473 ../data/messages:681
 msgid "At the beginning of the dock"
@@ -2460,7 +2491,7 @@
 
 #: ../data/messages:479 ../data/messages:687
 msgid "At the end of the dock"
-msgstr ""
+msgstr "在 dock 末尾"
 
 #: ../data/messages:481
 msgid "Icons' animations and effects"
@@ -2468,7 +2499,7 @@
 
 #: ../data/messages:483
 msgid "& On mouse hover:"
-msgstr ""
+msgstr "& 鼠标悬停:"
 
 #: ../data/messages:487
 msgid ""
@@ -2518,7 +2549,7 @@
 
 #: ../data/messages:517 ../data/messages:769
 msgid "Keyboard shortcuts currently available"
-msgstr ""
+msgstr "当前可用的键盘快捷键"
 
 #: ../data/messages:519 ../data/messages:771
 msgid ""
@@ -2623,19 +2654,19 @@
 
 #: ../data/messages:613
 msgid "The higher, the faster the dock will appear"
-msgstr ""
+msgstr "dock 将显示地越高越快"
 
 #: ../data/messages:615
 msgid "Callback sensitivity:"
-msgstr ""
+msgstr "回调灵敏度:"
 
 #: ../data/messages:617
 msgid "high"
-msgstr ""
+msgstr "高"
 
 #: ../data/messages:619
 msgid "low"
-msgstr ""
+msgstr "低"
 
 #: ../data/messages:621
 msgid "How to call the dock back:"
@@ -2831,7 +2862,7 @@
 
 #: ../data/messages:737
 msgid "Nothing"
-msgstr ""
+msgstr "无"
 
 #: ../data/messages:741
 msgid "Minimize"
@@ -3107,7 +3138,7 @@
 
 #: ../data/messages:907
 msgid "Background when hidden"
-msgstr ""
+msgstr "隐藏时背景"
 
 #: ../data/messages:909
 msgid "Several applets can be visible even when the dock is hidden"
@@ -3174,7 +3205,7 @@
 
 #: ../data/messages:951
 msgid "larger"
-msgstr ""
+msgstr "更大"
 
 #: ../data/messages:953
 msgid "Dialogs"

=== modified file 'po/zh_TW.po'
--- po/zh_TW.po	2012-04-16 16:03:43 +0000
+++ po/zh_TW.po	2012-06-19 14:00:30 +0000
@@ -7,14 +7,14 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-core\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2012-04-12 00:33+0000\n"
-"PO-Revision-Date: 2012-03-22 13:26+0000\n"
+"POT-Creation-Date: 2012-04-14 15:42+0000\n"
+"PO-Revision-Date: 2012-04-14 18:51+0000\n"
 "Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Traditional Chinese <zh_TW@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-04-13 05:23+0000\n"
+"X-Launchpad-Export-Date: 2012-04-15 04:40+0000\n"
 "X-Generator: Launchpad (build 15070)\n"
 "Language: \n"
 

=== modified file 'src/cairo-dock-gui-commons.c'
--- src/cairo-dock-gui-commons.c	2012-04-16 16:03:43 +0000
+++ src/cairo-dock-gui-commons.c	2012-06-19 14:00:30 +0000
@@ -779,7 +779,9 @@
 }
 
 
+#define DISTANT_DIR "3.0.0"
 gchar *cairo_dock_get_third_party_applets_link (void)
 {
-	return g_strdup_printf (CAIRO_DOCK_PLUGINS_EXTRAS_URL"/%d.%d.%d", g_iMajorVersion, g_iMinorVersion, g_iMicroVersion);
+	///return g_strdup_printf (CAIRO_DOCK_PLUGINS_EXTRAS_URL"/%d.%d.%d", g_iMajorVersion, g_iMinorVersion, g_iMicroVersion);
+	return g_strdup_printf (CAIRO_DOCK_PLUGINS_EXTRAS_URL"/"DISTANT_DIR);
 }

=== modified file 'src/cairo-dock-gui-main.c'
--- src/cairo-dock-gui-main.c	2012-03-21 11:25:03 +0000
+++ src/cairo-dock-gui-main.c	2012-06-19 14:00:30 +0000
@@ -24,7 +24,11 @@
 #include <glib/gstdio.h>
 #include <glib/gi18n.h>
 
+
+#include <gdk/gdkx.h>
+
 #include "config.h"
+#include "cairo-dock-notifications.h"
 #include "cairo-dock-module-factory.h"
 #include "cairo-dock-icon-facility.h"
 #include "cairo-dock-log.h"
@@ -123,7 +127,8 @@
 static GSList *s_path = NULL;
 static int s_iPreviewWidth, s_iNbButtonsByRow;
 static CairoDialog *s_pDialog = NULL;
-static int s_iSidShowGroupDialog = 0;
+static guint s_iSidShowGroupDialog = 0;
+static guint s_iSidCheckGroupButton = 0;
 
 static const gchar *s_cCategoriesDescription[2*(CAIRO_DOCK_NB_CATEGORY+1)] = {
 	N_("Behaviour"), "icon-behavior.svg",
@@ -803,6 +808,10 @@
 	_show_group_or_category (pPrevPlace);
 }
 
+static void _on_group_dialog_destroyed (gpointer data)
+{
+	s_pDialog = NULL;
+}
 static gboolean _show_group_dialog (CairoDockGroupDescription *pGroupDescription)
 {
 	gchar *cDescription = NULL;
@@ -869,9 +878,7 @@
 		gdk_pixbuf_unref (pPreviewPixbuf);
 	}
 	
-	if (s_pDialog != NULL)
-		if (! cairo_dock_dialog_unreference (s_pDialog))
-			cairo_dock_dialog_unreference (s_pDialog);
+	cairo_dock_dialog_unreference (s_pDialog);
 	Icon *pIcon = cairo_dock_get_current_active_icon ();
 	if (pIcon == NULL || pIcon->cParentDockName == NULL || cairo_dock_icon_is_being_removed (pIcon))
 		pIcon = cairo_dock_get_dialogless_icon ();
@@ -885,8 +892,9 @@
 	myDialogsParam.dialogTextDescription.bUseMarkup = TRUE;
 	s_pDialog = cairo_dock_build_dialog (&attr, pIcon, CAIRO_CONTAINER (pDock));
 	myDialogsParam.dialogTextDescription.bUseMarkup = FALSE;
-	
-	cairo_dock_dialog_reference (s_pDialog);
+	cairo_dock_register_notification_on_object (s_pDialog,
+		NOTIFICATION_DESTROY, (CairoDockNotificationFunc)_on_group_dialog_destroyed,
+		CAIRO_DOCK_RUN_AFTER, NULL);
 	
 	gtk_window_set_transient_for (GTK_WINDOW (s_pDialog->container.pWidget), GTK_WINDOW (s_pMainWindow));
 	g_free (cDescription);
@@ -894,33 +902,85 @@
 	s_iSidShowGroupDialog = 0;
 	return FALSE;
 }
-static void on_enter_group_button (GtkButton *button, CairoDockGroupDescription *pGroupDescription)
+
+static GtkButton *s_pCurrentButton = NULL;
+static gboolean on_enter_group_button (GtkButton *button, GdkEventCrossing *pEvent, CairoDockGroupDescription *pGroupDescription)
 {
-	//g_print ("%s (%s)\n", __func__, pGroupDescription->cDescription);
+	g_print ("%s (%s)\n", __func__, pGroupDescription->cGroupName);
 	if (g_pPrimaryContainer == NULL)  // inutile en maintenance, le dialogue risque d'apparaitre sur la souris.
-		return ;
+		return FALSE;
 	
+	// if we were about to show a dialog, cancel it to reset the timer.
 	if (s_iSidShowGroupDialog != 0)
 		g_source_remove (s_iSidShowGroupDialog);
 	
+	if (s_iSidCheckGroupButton != 0)
+	{
+		g_source_remove (s_iSidCheckGroupButton);
+		s_iSidCheckGroupButton = 0;
+	}
+	
+	// avoid re-entering the same button (can happen if the input shape of the dialog is set a bit late by X, and the dialog spawns under the cursor, which will make us leave the button and re-enter when the input shape is ready).
+	if (s_pCurrentButton == button)
+		return FALSE;
+	s_pCurrentButton = button;  // we don't actually use the content of the pointer, only the address value.
+	
+	// show the dialog with a delay.
 	s_iSidShowGroupDialog = g_timeout_add (330, (GSourceFunc)_show_group_dialog, (gpointer) pGroupDescription);
+	return FALSE;
 }
-static void on_leave_group_button (GtkButton *button, gpointer *data)
+static gboolean _check_group_button (gpointer data)
 {
-	//g_print ("%s ()\n", __func__);
-	if (s_iSidShowGroupDialog != 0)
+	Window Xid = GDK_WINDOW_XID (gtk_widget_get_window (s_pMainWindow));
+	if (Xid != cairo_dock_get_current_active_window ())  // we're not the active window any more, so the 'leave' event was probably due to an Alt+Tab -> the mouse is really out of the button.
 	{
-		g_source_remove (s_iSidShowGroupDialog);
-		s_iSidShowGroupDialog = 0;
-	}
-
-	int iPreviewWidgetWidth = s_iPreviewWidth;
-	GtkWidget *pPreviewImage = s_pPreviewImage;
-	gtk_widget_hide (s_pPreviewBox);
-	
-	if (! cairo_dock_dialog_unreference (s_pDialog))
+		gtk_widget_hide (s_pPreviewBox);
+		
 		cairo_dock_dialog_unreference (s_pDialog);
-	s_pDialog = NULL;
+		
+		s_pCurrentButton = NULL;
+	}
+	s_iSidCheckGroupButton = 0;
+	return FALSE;
+}
+static gboolean on_leave_group_button (GtkButton *button, GdkEventCrossing *pEvent, gpointer data)
+{
+	g_print ("%s (%d, %d)\n", __func__, pEvent->mode, pEvent->detail);
+	// if we were about to show the dialog, cancel.
+	if (s_iSidShowGroupDialog != 0)
+	{
+		g_source_remove (s_iSidShowGroupDialog);
+		s_iSidShowGroupDialog = 0;
+	}
+	
+	if (s_iSidCheckGroupButton != 0)
+	{
+		g_source_remove (s_iSidCheckGroupButton);
+		s_iSidCheckGroupButton = 0;
+	}
+	
+	// check that we are really outside of the button (this may be false if the dialog is appearing under the mouse and has not yet its input shape (X lag)).
+	if (pEvent->detail != GDK_NOTIFY_ANCESTOR)  // a LeaveNotify event not within the same window (ie, either an Alt+Tab or the dialog that spawned under the cursor)
+	{
+		int x, y;
+		gtk_widget_get_pointer (GTK_WIDGET (button), &x, &y);
+		GtkAllocation allocation;
+		gtk_widget_get_allocation (GTK_WIDGET (button), &allocation);
+		if (x >= 0 && x < allocation.width && y >= 0 && y < allocation.height)  // we are actually still inside the button, ignore the event, we'll get an 'enter' event as soon as the dialog's input shape is ready.
+		{
+			s_iSidCheckGroupButton = g_timeout_add (1000, _check_group_button, NULL);  // check in a moment if we left the button because of the dialog or because of another window (alt+tab).
+			return FALSE;
+		}
+	}
+	
+	// hide the dialog and the preview box.
+	gtk_widget_hide (s_pPreviewBox);
+	
+	cairo_dock_dialog_unreference (s_pDialog);
+	
+	s_pCurrentButton = NULL;
+	
+	return FALSE;
 }
 
 
@@ -986,6 +1046,12 @@
 		g_source_remove (s_iSidShowGroupDialog);
 		s_iSidShowGroupDialog = 0;
 	}
+	cairo_dock_dialog_unreference (s_pDialog);
+	if (s_iSidCheckGroupButton != 0)
+	{
+		g_source_remove (s_iSidCheckGroupButton);
+		s_iSidCheckGroupButton = 0;
+	}
 	return FALSE;
 }
 
@@ -1364,8 +1430,8 @@
 		g_signal_connect (G_OBJECT (pGroupButton), "clicked", G_CALLBACK(on_click_group_button), pGroupDescription);
 	else
 		gtk_widget_set_sensitive (pGroupButton, FALSE);
-	g_signal_connect (G_OBJECT (pGroupButton), "enter", G_CALLBACK(on_enter_group_button), pGroupDescription);
-	g_signal_connect (G_OBJECT (pGroupButton), "leave", G_CALLBACK(on_leave_group_button), NULL);
+	g_signal_connect (G_OBJECT (pGroupButton), "enter-notify-event", G_CALLBACK(on_enter_group_button), pGroupDescription);
+	g_signal_connect (G_OBJECT (pGroupButton), "leave-notify-event", G_CALLBACK(on_leave_group_button), NULL);
 
 	GtkWidget *pButtonHBox = _gtk_hbox_new (CAIRO_DOCK_FRAME_MARGIN);
 	GtkWidget *pImage = _make_image (cIconPath, CAIRO_DOCK_GROUP_ICON_SIZE);

=== modified file 'src/cairo-dock-menu.c'
--- src/cairo-dock-menu.c	2012-04-16 16:03:43 +0000
+++ src/cairo-dock-menu.c	2012-06-19 14:00:30 +0000
@@ -369,7 +369,7 @@
 static void _cairo_dock_quick_hide (GtkMenuItem *pMenuItem, CairoDock *pDock)
 {
 	//g_print ("%s ()\n", __func__);
-	pDock->bMenuVisible = FALSE;
+	///pDock->bHasModalWindow = FALSE;
 	cairo_dock_quick_hide_all_docks ();
 }
 
@@ -470,10 +470,7 @@
 		GtkWidget *pMenuItem = gtk_image_menu_item_new_with_label (cName);
 		GtkWidget *image = gtk_image_new_from_pixbuf (pixbuf);
 		g_object_unref (pixbuf);
-		#if (GTK_MAJOR_VERSION > 2 || GTK_MINOR_VERSION >= 16)
-		gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (pMenuItem), TRUE);
-		#endif
-		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), image);
+		_gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), image);
 		
 		gtk_menu_shell_append (GTK_MENU_SHELL (pMenu), pMenuItem); 
 		

=== modified file 'src/gldit/cairo-dock-X-utilities.c'
--- src/gldit/cairo-dock-X-utilities.c	2012-04-16 16:03:43 +0000
+++ src/gldit/cairo-dock-X-utilities.c	2012-06-19 14:00:30 +0000
@@ -988,12 +988,12 @@
 		cWmClass = g_strdup (pClassHint->res_class);
 		
 		cd_debug ("  res_name : %s(%x); res_class : %s(%x)", pClassHint->res_name, pClassHint->res_name, pClassHint->res_class, pClassHint->res_class);
-		if (strcmp (pClassHint->res_class, "Wine") == 0 && pClassHint->res_name && g_str_has_suffix (pClassHint->res_name, ".exe"))
+		if (strcmp (pClassHint->res_class, "Wine") == 0 && pClassHint->res_name && (g_str_has_suffix (pClassHint->res_name, ".exe") || g_str_has_suffix (pClassHint->res_name, ".EXE")))
 		{
 			cd_debug ("  wine application detected, changing the class '%s' to '%s'", pClassHint->res_class, pClassHint->res_name);
 			cClass = g_ascii_strdown (pClassHint->res_name, -1);
 		}
-		else if (*pClassHint->res_class == '/' && g_str_has_suffix (pClassHint->res_class, ".exe"))  // cas des applications Mono telles que tomboy ...
+		else if (*pClassHint->res_class == '/' && (g_str_has_suffix (pClassHint->res_class, ".exe") || g_str_has_suffix (pClassHint->res_name, ".EXE")))  // cas des applications Mono telles que tomboy ...
 		{
 			gchar *str = strrchr (pClassHint->res_class, '/');
 			if (str)
@@ -1019,7 +1019,10 @@
 		XFree (pClassHint->res_class);
 		XFree (pClassHint);
 	}
-	*cWMClass = cWmClass;
+	if (cWMClass)
+		*cWMClass = cWmClass;
+	else
+		g_free (cWmClass);
 	return cClass;
 }
 

=== modified file 'src/gldit/cairo-dock-applet-facility.h'
--- src/gldit/cairo-dock-applet-facility.h	2012-02-16 01:08:11 +0000
+++ src/gldit/cairo-dock-applet-facility.h	2012-06-19 14:00:30 +0000
@@ -68,7 +68,7 @@
 
 /** Apply an image on the context of an icon, clearing it beforehand, and adding the reflect.
 *@param pIconContext the drawing context; is not altered by the function.
-*@param cImagePath name or path to an icon image.
+*@param cIconName name or path to an icon image.
 *@param pIcon the icon.
 *@param pContainer the container of the icon.
 *@return TRUE if everything went smoothly.

=== modified file 'src/gldit/cairo-dock-callbacks.c'
--- src/gldit/cairo-dock-callbacks.c	2012-04-25 01:29:46 +0000
+++ src/gldit/cairo-dock-callbacks.c	2012-06-19 14:00:30 +0000
@@ -98,7 +98,7 @@
 			: (pDock->container.iMouseY < 0
 			||
 		pDock->container.iMouseY >= (pDock->fMagnitudeMax != 0 ? pDock->container.iHeight : pDock->iMinDockHeight))));*/
-	double x1, x2, y1, y2;
+	int x1, x2, y1, y2;
 	if (pDock->iInputState == CAIRO_DOCK_INPUT_ACTIVE)
 	{
 		x1 = 0;
@@ -106,14 +106,14 @@
 		if (pDock->container.bDirectionUp)
 		{
 			///y1 = (pDock->fMagnitudeMax != 0 ? 0 : pDock->container.iHeight - pDock->iMinDockHeight);
-			y1 = pDock->container.iHeight - pDock->iActiveHeight;
+			y1 = pDock->container.iHeight - pDock->iActiveHeight + 1;
 			y2 = pDock->container.iHeight;
 		}
 		else
 		{
 			y1 = 0;
 			///y2 = (pDock->fMagnitudeMax != 0 ? pDock->container.iHeight : pDock->iMinDockHeight);
-			y2 = pDock->iActiveHeight;
+			y2 = pDock->iActiveHeight - 1;
 		}
 	}
 	else if (pDock->iInputState == CAIRO_DOCK_INPUT_AT_REST)
@@ -122,13 +122,13 @@
 		x2 = (pDock->container.iWidth + pDock->iMinDockWidth) / 2;
 		if (pDock->container.bDirectionUp)
 		{
-			y1 = pDock->container.iHeight - pDock->iMinDockHeight;
+			y1 = pDock->container.iHeight - pDock->iMinDockHeight + 1;
 			y2 = pDock->container.iHeight;
 		}
 		else
 		{
 			y1 = 0;
-			y2 = pDock->iMinDockHeight;
+			y2 = pDock->iMinDockHeight - 1;
 		}		
 	}
 	else  // hidden
@@ -136,8 +136,8 @@
 	if (pDock->container.iMouseX <= x1
 	|| pDock->container.iMouseX >= x2)
 		return TRUE;
-	if (pDock->container.iMouseY <= y1
-	|| pDock->container.iMouseY >= y2)
+	if (pDock->container.iMouseY < y1
+	|| pDock->container.iMouseY > y2)  // Note: Compiz has a bug: when using the "cube rotation" plug-in, it will reserve 2 pixels for itself on the left and right edges of the screen. So the mouse is not inside the dock when it's at x=0 or x=Ws-1 (no 'enter' event is sent; it's as if the x=0 or x=Ws-1 vertical line of pixels is out of the screen).
 		return TRUE;	
 	
 	return FALSE;
@@ -479,8 +479,6 @@
 	static double fLastTime = 0;
 	if (s_bFrozenDock && pMotion != NULL && pMotion->time != 0)
 		return FALSE;
-	if (pDock->bMenuVisible)
-		return FALSE;
 	Icon *pPointedIcon=NULL, *pLastPointedIcon = cairo_dock_get_pointed_icon (pDock->icons);
 	int iLastMouseX = pDock->container.iMouseX;
 	//g_print ("%s (%.2f;%.2f, %d)\n", __func__, pMotion->x, pMotion->y, pDock->iInputState);
@@ -662,8 +660,8 @@
 	
 	//g_print ("%s (%d, %d)\n", __func__, pDock->iRefCount, pDock->bMenuVisible);
 	
-	//\_______________ On quitte si le menu est leve, pour rester en position haute.
-	if (pDock->bMenuVisible)
+	//\_______________ If a modal window is raised, we discard the 'leave-event' to stay in the up position.
+	if (pDock->bHasModalWindow)
 		return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
 	
 	//\_______________ On gere le drag d'une icone hors du dock.
@@ -745,7 +743,7 @@
 	
 	//\_______________ On ignore les signaux errones venant d'un WM buggue (Kwin) ou meme de X (changement de bureau).
 	//if (pEvent)
-	//	//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);
+		//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);
 	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!
 	{
 		if (pDock->container.bIsHorizontal)
@@ -766,7 +764,7 @@
 	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).
 	{
 		//g_print ("not really outside (%d;%d ; %d/%d)\n", pDock->container.iMouseX, pDock->container.iMouseY, pDock->iMaxDockHeight, pDock->iMinDockHeight);
-		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.
+		if (pDock->iSidTestMouseOutside == 0 && pEvent && ! pDock->bHasModalWindow)  // 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/dialogue interactif, mais comme on envoie nous-meme un signal de sortie lorsque le menu disparait, il est inutile de le faire ici.
 		{
 			//g_print ("start checking mouse\n");
 			pDock->iSidTestMouseOutside = g_timeout_add (500, (GSourceFunc)_check_mouse_outside, pDock);
@@ -909,6 +907,7 @@
 		return FALSE;
 	}*/
 	
+	gboolean bWasInside = pDock->container.bInside;
 	pDock->container.bInside = TRUE;
 	
 	// animation d'entree.
@@ -967,8 +966,11 @@
 		cairo_dock_start_showing (pDock);  // on a mis a jour la zone d'input avant, sinon la fonction le ferait, ce qui serait inutile.
 	}
 	
+	// start growing up (do it before calculating icons, so that we don't seem to be in an anormal state, where we're inside a dock that doesn't grow).
+	cairo_dock_start_growing (pDock);
+	
 	// since we've just entered the dock, the pointed icon has changed from none to the current one.
-	if (pEvent != NULL)
+	if (pEvent != NULL && ! bWasInside)
 	{
 		// update the mouse coordinates
 		if (pDock->container.bIsHorizontal)
@@ -989,8 +991,6 @@
 			cairo_dock_on_change_icon (NULL, icon, pDock);  // we were out of the dock, so there is no previous pointed icon.
 		}
 	}
-	// on lance le grossissement.
-	cairo_dock_start_growing (pDock);
 	
 	return TRUE;
 }

=== modified file 'src/gldit/cairo-dock-class-manager.c'
--- src/gldit/cairo-dock-class-manager.c	2012-04-16 16:03:43 +0000
+++ src/gldit/cairo-dock-class-manager.c	2012-06-19 14:00:30 +0000
@@ -1653,7 +1653,7 @@
 	
 	cd_debug ("%s (%s, '%s')", __func__, cCommand, cStartupWMClass);
 	gchar *cResult = NULL;
-	if (cStartupWMClass == NULL || *cStartupWMClass == '\0' || strcmp (cStartupWMClass, "Wine") == 0)  // on force pour wine, car meme si la classe est explicitement definie en tant que "Wine", cette information est inexploitable.
+	if (cStartupWMClass == NULL || *cStartupWMClass == '\0' || g_strcmp0 (cStartupWMClass, "Wine") == 0)  // on force pour wine, car meme si la classe est explicitement definie en tant que "Wine", cette information est inexploitable.
 	{
 		if (cCommand == NULL || *cCommand == '\0')
 			return NULL;
@@ -1661,7 +1661,7 @@
 		gchar *str;
 		const gchar *cClass = cDefaultClass;  // pointer to the current class.
 		
-		if (strncmp (cClass, "gksu", 4) == 0 || strncmp (cClass, "kdesu", 4) == 0 || strncmp (cClass, "su-to-root", 10) == 0)  // on prend la fin.
+		if (strncmp (cClass, "gksu", 4) == 0 || strncmp (cClass, "kdesu", 5) == 0 || strncmp (cClass, "su-to-root", 10) == 0)  // on prend la fin.
 		{
 			str = (gchar*)cClass + strlen(cClass) - 1;  // last char.
 			while (*str == ' ')  // par securite on enleve les espaces en fin de ligne.
@@ -1698,6 +1698,8 @@
 			while (*str == ' ')  // on enleve les espaces supplementaires.
 				str ++;
 			gchar *exe = g_strstr_len (str, -1, ".exe");  // on cherche a isoler le nom de l'executable, puisque wine l'utilise dans le res_name.
+			if (!exe)
+				exe = g_strstr_len (str, -1, ".EXE");
 			if (exe)
 			{
 				*exe = '\0';  // vire l'extension par la meme occasion.
@@ -1909,7 +1911,18 @@
 			{
 				gchar **pMenuItem = g_new0 (gchar*, 4);
 				pMenuItem[0] = g_key_file_get_locale_string (pKeyFile, cGroup, "Name", NULL, NULL);
-				pMenuItem[1] = g_key_file_get_string (pKeyFile, cGroup, "Exec", NULL);
+				cCommand = g_key_file_get_string (pKeyFile, cGroup, "Exec", NULL);
+				if (cCommand != NULL)  // remove the launching options %x.
+				{
+					gchar *str = strchr (cCommand, '%');  // search the first one.
+					if (str != NULL)
+					{
+						if (str != cCommand && (*(str-1) == '"' || *(str-1) == '\''))  // take care of "" around the option.
+							str --;
+						*str = '\0';  // il peut rester un espace en fin de chaine, ce n'est pas grave.
+					}
+				}
+				pMenuItem[1] = cCommand;
 				pMenuItem[2] = g_key_file_get_string (pKeyFile, cGroup, "Icon", NULL);
 				
 				pClassAppli->pMenuItems = g_list_append (pClassAppli->pMenuItems, pMenuItem);

=== modified file 'src/gldit/cairo-dock-config.c'
--- src/gldit/cairo-dock-config.c	2012-03-21 11:25:03 +0000
+++ src/gldit/cairo-dock-config.c	2012-06-19 14:00:30 +0000
@@ -37,36 +37,15 @@
 }; 
 #endif
 
-#include "cairo-dock-draw.h"
-#include "cairo-dock-draw-opengl.h"
-#include "cairo-dock-image-buffer.h"
+#include "cairo-dock-log.h"
 #include "cairo-dock-icon-manager.h"  // cairo_dock_hide_show_launchers_on_other_desktops
-#include "cairo-dock-icon-factory.h"
-#include "cairo-dock-icon-facility.h"
-#include "cairo-dock-applications-manager.h"
-#include "cairo-dock-module-factory.h"
-#include "cairo-dock-keyfile-utilities.h"
-#include "cairo-dock-dock-factory.h"
-#include "cairo-dock-themes-manager.h"
-#include "cairo-dock-backends-manager.h"
-#include "cairo-dock-callbacks.h"
-#include "cairo-dock-dialog-manager.h"
-#include "cairo-dock-X-utilities.h"
-#include "cairo-dock-log.h"
-#include "cairo-dock-keybinder.h"
-#include "cairo-dock-dock-manager.h"
-#include "cairo-dock-surface-factory.h"
-#include "cairo-dock-class-manager.h"
-#include "cairo-dock-gui-manager.h"
-#include "cairo-dock-desklet-manager.h"
-#include "cairo-dock-container.h"
-#include "cairo-dock-dock-facility.h"
-#include "cairo-dock-file-manager.h"
-#include "cairo-dock-animations.h"
-#include "cairo-dock-launcher-manager.h"
-#include "cairo-dock-indicator-manager.h"
-#include "cairo-dock-X-manager.h"
-#include "cairo-dock-core.h"
+#include "cairo-dock-applications-manager.h"  // cairo_dock_start_applications_manager
+#include "cairo-dock-module-factory.h"  // cairo_dock_activate_modules_from_list
+#include "cairo-dock-keyfile-utilities.h"  // cairo_dock_update_conf_file
+#include "cairo-dock-dock-manager.h"  // cairo_dock_create_dock
+#include "cairo-dock-file-manager.h"  // cairo_dock_get_file_size
+#include "cairo-dock-launcher-manager.h"  // cairo_dock_load_launchers_from_dir
+#include "cairo-dock-core.h"  // gldi_free_all
 #include "cairo-dock-config.h"
 
 gboolean g_bEasterEggs = FALSE;
@@ -75,8 +54,6 @@
 extern gchar *g_cConfFile;
 extern gboolean g_bUseOpenGL;
 extern CairoDockDesktopEnv g_iDesktopEnv;
-//extern CairoDockHidingEffect *g_pHidingBackend;
-//extern CairoDockHidingEffect *g_pKeepingBelowBackend;
 extern CairoDockDesktopBackground *g_pFakeTransparencyDesktopBg;
 
 static gboolean s_bLoading = FALSE;

=== modified file 'src/gldit/cairo-dock-container.c'
--- src/gldit/cairo-dock-container.c	2012-04-16 16:03:43 +0000
+++ src/gldit/cairo-dock-container.c	2012-06-19 14:00:30 +0000
@@ -426,7 +426,7 @@
 
 static void _place_menu_on_icon (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer *data)
 {
-	*push_in = TRUE;
+	*push_in = FALSE;
 	Icon *pIcon = data[0];
 	CairoContainer *pContainer = data[1];
 	int x0 = pContainer->iWindowPositionX + pIcon->fDrawX;
@@ -505,10 +505,7 @@
 		{
 			image = gtk_image_new_from_stock (gtkStock, GTK_ICON_SIZE_MENU);
 		}
-#if (GTK_MAJOR_VERSION > 2 || GTK_MINOR_VERSION >= 16)
-		gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (pMenuItem), TRUE);
-#endif
-		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), image);
+		_gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), image);
 	}
 	gtk_menu_shell_append  (GTK_MENU_SHELL (pMenu), pMenuItem);
 	if (pFunction)
@@ -536,10 +533,7 @@
 		{
 			image = gtk_image_new_from_stock (cImage, GTK_ICON_SIZE_MENU);
 		}
-#if (GTK_MAJOR_VERSION > 2 || GTK_MINOR_VERSION >= 16)
-		gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (pMenuItem), TRUE);
-#endif
-		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), image);
+		_gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), image);
 	}
 	gtk_menu_shell_append (GTK_MENU_SHELL (pMenu), pMenuItem); 
 	gtk_menu_item_set_submenu (GTK_MENU_ITEM (pMenuItem), pSubMenu);

=== modified file 'src/gldit/cairo-dock-container.h'
--- src/gldit/cairo-dock-container.h	2012-03-21 11:25:03 +0000
+++ src/gldit/cairo-dock-container.h	2012-06-19 14:00:30 +0000
@@ -356,6 +356,15 @@
 #endif
 
 
+#if ((CAIRO_DOCK_FORCE_ICON_IN_MENUS == 1) && (GTK_MAJOR_VERSION > 2 || GTK_MINOR_VERSION >= 16))
+	#define _gtk_image_menu_item_set_image(pMenuItem, image) do {\
+		gtk_image_menu_item_set_image (pMenuItem, image);\
+		gtk_image_menu_item_set_always_show_image (pMenuItem, TRUE); } while (0)
+#else
+	#define _gtk_image_menu_item_set_image gtk_image_menu_item_set_image
+#endif
+
+
   /////////////////
  // INPUT SHAPE //
 /////////////////

=== modified file 'src/gldit/cairo-dock-dialog-factory.c'
--- src/gldit/cairo-dock-dialog-factory.c	2012-03-21 11:25:03 +0000
+++ src/gldit/cairo-dock-dialog-factory.c	2012-06-19 14:00:30 +0000
@@ -537,9 +537,10 @@
 	//\________________ Interactive dialogs are set modal, to be fixed.
 	if ((pDialog->pInteractiveWidget || pDialog->pButtons || pAttribute->iTimeLength == 0) && ! pDialog->bNoInput)
 	{
-		gtk_window_set_modal (GTK_WINDOW (pDialog->container.pWidget), TRUE);
+		gtk_window_set_modal (GTK_WINDOW (pDialog->container.pWidget), TRUE);  // Note: there is a bug in Ubuntu version of GTK: gtkscrolledwindow in dialog breaks his modality (http://www.gtkforums.com/viewtopic.php?f=3&t=55727).
 		if (CAIRO_DOCK_IS_DOCK (pContainer))
 		{
+			CAIRO_DOCK (pContainer)->bHasModalWindow = TRUE;
 			cairo_dock_emit_enter_signal (pContainer);  // to prevent the dock from hiding. We want to see it until the dialog is visible (a leave event will be emited when it disappears).
 		}
 	}

=== modified file 'src/gldit/cairo-dock-dialog-manager.c'
--- src/gldit/cairo-dock-dialog-manager.c	2012-04-16 16:03:43 +0000
+++ src/gldit/cairo-dock-dialog-manager.c	2012-06-19 14:00:30 +0000
@@ -221,8 +221,17 @@
 	CairoDialog *pDialog)
 {
 	//g_print ("press button on dialog\n");
-	if (pButton->time > pDialog->iButtonPressTime)  // it's not a click on the interactive widget that has been passed to the dialog.
+	if (pButton->button == 1 && pButton->time > pDialog->iButtonPressTime)  // left-click, and not a click on the interactive widget that has been passed to the dialog.
 	{
+		// the interactive widget may have holes (for instance, a gtk-calendar); ignore them, otherwise it's really easy to close the dialog unexpectedly.
+		if (pDialog->pInteractiveWidget)
+		{
+			GtkAllocation allocation;
+			gtk_widget_get_allocation (pDialog->pInteractiveWidget, &allocation);
+			if (pButton->x >= allocation.x && pButton->x <= allocation.x + allocation.width
+			&& pButton->y >= allocation.y && pButton->y <= allocation.y + allocation.height)  // the click is inside the widget.
+				return FALSE;
+		}
 		if (pButton->type == GDK_BUTTON_PRESS)
 		{
 			if (pDialog->pButtons == NULL)  // not a dialog that can be closed by a button => we close it here
@@ -527,7 +536,13 @@
 				CairoContainer *pContainer = cairo_dock_search_container_from_icon (pIcon);
 				//g_print ("leave from container %x\n", pContainer);
 				if (pContainer)
+				{
+					if (CAIRO_DOCK_IS_DOCK (pContainer) && gtk_window_get_modal (GTK_WINDOW (pDialog->container.pWidget)))
+					{
+						CAIRO_DOCK (pContainer)->bHasModalWindow = FALSE;
+					}
 					cairo_dock_emit_leave_signal (pContainer);
+				}
 				
 				if (pIcon->iHideLabel > 0)
 				{
@@ -848,11 +863,9 @@
 	attr.pUserData = data;
 	attr.pFreeDataFunc = pFreeDataFunc;
 	attr.iTimeLength = (int) fTimeLength;
+	const gchar *cDefaultActionButtons[3] = {"ok", "cancel", NULL};
 	if (pActionFunc != NULL)
-	{
-		const gchar *cButtons[3] = {"ok", "cancel", NULL};
-		attr.cButtonsImage = cButtons;
-	}
+		attr.cButtonsImage = cDefaultActionButtons;
 	
 	CairoDialog *pDialog = cairo_dock_build_dialog (&attr, pIcon, pContainer);
 	return pDialog;
@@ -1147,8 +1160,13 @@
 			CairoContainer *pContainer = cairo_dock_search_container_from_icon (pIcon);
 			//g_print ("leave from container %x\n", pContainer);
 			if (pContainer)
+			{
+				if (CAIRO_DOCK_IS_DOCK (pContainer) && gtk_window_get_modal (GTK_WINDOW (pDialog->container.pWidget)))
+				{
+					CAIRO_DOCK (pContainer)->bHasModalWindow = FALSE;
+				}
 				cairo_dock_emit_leave_signal (pContainer);
-			
+			}
 			if (pIcon->iHideLabel > 0)
 			{
 				pIcon->iHideLabel --;
@@ -1178,6 +1196,10 @@
 					gtk_widget_queue_draw (pContainer->pWidget);
 				pIcon->iHideLabel ++;
 			}
+			if (CAIRO_DOCK_IS_DOCK (pContainer) && gtk_window_get_modal (GTK_WINDOW (pDialog->container.pWidget)))
+			{
+				CAIRO_DOCK (pContainer)->bHasModalWindow = TRUE;
+			}
 		}
 	}
 	pDialog->bPositionForced = FALSE;

=== modified file 'src/gldit/cairo-dock-dock-facility.c'
--- src/gldit/cairo-dock-dock-facility.c	2012-04-16 17:57:58 +0000
+++ src/gldit/cairo-dock-dock-facility.c	2012-06-19 14:00:30 +0000
@@ -249,7 +249,7 @@
 				}
 				//pDock->container.bInside = TRUE;
 				///if ((pDock->bAtBottom && pDock->iRefCount == 0 && ! pDock->bAutoHide) || (pDock->container.iWidth != pDock->iMaxDockWidth || pDock->container.iHeight != pDock->iMaxDockHeight) || (!pDock->container.bInside))  // on le fait pas avec l'auto-hide, car un signal d'entree est deja emis a cause des mouvements/redimensionnements de la fenetre, et en rajouter un ici fout le boxon.  // !pDock->container.bInside ajoute pour le bug du chgt de bureau.
-				if ((pDock->iMagnitudeIndex == 0 && pDock->iRefCount == 0 && ! pDock->bAutoHide) || !pDock->container.bInside)
+				if ((pDock->iMagnitudeIndex == 0 && pDock->iRefCount == 0 && ! pDock->bAutoHide && ! pDock->bIsGrowingUp) || !pDock->container.bInside)  // we are probably a little bit paranoia here, especially with the first case ... anyway, if we missed the 'enter' event for some reason, force it here.
 				{
 					//g_print ("  on emule une re-rentree (pDock->iMagnitudeIndex:%d)\n", pDock->iMagnitudeIndex);
 					cairo_dock_emit_enter_signal (CAIRO_CONTAINER (pDock));

=== modified file 'src/gldit/cairo-dock-dock-factory.c'
--- src/gldit/cairo-dock-dock-factory.c	2012-04-25 01:29:46 +0000
+++ src/gldit/cairo-dock-dock-factory.c	2012-06-19 14:00:30 +0000
@@ -160,7 +160,7 @@
 				cairo_dock_pop_down (pDock);
 			
 			//\__________________ On se redimensionne en taille normale.
-			if (! pDock->bAutoHide && pDock->iRefCount == 0 && ! pDock->bMenuVisible)  // fin de shrink sans auto-hide => taille normale.
+			if (! pDock->bAutoHide && pDock->iRefCount == 0/** && ! pDock->bMenuVisible*/)  // fin de shrink sans auto-hide => taille normale.
 			{
 				//g_print ("taille normale (%x; %d)\n", pDock->pShapeBitmap , pDock->iInputState);
 				if (pDock->pShapeBitmap && pDock->iInputState != CAIRO_DOCK_INPUT_AT_REST)
@@ -443,9 +443,9 @@
 {
 	//g_print ("\n+++ %s ()\n\n", __func__);
 	g_return_if_fail (CAIRO_DOCK_IS_DOCK (pDock));
-	if (pDock->bMenuVisible)  // don't send the signal if the menu was already deactivated.
+	if (pDock->bHasModalWindow)  // don't send the signal if the menu was already deactivated.
 	{
-		pDock->bMenuVisible = FALSE;
+		pDock->bHasModalWindow = FALSE;
 		cairo_dock_emit_leave_signal (CAIRO_CONTAINER (pDock));
 	}
 }
@@ -480,7 +480,7 @@
 static void _setup_menu (CairoContainer *pContainer, Icon *pIcon, GtkWidget *pMenu)
 {
 	// keep the dock visible
-	CAIRO_DOCK (pContainer)->bMenuVisible = TRUE;
+	CAIRO_DOCK (pContainer)->bHasModalWindow = TRUE;
 	
 	// connect signals
 	if (g_signal_handler_find (pMenu,

=== modified file 'src/gldit/cairo-dock-dock-factory.h'
--- src/gldit/cairo-dock-dock-factory.h	2012-02-16 01:08:11 +0000
+++ src/gldit/cairo-dock-dock-factory.h	2012-06-19 14:00:30 +0000
@@ -178,8 +178,8 @@
 	
 	/// Whether the dock is in a popped up state or not.
 	gboolean bIsBelow;
-	/// whether the menu is visible (to keep the dock on high position).
-	gboolean bMenuVisible;
+	/// TRUE if the dock has a modal window (menu, dialog, etc), that will block it.
+	gint bHasModalWindow;
 	/// whether the user is dragging something over the dock.
 	gboolean bIsDragging;
 	/// Backup of the auto-hide state before quick-hide.

=== modified file 'src/gldit/cairo-dock-draw-opengl.c'
--- src/gldit/cairo-dock-draw-opengl.c	2012-04-16 16:03:43 +0000
+++ src/gldit/cairo-dock-draw-opengl.c	2012-06-19 14:00:30 +0000
@@ -569,28 +569,34 @@
 			y = icon->fDrawY;
 			icon->fDrawY = (pDock->container.bDirectionUp ? pDock->container.iHeight - icon->fHeight * icon->fScale - gap : gap);
 			
-			if (icon->pHiddenBgColor)
+			if (icon->bHasHiddenBg)
 			{
-				glPushMatrix ();
-				memcpy (pHiddenBgColor, icon->pHiddenBgColor, 4*sizeof (gdouble));
+				if (icon->pHiddenBgColor)  // custom bg color
+					memcpy (pHiddenBgColor, icon->pHiddenBgColor, 4*sizeof (gdouble));
+				else  // default bg color
+					memcpy (pHiddenBgColor, myDocksParam.fHiddenBg, 4*sizeof (gdouble));
 				pHiddenBgColor[3] *= pDock->fPostHideOffset;
-				w = icon->fWidth * icon->fScale;
-				h = icon->fHeight * icon->fScale;
-				if (pDock->container.bIsHorizontal)
-				{
-					glTranslatef (icon->fDrawX + w/2,
-						pDock->container.iHeight - icon->fDrawY - h/2,
-						0.);
-					cairo_dock_draw_rounded_rectangle_opengl (w - 2*r + dw, h, r, 0, pHiddenBgColor);
-				}
-				else
-				{
-					glTranslatef (icon->fDrawY + h/2,
-						pDock->container.iWidth - icon->fDrawX - w/2,
-						0.);
-					cairo_dock_draw_rounded_rectangle_opengl (h - 2*r + dw, w, r, 0, pHiddenBgColor);
-				}
-				glPopMatrix ();
+				if (pHiddenBgColor[3] != 0)
+				{
+					glPushMatrix ();
+					w = icon->fWidth * icon->fScale;
+					h = icon->fHeight * icon->fScale;
+					if (pDock->container.bIsHorizontal)
+					{
+						glTranslatef (icon->fDrawX + w/2,
+							pDock->container.iHeight - icon->fDrawY - h/2,
+							0.);
+						cairo_dock_draw_rounded_rectangle_opengl (w - 2*r + dw, h, r, 0, pHiddenBgColor);
+					}
+					else
+					{
+						glTranslatef (icon->fDrawY + h/2,
+							pDock->container.iWidth - icon->fDrawX - w/2,
+							0.);
+						cairo_dock_draw_rounded_rectangle_opengl (h - 2*r + dw, w, r, 0, pHiddenBgColor);
+					}
+					glPopMatrix ();
+				}
 			}
 			
 			glPushMatrix ();

=== modified file 'src/gldit/cairo-dock-draw.c'
--- src/gldit/cairo-dock-draw.c	2012-04-16 16:03:43 +0000
+++ src/gldit/cairo-dock-draw.c	2012-06-19 14:00:30 +0000
@@ -916,7 +916,7 @@
 	double y;
 	Icon *icon;
 	GList *ic = pFirstDrawnElement;
-	double pHiddenBgColor[4];
+	double *pHiddenBgColor;
 	const double r = 4; // corner radius of the background
 	const double gap = 3;  // gap to the screen
 	double dw = (myIconsParam.iIconGap > 2 ? 2 : 0);  // 1px margin around the icons for a better readability (only if icons won't be stuck togather then).
@@ -929,24 +929,31 @@
 			y = icon->fDrawY;
 			icon->fDrawY = (pDock->container.bDirectionUp ? pDock->container.iHeight - icon->fHeight * icon->fScale  - gap: gap);
 			
-			if (icon->pHiddenBgColor)
+			if (icon->bHasHiddenBg)
 			{
-				cairo_save (pCairoContext);
-				cairo_set_source_rgba (pCairoContext, icon->pHiddenBgColor[0], icon->pHiddenBgColor[1], icon->pHiddenBgColor[2], icon->pHiddenBgColor[3] * pDock->fPostHideOffset);
-				w = icon->fWidth * icon->fScale;
-				h = icon->fHeight * icon->fScale;
-				if (pDock->container.bIsHorizontal)
-				{
-					cairo_translate (pCairoContext, icon->fDrawX - dw / 2, icon->fDrawY);
-					cairo_dock_draw_rounded_rectangle (pCairoContext, r, 0, w - 2*r + dw, h);
-				}
-				else
-				{
-					cairo_translate (pCairoContext, icon->fDrawY - dw / 2, icon->fDrawX);
-					cairo_dock_draw_rounded_rectangle (pCairoContext, r, 0, h - 2*r + dw, w);
-				}
-				cairo_fill (pCairoContext);
-				cairo_restore (pCairoContext);
+				if (icon->pHiddenBgColor)  // custom bg color
+					pHiddenBgColor = icon->pHiddenBgColor;
+				else  // default bg color
+					pHiddenBgColor = myDocksParam.fHiddenBg;
+				if ( pHiddenBgColor[3] != 0)
+				{
+					cairo_save (pCairoContext);
+					cairo_set_source_rgba (pCairoContext, pHiddenBgColor[0], pHiddenBgColor[1], pHiddenBgColor[2], pHiddenBgColor[3] * pDock->fPostHideOffset);
+					w = icon->fWidth * icon->fScale;
+					h = icon->fHeight * icon->fScale;
+					if (pDock->container.bIsHorizontal)
+					{
+						cairo_translate (pCairoContext, icon->fDrawX - dw / 2, icon->fDrawY);
+						cairo_dock_draw_rounded_rectangle (pCairoContext, r, 0, w - 2*r + dw, h);
+					}
+					else
+					{
+						cairo_translate (pCairoContext, icon->fDrawY - dw / 2, icon->fDrawX);
+						cairo_dock_draw_rounded_rectangle (pCairoContext, r, 0, h - 2*r + dw, w);
+					}
+					cairo_fill (pCairoContext);
+					cairo_restore (pCairoContext);
+				}
 			}
 			
 			cairo_save (pCairoContext);

=== modified file 'src/gldit/cairo-dock-gui-factory.c'
--- src/gldit/cairo-dock-gui-factory.c	2012-04-16 16:03:43 +0000
+++ src/gldit/cairo-dock-gui-factory.c	2012-06-19 14:00:30 +0000
@@ -38,6 +38,7 @@
 #include "cairo-dock-config.h"
 #include "cairo-dock-keyfile-utilities.h"
 #include "cairo-dock-backends-manager.h"
+#include "cairo-dock-X-utilities.h"  // cairo_dock_get_xwindow_class
 #include "cairo-dock-gui-factory.h"
 #include "cairo-dock-task.h"
 #include "cairo-dock-image-buffer.h"
@@ -868,28 +869,29 @@
 	GtkWindow *pParentWindow = data[1];
 
 	cd_debug ("clicked");
-	gtk_widget_set_sensitive (GTK_WIDGET(pEntry), FALSE); // locked (plus zoli :) )
-
-	gchar *cProp = cairo_dock_launch_command_sync ("xprop"); // avec "| grep CLASS | cut -d\\\" -f2", ca ne fonctionne pas et Fab n'aime pas les g_spawn_command_line_sync :) --> c'est surtout que c'est g_spawn_command_line_sync qui n'aime pas les grep.
-
-	gchar *str = g_strstr_len (cProp, -1, "WM_CLASS(STRING)"); // str pointant sur WM_
-	gchar *cResult = NULL; // NON CE N'EST PAS MA MOYENNE DE POINT !!!!
-	if (str != NULL)
+	gtk_widget_set_sensitive (GTK_WIDGET(pEntry), FALSE);  // lock the widget during the grab (it makes it more comprehensive).
+	
+	// We could use 'xprop' and look for the WM_CLASS field; however, in case of a Wine or Mono application, it wouldn't work so easily.
+	// So we just get the window ID, and pass it to the Class Manager, which has all the logic needed for class matching.
+	gchar *cResult = NULL;
+	gchar *cProp = cairo_dock_launch_command_sync ("xwininfo");  // let the user grab the window, and get the result.
+	const gchar *str = g_strstr_len (cProp, -1, "Window id");  // look for the window ID
+	if (str)
 	{
-		// WM_CLASS(STRING) = "gnome-terminal", "Gnome-terminal" \\ => utiliser le 2eme
-		str = strchr (str, ',');
-		str += 3;
-		gchar *max = strchr (str, '"'); // on pointe le 2e "
-		if (max != NULL)
-			cResult = g_strndup (str, max - str); // on prend ce qui est entre ""
+		// xwininfo: Window id: 0xc00009 "name-of-the-window"
+		str += 9;  // skip "Window id"
+		while (*str == ' ' || *str == ':')  // skip the ':'
+			str ++;
+		Window Xid = strtol (str, NULL, 0);  // XID is an unsigned long; we let the base be 0, so that the function guesses by itself.
+		cResult = cairo_dock_get_xwindow_class (Xid, NULL);  // let the class manager do the dirty job.
 	}
-	if (cResult == NULL)
+	if (cResult == NULL)  // shouldn't happen, so don't bother to present the warning to the user more than that.
 		cd_warning ("couldn't find the class of this window.");
 	
-	gtk_widget_set_sensitive (GTK_WIDGET(pEntry), TRUE); // unlocked
-	gtk_entry_set_text (pEntry, cResult); // on ajoute le txt dans le box des accuses
-	g_free (cProp); // Ah, mnt C Propr' !
-	g_free (cResult); // Ou qu'elle est la poulette ???
+	gtk_widget_set_sensitive (GTK_WIDGET(pEntry), TRUE);  // unlock the widget
+	gtk_entry_set_text (pEntry, cResult);  // write the result in the entry-box
+	g_free (cProp);
+	g_free (cResult);
 }
 
 void _cairo_dock_set_value_in_pair (GtkSpinButton *pSpinButton, gpointer *data)

=== modified file 'src/gldit/cairo-dock-gui-manager.h'
--- src/gldit/cairo-dock-gui-manager.h	2012-02-16 01:08:11 +0000
+++ src/gldit/cairo-dock-gui-manager.h	2012-06-19 14:00:30 +0000
@@ -77,6 +77,7 @@
 void cairo_dock_register_gui_backend (CairoDockGuiBackend *pBackend);
 
 /**Retrieve the group-key widget in the current config panel, corresponding to the (group,key) pair in its conf file.
+@param pModuleInstance the applet making the demand.
 @param cGroupName name of the group in the conf file.
 @param cKeyName name of the key in the conf file.
 @return the group-key widget that match the group and key, or NULL if none was found.
@@ -84,6 +85,7 @@
 CairoDockGroupKeyWidget *cairo_dock_get_group_key_widget_from_name (CairoDockModuleInstance *pModuleInstance, const gchar *cGroupName, const gchar *cKeyName);
 
 /** A mere wrapper around the previous function, that returns directly the GTK widget corresponding to the (group,key). Note that empty widgets will return NULL, so you can't you can't distinguish between an empty widget and an inexisant widget.
+@param pModuleInstance the applet making the demand.
 @param cGroupName name of the group in the conf file.
 @param cKeyName name of the key in the conf file.
 @return the widget that match the group and key, or NULL if the widget is empty or if none was found.
@@ -93,7 +95,7 @@
 void cairo_dock_reload_current_widget_full (CairoDockModuleInstance *pModuleInstance, int iShowPage);
 
 /**Reload the widget of a given module instance if it is currently opened (the current page is displayed). This is useful if the module has modified its conf file and wishes to display the changes.
-@param pInstance an instance of a module.
+@param pModuleInstance an instance of a module.
 */
 #define cairo_dock_reload_current_module_widget(pModuleInstance) cairo_dock_reload_current_widget_full (pModuleInstance, -1)
 #define cairo_dock_reload_current_module_widget_full cairo_dock_reload_current_widget_full

=== modified file 'src/gldit/cairo-dock-icon-facility.c'
--- src/gldit/cairo-dock-icon-facility.c	2012-02-16 01:08:11 +0000
+++ src/gldit/cairo-dock-icon-facility.c	2012-06-19 14:00:30 +0000
@@ -570,7 +570,7 @@
 	va_end (args);
 }
 
-void cairo_dock_set_quick_info (Icon *pIcon, CairoContainer *pContainer, const gchar *cQuickInfo)
+void cairo_dock_set_quick_info (Icon *pIcon, CairoContainer *pContainer_useless, const gchar *cQuickInfo)
 {
 	g_return_if_fail (pIcon != NULL);
 	
@@ -584,12 +584,12 @@
 		&myIconsParam.quickInfoTextDescription);
 }
 
-void cairo_dock_set_quick_info_printf (Icon *pIcon, CairoContainer *pContainer, const gchar *cQuickInfoFormat, ...)
+void cairo_dock_set_quick_info_printf (Icon *pIcon, CairoContainer *pContainer_useless, const gchar *cQuickInfoFormat, ...)
 {
 	va_list args;
 	va_start (args, cQuickInfoFormat);
 	gchar *cFullText = g_strdup_vprintf (cQuickInfoFormat, args);
-	cairo_dock_set_quick_info (pIcon, pContainer, cFullText);
+	cairo_dock_set_quick_info (pIcon, pContainer_useless, cFullText);
 	g_free (cFullText);
 	va_end (args);
 }
@@ -736,4 +736,4 @@
 		cairo_surface_destroy (surface);
 	}
 	return pixbuf;
-}
\ No newline at end of file
+}

=== modified file 'src/gldit/cairo-dock-icon-facility.h'
--- src/gldit/cairo-dock-icon-facility.h	2012-02-16 01:08:11 +0000
+++ src/gldit/cairo-dock-icon-facility.h	2012-06-19 14:00:30 +0000
@@ -244,13 +244,13 @@
 
 /** Make an icon static or not. Static icons are not animated when mouse hovers them.
 *@param icon an icon.
-*@param bStatic static or not.
+*@param _bStatic static or not.
 */
 #define cairo_dock_set_icon_static(icon, _bStatic) (icon)->bStatic = _bStatic
 
 /** Make an icon always visible, even when the dock is hidden.
 *@param icon an icon.
-*@param bAlwaysVisible whether the icon is always visible or not.
+*@param _bAlwaysVisible whether the icon is always visible or not.
 */
 #define cairo_dock_set_icon_always_visible(icon, _bAlwaysVisible) (icon)->bAlwaysVisible = _bAlwaysVisible
 

=== modified file 'src/gldit/cairo-dock-icon-factory.c'
--- src/gldit/cairo-dock-icon-factory.c	2012-04-16 16:03:43 +0000
+++ src/gldit/cairo-dock-icon-factory.c	2012-06-19 14:00:30 +0000
@@ -100,7 +100,7 @@
 {
 	if (icon->pContainer == NULL)
 	{
-		//g_print ("/!\\ Icon %s is not inside a container !!!\n", icon->cName);
+		cd_warning ("/!\\ Icon %s is not inside a container !!!", icon->cName);
 		return;
 	}
 	CairoDockModuleInstance *pInstance = icon->pModuleInstance;  // this is the only function where we destroy/create the icon's surface, so we must handle the cairo-context here.

=== modified file 'src/gldit/cairo-dock-icon-factory.h'
--- src/gldit/cairo-dock-icon-factory.h	2012-03-21 11:25:03 +0000
+++ src/gldit/cairo-dock-icon-factory.h	2012-06-19 14:00:30 +0000
@@ -206,12 +206,13 @@
 	gint iHideLabel;
 	gchar *cWmClass;
 	GList *pOverlays;
-	gdouble *pHiddenBgColor;
+	gdouble *pHiddenBgColor;  // NULL to use the default color
 	
 	gint iThumbnailX, iThumbnailY;  // X icon geometry for apps
 	gint iThumbnailWidth, iThumbnailHeight;
 	gboolean bDamaged;  // TRUE when the icon couldn't draw its surface, because the Gl context was not yet ready.
-	gpointer reserved[1];
+	gboolean bHasHiddenBg;
+	//gpointer reserved[1];
 };
 
 typedef void (*CairoIconContainerLoadFunc) (void);

=== modified file 'src/gldit/cairo-dock-icon-manager.c'
--- src/gldit/cairo-dock-icon-manager.c	2012-03-21 11:25:03 +0000
+++ src/gldit/cairo-dock-icon-manager.c	2012-06-19 14:00:30 +0000
@@ -264,6 +264,12 @@
 {
 	g_return_val_if_fail (cFileName != NULL, NULL);
 	
+	#if (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 32)
+	static GStaticMutex s_aMutexLookupIcon = G_STATIC_MUTEX_INIT;
+	#else
+	static GMutex s_aMutexLookupIcon;
+	#endif
+	
 	//\_______________________ easy cases: we receive a path.
 	if (*cFileName == '~')
 	{
@@ -321,10 +327,20 @@
 			if (str != NULL)
 				*str = '\0';
 		}
+		#if (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 32)
+		g_static_mutex_lock (&s_aMutexLookupIcon);
+		#else
+		g_mutex_lock (&s_aMutexLookupIcon); // it seems gtk_icon_theme_lookup_icon is not thread-safe...
+		#endif
 		pIconInfo = gtk_icon_theme_lookup_icon (s_pIconTheme,
 			sIconPath->str,
 			iDesiredIconSize, // GTK_ICON_LOOKUP_FORCE_SIZE if size < 30 ?? -> icons can be different // a lot of themes now use only svg files.
 			GTK_ICON_LOOKUP_FORCE_SVG);
+		#if (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 32)
+		g_static_mutex_unlock (&s_aMutexLookupIcon);
+		#else
+		g_mutex_unlock (&s_aMutexLookupIcon);
+		#endif
 		if (pIconInfo != NULL)
 		{
 			g_string_assign (sIconPath, gtk_icon_info_get_filename (pIconInfo));
@@ -383,6 +399,8 @@
 
 void cairo_dock_remove_path_from_icon_theme (const gchar *cThemePath)
 {
+	if (! GTK_IS_ICON_THEME (s_pIconTheme))
+		return;
 	g_signal_handlers_block_matched (s_pIconTheme,
 		(GSignalMatchType) G_SIGNAL_MATCH_FUNC,
 		0, 0, NULL, _on_icon_theme_changed, NULL);
@@ -951,6 +969,7 @@
 		NOTIFICATION_RENDER_ICON,
 		(CairoDockNotificationFunc) cairo_dock_render_icon_notification,
 		CAIRO_DOCK_RUN_FIRST, NULL);
+	
 }
 
 

=== modified file 'src/gldit/cairo-dock-module-factory.c'
--- src/gldit/cairo-dock-module-factory.c	2012-03-21 11:25:03 +0000
+++ src/gldit/cairo-dock-module-factory.c	2012-06-19 14:00:30 +0000
@@ -344,17 +344,12 @@
 		{
 			gsize length;
 			pMinimalConfig->pHiddenBgColor = g_key_file_get_double_list (pKeyFile, "Icon", "bg color", &length, NULL);
-			if (length < 4 || pMinimalConfig->pHiddenBgColor[3] == 0)
+			if (length < 4)  // invalid rgba color => use the default one.
 			{
 				g_free (pMinimalConfig->pHiddenBgColor);
 				pMinimalConfig->pHiddenBgColor = NULL;
 			}
 		}
-		else if (iBgColorType == 1)  // default bg color
-		{
-			if (myDocksParam.fHiddenBg[3] != 0)
-				pMinimalConfig->pHiddenBgColor = g_memdup (myDocksParam.fHiddenBg, sizeof (myDocksParam.fHiddenBg));
-		}
 	}
 	
 	//\____________________ on recupere les parametres de son desklet.
@@ -623,6 +618,7 @@
 				pIcon->cFileName = pMinimalConfig->cIconFileName;
 				pMinimalConfig->cIconFileName = NULL;  // idem
 				pIcon->bAlwaysVisible = pMinimalConfig->bAlwaysVisible;
+				pIcon->bHasHiddenBg = pMinimalConfig->bAlwaysVisible;  // if were going to see the applet all the time, let's add a background. if the user doesn't want it, he can always set a transparent bg color.
 				pIcon->pHiddenBgColor = pMinimalConfig->pHiddenBgColor;
 				pMinimalConfig->pHiddenBgColor = NULL;
 			}

=== modified file 'src/gldit/cairo-dock-overlay.h'
--- src/gldit/cairo-dock-overlay.h	2012-02-16 01:08:11 +0000
+++ src/gldit/cairo-dock-overlay.h	2012-06-19 14:00:30 +0000
@@ -105,8 +105,6 @@
 /** Add an overlay on an icon from a texture.
  *@param pIcon the icon
  *@param iTexture a texture
- *@param iWidth width of the texture, used to draw the texture if the scale is set to 0
- *@param iHeight height of the surface, used to draw the texture if the scale is set to 0
  *@param iPosition position where to display the overlay
  */
 void cairo_dock_add_overlay_from_texture (Icon *pIcon, GLuint iTexture, CairoOverlayPosition iPosition);
@@ -141,7 +139,7 @@
 
 void cairo_dock_print_overlay_on_icon (Icon *pIcon, CairoContainer *pContainer, CairoOverlay *pOverlay, CairoOverlayPosition iPosition);
 
-/** Print an overlay onto an icon from an image at a given position. You can't remove/modify the overlay then. The overlay will be displayed until you modify the icon directly (for instance by setting an image).
+/** Print an overlay onto an icon from an image at a given position. You can't remove/modify the overlay then. The overlay will be displayed until you modify the icon directly (for instance by setting a new image).
  *@param pIcon the icon
  *@param pContainer container of the icon
  *@param cImageFile an image (if it's not a path, it is searched amongst the current theme's images)
@@ -150,6 +148,15 @@
  */
 gboolean cairo_dock_print_overlay_on_icon_from_image (Icon *pIcon, CairoContainer *pContainer, const gchar *cImageFile, CairoOverlayPosition iPosition);
 
+/** Print an overlay onto an icon from a surface at a given position. You can't remove/modify the overlay then. The overlay will be displayed until you modify the icon directly (for instance by setting a new image).
+ *@param pIcon the icon
+ *@param pContainer container of the icon
+ *@param pSurface a cairo surface
+ *@param iWidth width of the surface
+ *@param iHeight height of the surface
+ *@param iPosition position where to display the overlay
+ *@return TRUE if the overlay has been successfuly printed.
+ */
 void cairo_dock_print_overlay_on_icon_from_surface (Icon *pIcon, CairoContainer *pContainer, cairo_surface_t *pSurface, int iWidth, int iHeight, CairoOverlayPosition iPosition);
 
 void cairo_dock_print_overlay_on_icon_from_texture (Icon *pIcon, CairoContainer *pContainer, GLuint iTexture, CairoOverlayPosition iPosition);

=== modified file 'src/gldit/cairo-dock-struct.h'
--- src/gldit/cairo-dock-struct.h	2012-02-16 01:08:11 +0000
+++ src/gldit/cairo-dock-struct.h	2012-06-19 14:00:30 +0000
@@ -322,7 +322,7 @@
  * 
  * \subsection render_container How can I draw anywhere on the dock, not only on my icon ?
  * 
- * Say you want to draw directly on your container, like <i>CairoPenguin</i> or <i>ShowMouse</i> do. This can be achieved easily by registering to the \ref NOTIFICATION_RENDER_DOCK or \ref NOTIFICATION_RENDER_DESKLET notifications. You will then be notified eash time a Dock or a Desklet is drawn. Register AFTER so that you will draw after the view.
+ * Say you want to draw directly on your container, like <i>CairoPenguin</i> or <i>ShowMouse</i> do. This can be achieved easily by registering to the \ref NOTIFICATION_RENDER notification. You will then be notified eash time a Dock or a Desklet is drawn. Register AFTER so that you will draw after the view.
  * 
  * 
  */

=== modified file 'src/gldit/eggaccelerators.c'
--- src/gldit/eggaccelerators.c	2012-02-16 01:08:11 +0000
+++ src/gldit/eggaccelerators.c	2012-06-19 14:00:30 +0000
@@ -175,6 +175,20 @@
 	  (string[6] == '>'));
 }
 
+static inline gboolean
+is_primary (const gchar *string)
+{
+	return ((string[0] == '<') &&
+		(string[1] == 'p' || string[1] == 'P') &&
+		(string[2] == 'r' || string[2] == 'R') &&
+		(string[3] == 'i' || string[3] == 'I') &&
+		(string[4] == 'm' || string[4] == 'M') &&
+		(string[5] == 'a' || string[5] == 'A') &&
+		(string[6] == 'r' || string[6] == 'R') &&
+		(string[7] == 'y' || string[7] == 'Y') &&
+		(string[8] == '>'));
+}
+
 /**
  * Parses a string representing a virtual accelerator. The format
  * looks like "&lt;Control&gt;a" or "&lt;Shift&gt;&lt;Alt&gt;F1" or
@@ -295,6 +309,12 @@
 	      len -= 7;
 	      mods |= EGG_VIRTUAL_SUPER_MASK;
 	    }
+          else if (len >= 9 && is_primary (accelerator))
+	    {
+	      accelerator += 9;
+	      len -= 9;
+	      mods |= EGG_VIRTUAL_CONTROL_MASK;
+	    }
 	  else
 	    {
 	      gchar last_ch;

=== modified file 'src/icon-factory/cairo-dock-applet-factory.c'
--- src/icon-factory/cairo-dock-applet-factory.c	2012-02-16 01:08:11 +0000
+++ src/icon-factory/cairo-dock-applet-factory.c	2012-06-19 14:00:30 +0000
@@ -44,6 +44,7 @@
 	
 	icon->fOrder = pMinimalConfig->fOrder;
 	icon->bAlwaysVisible = pMinimalConfig->bAlwaysVisible;
+	icon->bHasHiddenBg = pMinimalConfig->bAlwaysVisible;  // if were going to see the applet all the time, let's add a background. if the user doesn't want it, he can always set a transparent bg color.
 	icon->pHiddenBgColor = pMinimalConfig->pHiddenBgColor;
 	pMinimalConfig->pHiddenBgColor = NULL;
 	

=== modified file 'src/icon-factory/cairo-dock-application-factory.c'
--- src/icon-factory/cairo-dock-application-factory.c	2012-02-16 01:08:11 +0000
+++ src/icon-factory/cairo-dock-application-factory.c	2012-06-19 14:00:30 +0000
@@ -47,6 +47,7 @@
 static Atom s_aNetWmWindowType;
 static Atom s_aNetWmWindowTypeNormal;
 static Atom s_aNetWmWindowTypeDialog;
+static Atom s_aNetWmWindowTypeDock;
 static Atom s_aWmHints;
 static Atom s_aNetWmHidden;
 static Atom s_aNetWmFullScreen;
@@ -69,6 +70,7 @@
 	s_aNetWmWindowType = XInternAtom (s_XDisplay, "_NET_WM_WINDOW_TYPE", False);
 	s_aNetWmWindowTypeNormal = XInternAtom (s_XDisplay, "_NET_WM_WINDOW_TYPE_NORMAL", False);
 	s_aNetWmWindowTypeDialog = XInternAtom (s_XDisplay, "_NET_WM_WINDOW_TYPE_DIALOG", False);
+	s_aNetWmWindowTypeDock = XInternAtom (s_XDisplay, "_NET_WM_WINDOW_TYPE_DOCK", False);
 	
 	s_aWmHints = XInternAtom (s_XDisplay, "WM_HINTS", False);
 	
@@ -197,6 +199,10 @@
 					break;
 				}
 			}  // skip any other type (dock, menu, etc)
+			else if (pTypeBuffer[i] == s_aNetWmWindowTypeDock)  // workaround for the Unity-panel: if the type 'dock' is present, don't look further (as they add the 'normal' type too, which is non-sense).
+			{
+				break;
+			}
 		}
 		XFree (pTypeBuffer);
 		if (! bKeep)

=== modified file 'src/icon-factory/cairo-dock-desktop-file-factory.h'
--- src/icon-factory/cairo-dock-desktop-file-factory.h	2012-02-16 01:08:11 +0000
+++ src/icon-factory/cairo-dock-desktop-file-factory.h	2012-06-19 14:00:30 +0000
@@ -46,7 +46,6 @@
 *@param cURI URI of a file defining the launcher.
 *@param cDockName name of the dock the separator will be added.
 *@param fOrder order of the icon inside the dock.
-*@param iGroup group of the icon.
 *@param erreur an error filled if something went wrong.
 * @return the name of the new desktop file, in a newly allocated string, or NULL if failed.
 */
@@ -56,7 +55,6 @@
 *@param iLauncherType type of the icon it will represent : launcher, file, container icon, separator.
 *@param cDockName name of the dock the separator will be added.
 *@param fOrder order of the icon inside the dock.
-*@param iGroup group of the icon.
 *@param erreur an error filled if something went wrong.
 * @return the name of the new desktop file, in a newly allocated string, or NULL if failed.
 */

=== modified file 'src/implementations/cairo-dock-compiz-integration.h'
--- src/implementations/cairo-dock-compiz-integration.h	2011-10-03 15:12:11 +0000
+++ src/implementations/cairo-dock-compiz-integration.h	2012-06-19 14:00:30 +0000
@@ -32,7 +32,6 @@
 #define CD_COMPIZ_BUS "org.freedesktop.compiz"
 #define CD_COMPIZ_OBJECT "/org/freedesktop/compiz"
 #define CD_COMPIZ_INTERFACE "org.freedesktop.compiz"
-///#define OLD_WIDGET_LAYER 1  // seems better to rely on the _COMPIZ_WIDGET atom than on a rule.
 
 void cd_init_compiz_backend (void);
 


Follow ups