~ubuntu-branches/ubuntu/vivid/cairo-dock-plug-ins/vivid

« back to all changes in this revision

Viewing changes to switcher/src/applet-draw.c

  • Committer: Matthieu Baerts
  • Date: 2013-08-27 14:46:47 UTC
  • mto: (53.1.4 cairo-dock-plug-ins)
  • mto: This revision was merged to the branch mainline in revision 44.
  • Revision ID: matttbe@gmail.com-20130827144647-wm0kyawa8vcg0cso
Tags: upstream-3.2.99.beta1.1~20130827~bzr2928
ImportĀ upstreamĀ versionĀ 3.2.99.beta1.1~20130827~bzr2928

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
{
40
40
        if (pIcon == NULL || pIcon->fInsertRemoveFactor > 0)
41
41
                return ;
42
 
        if (pIcon->bIsHidden && ! myConfig.bDisplayHiddenWindows)
 
42
        GldiWindowActor *actor = pIcon->pAppli;
 
43
        if (actor->bIsHidden && ! myConfig.bDisplayHiddenWindows)
43
44
                return ;
44
45
        int iNumDesktop = data->iNumDesktop;
45
46
        int iNumViewportX = data->iNumViewportX;
49
50
        cairo_t *pCairoContext = data->pCairoContext;
50
51
        
51
52
        // On calcule les coordonnees en repere absolu.
52
 
        int x = pIcon->windowGeometry.x;  // par rapport au viewport courant.
 
53
        int x = actor->windowGeometry.x;  // par rapport au viewport courant.
53
54
        x += myData.switcher.iCurrentViewportX * g_desktopGeometry.Xscreen.width;  // repere absolu
54
55
        if (x < 0)
55
56
                x += g_desktopGeometry.iNbViewportX * g_desktopGeometry.Xscreen.width;
56
 
        int y = pIcon->windowGeometry.y;
 
57
        int y = actor->windowGeometry.y;
57
58
        y += myData.switcher.iCurrentViewportY * g_desktopGeometry.Xscreen.height;
58
59
        if (y < 0)
59
60
                y += g_desktopGeometry.iNbViewportY * g_desktopGeometry.Xscreen.height;
60
 
        int w = pIcon->windowGeometry.width, h = pIcon->windowGeometry.height;
 
61
        int w = actor->windowGeometry.width, h = actor->windowGeometry.height;
61
62
        
62
63
        // test d'intersection avec le viewport donne.
63
64
        //g_print (" %s : (%d;%d) %dx%d\n", pIcon->cName, x, y, w, h);
64
 
        if ((pIcon->iNumDesktop != -1 && pIcon->iNumDesktop != iNumDesktop) ||
 
65
        if ((actor->iNumDesktop != -1 && actor->iNumDesktop != iNumDesktop) ||
65
66
                x + w <= iNumViewportX * g_desktopGeometry.Xscreen.width ||
66
67
                x >= (iNumViewportX + 1) * g_desktopGeometry.Xscreen.width ||
67
68
                y + h <= iNumViewportY * g_desktopGeometry.Xscreen.height ||
71
72
        // on dessine ses traits.
72
73
        cairo_save (pCairoContext);
73
74
 
74
 
        Window iActiveWindow = cairo_dock_get_current_active_window ();
75
 
 
76
 
        if (myConfig.bFillAllWindows && pIcon->Xid != iActiveWindow)
 
75
        GldiWindowActor *pActiveWindow = gldi_windows_get_active ();
 
76
        
 
77
        if (myConfig.bFillAllWindows && actor != pActiveWindow)
77
78
                cairo_set_source_rgba (pCairoContext, myConfig.RGBWFillColors[0], myConfig.RGBWFillColors[1], myConfig.RGBWFillColors[2], myConfig.RGBWFillColors[3]);
78
79
        else
79
80
                cairo_set_source_rgba (pCairoContext, myConfig.RGBWLineColors[0], myConfig.RGBWLineColors[1], myConfig.RGBWLineColors[2], myConfig.RGBWLineColors[3]);
83
84
                1.*w/g_desktopGeometry.Xscreen.width*iOneViewportWidth,
84
85
                1.*h/g_desktopGeometry.Xscreen.height*iOneViewportHeight);
85
86
 
86
 
        if (myConfig.bFillAllWindows || pIcon->Xid == iActiveWindow)
 
87
        if (myConfig.bFillAllWindows || actor == pActiveWindow)
87
88
        {
88
89
                //g_print (" %s est la fenetre active\n", pIcon->cName);
89
90
                cairo_fill (pCairoContext);
126
127
                return 1;
127
128
        if (icon2 == NULL)
128
129
                return -1;
129
 
        if (icon1->iStackOrder < icon2->iStackOrder)  // ordre petit => dessus => dessinee en dernier.
 
130
        if (icon1->pAppli->iStackOrder < icon2->pAppli->iStackOrder)  // ordre petit => dessus => dessinee en dernier.
130
131
                return -1;
131
132
        else
132
133
                return 1;
503
504
static void _show_window (GtkMenuItem *menu_item, Icon *pIcon)
504
505
{
505
506
        CD_APPLET_ENTER;
506
 
        cairo_dock_show_xwindow (pIcon->Xid);
 
507
        gldi_window_show (pIcon->pAppli);
507
508
        CD_APPLET_LEAVE ();
508
509
}
509
510
 
513
514
        int iIndex = GPOINTER_TO_INT (data);
514
515
        int iNumDesktop, iNumViewportX, iNumViewportY;
515
516
        cd_switcher_compute_desktop_from_index (iIndex, &iNumDesktop, &iNumViewportX, &iNumViewportY);
516
 
        if (iNumDesktop != myData.switcher.iCurrentDesktop)
517
 
                cairo_dock_set_current_desktop (iNumDesktop);
518
 
        if (iNumViewportX != myData.switcher.iCurrentViewportX || iNumViewportY != myData.switcher.iCurrentViewportY)
519
 
                cairo_dock_set_current_viewport (iNumViewportX, iNumViewportY);
 
517
        
 
518
        if (iNumViewportX != myData.switcher.iCurrentViewportX
 
519
        || iNumViewportY != myData.switcher.iCurrentViewportY
 
520
        || iNumDesktop != myData.switcher.iCurrentDesktop)
 
521
                gldi_desktop_set_current (iNumDesktop, iNumViewportX, iNumViewportY);
520
522
        CD_APPLET_LEAVE ();
521
523
}
522
 
static void _cd_switcher_list_window_on_viewport (Icon *pIcon, int iNumDesktop, int iNumViewportX, int iNumViewportY, GtkWidget *pMenu)
 
524
static void _cd_switcher_add_window_on_viewport (Icon *pIcon, int iNumDesktop, int iNumViewportX, int iNumViewportY, GtkWidget *pMenu)
523
525
{
524
526
        //g_print (" + %s\n", pIcon->cName);
525
527
        
604
606
                        cd_switcher_foreach_window_on_viewport (iNumDesktop,
605
607
                                iNumViewportX,
606
608
                                iNumViewportY,
607
 
                                (CDSwitcherActionOnViewportFunc) _cd_switcher_list_window_on_viewport,
 
609
                                (CDSwitcherActionOnViewportFunc) _cd_switcher_add_window_on_viewport,
608
610
                                pMenu);
609
611
                        
610
612
                        // on passe au viewport suivant.
635
637
        int iDestNumViewportX = data[1];
636
638
        int iDestNumViewportY = data[2];
637
639
        
638
 
        cairo_dock_move_xwindow_to_nth_desktop (pIcon->Xid,
 
640
        gldi_window_move_to_desktop (pIcon->pAppli,
639
641
                iDestNumDesktop,
640
642
                (iDestNumViewportX - myData.switcher.iCurrentViewportX) * g_desktopGeometry.Xscreen.width,
641
643
                (iDestNumViewportY - myData.switcher.iCurrentViewportY) * g_desktopGeometry.Xscreen.height);