static void init_object (GldiObject *obj, gpointer attr) { CairoDesklet *pDesklet = (CairoDesklet*)obj; CairoDeskletAttr *pAttributes = (CairoDeskletAttr*)attr; g_return_if_fail (pAttributes->pIcon != NULL); gldi_desklet_init_internals (pDesklet); // attach the main icon Icon *pIcon = pAttributes->pIcon; pDesklet->pIcon = pIcon; cairo_dock_set_icon_container (pIcon, pDesklet); if (CAIRO_DOCK_IS_APPLET (pIcon)) gtk_window_set_title (GTK_WINDOW (pDesklet->container.pWidget), pIcon->pModuleInstance->pModule->pVisitCard->cModuleName); // configure the desklet gldi_desklet_configure (pDesklet, pAttributes); // load buttons images if (s_pRotateButtonBuffer.pSurface == NULL) { _load_desklet_buttons (); } // register the new desklet s_pDeskletList = g_list_prepend (s_pDeskletList, pDesklet); // start the appearance animation if (! cairo_dock_is_loading ()) { pDesklet->container.fRatio = 0.1; pDesklet->bGrowingUp = TRUE; cairo_dock_launch_animation (CAIRO_CONTAINER (pDesklet)); } }
static Window cairo_dock_detach_appli_of_class (const gchar *cClass, gboolean bDetachAll) { g_return_val_if_fail (cClass != NULL, 0); const GList *pList = cairo_dock_list_existing_appli_with_class (cClass); Icon *pIcon; const GList *pElement; gboolean bNeedsRedraw = FALSE, bDetached; CairoDock *pParentDock; Window XFirstFoundId = 0; for (pElement = pList; pElement != NULL; pElement = pElement->next) { pIcon = pElement->data; cd_debug ("detachement de l'icone %s (%d;%d)", pIcon->acName, bDetachAll, XFirstFoundId); CairoContainer *pContainer = cairo_dock_search_container_from_icon (pIcon); if (CAIRO_DOCK_IS_DOCK (pContainer)) { pParentDock = CAIRO_DOCK (pContainer); bDetached = FALSE; if (bDetachAll || XFirstFoundId == 0) { gchar *cParentDockName = pIcon->cParentDockName; pIcon->cParentDockName = NULL; // astuce. bDetached = cairo_dock_detach_icon_from_dock (pIcon, pParentDock, g_bUseSeparator); // on la garde, elle pourra servir car elle contient l'Xid. if (! pParentDock->bIsMainDock) { if (pParentDock->icons == NULL) cairo_dock_destroy_dock (pParentDock, cParentDockName, NULL, NULL); else cairo_dock_update_dock_size (pParentDock); } else bNeedsRedraw |= (bDetached); g_free (cParentDockName); } if (bDetached && XFirstFoundId == 0) XFirstFoundId = pIcon->Xid; else { /**cairo_t *pCairoContext = cairo_dock_create_context_from_window (CAIRO_CONTAINER (pContainer)); cd_messge (" on recharge l'icone de l'appli detachee %s", pIcon->acName); cairo_dock_fill_one_icon_buffer (pIcon, pCairoContext, 1 + g_fAmplitude, pParentDock->bHorizontalDock, TRUE, pParentDock->bDirectionUp); cairo_destroy (pCairoContext);*/ bNeedsRedraw |= pParentDock->bIsMainDock; } } } if (! cairo_dock_is_loading () && bNeedsRedraw) { cairo_dock_update_dock_size (g_pMainDock); gtk_widget_queue_draw (g_pMainDock->pWidget); /// pDock->calculate_icons (pDock); ?... } return XFirstFoundId; }
void cd_systray_check_running (void) { if (na_tray_manager_check_running (gtk_widget_get_screen (GTK_WIDGET (myContainer->pWidget))) && ! cairo_dock_is_loading ()) { gldi_dialog_show_temporary_with_icon (D_("Another systray is already running (probably on your panel)\nSince there can only be one systray at once, you should remove it to avoid any conflict."), myIcon, myContainer, 8000, NULL); } }