63
64
#include "cairo-dock-internal-accessibility.h"
64
65
#include "cairo-dock-internal-system.h"
65
66
#include "cairo-dock-internal-taskbar.h"
66
#include "cairo-dock-internal-hidden-dock.h"
67
67
#include "cairo-dock-internal-views.h"
68
68
#include "cairo-dock-internal-labels.h"
69
69
#include "cairo-dock-internal-icons.h"
70
70
#include "cairo-dock-internal-background.h"
71
71
#include "cairo-dock-class-manager.h"
72
#include "cairo-dock-X-utilities.h"
72
73
#include "cairo-dock-callbacks.h"
74
75
static Icon *s_pIconClicked = NULL; // pour savoir quand on deplace une icone a la souris. Dangereux si l'icone se fait effacer en cours ...
76
static int s_iClickX, s_iClickY; // coordonnees du clic dans le dock, pour pouvoir initialiser le deplacement apres un seuil.
75
77
static CairoDock *s_pLastPointedDock = NULL; // pour savoir quand on passe d'un dock a un autre.
76
78
static int s_iSidShowSubDockDemand = 0;
77
79
static int s_iSidShowAppliForDrop = 0;
186
else if (pDock->bAtBottom && pDock->bAutoHide && pDock->iRefCount == 0 && ! pDock->bInside && pDock->iSidMoveDown == 0)
187
else if (pDock->bAtBottom && pDock->bAutoHide && pDock->iRefCount == 0 && ! pDock->container.bInside && pDock->iSidMoveDown == 0)
188
189
cairo_dock_render_hidden_dock (pCairoContext, pDock);
192
pDock->render (pCairoContext, pDock);
193
cairo_dock_notify (CAIRO_DOCK_RENDER_DOCK, pDock, pCairoContext);
193
pDock->pRenderer->render (pCairoContext, pDock);
194
cairo_dock_notify_on_container (CAIRO_CONTAINER (pDock), CAIRO_DOCK_RENDER_DOCK, pDock, pCairoContext);
196
197
cairo_destroy (pCairoContext);
198
199
#ifdef HAVE_GLITZ
199
if (pDock->pDrawFormat && pDock->pDrawFormat->doublebuffer)
200
glitz_drawable_swap_buffers (pDock->pGlitzDrawable);
200
if (pDock->container.pDrawFormat && pDock->container.pDrawFormat->doublebuffer)
201
glitz_drawable_swap_buffers (pDock->container.pGlitzDrawable);
206
void cairo_dock_show_subdock (Icon *pPointedIcon, gboolean bUpdate, CairoDock *pDock)
208
cd_debug ("on montre le dock fils");
209
CairoDock *pSubDock = pPointedIcon->pSubDock;
210
g_return_if_fail (pSubDock != NULL);
212
if (GTK_WIDGET_VISIBLE (pSubDock->pWidget)) // il est deja visible.
214
if (pSubDock->bIsShrinkingDown) // il est en cours de diminution, on renverse le processus.
216
cairo_dock_start_growing (pSubDock);
223
pDock->calculate_icons (pDock); // c'est un peu un hack pourri, l'idee c'est de recalculer la position exacte de l'icone pointee pour pouvoir placer le sous-dock precisement, car sa derniere position connue est decalee d'un coup de molette par rapport a la nouvelle, ce qui fait beaucoup. L'ideal etant de le faire que pour l'icone concernee ...
226
pSubDock->set_subdock_position (pPointedIcon, pDock);
228
pSubDock->fFoldingFactor = (mySystem.bAnimateSubDock ? mySystem.fUnfoldAcceleration : 0);
229
pSubDock->bAtBottom = FALSE;
230
int iNewWidth, iNewHeight;
231
if (pSubDock->fFoldingFactor == 0)
233
cd_debug (" on montre le sous-dock sans animation");
234
cairo_dock_get_window_position_and_geometry_at_balance (pSubDock, CAIRO_DOCK_MAX_SIZE, &iNewWidth, &iNewHeight); // CAIRO_DOCK_NORMAL_SIZE -> CAIRO_DOCK_MAX_SIZE pour la 1.5.4
235
pSubDock->bAtBottom = TRUE; // bAtBottom ajoute pour la 1.5.4
237
gtk_window_present (GTK_WINDOW (pSubDock->pWidget));
239
if (pSubDock->bHorizontalDock)
240
gdk_window_move_resize (pSubDock->pWidget->window,
241
pSubDock->iWindowPositionX,
242
pSubDock->iWindowPositionY,
246
gdk_window_move_resize (pSubDock->pWidget->window,
247
pSubDock->iWindowPositionY,
248
pSubDock->iWindowPositionX,
252
/*if (pSubDock->bHorizontalDock)
253
gtk_window_move (GTK_WINDOW (pSubDock->pWidget), pSubDock->iWindowPositionX, pSubDock->iWindowPositionY);
255
gtk_window_move (GTK_WINDOW (pSubDock->pWidget), pSubDock->iWindowPositionY, pSubDock->iWindowPositionX);
257
gtk_window_present (GTK_WINDOW (pSubDock->pWidget));*/
258
///gtk_widget_show (GTK_WIDGET (pSubDock->pWidget));
262
cd_debug (" on montre le sous-dock avec animation");
263
cairo_dock_get_window_position_and_geometry_at_balance (pSubDock, CAIRO_DOCK_MAX_SIZE, &iNewWidth, &iNewHeight);
265
gtk_window_present (GTK_WINDOW (pSubDock->pWidget));
266
///gtk_widget_show (GTK_WIDGET (pSubDock->pWidget));
267
if (pSubDock->bHorizontalDock)
268
gdk_window_move_resize (pSubDock->pWidget->window,
269
pSubDock->iWindowPositionX,
270
pSubDock->iWindowPositionY,
274
gdk_window_move_resize (pSubDock->pWidget->window,
275
pSubDock->iWindowPositionY,
276
pSubDock->iWindowPositionX,
280
cairo_dock_start_growing (pSubDock); // on commence a faire grossir les icones.
282
//g_print (" -> Gap %d;%d -> W(%d;%d) (%d)\n", pSubDock->iGapX, pSubDock->iGapY, pSubDock->iWindowPositionX, pSubDock->iWindowPositionY, pSubDock->bHorizontalDock);
284
gtk_window_set_keep_above (GTK_WINDOW (pSubDock->pWidget), myAccessibility.bPopUp);
286
cairo_dock_replace_all_dialogs ();
288
207
static gboolean _cairo_dock_show_sub_dock_delayed (CairoDock *pDock)
387
static gboolean _cairo_dock_make_icon_glide (CairoDock *pDock)
389
//g_print ("%s ()\n", __func__);
392
gboolean bGliding = FALSE;
393
for (ic = pDock->icons; ic != NULL; ic = ic->next)
396
if (icon->iGlideDirection != 0)
398
icon->fGlideOffset += icon->iGlideDirection * .1;
399
if (fabs (icon->fGlideOffset) > .99)
401
icon->fGlideOffset = icon->iGlideDirection;
402
icon->iGlideDirection = 0;
404
else if (fabs (icon->fGlideOffset) < .01)
406
icon->fGlideOffset = 0;
407
icon->iGlideDirection = 0;
409
//g_print (" %s <- %.2f\n", icon->acName, icon->fGlideOffset);
416
g_print ("plus de glissement\n");
417
pDock->iSidIconGlide = 0;
421
gtk_widget_queue_draw (pDock->pWidget);
424
306
void cairo_dock_stop_icon_glide (CairoDock *pDock)
429
310
for (ic = pDock->icons; ic != NULL; ic = ic->next)
432
313
icon->fGlideOffset = 0;
433
314
icon->iGlideDirection = 0;
435
if (pDock->iSidIconGlide != 0)
317
static void _cairo_dock_make_icon_glide (Icon *pPointedIcon, Icon *pMovingicon, CairoDock *pDock)
321
for (ic = pDock->icons; ic != NULL; ic = ic->next)
437
g_source_remove (pDock->iSidIconGlide);
438
pDock->iSidIconGlide = 0;
324
if (icon == pMovingicon)
326
//if (pDock->container.iMouseX > s_pMovingicon->fDrawXAtRest + s_pMovingicon->fWidth * s_pMovingicon->fScale /2) // on a deplace l'icone a droite. // fDrawXAtRest
327
if (pMovingicon->fXAtRest < pPointedIcon->fXAtRest) // on a deplace l'icone a droite.
329
//g_print ("%s : %.2f / %.2f ; %.2f / %d (%.2f)\n", icon->cName, icon->fXAtRest, s_pMovingicon->fXAtRest, icon->fDrawX, pDock->container.iMouseX, icon->fGlideOffset);
330
if (icon->fXAtRest > pMovingicon->fXAtRest && icon->fDrawX < pDock->container.iMouseX + 5 && icon->fGlideOffset == 0) // icone entre l'icone deplacee et le curseur.
332
//g_print (" %s glisse vers la gauche\n", icon->cName);
333
icon->iGlideDirection = -1;
335
else if (icon->fXAtRest > pMovingicon->fXAtRest && icon->fDrawX > pDock->container.iMouseX && icon->fGlideOffset != 0)
337
//g_print (" %s glisse vers la droite\n", icon->cName);
338
icon->iGlideDirection = 1;
340
else if (icon->fXAtRest < pMovingicon->fXAtRest && icon->fGlideOffset > 0)
342
//g_print (" %s glisse en sens inverse vers la gauche\n", icon->cName);
343
icon->iGlideDirection = -1;
348
//g_print ("deplacement de %s vers la gauche (%.2f / %d)\n", icon->cName, icon->fDrawX + icon->fWidth * (1+myIcons.fAmplitude) + myIcons.iIconGap, pDock->container.iMouseX);
349
if (icon->fXAtRest < pMovingicon->fXAtRest && icon->fDrawX + icon->fWidth * (1+myIcons.fAmplitude) + myIcons.iIconGap >= pDock->container.iMouseX && icon->fGlideOffset == 0) // icone entre l'icone deplacee et le curseur.
351
//g_print (" %s glisse vers la droite\n", icon->cName);
352
icon->iGlideDirection = 1;
354
else if (icon->fXAtRest < pMovingicon->fXAtRest && icon->fDrawX + icon->fWidth * (1+myIcons.fAmplitude) + myIcons.iIconGap <= pDock->container.iMouseX && icon->fGlideOffset != 0)
356
//g_print (" %s glisse vers la gauche\n", icon->cName);
357
icon->iGlideDirection = -1;
359
else if (icon->fXAtRest > pMovingicon->fXAtRest && icon->fGlideOffset < 0)
361
//g_print (" %s glisse en sens inverse vers la droite\n", icon->cName);
362
icon->iGlideDirection = 1;
440
///gtk_widget_queue_draw (pDock->pWidget);
442
367
gboolean cairo_dock_on_motion_notify (GtkWidget* pWidget,
443
368
GdkEventMotion* pMotion,
447
372
if (s_bFrozenDock && pMotion != NULL && pMotion->time != 0)
449
374
Icon *pPointedIcon=NULL, *pLastPointedIcon = cairo_dock_get_pointed_icon (pDock->icons);
450
int iLastMouseX = pDock->iMouseX;
375
int iLastMouseX = pDock->container.iMouseX;
451
376
//g_print ("%s (%.2f;%.2f)\n", __func__, pMotion->x, pMotion->y);
453
//\_______________ On elague le flux des MotionNotify, sinon X en envoie autant que le permet le CPU !
454
378
if (pMotion != NULL)
456
380
//g_print ("%s (%d,%d) (%d, %.2fms, bAtBottom:%d; bIsShrinkingDown:%d)\n", __func__, (int) pMotion->x, (int) pMotion->y, pMotion->is_hint, pMotion->time - fLastTime, pDock->bAtBottom, pDock->bIsShrinkingDown);
381
//\_______________ On deplace le dock si ALT est enfoncee.
457
382
if ((pMotion->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK)) && (pMotion->state & GDK_BUTTON1_MASK))
459
//g_print ("mouse : (%d;%d); pointeur : (%d;%d)\n", pDock->iMouseX, pDock->iMouseY, (int) pMotion->x_root, (int) pMotion->y_root);
460
if (pDock->bHorizontalDock)
384
if (pDock->container.bIsHorizontal)
462
//gtk_window_get_position (GTK_WINDOW (pDock->pWidget), &pDock->iWindowPositionX, &pDock->iWindowPositionY);
463
pDock->iWindowPositionX = pMotion->x_root - pDock->iMouseX;
464
pDock->iWindowPositionY = pMotion->y_root - pDock->iMouseY;
386
pDock->container.iWindowPositionX = pMotion->x_root - pDock->container.iMouseX;
387
pDock->container.iWindowPositionY = pMotion->y_root - pDock->container.iMouseY;
465
388
gtk_window_move (GTK_WINDOW (pWidget),
466
pDock->iWindowPositionX,
467
pDock->iWindowPositionY);
389
pDock->container.iWindowPositionX,
390
pDock->container.iWindowPositionY);
471
pDock->iWindowPositionX = pMotion->y_root - pDock->iMouseX;
472
pDock->iWindowPositionY = pMotion->x_root - pDock->iMouseY;
394
pDock->container.iWindowPositionX = pMotion->y_root - pDock->container.iMouseX;
395
pDock->container.iWindowPositionY = pMotion->x_root - pDock->container.iMouseY;
473
396
gtk_window_move (GTK_WINDOW (pWidget),
474
pDock->iWindowPositionY,
475
pDock->iWindowPositionX);
397
pDock->container.iWindowPositionY,
398
pDock->container.iWindowPositionX);
477
400
gdk_device_get_state (pMotion->device, pMotion->window, NULL, NULL);
481
if (pDock->bHorizontalDock)
404
//\_______________ On recupere la position de la souris.
405
if (pDock->container.bIsHorizontal)
483
pDock->iMouseX = (int) pMotion->x;
484
pDock->iMouseY = (int) pMotion->y;
407
pDock->container.iMouseX = (int) pMotion->x;
408
pDock->container.iMouseY = (int) pMotion->y;
488
pDock->iMouseX = (int) pMotion->y;
489
pDock->iMouseY = (int) pMotion->x;
412
pDock->container.iMouseX = (int) pMotion->y;
413
pDock->container.iMouseY = (int) pMotion->x;
492
if (s_pFlyingContainer != NULL && ! pDock->bInside)
416
//\_______________ On tire l'icone volante.
417
if (s_pFlyingContainer != NULL && ! pDock->container.bInside)
494
419
cairo_dock_drag_flying_container (s_pFlyingContainer, pDock);
497
if (pMotion->time != 0 && pMotion->time - fLastTime < mySystem.fRefreshInterval && s_pIconClicked == NULL) // pDock->bIsShrinkingDown ||
422
//\_______________ On elague le flux des MotionNotify, sinon X en envoie autant que le permet le CPU !
423
if (pMotion->time != 0 && pMotion->time - fLastTime < mySystem.fRefreshInterval && s_pIconClicked == NULL)
499
425
gdk_device_get_state (pMotion->device, pMotion->window, NULL, NULL);
503
//\_______________ On recalcule toutes les icones.
429
//\_______________ On recalcule toutes les icones et on redessine.
504
430
pPointedIcon = cairo_dock_calculate_dock_icons (pDock);
505
431
if (myIcons.fAmplitude != 0)
507
432
gtk_widget_queue_draw (pWidget);
509
433
fLastTime = pMotion->time;
511
if (s_pIconClicked != NULL && s_pIconClicked->iAnimationState != CAIRO_DOCK_STATE_REMOVE_INSERT && ! g_bLocked && ! myAccessibility.bLockIcons)
435
//\_______________ On tire l'icone cliquee.
436
if (s_pIconClicked != NULL && s_pIconClicked->iAnimationState != CAIRO_DOCK_STATE_REMOVE_INSERT && ! g_bLocked && ! myAccessibility.bLockIcons && ! myAccessibility.bLockAll && (fabs (pMotion->x - s_iClickX) > 5 || fabs (pMotion->y - s_iClickY) > 5))
513
438
s_pIconClicked->iAnimationState = CAIRO_DOCK_STATE_FOLLOW_MOUSE;
514
439
//pDock->fAvoidingMouseMargin = .5;
515
440
pDock->iAvoidingMouseIconType = s_pIconClicked->iType; // on pourrait le faire lors du clic aussi.
516
441
s_pIconClicked->fScale = 1 + myIcons.fAmplitude;
517
s_pIconClicked->fDrawX = pDock->iMouseX - s_pIconClicked->fWidth * s_pIconClicked->fScale / 2;
518
s_pIconClicked->fDrawY = pDock->iMouseY - s_pIconClicked->fHeight * s_pIconClicked->fScale / 2 ;
442
s_pIconClicked->fDrawX = pDock->container.iMouseX - s_pIconClicked->fWidth * s_pIconClicked->fScale / 2;
443
s_pIconClicked->fDrawY = pDock->container.iMouseY - s_pIconClicked->fHeight * s_pIconClicked->fScale / 2 ;
519
444
s_pIconClicked->fAlpha = 0.75;
520
445
if (myIcons.fAmplitude == 0)
521
446
gtk_widget_queue_draw (pWidget);
527
452
else // cas d'un drag and drop.
529
454
//g_print ("motion on drag\n");
530
if (pDock->bHorizontalDock)
531
gdk_window_get_pointer (pWidget->window, &pDock->iMouseX, &pDock->iMouseY, NULL);
455
//\_______________ On recupere la position de la souris.
456
if (pDock->container.bIsHorizontal)
457
gdk_window_get_pointer (pWidget->window, &pDock->container.iMouseX, &pDock->container.iMouseY, NULL);
533
gdk_window_get_pointer (pWidget->window, &pDock->iMouseY, &pDock->iMouseX, NULL);
459
gdk_window_get_pointer (pWidget->window, &pDock->container.iMouseY, &pDock->container.iMouseX, NULL);
461
//\_______________ On recalcule toutes les icones et on redessine.
535
462
pPointedIcon = cairo_dock_calculate_dock_icons (pDock);
536
463
gtk_widget_queue_draw (pWidget);
538
pDock->iAvoidingMouseIconType = CAIRO_DOCK_LAUNCHER;
539
pDock->fAvoidingMouseMargin = .25;
465
pDock->fAvoidingMouseMargin = .25; // on peut dropper entre 2 icones ...
466
pDock->iAvoidingMouseIconType = CAIRO_DOCK_LAUNCHER; // ... seulement entre 2 lanceurs.
469
//\_______________ On asservit les decorations au curseur.
470
if (pDock->container.bInside)
544
if (mySystem.bDecorationsFollowMouse)
472
if (myBackground.bDecorationsFollowMouse)
546
pDock->fDecorationsOffsetX = pDock->iMouseX - pDock->iCurrentWidth / 2;
474
pDock->fDecorationsOffsetX = pDock->container.iMouseX - pDock->container.iWidth / 2;
547
475
//g_print ("fDecorationsOffsetX <- %.2f\n", pDock->fDecorationsOffsetX);
551
if (pDock->iMouseX > iLastMouseX)
479
if (pDock->container.iMouseX > iLastMouseX)
553
481
pDock->fDecorationsOffsetX += 10;
554
if (pDock->fDecorationsOffsetX > pDock->iCurrentWidth / 2)
482
if (pDock->fDecorationsOffsetX > pDock->container.iWidth / 2)
556
484
if (g_pBackgroundSurfaceFull[0] != NULL)
557
pDock->fDecorationsOffsetX -= pDock->iCurrentWidth;
485
pDock->fDecorationsOffsetX -= pDock->container.iWidth;
559
pDock->fDecorationsOffsetX = pDock->iCurrentWidth / 2;
487
pDock->fDecorationsOffsetX = pDock->container.iWidth / 2;
564
492
pDock->fDecorationsOffsetX -= 10;
565
if (pDock->fDecorationsOffsetX < - pDock->iCurrentWidth / 2)
493
if (pDock->fDecorationsOffsetX < - pDock->container.iWidth / 2)
567
495
if (g_pBackgroundSurfaceFull[0] != NULL)
568
pDock->fDecorationsOffsetX += pDock->iCurrentWidth;
496
pDock->fDecorationsOffsetX += pDock->container.iWidth;
570
pDock->fDecorationsOffsetX = - pDock->iCurrentWidth / 2;
498
pDock->fDecorationsOffsetX = - pDock->container.iWidth / 2;
576
504
//g_print ("%x -> %x\n", pLastPointedIcon, pPointedIcon);
505
gboolean bStartAnimation = FALSE;
577
506
if (pPointedIcon != pLastPointedIcon || s_pLastPointedDock == NULL)
579
508
cairo_dock_on_change_icon (pLastPointedIcon, pPointedIcon, pDock);
581
if (pPointedIcon != NULL && s_pIconClicked != NULL && cairo_dock_get_icon_order (s_pIconClicked) == cairo_dock_get_icon_order (pPointedIcon) && ! g_bLocked && ! myAccessibility.bLockIcons)
510
if (pPointedIcon != NULL && s_pIconClicked != NULL && cairo_dock_get_icon_order (s_pIconClicked) == cairo_dock_get_icon_order (pPointedIcon) && ! g_bLocked && ! myAccessibility.bLockIcons && ! myAccessibility.bLockAll)
585
for (ic = pDock->icons; ic != NULL; ic = ic->next)
588
if (icon == s_pIconClicked)
590
//if (pDock->iMouseX > s_pIconClicked->fDrawXAtRest + s_pIconClicked->fWidth * s_pIconClicked->fScale /2) // on a deplace l'icone a droite. // fDrawXAtRest
591
if (s_pIconClicked->fXAtRest < pPointedIcon->fXAtRest) // on a deplace l'icone a droite.
593
//g_print ("%s : %.2f / %.2f ; %.2f / %d (%.2f)\n", icon->acName, icon->fXAtRest, s_pIconClicked->fXAtRest, icon->fDrawX, pDock->iMouseX, icon->fGlideOffset);
594
if (icon->fXAtRest > s_pIconClicked->fXAtRest && icon->fDrawX < pDock->iMouseX + 1 && icon->fGlideOffset == 0) // icone entre l'icone deplacee et le curseur.
596
//g_print (" %s glisse vers la gauche\n", icon->acName);
597
icon->iGlideDirection = -1;
599
else if (icon->fXAtRest > s_pIconClicked->fXAtRest && icon->fDrawX > pDock->iMouseX && icon->fGlideOffset != 0)
601
//g_print (" %s glisse vers la droite\n", icon->acName);
602
icon->iGlideDirection = 1;
604
else if (icon->fXAtRest < s_pIconClicked->fXAtRest && icon->fGlideOffset > 0)
606
//g_print (" %s glisse en sens inverse vers la gauche\n", icon->acName);
607
icon->iGlideDirection = -1;
612
//g_print ("deplacement de %s vers la gauche (%.2f / %d)\n", icon->acName, icon->fDrawX + icon->fWidth * (1+myIcons.fAmplitude) + myIcons.iIconGap, pDock->iMouseX);
613
if (icon->fXAtRest < s_pIconClicked->fXAtRest && icon->fDrawX + icon->fWidth * (1+myIcons.fAmplitude) + myIcons.iIconGap >= pDock->iMouseX && icon->fGlideOffset == 0) // icone entre l'icone deplacee et le curseur.
615
//g_print (" %s glisse vers la droite\n", icon->acName);
616
icon->iGlideDirection = 1;
618
else if (icon->fXAtRest < s_pIconClicked->fXAtRest && icon->fDrawX + icon->fWidth * (1+myIcons.fAmplitude) + myIcons.iIconGap <= pDock->iMouseX && icon->fGlideOffset != 0)
620
//g_print (" %s glisse vers la gauche\n", icon->acName);
621
icon->iGlideDirection = -1;
623
else if (icon->fXAtRest > s_pIconClicked->fXAtRest && icon->fGlideOffset < 0)
625
//g_print (" %s glisse en sens inverse vers la droite\n", icon->acName);
626
icon->iGlideDirection = 1;
630
if (pDock->iSidIconGlide == 0)
632
pDock->iSidIconGlide = g_timeout_add (50, (GSourceFunc) _cairo_dock_make_icon_glide, pDock);
512
g_print ("on change d'icone\n");
513
_cairo_dock_make_icon_glide (pPointedIcon, s_pIconClicked, pDock);
514
bStartAnimation = TRUE;
637
gboolean bStartAnimation = FALSE;
638
518
cairo_dock_notify (CAIRO_DOCK_MOUSE_MOVED, pDock, &bStartAnimation);
639
519
if (bStartAnimation)
640
520
cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
746
624
gboolean cairo_dock_on_leave_notify (GtkWidget* pWidget, GdkEventCrossing* pEvent, CairoDock *pDock)
748
if (g_bEasterEggs && pDock->bAtBottom)
750
//g_print ("%s (bInside:%d; bAtBottom:%d; iRefCount:%d)\n", __func__, pDock->bInside, pDock->bAtBottom, pDock->iRefCount);
751
/**if (pDock->bAtBottom) // || ! pDock->bInside // mis en commentaire pour la 1.5.4
626
if (pDock->bAtBottom && pDock->iRefCount == 0) /// je l'avais mis en commentaire, mais c'est utile maintenant pour le input shape. A valider ...
753
628
pDock->iSidLeaveDemand = 0;
629
if (! (pDock->bAutoHide && ! pDock->bAutoHideInitialValue)) // sauf quick hide, car cela pose probleme lors d'un quick-hide avec souris sur icone de sous-dock.
632
//g_print ("%s (bInside:%d; bAtBottom:%d; iRefCount:%d)\n", __func__, pDock->container.bInside, pDock->bAtBottom, pDock->iRefCount);
756
633
if (pEvent != NULL && (pEvent->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK)) && (pEvent->state & GDK_BUTTON1_MASK))
760
//g_print ("%s (main dock : %d)\n", __func__, pDock->bIsMainDock);
637
//g_print ("%s (main dock : %d, autohide:%d)\n", __func__, pDock->bIsMainDock, pDock->bAutoHide);
762
639
if (pDock->iRefCount == 0)
864
741
gboolean cairo_dock_on_enter_notify (GtkWidget* pWidget, GdkEventCrossing* pEvent, CairoDock *pDock)
866
if (pEvent && g_bEasterEggs && pDock->pShapeBitmap)
743
if (pEvent && pDock->pShapeBitmap) // XInputShape is broken. We manage ourself the entry.
868
int x = (pDock->bHorizontalDock ? pEvent->x : pDock->iCurrentWidth - pEvent->y);
745
int x = (pDock->container.bIsHorizontal ? pEvent->x : pDock->container.iWidth - pEvent->y);
869
746
if (x < pDock->inputArea.x || x > (pDock->inputArea.x + pDock->inputArea.width))
872
//g_print ("%s (bIsMainDock : %d; bAtTop:%d; bInside:%d; iSidMoveDown:%d; iMagnitudeIndex:%d)\n", __func__, pDock->bIsMainDock, pDock->bAtTop, pDock->bInside, pDock->iSidMoveDown, pDock->iMagnitudeIndex);
749
//g_print ("%s (bIsMainDock : %d; bAtTop:%d; bInside:%d; iSidMoveDown:%d; iMagnitudeIndex:%d)\n", __func__, pDock->bIsMainDock, pDock->bAtTop, pDock->container.bInside, pDock->iSidMoveDown, pDock->iMagnitudeIndex);
873
750
s_pLastPointedDock = NULL; // ajoute le 04/10/07 pour permettre aux sous-docks d'apparaitre si on entre en pointant tout de suite sur l'icone.
874
751
if (! cairo_dock_entrance_is_allowed (pDock))
912
//g_print ("%s (main dock : %d ; %d)\n", __func__, pDock->bIsMainDock, pDock->bHorizontalDock);
789
//g_print ("%s (main dock : %d ; %d)\n", __func__, pDock->bIsMainDock, pDock->container.bIsHorizontal);
914
/**if (g_bUseOpenGL && pDock->render_opengl != NULL)
916
gboolean bStartAnimation = FALSE;
917
cairo_dock_notify (CAIRO_DOCK_ENTER_DOCK, pDock, &bStartAnimation);
919
cairo_dock_launch_animation (CAIRO_CONTAINER (pDock));
922
791
pDock->fDecorationsOffsetX = 0;
923
792
if (pDock->iRefCount != 0)
925
794
gtk_window_present (GTK_WINDOW (pWidget)); /// utile ???
927
pDock->bInside = TRUE;
796
pDock->container.bInside = TRUE;
929
798
cairo_dock_stop_quick_hide ();
931
800
if (s_pIconClicked != NULL) // on pourrait le faire a chaque motion aussi.
933
802
pDock->iAvoidingMouseIconType = s_pIconClicked->iType;
934
pDock->fAvoidingMouseMargin = .5;
803
pDock->fAvoidingMouseMargin = .5; /// inutile il me semble ...
937
806
if (s_pFlyingContainer != NULL)
939
808
Icon *pFlyingIcon = s_pFlyingContainer->pIcon;
940
g_print ("on remet l'icone volante dans son dock d'origine (%s)\n", pFlyingIcon->cParentDockName);
941
cairo_dock_free_flying_container (s_pFlyingContainer);
942
cairo_dock_insert_icon_in_dock (pFlyingIcon, pDock, CAIRO_DOCK_UPDATE_DOCK_SIZE, CAIRO_DOCK_ANIMATE_ICON);
943
cairo_dock_start_icon_animation (pFlyingIcon, pDock);
944
s_pFlyingContainer = NULL;
809
if (pDock != pFlyingIcon->pSubDock) // on evite les boucles.
811
cd_message ("on remet l'icone volante dans un dock (dock d'origine : %s)", pFlyingIcon->cParentDockName);
812
cairo_dock_free_flying_container (s_pFlyingContainer);
813
cairo_dock_stop_icon_animation (pFlyingIcon);
814
cairo_dock_insert_icon_in_dock (pFlyingIcon, pDock, CAIRO_DOCK_UPDATE_DOCK_SIZE, CAIRO_DOCK_ANIMATE_ICON);
815
cairo_dock_start_icon_animation (pFlyingIcon, pDock);
816
s_pFlyingContainer = NULL;
947
820
int iNewWidth, iNewHeight;
948
821
cairo_dock_get_window_position_and_geometry_at_balance (pDock, CAIRO_DOCK_MAX_SIZE, &iNewWidth, &iNewHeight);
949
822
if ((pDock->bAutoHide && pDock->iRefCount == 0) && pDock->bAtBottom)
950
pDock->iWindowPositionY = (pDock->bDirectionUp ? g_iXScreenHeight[pDock->bHorizontalDock] - myHiddenDock.iVisibleZoneHeight - pDock->iGapY : myHiddenDock.iVisibleZoneHeight + pDock->iGapY - pDock->iMaxDockHeight);
823
pDock->container.iWindowPositionY = (pDock->container.bDirectionUp ? g_iXScreenHeight[pDock->container.bIsHorizontal] - myAccessibility.iVisibleZoneHeight - pDock->iGapY : myAccessibility.iVisibleZoneHeight + pDock->iGapY - pDock->iMaxDockHeight);
952
if (pDock->iCurrentWidth != iNewWidth || pDock->iCurrentHeight != iNewHeight)
825
if (pDock->container.iWidth != iNewWidth || pDock->container.iHeight != iNewHeight)
954
if (pDock->bHorizontalDock)
827
g_print (" resize on enter\n");
828
if (pDock->container.bIsHorizontal)
955
829
gdk_window_move_resize (pWidget->window,
956
pDock->iWindowPositionX,
957
pDock->iWindowPositionY,
830
pDock->container.iWindowPositionX,
831
pDock->container.iWindowPositionY,
961
835
gdk_window_move_resize (pWidget->window,
962
pDock->iWindowPositionY,
963
pDock->iWindowPositionX,
836
pDock->container.iWindowPositionY,
837
pDock->container.iWindowPositionX,
1255
1132
return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
1257
else if (icon->acCommand != NULL && strcmp (icon->acCommand, "none") != 0) // finalement, on lance la commande.
1134
else if (icon->cCommand != NULL && strcmp (icon->cCommand, "none") != 0) // finalement, on lance la commande.
1136
if (pDock->iRefCount != 0)
1138
Icon *pMainIcon = cairo_dock_search_icon_pointing_on_dock (pDock, NULL);
1139
if (CAIRO_DOCK_IS_APPLET (pMainIcon))
1140
return CAIRO_DOCK_LET_PASS_NOTIFICATION;
1259
1143
gboolean bSuccess = FALSE;
1260
if (*icon->acCommand == '<')
1144
if (*icon->cCommand == '<')
1262
bSuccess = cairo_dock_simulate_key_sequence (icon->acCommand);
1146
bSuccess = cairo_dock_simulate_key_sequence (icon->cCommand);
1264
bSuccess = cairo_dock_launch_command_full (icon->acCommand, icon->cWorkingDirectory);
1148
bSuccess = cairo_dock_launch_command_full (icon->cCommand, icon->cWorkingDirectory);
1268
bSuccess = cairo_dock_launch_command_full (icon->acCommand, icon->cWorkingDirectory);
1152
bSuccess = cairo_dock_launch_command_full (icon->cCommand, icon->cWorkingDirectory);
1269
1153
if (! bSuccess)
1270
bSuccess = cairo_dock_simulate_key_sequence (icon->acCommand);
1154
bSuccess = cairo_dock_simulate_key_sequence (icon->cCommand);
1272
1156
if (! bSuccess)
1307
1191
gboolean cairo_dock_on_button_press (GtkWidget* pWidget, GdkEventButton* pButton, CairoDock *pDock)
1309
g_print ("+ %s (%d/%d)\n", __func__, pButton->type, pButton->button);
1310
if (pDock->bHorizontalDock) // utile ?
1193
//g_print ("+ %s (%d/%d)\n", __func__, pButton->type, pButton->button);
1194
if (pDock->container.bIsHorizontal) // utile ?
1312
pDock->iMouseX = (int) pButton->x;
1313
pDock->iMouseY = (int) pButton->y;
1196
pDock->container.iMouseX = (int) pButton->x;
1197
pDock->container.iMouseY = (int) pButton->y;
1317
pDock->iMouseX = (int) pButton->y;
1318
pDock->iMouseY = (int) pButton->x;
1201
pDock->container.iMouseX = (int) pButton->y;
1202
pDock->container.iMouseY = (int) pButton->x;
1321
1205
Icon *icon = cairo_dock_get_pointed_icon (pDock->icons);
1325
1209
switch (pButton->type)
1327
1211
case GDK_BUTTON_RELEASE :
1328
//g_print ("+ GDK_BUTTON_RELEASE (%d/%d sur %s/%s)\n", pButton->state, GDK_CONTROL_MASK | GDK_MOD1_MASK, icon ? icon->acName : "personne", icon ? icon->acCommand : ""); // 272 = 100010000
1212
//g_print ("+ GDK_BUTTON_RELEASE (%d/%d sur %s/%s)\n", pButton->state, GDK_CONTROL_MASK | GDK_MOD1_MASK, icon ? icon->cName : "personne", icon ? icon->cCommand : ""); // 272 = 100010000
1329
1213
if ( ! (pButton->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK)))
1331
1215
if (s_pIconClicked != NULL)
1333
//g_print ("release de %s (inside:%d)\n", s_pIconClicked->acName, pDock->bInside);
1217
//g_print ("release de %s (inside:%d)\n", s_pIconClicked->cName, pDock->container.bInside);
1334
1218
s_pIconClicked->iAnimationState = CAIRO_DOCK_STATE_REST; // stoppe les animations de suivi du curseur.
1335
//cairo_dock_stop_marking_icons (pDock);
1336
1219
pDock->iAvoidingMouseIconType = -1;
1337
1220
cairo_dock_stop_icon_glide (pDock);
1339
1222
if (icon != NULL && ! CAIRO_DOCK_IS_SEPARATOR (icon) && icon == s_pIconClicked)
1341
1224
s_pIconClicked = NULL; // il faut le faire ici au cas ou le clic induirait un dialogue bloquant qui nous ferait sortir du dock par exemple.
1342
//g_print ("+ click on '%s' (%s)\n", icon->acName, icon->acCommand);
1225
//g_print ("+ click on '%s' (%s)\n", icon->cName, icon->cCommand);
1343
1226
cairo_dock_notify (CAIRO_DOCK_CLICK_ICON, icon, pDock, pButton->state);
1344
1227
if (myAccessibility.cRaiseDockShortcut != NULL)
1345
1228
s_bHideAfterShortcut = TRUE;
1347
1230
cairo_dock_start_icon_animation (icon, pDock);
1349
else if (s_pIconClicked != NULL && icon != NULL && icon != s_pIconClicked && ! g_bLocked && ! myAccessibility.bLockIcons) // && icon->iType == s_pIconClicked->iType
1232
else if (s_pIconClicked != NULL && icon != NULL && icon != s_pIconClicked && ! g_bLocked && ! myAccessibility.bLockIcons && ! myAccessibility.bLockAll) // && icon->iType == s_pIconClicked->iType
1351
//g_print ("deplacement de %s\n", s_pIconClicked->acName);
1234
//g_print ("deplacement de %s\n", s_pIconClicked->cName);
1352
1235
CairoDock *pOriginDock = CAIRO_DOCK (cairo_dock_search_container_from_icon (s_pIconClicked));
1353
1236
if (pOriginDock != NULL && pDock != pOriginDock)
1355
cairo_dock_detach_icon_from_dock (s_pIconClicked, pOriginDock, TRUE); // plutot que 'cairo_dock_remove_icon_from_dock', afin de ne pas la fermer.
1356
///cairo_dock_remove_icon_from_dock (pOriginDock, s_pIconClicked);
1238
cairo_dock_detach_icon_from_dock (s_pIconClicked, pOriginDock, TRUE);
1357
1239
cairo_dock_update_dock_size (pOriginDock);
1359
1241
cairo_dock_update_icon_s_container_name (s_pIconClicked, icon->cParentDockName);
1360
1242
if (pOriginDock->iRefCount > 0 && ! myViews.bSameHorizontality)
1384
1266
s_pIconClicked = NULL;
1387
//g_print ("deplacement de %s\n", s_pIconClicked->acName);
1269
//g_print ("deplacement de %s\n", s_pIconClicked->cName);
1388
1270
if (prev_icon != NULL && cairo_dock_get_icon_order (prev_icon) != cairo_dock_get_icon_order (s_pIconClicked))
1389
1271
prev_icon = NULL;
1390
1272
cairo_dock_move_icon_after_icon (pDock, s_pIconClicked, prev_icon);
1392
pDock->calculate_icons (pDock);
1274
pDock->pRenderer->calculate_icons (pDock);
1394
1276
if (! CAIRO_DOCK_IS_SEPARATOR (s_pIconClicked))
1396
1278
cairo_dock_request_icon_animation (s_pIconClicked, pDock, "bounce", 2);
1398
if (pDock->iSidGLAnimation == 0 || ! CAIRO_DOCK_CONTAINER_IS_OPENGL (CAIRO_CONTAINER (pDock)))
1399
gtk_widget_queue_draw (pDock->pWidget);
1280
if (pDock->container.iSidGLAnimation == 0 || ! CAIRO_CONTAINER_IS_OPENGL (CAIRO_CONTAINER (pDock)))
1281
gtk_widget_queue_draw (pDock->container.pWidget);
1402
1284
if (s_pFlyingContainer != NULL)
1404
1286
//g_print ("on relache l'icone volante\n");
1287
if (pDock->container.bInside)
1407
1289
//g_print (" on la remet dans son dock d'origine\n");
1408
1290
Icon *pFlyingIcon = s_pFlyingContainer->pIcon;
1534
1419
iNewHeight = pEvent->width;
1537
if ((iNewWidth != pDock->iCurrentWidth || iNewHeight != pDock->iCurrentHeight) && iNewWidth > 1)
1422
if ((iNewWidth != pDock->container.iWidth || iNewHeight != pDock->container.iHeight) && iNewWidth > 1)
1539
1424
//g_print ("-> %dx%d\n", iNewWidth, iNewHeight);
1540
pDock->iCurrentWidth = iNewWidth;
1541
pDock->iCurrentHeight = iNewHeight;
1425
pDock->container.iWidth = iNewWidth;
1426
pDock->container.iHeight = iNewHeight;
1543
if (pDock->bHorizontalDock)
1544
gdk_window_get_pointer (pWidget->window, &pDock->iMouseX, &pDock->iMouseY, NULL);
1428
if (pDock->container.bIsHorizontal)
1429
gdk_window_get_pointer (pWidget->window, &pDock->container.iMouseX, &pDock->container.iMouseY, NULL);
1546
gdk_window_get_pointer (pWidget->window, &pDock->iMouseY, &pDock->iMouseX, NULL);
1547
if (pDock->iMouseX < 0 || pDock->iMouseX > pDock->iCurrentWidth) // utile ?
1431
gdk_window_get_pointer (pWidget->window, &pDock->container.iMouseY, &pDock->container.iMouseX, NULL);
1432
if (pDock->container.iMouseX < 0 || pDock->container.iMouseX > pDock->container.iWidth) // utile ?
1433
pDock->container.iMouseX = 0;
1550
1435
if (pDock->pShapeBitmap != NULL)
1552
gtk_widget_input_shape_combine_mask (pDock->pWidget,
1553
(pDock->bAtBottom && pDock->iRefCount == 0 ? pDock->pShapeBitmap : NULL),
1437
gtk_widget_input_shape_combine_mask (pDock->container.pWidget,
1438
(pDock->bAtBottom && pDock->iRefCount == 0 && ! pDock->bAutoHide ? pDock->pShapeBitmap : NULL),
1587
1472
#ifdef HAVE_GLITZ
1588
if (pDock->pGlitzDrawable)
1473
if (pDock->container.pGlitzDrawable)
1590
glitz_drawable_update_size (pDock->pGlitzDrawable,
1475
glitz_drawable_update_size (pDock->container.pGlitzDrawable,
1592
1477
pEvent->height);
1596
1481
cairo_dock_calculate_dock_icons (pDock);
1597
gtk_widget_queue_draw (pWidget); // il semble qu'il soit necessaire d'en rajouter un la pour eviter un "clignotement" a l'entree dans le dock.
1599
//g_print ("debut du redessin\n");
1600
//if (pDock->iRefCount > 0 || pDock->bAutoHide)
1483
// only Compiz seems to respect the _NET_WM_SYNC_REQUEST window manager protocol. :-(
1486
//g_print ("debut du redessin2\n");
1487
gtk_widget_queue_draw (pWidget);
1488
gdk_window_process_updates (pWidget->window, FALSE);
1489
//g_print ("fin du redessin2\n");
1493
//g_print ("debut du redessin\n");
1494
gtk_widget_queue_draw (pWidget);
1601
1495
while (gtk_events_pending ()) // on force un redessin immediat sinon on a quand meme un "flash".
1602
1496
gtk_main_iteration ();
1603
//g_print ("fin du redessin\n");
1497
//g_print ("fin du redessin\n");
1501
gtk_widget_queue_draw (pWidget);
1606
if (pDock->iSidMoveDown == 0 && pDock->iSidMoveUp == 0) // ce n'est pas du a une animation. Donc en cas d'apparition due a l'auto-hide, ceci ne sera pas fait ici, mais a la fin de l'animation.
1503
if (pDock->iSidMoveDown == 0 && pDock->iSidMoveUp == 0) // ce n'est pas du a une animation d'auto-hide. Donc en cas d'apparition due a l'auto-hide, ceci ne sera pas fait ici, mais a la fin de l'animation de grossissement/depliage.
1608
cairo_dock_set_icons_geometry_for_window_manager (pDock);
1505
//g_print ("configure\n");
1506
cairo_dock_set_icons_geometry_for_window_manager (pDock); // changement de position ou de taille du dock => on replace les icones.
1610
1508
cairo_dock_replace_all_dialogs ();
1617
void cairo_dock_on_drag_data_received (GtkWidget *pWidget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint t, CairoDock *pDock)
1516
static gboolean s_bWaitForData = FALSE;
1518
void cairo_dock_on_drag_data_received (GtkWidget *pWidget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint time, CairoDock *pDock)
1619
//g_print ("%s (%dx%d)\n", __func__, x, y);
1520
g_print ("%s (%dx%d, %d)\n", __func__, x, y, time);
1620
1521
//\_________________ On recupere l'URI.
1621
gchar *cReceivedData = (gchar *) selection_data->data;
1522
gchar *cReceivedData = (gchar *) selection_data->data; // gtk_selection_data_get_text
1622
1523
g_return_if_fail (cReceivedData != NULL);
1623
1524
int length = strlen (cReceivedData);
1624
1525
if (cReceivedData[length-1] == '\n')
1640
1546
pDock->fAvoidingMouseMargin = 0;
1642
1548
//\_________________ On calcule la position a laquelle on l'a lache.
1643
cd_message (">>> cReceivedData : %s", cReceivedData);
1549
cd_message (">>> cReceivedData : '%s'", cReceivedData);
1550
int iDropX = (pDock->container.bIsHorizontal ? x : y);
1644
1551
double fOrder = CAIRO_DOCK_LAST_ORDER;
1645
1552
Icon *pPointedIcon = NULL, *pNeighboorIcon = NULL;
1648
int iDropX = (pDock->bHorizontalDock ? x : y);
1649
1555
for (ic = pDock->icons; ic != NULL; ic = ic->next)
1651
1557
icon = ic->data;
1652
1558
if (icon->bPointed)
1654
//g_print ("On pointe sur %s\n", icon->acName);
1560
//g_print ("On pointe sur %s\n", icon->cName);
1655
1561
pPointedIcon = icon;
1657
if (g_str_has_suffix (cReceivedData, ".desktop")) // si c'est un .desktop, on l'ajoute.
1562
double fMargin; /// deviendra obsolete si le drag-received fonctionne.
1563
if (g_str_has_suffix (cReceivedData, ".desktop") || g_str_has_suffix (cReceivedData, ".sh")) // si c'est un .desktop, on l'ajoute.
1658
1564
fMargin = 0.5; // on ne sera jamais dessus.
1659
1565
else // sinon on le lance si on est sur l'icone, et on l'ajoute autrement.
1660
1566
fMargin = 0.25;
1679
1585
cairo_dock_notify_drop_data (cReceivedData, pPointedIcon, fOrder, CAIRO_CONTAINER (pDock));
1587
gtk_drag_finish (dc, TRUE, FALSE, time);
1590
gboolean cairo_dock_on_drag_drop (GtkWidget *pWidget, GdkDragContext *dc, gint x, gint y, guint time, CairoDock *pDock)
1592
cd_message ("%s (%dx%d, %d)", __func__, x, y, time);
1593
GdkAtom target = gtk_drag_dest_find_target (pWidget, dc, NULL);
1594
gtk_drag_get_data (pWidget, dc, target, time);
1595
return TRUE; // in a drop zone.
1683
1598
gboolean cairo_dock_notification_drop_data (gpointer pUserData, const gchar *cReceivedData, Icon *icon, double fOrder, CairoContainer *pContainer)
1754
1669
return CAIRO_DOCK_LET_PASS_NOTIFICATION;
1758
void cairo_dock_on_drag_motion (GtkWidget *pWidget, GdkDragContext *dc, gint x, gint y, guint time, CairoDock *pDock)
1672
gboolean cairo_dock_on_drag_motion (GtkWidget *pWidget, GdkDragContext *dc, gint x, gint y, guint time, CairoDock *pDock)
1760
1674
//g_print ("%s (%dx%d, %d)\n", __func__, x, y, time);
1761
1675
//\_________________ On simule les evenements souris habituels.
1762
1676
if (! pDock->bIsDragging)
1764
1678
cd_message ("start dragging");
1679
pDock->bIsDragging = TRUE;
1766
1681
/*GdkAtom gdkAtom = gdk_drag_get_selection (dc);
1767
1682
Atom xAtom = gdk_x11_atom_to_xatom (gdkAtom);
1769
1683
Window Xid = GDK_WINDOW_XID (dc->source_window);
1770
1684
g_print (" <%s>\n", cairo_dock_get_property_name_on_xwindow (Xid, xAtom));*/
1772
pDock->bIsDragging = TRUE;
1774
1686
gboolean bStartAnimation = FALSE;
1775
1687
cairo_dock_notify (CAIRO_DOCK_START_DRAG_DATA, pDock, &bStartAnimation);
1776
1688
if (bStartAnimation)
1782
1694
if (target == GDK_NONE)
1783
1695
gdk_drag_status (dc, 0, time);
1785
1698
gtk_drag_get_data (pWidget, dc, target, time);
1786
gtk_drag_get_data (pWidget, dc, target, time);
1787
g_print ("get-data envoye\n");*/
1699
s_bWaitForData = TRUE;
1700
g_print ("get-data envoye\n");
1788
1703
cairo_dock_on_enter_notify (pWidget, NULL, pDock); // ne sera effectif que la 1ere fois a chaque entree dans un dock.
1791
1706
cairo_dock_on_motion_notify (pWidget, NULL, pDock);
1708
gdk_drag_status (dc, GDK_ACTION_COPY, time);
1709
return TRUE; // on accepte le drop.
1794
1712
void cairo_dock_on_drag_leave (GtkWidget *pWidget, GdkDragContext *dc, guint time, CairoDock *pDock)
1796
1714
cd_message ("stop dragging");
1715
s_bWaitForData = FALSE;
1797
1716
pDock->bIsDragging = FALSE;
1798
1717
pDock->bCanDrop = FALSE;
1799
1718
//cairo_dock_stop_marking_icons (pDock);
1805
1725
void cairo_dock_show_dock_at_mouse (CairoDock *pDock)
1807
1727
g_return_if_fail (pDock != NULL);
1808
1728
int iMouseX, iMouseY;
1809
if (pDock->bHorizontalDock)
1810
gdk_window_get_pointer (pDock->pWidget->window, &iMouseX, &iMouseY, NULL);
1729
if (pDock->container.bIsHorizontal)
1730
gdk_window_get_pointer (pDock->container.pWidget->window, &iMouseX, &iMouseY, NULL);
1812
gdk_window_get_pointer (pDock->pWidget->window, &iMouseY, &iMouseX, NULL);
1732
gdk_window_get_pointer (pDock->container.pWidget->window, &iMouseY, &iMouseX, NULL);
1813
1733
//g_print (" %d;%d\n", iMouseX, iMouseY);
1815
pDock->iGapX = pDock->iWindowPositionX + iMouseX - g_iXScreenWidth[pDock->bHorizontalDock] * pDock->fAlign;
1816
pDock->iGapY = (pDock->bDirectionUp ? g_iXScreenHeight[pDock->bHorizontalDock] - (pDock->iWindowPositionY + iMouseY) : pDock->iWindowPositionY + iMouseY);
1735
pDock->iGapX = pDock->container.iWindowPositionX + iMouseX - g_iXScreenWidth[pDock->container.bIsHorizontal] * pDock->fAlign;
1736
pDock->iGapY = (pDock->container.bDirectionUp ? g_iXScreenHeight[pDock->container.bIsHorizontal] - (pDock->container.iWindowPositionY + iMouseY) : pDock->container.iWindowPositionY + iMouseY);
1817
1737
//g_print (" => %d;%d\n", g_pMainDock->iGapX, g_pMainDock->iGapY);
1819
cairo_dock_set_window_position_at_balance (pDock, pDock->iCurrentWidth, pDock->iCurrentHeight);
1820
//g_print (" => (%d;%d)\n", g_pMainDock->iWindowPositionX, g_pMainDock->iWindowPositionY);
1739
cairo_dock_set_window_position_at_balance (pDock, pDock->container.iWidth, pDock->container.iHeight);
1740
//g_print (" => (%d;%d)\n", g_pMainDock->container.iWindowPositionX, g_pMainDock->container.iWindowPositionY);
1822
gtk_window_move (GTK_WINDOW (pDock->pWidget),
1823
(pDock->bHorizontalDock ? pDock->iWindowPositionX : pDock->iWindowPositionY),
1824
(pDock->bHorizontalDock ? pDock->iWindowPositionY : pDock->iWindowPositionX));
1825
gtk_widget_show (pDock->pWidget);
1742
gtk_window_move (GTK_WINDOW (pDock->container.pWidget),
1743
(pDock->container.bIsHorizontal ? pDock->container.iWindowPositionX : pDock->container.iWindowPositionY),
1744
(pDock->container.bIsHorizontal ? pDock->container.iWindowPositionY : pDock->container.iWindowPositionX));
1745
gtk_widget_show (pDock->container.pWidget);
1828
1748
void cairo_dock_raise_from_keyboard (const char *cKeyShortcut, gpointer data)
1830
if (GTK_WIDGET_VISIBLE (g_pMainDock->pWidget))
1750
if (GTK_WIDGET_VISIBLE (g_pMainDock->container.pWidget))
1832
gtk_widget_hide (g_pMainDock->pWidget);
1752
gtk_widget_hide (g_pMainDock->container.pWidget);