~ubuntu-branches/ubuntu/oneiric/cairo-dock/oneiric

« back to all changes in this revision

Viewing changes to src/gldit/cairo-dock-dock-factory.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthieu Baerts (matttbe)
  • Date: 2010-09-07 20:31:25 UTC
  • mto: (18.1.1 cairo-dock) (19.1.1 cairo-dock)
  • mto: This revision was merged to the branch mainline in revision 14.
  • Revision ID: james.westby@ubuntu.com-20100907203125-a91ch8odv2r6ziic
Tags: upstream-2.2.0~0rc1
ImportĀ upstreamĀ versionĀ 2.2.0~0rc1

Show diffs side-by-side

added added

removed removed

Lines of Context:
255
255
                g_source_remove (pDock->iSidUpdateWMIcons);
256
256
        if (pDock->iSidLoadBg != 0)
257
257
                g_source_remove (pDock->iSidLoadBg);
 
258
        if (pDock->iSidDestroyEmptyDock != 0)
 
259
                g_source_remove (pDock->iSidDestroyEmptyDock);
 
260
        if (pDock->iSidTestMouseOutside != 0)
 
261
                g_source_remove (pDock->iSidTestMouseOutside);
258
262
        cairo_dock_notify (CAIRO_DOCK_STOP_DOCK, pDock);
259
263
        
260
264
        g_list_foreach (pDock->icons, (GFunc) cairo_dock_free_icon, NULL);
261
265
        g_list_free (pDock->icons);
262
266
        pDock->icons = NULL;
263
267
        
264
 
        cairo_dock_finish_container (CAIRO_CONTAINER (pDock));
265
 
        
266
268
        if (pDock->pShapeBitmap != NULL)
267
269
                g_object_unref ((gpointer) pDock->pShapeBitmap);
268
270
        
281
283
        if (pDock->iRedirectedTexture != 0)
282
284
                _cairo_dock_delete_texture (pDock->iRedirectedTexture);
283
285
        
 
286
        cairo_dock_finish_container (CAIRO_CONTAINER (pDock));
 
287
        
284
288
        g_free (pDock);
285
289
}
286
290
 
421
425
        }
422
426
        if (bUpdateSize)
423
427
                cairo_dock_update_dock_size (pDock);
424
 
 
 
428
        
425
429
        if (pDock->iRefCount == 0 && pDock->iVisibility == CAIRO_DOCK_VISI_RESERVE && bUpdateSize && ! pDock->bAutoHide && (pDock->fFlatDockWidth != iPreviousMinWidth || pDock->iMaxIconHeight != iPreviousMaxIconHeight))
426
430
                cairo_dock_reserve_space_for_dock (pDock, TRUE);
427
431
        
435
439
}
436
440
 
437
441
 
 
442
static gboolean _destroy_empty_dock (CairoDock *pDock)
 
443
{
 
444
        const gchar *cDockName = cairo_dock_search_dock_name (pDock);  // safe meme si le dock n'existe plus.
 
445
        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.
 
446
        
 
447
        if (pDock->bIconIsFlyingAway)
 
448
                return TRUE;
 
449
        pDock->iSidDestroyEmptyDock = 0;
 
450
        if (pDock->icons == NULL && pDock->iRefCount == 0 && ! pDock->bIsMainDock)  // le dock est toujours a detruire.
 
451
        {
 
452
                g_print ("The dock '%s' is empty. No icon, no dock.\n", cDockName);
 
453
                cairo_dock_destroy_dock (pDock, cDockName);
 
454
        }
 
455
        return FALSE;
 
456
}
438
457
gboolean cairo_dock_detach_icon_from_dock (Icon *icon, CairoDock *pDock, gboolean bCheckUnusedSeparator)
439
458
{
440
459
        if (pDock == NULL)
532
551
        //\___________________ On la remet a la taille normale en vue d'une reinsertion quelque part.
533
552
        icon->fWidth /= pDock->container.fRatio;
534
553
        icon->fHeight /= pDock->container.fRatio;
535
 
 
536
 
        //\___________________ On enleve le separateur si c'est la derniere icone de son type.
537
 
        /**if (bCheckUnusedSeparator && ! CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR (icon))
538
 
        {
539
 
                //g_print ("on cherche une icone de ce groupe : %d (%d)\n", icon->iType, cairo_dock_get_icon_order (icon));
540
 
                Icon *pSameTypeIcon = cairo_dock_get_first_icon_of_order (pDock->icons, icon->iType);
541
 
                if (pSameTypeIcon == NULL)
542
 
                {
543
 
                        Icon * pSeparatorIcon = NULL;
544
 
                        int iOrder = cairo_dock_get_icon_order (icon);
545
 
                        //g_print ("plus d'icone de cet ordre : %d\n", iOrder);
546
 
                        if (iOrder > 1)
547
 
                                pSeparatorIcon = cairo_dock_get_first_icon_of_order (pDock->icons, iOrder - 1);
548
 
                        if (iOrder + 1 < CAIRO_DOCK_NB_TYPES && pSeparatorIcon == NULL)
549
 
                                pSeparatorIcon = cairo_dock_get_first_icon_of_order (pDock->icons, iOrder + 1);
550
 
 
551
 
                        if (pSeparatorIcon != NULL)
552
 
                        {
553
 
                                //g_print (" -> on enleve un separateur\n");
554
 
                                cairo_dock_detach_icon_from_dock (pSeparatorIcon, pDock, FALSE);
555
 
                                cairo_dock_free_icon (pSeparatorIcon);
556
 
                        }
557
 
                }
558
 
                //else
559
 
                        //g_print ("il reste encore %s (%d, %d, %x)\n", pSameTypeIcon->cName, pSameTypeIcon->iType, cairo_dock_get_icon_order (pSameTypeIcon), pSameTypeIcon->pModuleInstance);
560
 
        }*/
561
554
        
562
555
        //\___________________ On prevoit le redessin de l'icone pointant sur le sous-dock.
563
556
        if (pDock->iRefCount != 0 && ! CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon))
565
558
                cairo_dock_trigger_redraw_subdock_content (pDock);
566
559
        }
567
560
        
 
561
        //\___________________ On prevoit la destruction du dock si c'est un dock principal qui devient vide.
 
562
        if (pDock->iRefCount == 0 && pDock->icons == NULL && ! pDock->bIsMainDock)  // on supprime les docks principaux vides.
 
563
        {
 
564
                if (pDock->iSidDestroyEmptyDock == 0)
 
565
                        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).
 
566
        }
 
567
        
568
568
        //\___________________ On prevoit le rafraichissement de la fenetre de config des lanceurs.
569
569
        if (CAIRO_DOCK_IS_STORED_LAUNCHER (icon) || CAIRO_DOCK_IS_USER_SEPARATOR (icon) || CAIRO_DOCK_ICON_TYPE_IS_APPLET (icon))
570
570
                cairo_dock_trigger_refresh_launcher_gui ();