~cairo-dock-team/cairo-dock-core/code-cleaning-2.5.0-alpha

« back to all changes in this revision

Viewing changes to src/gldit/cairo-dock-applications-manager.c

  • Committer: Fabrice Rey
  • Date: 2011-10-03 23:58:03 UTC
  • Revision ID: fabounet03@gmail.com-20111003235803-hd4ylwcf9hp45eb1
Core: removed the 'applet' group (now applets and launchers/separators/sub-dock icons are placed togather, taskbar icons can be separated or not, and in the first case, placed before of after the other icons) => 2.5.0-alpha1

Show diffs side-by-side

added added

removed removed

Lines of Context:
87
87
static void cairo_dock_blacklist_appli (Window Xid);
88
88
static Icon * cairo_dock_create_icon_from_xwindow (Window Xid, CairoDock *pDock);
89
89
 
 
90
/// mix : ff,ff... || g
 
91
 
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);
844
846
        
 
847
        if (myTaskbarParam.bMixLauncherAppli)
 
848
        {
 
849
                myIconsParam.tIconTypeOrder[CAIRO_DOCK_LAUNCHER] = 0;
 
850
                myIconsParam.tIconTypeOrder[CAIRO_DOCK_APPLI] = 0;
 
851
        }
 
852
        else  // separated taskbar
 
853
        {
 
854
                if (myTaskbarParam.iIconPlacement == 0)  // before the first icon
 
855
                {
 
856
                        myIconsParam.tIconTypeOrder[CAIRO_DOCK_LAUNCHER] = 2;
 
857
                        myIconsParam.tIconTypeOrder[CAIRO_DOCK_APPLI] = 0;
 
858
                }
 
859
                else  // after the last icon
 
860
                {
 
861
                        myIconsParam.tIconTypeOrder[CAIRO_DOCK_LAUNCHER] = 0;
 
862
                        myIconsParam.tIconTypeOrder[CAIRO_DOCK_APPLI] = 2;
 
863
                }
 
864
        }
 
865
        myIconsParam.tIconTypeOrder[CAIRO_DOCK_SEPARATOR12] = 1;
 
866
        
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.
919
941
        {
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.
924
946
                {
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
930
952
                                {
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)
984
1006
        {
985
 
                cairo_dock_detach_icon_from_dock (pIcon, pDock, FALSE);
 
1007
                cairo_dock_detach_icon_from_dock_full (pIcon, pDock, FALSE);
986
1008
        }
987
1009
        
988
1010
        // make it an invalid appli, and free it.
1461
1483
                
1462
1484
                pTaskBar->bHideVisibleApplis = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "hide visible", &bFlushConfFileNeeded, FALSE, "Applications", NULL);
1463
1485
                
 
1486
                pTaskBar->iIconPlacement = cairo_dock_get_integer_key_value (pKeyFile, "TaskBar", "place icons", &bFlushConfFileNeeded, 1, NULL, NULL);  // after the last icon by default.
1464
1487
                
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;
1549
1572
        
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)
1561
1585
        {
1562
1586
                _cairo_dock_stop_application_manager ();
1563
 
                bUpdateSize = TRUE;
1564
 
        }
1565
 
        
1566
 
        if (! s_bAppliManagerIsRunning)  // maintenant on veut voir les applis !
1567
 
        {
1568
 
                cairo_dock_start_applications_manager (pDock);  // va inserer le separateur si necessaire.
1569
 
                bUpdateSize = TRUE;
1570
 
        }
1571
 
        else
1572
 
                gtk_widget_queue_draw (pDock->container.pWidget);  // pour le fVisibleAlpha
1573
 
        
1574
 
        if (bUpdateSize)
1575
 
        {
 
1587
                
 
1588
                cairo_dock_start_applications_manager (pDock);
 
1589
                
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.
1578
1592
                
1579
1593
                cairo_dock_move_resize_dock (pDock);
1580
1594
        }
 
1595
        else
 
1596
        {
 
1597
                gtk_widget_queue_draw (pDock->container.pWidget);  // pour le fVisibleAlpha
 
1598
        }
1581
1599
}
1582
1600
 
1583
1601
 
1624
1642
        
1625
1643
        // empty the applis table.
1626
1644
        g_hash_table_foreach_remove (s_hXWindowTable, (GHRFunc) _remove_appli, NULL);
 
1645
        
 
1646
        s_bAppliManagerIsRunning = FALSE;
1627
1647
}
1628
1648
 
1629
1649