78
gboolean cairo_dock_pop_up (CairoDock *pDock)
80
if (! pDock->bPopped && g_bPopUp)
81
gtk_window_set_keep_above (GTK_WINDOW (pDock->pWidget), TRUE);
84
pDock->bPopped = TRUE;
89
gboolean cairo_dock_pop_down (CairoDock *pDock)
91
g_print ("%s (%d)\n", __func__, pDock->bPopped);
92
if (pDock->bPopped && g_bPopUp)
93
gtk_window_set_keep_below (GTK_WINDOW (pDock->pWidget), TRUE);
95
pDock->iSidPopDown = 0;
96
pDock->bPopped = FALSE;
77
100
gboolean cairo_dock_move_down (CairoDock *pDock)
79
102
//g_print ("%s ()\n", __func__);
123
147
Icon *pRemovingIcon = cairo_dock_get_removing_or_inserting_icon (pDock->icons);
124
148
if (pRemovingIcon != NULL) // idem.
126
pRemovingIcon->fPersonnalScale = -0.05;
150
if (pRemovingIcon->fPersonnalScale > 0)
151
pRemovingIcon->fPersonnalScale = 0.05;
153
pRemovingIcon->fPersonnalScale = - 0.05;
127
154
//g_print ("fPersonnalScale <- %f\n", pRemovingIcon->fPersonnalScale);
129
156
pDock->iScrollOffset = 0;
177
204
gdk_window_get_pointer (pDock->pWidget->window, &pDock->iMouseX, &pDock->iMouseY, NULL);
179
206
gdk_window_get_pointer (pDock->pWidget->window, &pDock->iMouseY, &pDock->iMouseX, NULL);
181
pDock->calculate_icons (pDock);
208
Icon *pLastPointedIcon = cairo_dock_get_pointed_icon (pDock->icons);
209
Icon *pPointedIcon = pDock->calculate_icons (pDock);
182
210
gtk_widget_queue_draw (pDock->pWidget);
211
if (pLastPointedIcon != pPointedIcon)
212
cairo_dock_on_change_icon (pLastPointedIcon, pPointedIcon, pDock);
184
214
if (pDock->iMagnitudeIndex == CAIRO_DOCK_NB_MAX_ITERATIONS && pDock->fFoldingFactor == 0)
186
216
pDock->iMagnitudeIndex = CAIRO_DOCK_NB_MAX_ITERATIONS;
187
217
pDock->iSidGrowUp = 0;
188
if (pDock->iRefCount == 0 && g_bAutoHide) // on arrive en fin de l'animation qui montre le dock, les icones sont bien placees a partir de maintenant.
218
if (pDock->iRefCount == 0 && pDock->bAutoHide) // on arrive en fin de l'animation qui montre le dock, les icones sont bien placees a partir de maintenant.
190
220
cairo_dock_set_icons_geometry_for_window_manager (pDock);
191
221
cairo_dock_replace_all_dialogs ();
245
275
if (pDock->iMagnitudeIndex == 0)
277
if (pDock->bPopped && ! pDock->bInside)
278
cairo_dock_pop_down (pDock);
247
280
Icon *pBouncingIcon = cairo_dock_get_bouncing_icon (pDock->icons);
248
281
Icon *pRemovingIcon = cairo_dock_get_removing_or_inserting_icon (pDock->icons);
250
283
if (pBouncingIcon == NULL && pRemovingIcon == NULL && (! g_bResetScrollOnLeave || pDock->iScrollOffset == 0)) // plus aucune animation en cours.
252
if (! (g_bAutoHide && pDock->iRefCount == 0) && ! pDock->bInside)
285
if (! (pDock->bAutoHide && pDock->iRefCount == 0) && ! pDock->bInside)
254
287
int iNewWidth, iNewHeight;
255
288
cairo_dock_get_window_position_and_geometry_at_balance (pDock, CAIRO_DOCK_NORMAL_SIZE, &iNewWidth, &iNewHeight);
278
311
pDock->iSidShrinkDown = 0;
279
if (cairo_dock_hide_dock_like_a_menu () && GTK_WIDGET_VISIBLE (g_pMainDock->pWidget))
312
/**if (cairo_dock_hide_dock_like_a_menu () && GTK_WIDGET_VISIBLE (g_pMainDock->pWidget))
281
314
gtk_widget_hide (g_pMainDock->pWidget);
282
315
cairo_dock_has_been_hidden_like_a_menu ();
317
cairo_dock_hide_dock_like_a_menu ();
294
328
gboolean bIsAppli = CAIRO_DOCK_IS_NORMAL_APPLI (pRemovingIcon); // car apres avoir ete enleve du dock elle n'est plus rien.
295
329
cairo_dock_remove_icon_from_dock (pDock, pRemovingIcon);
297
if (bIsAppli && pRemovingIcon->cClass != NULL && pDock == cairo_dock_search_dock_from_name (pRemovingIcon->cClass) && pDock->icons == NULL) // il n'y a plus aucune icone de cette classe.
299
cd_message ("le sous-dock de la classe %s n'a plus d'element et va etre detruit", pRemovingIcon->cClass);
300
cairo_dock_destroy_dock (pDock, pRemovingIcon->cClass, NULL, NULL);
333
if (bIsAppli && pRemovingIcon->cClass != NULL && pDock == cairo_dock_search_dock_from_name (pRemovingIcon->cClass) && pDock->icons == NULL) // il n'y a plus aucune icone de cette classe.
335
cd_message ("le sous-dock de la classe %s n'a plus d'element et va etre detruit", pRemovingIcon->cClass);
336
cairo_dock_destroy_dock (pDock, pRemovingIcon->cClass, NULL, NULL);
340
cairo_dock_update_dock_size (pDock);
304
cairo_dock_update_dock_size (pDock);
345
if (bIsAppli && pRemovingIcon->cClass != NULL && pDock == cairo_dock_search_dock_from_name (pRemovingIcon->cClass))
347
if (pDock->icons == NULL) // ne devrait plus arriver.
349
cd_message ("le sous-dock de la classe %s n'a plus d'element et va etre detruit", pRemovingIcon->cClass);
351
CairoDock *pFakeParentDock = NULL;
352
Icon *pFakeClassIcon = cairo_dock_search_icon_pointing_on_dock (pDock, &pFakeParentDock);
354
cairo_dock_destroy_dock (pDock, pRemovingIcon->cClass, NULL, NULL);
355
pFakeClassIcon->pSubDock = NULL;
357
cairo_dock_remove_icon_from_dock (pFakeParentDock, pFakeClassIcon);
358
cairo_dock_free_icon (pFakeClassIcon);
359
cairo_dock_update_dock_size (pFakeParentDock);
361
else if (pDock->icons->next == NULL)
363
cd_message ("le sous-dock de la classe %s n'a plus que 1 element et va etre vide puis detruit", pRemovingIcon->cClass);
365
CairoDock *pFakeParentDock = NULL;
366
Icon *pFakeClassIcon = cairo_dock_search_icon_pointing_on_dock (pDock, &pFakeParentDock);
368
Icon *pLastClassIcon = pDock->icons->data;
369
pLastClassIcon->fOrder = pFakeClassIcon->fOrder;
371
cairo_dock_destroy_dock (pDock, pRemovingIcon->cClass, pFakeParentDock, pFakeClassIcon->cParentDockName);
372
pFakeClassIcon->pSubDock = NULL;
374
cairo_dock_remove_icon_from_dock (pFakeParentDock, pFakeClassIcon);
375
cairo_dock_free_icon (pFakeClassIcon);
377
cairo_dock_redraw_my_icon (pLastClassIcon, CAIRO_CONTAINER (pFakeParentDock)); // on suppose que les tailles des 2 icones sont identiques.
381
cairo_dock_update_dock_size (pDock);
386
cairo_dock_update_dock_size (pDock);
306
389
cairo_dock_free_icon (pRemovingIcon);
357
440
pDock->iSidGrowUp = 0;
359
442
if (pDock->iSidShrinkDown == 0)
360
pDock->iSidShrinkDown = g_timeout_add (50, (GSourceFunc) cairo_dock_shrink_down, (gpointer) pDock); // fera diminuer de taille les icones, et rebondir/tourner/clignoter celle sui est animee.
443
pDock->iSidShrinkDown = g_timeout_add (50, (GSourceFunc) cairo_dock_shrink_down, (gpointer) pDock); // fera diminuer de taille les icones, et rebondir/tourner/clignoter celle qui est animee.