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

« back to all changes in this revision

Viewing changes to src/gldit/cairo-dock-desklet-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:
365
365
        if (! (pScroll->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)))
366
366
        {
367
367
                Icon *icon = cairo_dock_find_clicked_icon_in_desklet (pDesklet);
368
 
                if (icon != NULL)
 
368
                ///if (icon != NULL)
369
369
                {
370
370
                        cairo_dock_notify_on_container (CAIRO_CONTAINER (pDesklet), CAIRO_DOCK_SCROLL_ICON, icon, pDesklet, pScroll->direction);
371
371
                }
409
409
{
410
410
        if (pButton->button == 1)  // clic gauche.
411
411
        {
 
412
                pDesklet->container.iMouseX = pButton->x;
 
413
                pDesklet->container.iMouseY = pButton->y;
412
414
                if (pButton->type == GDK_BUTTON_PRESS)
413
415
                {
414
416
                        pDesklet->bClicked = TRUE;
415
417
                        if (cairo_dock_desklet_is_free (pDesklet))
416
418
                        {
417
 
                                pDesklet->container.iMouseX = pButton->x;  // pour le deplacement manuel.
418
 
                                pDesklet->container.iMouseY = pButton->y;
419
 
                                
 
419
                                ///pDesklet->container.iMouseX = pButton->x;  // pour le deplacement manuel.
 
420
                                ///pDesklet->container.iMouseY = pButton->y;
420
421
                                if (pButton->x < myDesklets.iDeskletButtonSize && pButton->y < myDesklets.iDeskletButtonSize)
421
422
                                        pDesklet->rotating = TRUE;
422
423
                                else if (pButton->x > pDesklet->container.iWidth - myDesklets.iDeskletButtonSize && pButton->y < myDesklets.iDeskletButtonSize)
433
434
                }
434
435
                else if (pButton->type == GDK_BUTTON_RELEASE)
435
436
                {
436
 
                        if (!pDesklet->bClicked)  // on n'accepte le release que si on avait clique sur le desklet avant (on peut recevoir le release si on avat clique sur un dialogue qui chevauchait notre desklet et qui a disparu au clic).
 
437
                        if (!pDesklet->bClicked)  // on n'accepte le release que si on avait clique sur le desklet avant (on peut recevoir le release si on avait clique sur un dialogue qui chevauchait notre desklet et qui a disparu au clic).
437
438
                        {
438
439
                                return FALSE;
439
440
                        }
440
441
                        pDesklet->bClicked = FALSE;
441
 
                        cd_debug ("GDK_BUTTON_RELEASE");
 
442
                        //g_print ("GDK_BUTTON_RELEASE\n");
 
443
                        int x = pDesklet->container.iMouseX;
 
444
                        int y = pDesklet->container.iMouseY;
442
445
                        if (pDesklet->moving)
443
446
                        {
444
447
                                pDesklet->moving = FALSE;
454
457
                        else if (pDesklet->retaching)
455
458
                        {
456
459
                                pDesklet->retaching = FALSE;
457
 
                                if (pButton->x > pDesklet->container.iWidth - myDesklets.iDeskletButtonSize && pButton->y < myDesklets.iDeskletButtonSize)  // on verifie qu'on est encore dedans.
 
460
                                if (x > pDesklet->container.iWidth - myDesklets.iDeskletButtonSize && y < myDesklets.iDeskletButtonSize)  // on verifie qu'on est encore dedans.
458
461
                                {
459
462
                                        Icon *icon = pDesklet->pIcon;
460
463
                                        g_return_val_if_fail (CAIRO_DOCK_IS_APPLET (icon), FALSE);
461
464
                                        cairo_dock_detach_module_instance (icon->pModuleInstance);
462
 
                                        return TRUE;  // interception du signal.
 
465
                                        return CAIRO_DOCK_INTERCEPT_NOTIFICATION;  // interception du signal.
463
466
                                }
464
467
                        }
465
468
                        else if (pDesklet->making_transparent)
466
469
                        {
467
470
                                cd_debug ("pDesklet->making_transparent\n");
468
471
                                pDesklet->making_transparent = FALSE;
469
 
                                if (pButton->x > pDesklet->container.iWidth - myDesklets.iDeskletButtonSize && pButton->y > pDesklet->container.iHeight - myDesklets.iDeskletButtonSize)  // on verifie qu'on est encore dedans.
 
472
                                if (x > pDesklet->container.iWidth - myDesklets.iDeskletButtonSize && y > pDesklet->container.iHeight - myDesklets.iDeskletButtonSize)  // on verifie qu'on est encore dedans.
470
473
                                {
471
474
                                        Icon *icon = pDesklet->pIcon;
472
475
                                        g_return_val_if_fail (CAIRO_DOCK_IS_APPLET (icon), FALSE);
502
505
                        else
503
506
                        {
504
507
                                Icon *pClickedIcon = cairo_dock_find_clicked_icon_in_desklet (pDesklet);
505
 
                                cairo_dock_notify (CAIRO_DOCK_CLICK_ICON, pClickedIcon, pDesklet, pButton->state);
 
508
                                cairo_dock_notify_on_container (CAIRO_CONTAINER (pDesklet), CAIRO_DOCK_CLICK_ICON, pClickedIcon, pDesklet, pButton->state);
506
509
                        }
 
510
                        // prudence.
 
511
                        pDesklet->rotating = FALSE;
 
512
                        pDesklet->retaching = FALSE;
 
513
                        pDesklet->making_transparent = FALSE;
 
514
                        pDesklet->rotatingX = FALSE;
 
515
                        pDesklet->rotatingY = FALSE;
507
516
                }
508
517
                else if (pButton->type == GDK_2BUTTON_PRESS)
509
518
                {
510
519
                        if (! (pButton->x < myDesklets.iDeskletButtonSize && pButton->y < myDesklets.iDeskletButtonSize) && ! (pButton->x > (pDesklet->container.iWidth - myDesklets.iDeskletButtonSize)/2 && pButton->x < (pDesklet->container.iWidth + myDesklets.iDeskletButtonSize)/2 && pButton->y < myDesklets.iDeskletButtonSize))
511
520
                        {
512
521
                                Icon *pClickedIcon = cairo_dock_find_clicked_icon_in_desklet (pDesklet);
513
 
                                cairo_dock_notify (CAIRO_DOCK_DOUBLE_CLICK_ICON, pClickedIcon, pDesklet);
 
522
                                cairo_dock_notify_on_container (CAIRO_CONTAINER (pDesklet), CAIRO_DOCK_DOUBLE_CLICK_ICON, pClickedIcon, pDesklet);
514
523
                        }
515
524
                }
516
525
        }
518
527
        {
519
528
                Icon *pClickedIcon = cairo_dock_find_clicked_icon_in_desklet (pDesklet);
520
529
                GtkWidget *menu = cairo_dock_build_menu (pClickedIcon, CAIRO_CONTAINER (pDesklet));  // genere un CAIRO_DOCK_BUILD_ICON_MENU.
521
 
                gtk_widget_show_all (menu);
522
 
                gtk_menu_popup (GTK_MENU (menu),
523
 
                        NULL,
524
 
                        NULL,
525
 
                        NULL,
526
 
                        NULL,
527
 
                        1,
528
 
                        gtk_get_current_event_time ());
 
530
                cairo_dock_popup_menu_on_container (menu, CAIRO_CONTAINER (pDesklet));
529
531
                pDesklet->container.bInside = FALSE;
530
 
                ///pDesklet->iGradationCount = 0;  // on force le fond a redevenir transparent.
531
532
                gtk_widget_queue_draw (pDesklet->container.pWidget);
532
533
        }
533
534
        else if (pButton->button == 2 && pButton->type == GDK_BUTTON_PRESS)  // clique milieu.
558
559
                }
559
560
                else
560
561
                {
561
 
                        cairo_dock_notify (CAIRO_DOCK_MIDDLE_CLICK_ICON, pDesklet->pIcon, pDesklet);
 
562
                        cairo_dock_notify_on_container (CAIRO_CONTAINER (pDesklet), CAIRO_DOCK_MIDDLE_CLICK_ICON, pDesklet->pIcon, pDesklet);
562
563
                }
563
564
        }
564
565
        return FALSE;
587
588
        GdkEventMotion* pMotion,
588
589
        CairoDesklet *pDesklet)
589
590
{
590
 
        if (pMotion->state & GDK_BUTTON1_MASK && cairo_dock_desklet_is_free (pDesklet))
 
591
        /*if (pMotion->state & GDK_BUTTON1_MASK && cairo_dock_desklet_is_free (pDesklet))
591
592
        {
592
593
                cd_debug ("root : %d;%d", (int) pMotion->x_root, (int) pMotion->y_root);
593
 
                /*pDesklet->moving = TRUE;
594
 
                gtk_window_move (GTK_WINDOW (pWidget),
595
 
                        pMotion->x_root + pDesklet->diff_x,
596
 
                        pMotion->y_root + pDesklet->diff_y);*/
597
594
        }
598
 
        else  // le 'press-button' est local au sous-widget clique, alors que le 'motion-notify' est global a la fenetre; c'est donc par lui qu'on peut avoir a coup sur les coordonnees du curseur (juste avant le clic).
 
595
        else*/  // le 'press-button' est local au sous-widget clique, alors que le 'motion-notify' est global a la fenetre; c'est donc par lui qu'on peut avoir a coup sur les coordonnees du curseur (juste avant le clic).
599
596
        {
600
597
                pDesklet->container.iMouseX = pMotion->x;
601
598
                pDesklet->container.iMouseY = pMotion->y;
660
657
                                
661
658
                                //g_print ("kedal\n");
662
659
                                cairo_dock_notify_on_container (CAIRO_CONTAINER (pDesklet), CAIRO_DOCK_ENTER_ICON, pPointedIcon, pDesklet, &bStartAnimation);
663
 
 
664
660
                        }
665
661
                }
666
662
                if (bStartAnimation)
1325
1321
        // calculate icons
1326
1322
        cairo_dock_update_desklet_icons (pDesklet);
1327
1323
}
 
1324
 
 
1325
 
 
1326
gboolean cairo_dock_click_notification (gpointer pUserData, Icon *pClickedIcon, CairoDesklet *pDesklet, guint iButtonState)
 
1327
{
 
1328
        
 
1329
        return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 
1330
}