87
87
static void cairo_dock_blacklist_appli (Window Xid);
88
88
static Icon * cairo_dock_create_icon_from_xwindow (Window Xid, CairoDock *pDock);
90
/// mix : ff,ff... || g
90
92
//////////////////////////
91
93
// Appli manager : core //
92
94
//////////////////////////
842
844
cairo_dock_set_overwrite_exceptions (myTaskbarParam.cOverwriteException);
843
845
cairo_dock_set_group_exceptions (myTaskbarParam.cGroupException);
847
if (myTaskbarParam.bMixLauncherAppli)
849
myIconsParam.tIconTypeOrder[CAIRO_DOCK_LAUNCHER] = 0;
850
myIconsParam.tIconTypeOrder[CAIRO_DOCK_APPLI] = 0;
852
else // separated taskbar
854
if (myTaskbarParam.iIconPlacement == 0) // before the first icon
856
myIconsParam.tIconTypeOrder[CAIRO_DOCK_LAUNCHER] = 2;
857
myIconsParam.tIconTypeOrder[CAIRO_DOCK_APPLI] = 0;
859
else // after the last icon
861
myIconsParam.tIconTypeOrder[CAIRO_DOCK_LAUNCHER] = 0;
862
myIconsParam.tIconTypeOrder[CAIRO_DOCK_APPLI] = 2;
865
myIconsParam.tIconTypeOrder[CAIRO_DOCK_SEPARATOR12] = 1;
845
867
//\__________________ On recupere l'ensemble des fenetres presentes.
846
868
gulong i, iNbWindows = 0;
847
869
Window *pXWindowsList = cairo_dock_get_windows_list (&iNbWindows, FALSE); // on recupere les fenetres par ordre de creation, de facon a ce que si on redemarre la barre des taches, les lanceurs soient lies aux memes fenetres. Au prochain update, la liste sera recuperee par z-order, ce qui remettra le z-order de chaque icone a jour.
920
942
gchar *cParentDockName = pIcon->cParentDockName;
921
943
pIcon->cParentDockName = NULL; // astuce.
922
cairo_dock_detach_icon_from_dock (pIcon, pDock, myIconsParam.iSeparateIcons);
944
cairo_dock_detach_icon_from_dock_full (pIcon, pDock, !myTaskbarParam.bMixLauncherAppli);
923
945
if (! pDock->bIsMainDock) // la taille du main dock est mis a jour 1 fois a la fin.
925
947
if (pDock->icons == NULL) // le dock degage, le fake aussi.
929
951
if (CAIRO_DOCK_ICON_TYPE_IS_CLASS_CONTAINER (pFakeClassIcon)) // fake launcher
931
953
cd_debug ("on degage le fake qui pointe sur %s", cParentDockName);
932
cairo_dock_detach_icon_from_dock (pFakeClassIcon, pFakeClassParentDock, myIconsParam.iSeparateIcons);
954
cairo_dock_detach_icon_from_dock_full (pFakeClassIcon, pFakeClassParentDock, !myTaskbarParam.bMixLauncherAppli);
933
955
cairo_dock_free_icon (pFakeClassIcon);
934
956
if (! pFakeClassParentDock->bIsMainDock)
935
957
cairo_dock_update_dock_size (pFakeClassParentDock);
982
1004
CairoDock *pDock = cairo_dock_search_dock_from_name (pIcon->cParentDockName);
983
1005
if (pDock != NULL)
985
cairo_dock_detach_icon_from_dock (pIcon, pDock, FALSE);
1007
cairo_dock_detach_icon_from_dock_full (pIcon, pDock, FALSE);
988
1010
// make it an invalid appli, and free it.
1462
1484
pTaskBar->bHideVisibleApplis = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "hide visible", &bFlushConfFileNeeded, FALSE, "Applications", NULL);
1486
pTaskBar->iIconPlacement = cairo_dock_get_integer_key_value (pKeyFile, "TaskBar", "place icons", &bFlushConfFileNeeded, 1, NULL, NULL); // after the last icon by default.
1465
1488
// representation
1466
1489
pTaskBar->bOverWriteXIcons = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "overwrite xicon", &bFlushConfFileNeeded, TRUE, NULL, NULL);
1548
1571
CairoDock *pDock = g_pMainDock;
1550
1573
gboolean bUpdateSize = FALSE;
1551
if (pPrevTaskBar->bGroupAppliByClass != pTaskBar->bGroupAppliByClass ||
1552
pPrevTaskBar->bHideVisibleApplis != pTaskBar->bHideVisibleApplis ||
1553
pPrevTaskBar->bAppliOnCurrentDesktopOnly != pTaskBar->bAppliOnCurrentDesktopOnly ||
1554
pPrevTaskBar->bMixLauncherAppli != pTaskBar->bMixLauncherAppli ||
1555
pPrevTaskBar->bOverWriteXIcons != pTaskBar->bOverWriteXIcons ||
1556
pPrevTaskBar->iMinimizedWindowRenderType != pTaskBar->iMinimizedWindowRenderType ||
1557
pPrevTaskBar->iAppliMaxNameLength != pTaskBar->iAppliMaxNameLength ||
1558
cairo_dock_strings_differ (pPrevTaskBar->cGroupException, pTaskBar->cGroupException) ||
1559
cairo_dock_strings_differ (pPrevTaskBar->cOverwriteException, pTaskBar->cOverwriteException) ||
1560
pPrevTaskBar->bShowAppli != pTaskBar->bShowAppli)
1574
if (pPrevTaskBar->bGroupAppliByClass != pTaskBar->bGroupAppliByClass
1575
|| pPrevTaskBar->bHideVisibleApplis != pTaskBar->bHideVisibleApplis
1576
|| pPrevTaskBar->bAppliOnCurrentDesktopOnly != pTaskBar->bAppliOnCurrentDesktopOnly
1577
|| pPrevTaskBar->bMixLauncherAppli != pTaskBar->bMixLauncherAppli
1578
|| pPrevTaskBar->bOverWriteXIcons != pTaskBar->bOverWriteXIcons
1579
|| pPrevTaskBar->iMinimizedWindowRenderType != pTaskBar->iMinimizedWindowRenderType
1580
|| pPrevTaskBar->iAppliMaxNameLength != pTaskBar->iAppliMaxNameLength
1581
|| cairo_dock_strings_differ (pPrevTaskBar->cGroupException, pTaskBar->cGroupException)
1582
|| cairo_dock_strings_differ (pPrevTaskBar->cOverwriteException, pTaskBar->cOverwriteException)
1583
|| pPrevTaskBar->bShowAppli != pTaskBar->bShowAppli
1584
|| pPrevTaskBar->iIconPlacement != pTaskBar->iIconPlacement)
1562
1586
_cairo_dock_stop_application_manager ();
1566
if (! s_bAppliManagerIsRunning) // maintenant on veut voir les applis !
1568
cairo_dock_start_applications_manager (pDock); // va inserer le separateur si necessaire.
1572
gtk_widget_queue_draw (pDock->container.pWidget); // pour le fVisibleAlpha
1588
cairo_dock_start_applications_manager (pDock);
1576
1590
cairo_dock_calculate_dock_icons (pDock);
1577
1591
gtk_widget_queue_draw (pDock->container.pWidget); // le 'gdk_window_move_resize' ci-dessous ne provoquera pas le redessin si la taille n'a pas change.
1579
1593
cairo_dock_move_resize_dock (pDock);
1597
gtk_widget_queue_draw (pDock->container.pWidget); // pour le fVisibleAlpha