137
161
CairoDock *pDock = cairo_dock_search_dock_from_name (pIcon->cParentDockName);
138
162
if (pDock != NULL)
164
gchar *cParentDockName = pIcon->cParentDockName;
165
pIcon->cParentDockName = NULL; // astuce.
140
166
cairo_dock_detach_icon_from_dock (pIcon, pDock, g_bUseSeparator);
141
167
if (pDock->icons == NULL)
142
cairo_dock_destroy_dock (pDock, pIcon->cParentDockName, NULL, NULL);
168
cairo_dock_destroy_dock (pDock, cParentDockName, NULL, NULL);
143
169
else if (! pDock->bIsMainDock)
144
170
cairo_dock_update_dock_size (pDock);
171
g_free (cParentDockName);
147
cairo_dock_free_icon_buffers (pIcon); // pour ne pas passer dans le 'unregister'.
174
cairo_dock_free_icon_buffers (pIcon); // on ne veut pas passer dans le 'unregister' ni la gestion de la classe.
175
cairo_dock_unregister_pid (pIcon);
497
524
cd_message ( "s_aNetWmHidden");
498
525
*bIsHidden = TRUE;
528
else if (pXStateBuffer[i] == s_aNetWmMaximizedVert)
530
iNbMaximizedDimensions ++;
531
if (iNbMaximizedDimensions == 2)
533
*bIsMaximized = TRUE;
537
else if (pXStateBuffer[i] == s_aNetWmMaximizedHoriz)
539
iNbMaximizedDimensions ++;
540
if (iNbMaximizedDimensions == 2)
542
*bIsMaximized = TRUE;
504
549
XFree (pXStateBuffer);
507
Window cairo_dock_get_active_window (void)
552
Window cairo_dock_get_active_xwindow (void)
509
Atom aNetActiveWindow = XInternAtom (s_XDisplay, "_NET_ACTIVE_WINDOW", False);
510
554
Atom aReturnedType = 0;
511
555
int aReturnedFormat = 0;
512
556
unsigned long iLeftBytes, iBufferNbElements = 0;
513
557
gulong *pXBuffer = NULL;
514
558
Window root = DefaultRootWindow (s_XDisplay);
515
XGetWindowProperty (s_XDisplay, root, aNetActiveWindow, 0, G_MAXULONG, False, XA_WINDOW, &aReturnedType, &aReturnedFormat, &iBufferNbElements, &iLeftBytes, (guchar **)&pXBuffer);
559
XGetWindowProperty (s_XDisplay, root, s_aNetActiveWindow, 0, G_MAXULONG, False, XA_WINDOW, &aReturnedType, &aReturnedFormat, &iBufferNbElements, &iLeftBytes, (guchar **)&pXBuffer);
517
561
Window xActiveWindow = (iBufferNbElements > 0 && pXBuffer != NULL ? pXBuffer[0] : 0);
518
562
XFree (pXBuffer);
607
651
if (cairo_dock_animation_will_be_visible (pParentDock) && ! pParentDock->bInside && g_bAnimateOnActiveWindow)
609
cairo_dock_arm_animation (icon, CAIRO_DOCK_WOBBLY, 1); // un clignotement. il faut choisir une animation qui ne necessite pas que la fenetre du dock soit de taille maximale.
653
cairo_dock_arm_animation (icon, CAIRO_DOCK_WOBBLY, 1); // une deformation. il faut choisir une animation qui ne necessite pas que la fenetre du dock soit de taille maximale.
610
654
cairo_dock_start_animation (icon, pParentDock);
659
static gboolean _cairo_dock_window_is_on_our_way (Window *Xid, Icon *icon, int *data)
661
if (icon != NULL && cairo_dock_window_is_on_this_desktop (*Xid, data[0]))
663
gboolean bIsFullScreen, bIsHidden, bIsMaximized;
664
cairo_dock_window_is_fullscreen_or_hidden_or_maximized (*Xid, &bIsFullScreen, &bIsHidden, &bIsMaximized);
665
if ((data[1] && bIsMaximized & ! bIsHidden) || (data[2] && bIsFullScreen))
667
cd_message ("%s est genante (%d, %d) (%d;%d %dx%d)", icon->acName, bIsMaximized, bIsFullScreen, icon->windowGeometry.x, icon->windowGeometry.y, icon->windowGeometry.width, icon->windowGeometry.height);
668
if (cairo_dock_window_hovers_dock (&icon->windowGeometry, g_pMainDock))
670
cd_message (" et en plus elle empiete sur notre dock");
677
Icon * cairo_dock_search_window_on_our_way (gboolean bMaximizedWindow, gboolean bFullScreenWindow)
679
cd_message ("%s (%d, %d)", __func__, bMaximizedWindow, bFullScreenWindow);
680
if (! bMaximizedWindow && ! bFullScreenWindow)
683
iDesktopNumber = cairo_dock_get_current_desktop ();
684
int data[3] = {iDesktopNumber, bMaximizedWindow, bFullScreenWindow};
685
return g_hash_table_find (s_hXWindowTable, (GHRFunc) _cairo_dock_window_is_on_our_way, data);
615
687
static void _cairo_dock_hide_show_windows_on_other_desktops (Window *Xid, Icon *icon, int *pCurrentDesktop)
617
689
g_return_if_fail (Xid != NULL && pCurrentDesktop != NULL);
641
713
gtk_widget_queue_draw (pParentDock->pWidget);
716
static void _cairo_dock_fill_icon_buffer_with_thumbnail (Icon *icon, CairoDock *pParentDock)
719
if (! icon->bIsHidden) // elle vient d'apparaitre => nouveau backing pixmap.
721
if (icon->iBackingPixmap != 0)
722
XFreePixmap (s_XDisplay, icon->iBackingPixmap);
723
if (g_bShowThumbnail)
724
icon->iBackingPixmap = XCompositeNameWindowPixmap (s_XDisplay, icon->Xid);
725
g_print ("new backing pixmap (bis) : %d\n", icon->iBackingPixmap);
728
cairo_t *pCairoContext = cairo_dock_create_context_from_window (CAIRO_CONTAINER (pParentDock));
729
cairo_dock_fill_one_icon_buffer (icon, pCairoContext, 1 + g_fAmplitude, pParentDock->bHorizontalDock, TRUE, pParentDock->bDirectionUp);
730
cairo_destroy (pCairoContext);
731
icon->fWidth *= pParentDock->fRatio;
732
icon->fHeight *= pParentDock->fRatio;
644
734
gboolean cairo_dock_unstack_Xevents (CairoDock *pDock)
646
736
static XEvent event;
647
static int iLastActiveWindow = 0;
648
737
static gboolean bInProgress = FALSE;
650
739
g_return_val_if_fail (pDock != NULL, FALSE);
677
767
else if (event.xproperty.atom == s_aNetActiveWindow)
679
Window XActiveWindow = cairo_dock_get_active_window ();
680
if (iLastActiveWindow != XActiveWindow)
769
Window XActiveWindow = cairo_dock_get_active_xwindow ();
770
if (s_iCurrentActiveWindow != XActiveWindow)
682
iLastActiveWindow = XActiveWindow;
683
772
icon = g_hash_table_lookup (s_hXWindowTable, &XActiveWindow);
773
CairoDock *pParentDock = NULL;
684
774
if (icon != NULL)
686
776
cd_message ("%s devient active", icon->acName);
687
CairoDock *pParentDock = cairo_dock_search_dock_from_name (icon->cParentDockName);
777
pParentDock = cairo_dock_search_dock_from_name (icon->cParentDockName);
688
778
if (pParentDock == NULL) // elle est inhibee.
690
780
cairo_dock_update_activity_on_inhibators (icon->cClass, icon->Xid);
694
cairo_dock_animate_icon_on_active (icon, pParentDock);
784
if (g_bAnimateOnActiveWindow)
785
cairo_dock_animate_icon_on_active (icon, pParentDock);
786
else if (pParentDock->iSidShrinkDown == 0)
787
cairo_dock_redraw_my_icon (icon, CAIRO_CONTAINER (pParentDock));
789
///icon->bIsActive = TRUE;
792
Icon *pLastActiveIcon = g_hash_table_lookup (s_hXWindowTable, &s_iCurrentActiveWindow);
793
if (pLastActiveIcon != NULL)
795
///pLastActiveIcon->bIsActive = FALSE;
796
CairoDock *pLastActiveParentDock = cairo_dock_search_dock_from_name (pLastActiveIcon->cParentDockName);
797
if (pLastActiveParentDock != NULL)
799
if (pLastActiveParentDock->iSidShrinkDown == 0)
800
cairo_dock_redraw_my_icon (pLastActiveIcon, CAIRO_CONTAINER (pLastActiveParentDock));
804
cairo_dock_update_inactivity_on_inhibators (pLastActiveIcon->cClass, pLastActiveIcon->Xid);
698
808
cairo_dock_notify (CAIRO_DOCK_WINDOW_ACTIVATED, &XActiveWindow);
810
s_iCurrentActiveWindow = XActiveWindow;
701
813
else if (event.xproperty.atom == s_aNetCurrentDesktop || event.xproperty.atom == s_aNetDesktopViewport)
707
819
int data[2] = {iDesktopNumber, GPOINTER_TO_INT (pDock)};
708
820
g_hash_table_foreach (s_hXWindowTable, (GHFunc) _cairo_dock_hide_show_windows_on_other_desktops, data);
822
if (cairo_dock_quick_hide_is_activated () && (g_bAutoHideOnFullScreen || g_bAutoHideOnMaximized))
824
if (cairo_dock_search_window_on_our_way (g_bAutoHideOnMaximized, g_bAutoHideOnFullScreen) == NULL)
826
cd_message (" => plus aucune fenetre genante");
827
cairo_dock_deactivate_temporary_auto_hide ();
830
else if (! cairo_dock_quick_hide_is_activated () && (g_bAutoHideOnFullScreen || g_bAutoHideOnMaximized))
832
if (cairo_dock_search_window_on_our_way (g_bAutoHideOnMaximized, g_bAutoHideOnFullScreen) != NULL)
834
cd_message (" => une fenetre est genante");
835
cairo_dock_activate_temporary_auto_hide ();
838
cd_message ("bureau change");
710
839
cairo_dock_notify (CAIRO_DOCK_DESKTOP_CHANGED, NULL);
841
else if (event.xproperty.atom == s_aNetNbDesktops)
843
cd_message ("changementdu nombre de bureaux virtuels");
844
g_iNbDesktops = cairo_dock_get_nb_desktops ();
845
cairo_dock_notify (CAIRO_DOCK_SCREEN_GEOMETRY_ALTERED, NULL);
712
847
else if (event.xproperty.atom == s_aNetDesktopGeometry)
714
849
cd_message ("geometrie du bureau alteree");
715
if (cairo_dock_update_screen_geometry ()) // modification largeur et/ou hauteur.
851
cairo_dock_get_nb_viewports (&g_iNbViewportX, &g_iNbViewportY);
853
if (cairo_dock_update_screen_geometry ()) // modification de la resolution.
717
855
cairo_dock_set_window_position_at_balance (pDock, pDock->iCurrentWidth, pDock->iCurrentHeight);
718
856
gtk_window_move (GTK_WINDOW (pDock->pWidget), pDock->iWindowPositionX, pDock->iWindowPositionY);
719
cairo_dock_notify (CAIRO_DOCK_SCREEN_GEOMETRY_ALTERED, NULL);
721
g_iNbDesktops = cairo_dock_get_nb_desktops ();
722
cairo_dock_get_nb_viewports (&g_iNbViewportX, &g_iNbViewportY);
858
cairo_dock_notify (CAIRO_DOCK_SCREEN_GEOMETRY_ALTERED, NULL);
860
else if (event.xproperty.atom == s_aRootMapID)
862
cd_message ("changement du fond d'ecran");
863
if (g_bUseFakeTransparency)
864
cairo_dock_load_desktop_background_surface ();
866
cairo_dock_invalidate_desktop_bg_surface ();
867
cairo_dock_notify (CAIRO_DOCK_SCREEN_GEOMETRY_ALTERED, NULL);
727
872
if (event.xproperty.atom == s_aNetWmState || event.xproperty.atom == XInternAtom (s_XDisplay, "_KDE_WM_WINDOW_OPACITY", False))
729
gboolean bIsFullScreen, bIsHidden;
730
cairo_dock_window_is_fullscreen_or_hidden (Xid, &bIsFullScreen, &bIsHidden);
731
cd_message ("changement d'etat de %d => {%d ; %d}", Xid, bIsFullScreen, bIsHidden);
732
if (g_bAutoHideOnFullScreen && bIsFullScreen && ! cairo_dock_quick_hide_is_activated ())
734
cd_message (" => devient plein ecran");
735
cairo_dock_activate_temporary_auto_hide (g_pMainDock);
874
gboolean bIsFullScreen, bIsHidden, bIsMaximized;
875
cairo_dock_window_is_fullscreen_or_hidden_or_maximized (Xid, &bIsFullScreen, &bIsHidden, &bIsMaximized);
876
cd_message ("changement d'etat de %d => {%d ; %d ; %d}", Xid, bIsFullScreen, bIsHidden, bIsMaximized);
877
/*if (g_bAutoHideOnFullScreen)
879
if (bIsFullScreen && ! cairo_dock_quick_hide_is_activated ())
881
cd_message (" => devient plein ecran");
882
cairo_dock_activate_temporary_auto_hide ();
884
else if (! bIsFullScreen && cairo_dock_quick_hide_is_activated ())
886
if (cairo_dock_search_fullscreen_window_on_current_desktop () == NULL)
887
cairo_dock_deactivate_temporary_auto_hide ();
890
gboolean bChangeIntercepted = FALSE;
891
if (g_bAutoHideOnMaximized || g_bAutoHideOnFullScreen)
893
if ( ((bIsMaximized && ! bIsHidden && g_bAutoHideOnMaximized) || (bIsFullScreen && g_bAutoHideOnFullScreen)) && ! cairo_dock_quick_hide_is_activated ())
895
icon = g_hash_table_lookup (s_hXWindowTable, &Xid);
896
cd_message (" => %s devient genante", icon != NULL ? icon->acName : "une fenetre");
897
if (icon != NULL && cairo_dock_window_hovers_dock (&icon->windowGeometry, g_pMainDock))
898
cairo_dock_activate_temporary_auto_hide ();
899
//bChangeIntercepted = TRUE;
901
else if ((! bIsMaximized || ! g_bAutoHideOnMaximized || bIsHidden) && (! bIsFullScreen || ! g_bAutoHideOnFullScreen) && cairo_dock_quick_hide_is_activated ())
903
if (cairo_dock_search_window_on_our_way (g_bAutoHideOnMaximized, g_bAutoHideOnFullScreen) == NULL)
905
cd_message (" => plus aucune fenetre genante");
906
cairo_dock_deactivate_temporary_auto_hide ();
907
//bChangeIntercepted = TRUE;
911
if (! bChangeIntercepted)
739
913
icon = g_hash_table_lookup (s_hXWindowTable, &Xid);
740
914
if (icon != NULL && icon->fPersonnalScale <= 0) // pour une icône en cours de supression, on ne fait rien.
749
923
icon->bIsHidden = bIsHidden;
750
924
cairo_dock_update_visibility_on_inhibators (icon->cClass, icon->Xid, icon->bIsHidden);
752
if (g_bHideVisibleApplis && pParentDock != NULL)
926
/*if (cairo_dock_quick_hide_is_activated ())
928
if (cairo_dock_search_window_on_our_way (g_bAutoHideOnMaximized, g_bAutoHideOnFullScreen) == NULL)
929
cairo_dock_deactivate_temporary_auto_hide ();
932
if (g_bShowThumbnail && pParentDock != NULL)
934
if (! icon->bIsHidden)
936
if (icon->iBackingPixmap != 0)
937
XFreePixmap (s_XDisplay, icon->iBackingPixmap);
938
if (g_bShowThumbnail)
939
icon->iBackingPixmap = XCompositeNameWindowPixmap (s_XDisplay, Xid);
940
cd_message ("new backing pixmap (bis) : %d", icon->iBackingPixmap);
942
cairo_t *pCairoContext = cairo_dock_create_context_from_window (CAIRO_CONTAINER (pParentDock));
943
cairo_dock_fill_one_icon_buffer (icon, pCairoContext, 1 + g_fAmplitude, pDock->bHorizontalDock, TRUE, pDock->bDirectionUp);
944
cairo_destroy (pCairoContext);
945
icon->fWidth *= pParentDock->fRatio;
946
icon->fHeight *= pParentDock->fRatio;
949
if (g_bHideVisibleApplis)
756
953
cd_message (" => se cache");
757
954
if (! g_bAppliOnCurrentDesktopOnly || cairo_dock_window_is_on_current_desktop (Xid))
758
956
pParentDock = cairo_dock_insert_appli_in_dock (icon, pDock, CAIRO_DOCK_UPDATE_DOCK_SIZE, ! CAIRO_DOCK_ANIMATE_ICON);
957
if (pParentDock != NULL)
958
_cairo_dock_fill_icon_buffer_with_thumbnail (icon, pParentDock);
762
963
cd_message (" => re-apparait");
763
cairo_dock_detach_icon_from_dock (icon, pParentDock, TRUE);
764
cairo_dock_update_dock_size (pParentDock);
964
if (pParentDock != NULL)
966
cairo_dock_detach_icon_from_dock (icon, pParentDock, TRUE);
967
cairo_dock_update_dock_size (pParentDock);
766
970
if (pParentDock != NULL)
767
971
gtk_widget_queue_draw (pParentDock->pWidget);
973
else if (g_bShowThumbnail && pParentDock != NULL)
975
_cairo_dock_fill_icon_buffer_with_thumbnail (icon, pParentDock);
976
if (pParentDock->iSidShrinkDown == 0)
977
cairo_dock_redraw_my_icon (icon, CAIRO_CONTAINER (pParentDock));
769
979
else if (g_fVisibleAppliAlpha != 0)
771
981
icon->fAlpha = 1; // on triche un peu.
772
if (pParentDock != NULL)
982
if (pParentDock != NULL && pParentDock->iSidShrinkDown == 0)
773
983
cairo_dock_redraw_my_icon (icon, CAIRO_CONTAINER (pParentDock));
815
1035
if (icon != NULL && icon->fPersonnalScale <= 0) // pour une icone en cours de supression, on ne fait rien.
817
if (event.xconfigure.x + event.xconfigure.width < 0 || event.xconfigure.x > g_iScreenWidth[CAIRO_DOCK_HORIZONTAL] || event.xconfigure.y + event.xconfigure.height < 0 || event.xconfigure.y > g_iScreenHeight[CAIRO_DOCK_HORIZONTAL]) // en fait il faudrait faire ca modulo le nombre de viewports * la largeur d'un bureau, car avec une fenetre a droite, elle peut revenir sur le bureau par la gauche si elle est tres large...
1037
if (event.xconfigure.x + event.xconfigure.width <= 0 || event.xconfigure.x >= g_iScreenWidth[CAIRO_DOCK_HORIZONTAL] || event.xconfigure.y + event.xconfigure.height <= 0 || event.xconfigure.y >= g_iScreenHeight[CAIRO_DOCK_HORIZONTAL]) // en fait il faudrait faire ca modulo le nombre de viewports * la largeur d'un bureau, car avec une fenetre a droite, elle peut revenir sur le bureau par la gauche si elle est tres large...
819
1039
CairoDock *pParentDock = cairo_dock_search_dock_from_name (icon->cParentDockName);
820
1040
if (pParentDock == NULL)
1041
pParentDock = pDock; /// pertinent ?...
822
1042
cairo_dock_detach_icon_from_dock (icon, pParentDock, TRUE);
823
1043
cairo_dock_update_dock_size (pParentDock);
824
1044
gtk_widget_queue_draw (pParentDock->pWidget);
826
1046
else // elle est sur le bureau.
1048
cd_message ("cette fenetre s'est deplacee sur le bureau courant (%d;%d)", event.xconfigure.x, event.xconfigure.y);
828
1049
gboolean bInsideDock;
829
1050
if (g_list_find (pDock->icons, icon) == NULL)
846
1067
cairo_dock_notify (CAIRO_DOCK_WINDOW_CONFIGURED, &event.xconfigure);
849
// cd_message (" type : %d; window : %d\n", event.xany.type, Xid);
1069
/*else if (event.type == g_iDamageEvent + XDamageNotify)
1071
XDamageNotifyEvent *e = (XDamageNotifyEvent *) &event;
1072
g_print ("window %s has been damaged (%d;%d %dx%d)\n", e->drawable, e->area.x, e->area.y, e->area.width, e->area.height);
1073
// e->drawable is the window ID of the damaged window
1074
// e->geometry is the geometry of the damaged window
1075
// e->area is the bounding rect for the damaged area
1076
// e->damage is the damage handle returned by XDamageCreate()
1078
// Subtract all the damage, repairing the window.
1079
XDamageSubtract (s_XDisplay, e->damage, None, None);
1082
g_print (" type : %d (%d); window : %d\n", event.type, XDamageNotify, Xid);*/
851
1084
if (XEventsQueued (s_XDisplay, QueuedAlready) != 0)
852
1085
XSync (s_XDisplay, True); // True <=> discard.
881
1114
CairoDock *cairo_dock_insert_appli_in_dock (Icon *icon, CairoDock *pMainDock, gboolean bUpdateSize, gboolean bAnimate)
1116
cd_message ("%s (%s, %d)", __func__, icon->acName, icon->Xid);
1118
//\_________________ On gere ses eventuels inhibiteurs.
1119
if (g_bMixLauncherAppli && cairo_dock_prevent_inhibated_class (icon))
1121
cd_message (" -> se fait inhiber");
883
1125
//\_________________ On determine dans quel dock l'inserer.
884
if (g_bMixLauncherAppli && cairo_dock_prevent_inhibated_class (icon))
887
1126
CairoDock *pParentDock = cairo_dock_manage_appli_class (icon, pMainDock); // renseigne cParentDockName.
888
1127
g_return_val_if_fail (pParentDock != NULL, NULL);
890
1129
//\_________________ On l'insere dans son dock parent en animant ce dernier eventuellement.
891
1130
cairo_dock_insert_icon_in_dock (icon, pParentDock, bUpdateSize, bAnimate, CAIRO_DOCK_APPLY_RATIO, g_bUseSeparator);
892
cd_message (" insertion de %s complete (%.2f %.2fx%.2f)", icon->acName, icon->fPersonnalScale, icon->fWidth, icon->fHeight);
1131
cd_message (" insertion de %s complete (%.2f %.2fx%.2f) dans %s", icon->acName, icon->fPersonnalScale, icon->fWidth, icon->fHeight, icon->cParentDockName);
894
1133
if (bAnimate && cairo_dock_animation_will_be_visible (pParentDock))
904
1143
return pParentDock;
907
static void _cairo_dock_remove_old_applis (Window *Xid, Icon *icon, double *fTime)
1146
static gboolean _cairo_dock_remove_old_applis (Window *Xid, Icon *icon, double *fTime)
1148
gboolean bToBeRemoved = FALSE;
909
1149
if (icon != NULL)
911
1151
//g_print ("%s (%s, %f / %f)\n", __func__, icon->acName, icon->fLastCheckTime, *fTime);
912
1152
if (icon->fLastCheckTime > 0 && icon->fLastCheckTime < *fTime && icon->fPersonnalScale <= 0)
914
1154
cd_message ("cette fenetre (%ld) est trop vieille", *Xid);
1156
if (cairo_dock_quick_hide_is_activated () && (g_bAutoHideOnFullScreen || g_bAutoHideOnMaximized))
1158
if (cairo_dock_search_window_on_our_way (g_bAutoHideOnMaximized, g_bAutoHideOnFullScreen) == NULL)
1160
cd_message (" => plus aucune fenetre genante");
1161
cairo_dock_deactivate_temporary_auto_hide ();
915
1165
CairoDock *pParentDock = cairo_dock_search_dock_from_name (icon->cParentDockName);
916
1166
if (pParentDock != NULL)
918
if (! pParentDock->bInside && (g_bAutoHide || pParentDock->iRefCount != 0) && pParentDock->bAtBottom)
1168
if (! pParentDock->bInside && (pParentDock->bAutoHide || pParentDock->iRefCount != 0) && pParentDock->bAtBottom)
919
1169
icon->fPersonnalScale = 0.05;
921
1171
icon->fPersonnalScale = 1.0;
922
1172
//g_print ("icon->fPersonnalScale <- %.2f\n", icon->fPersonnalScale);
924
1174
cairo_dock_start_animation (icon, pParentDock);
928
1178
cd_message (" pas dans un container, on la detruit donc immediatement");
1179
icon->fLastCheckTime = -1; // pour ne pas la desenregistrer de la HashTable lors du 'free'.
929
1180
cairo_dock_free_icon (icon);
1181
bToBeRemoved = TRUE;
1182
/// redessiner les inhibiteurs...
1186
return bToBeRemoved;
934
1188
void cairo_dock_update_applis_list (CairoDock *pDock, double fTime)