~ubuntu-branches/ubuntu/precise/xfwm4/precise-updates

« back to all changes in this revision

Viewing changes to src/client.c

  • Committer: Bazaar Package Importer
  • Author(s): Lionel Le Folgoc
  • Date: 2011-01-03 20:47:16 UTC
  • mfrom: (1.1.28 upstream)
  • Revision ID: james.westby@ubuntu.com-20110103204716-xfjjslpyp1rwyc02
Tags: 4.7.4-0ubuntu1
New upstream development release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
 
19
19
        oroborus - (c) 2001 Ken Lynch
20
 
        xfwm4    - (c) 2002-2009 Olivier Fourdan
 
20
        xfwm4    - (c) 2002-2010 Olivier Fourdan
21
21
 
22
22
 */
23
23
 
724
724
         && CONSTRAINED_WINDOW (c)
725
725
         && !((c->gravity == StaticGravity) && (c->x == 0) && (c->y == 0)))
726
726
    {
727
 
        clientConstrainPos (c, CFG_KEEP_VISIBLE);
 
727
        clientConstrainPos (c, flags & CFG_KEEP_VISIBLE);
728
728
 
729
729
        if (c->x != px)
730
730
        {
3466
3466
 
3467
3467
/* Xrandr stuff: on screen size change, make sure all clients are still visible */
3468
3468
void
3469
 
clientScreenResize(ScreenInfo *screen_info)
 
3469
clientScreenResize(ScreenInfo *screen_info, gboolean fully_visible)
3470
3470
{
3471
3471
    Client *c = NULL;
3472
3472
    GList *list, *list_of_windows;
3473
3473
    XWindowChanges wc;
 
3474
    unsigned short configure_flags;
3474
3475
 
3475
3476
    list_of_windows = clientGetStackList (screen_info);
3476
3477
 
3502
3503
        /* Recompute size and position of maximized windows */
3503
3504
        if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ | CLIENT_FLAG_MAXIMIZED_VERT))
3504
3505
        {
3505
 
             /* Too bad, the flags used internally are different from the WIN_STATE_* bits */
3506
 
             maximization_flags |= FLAG_TEST (c->flags,
3507
 
                 CLIENT_FLAG_MAXIMIZED_HORIZ) ? WIN_STATE_MAXIMIZED_HORIZ : 0;
3508
 
             maximization_flags |= FLAG_TEST (c->flags,
3509
 
                 CLIENT_FLAG_MAXIMIZED_VERT) ? WIN_STATE_MAXIMIZED_VERT : 0;
3510
 
 
3511
 
             /* Force an update by clearing the internal flags */
3512
 
             FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ | CLIENT_FLAG_MAXIMIZED_VERT);
3513
 
             clientToggleMaximized (c, maximization_flags, FALSE);
3514
 
 
3515
 
             wc.x = c->x;
3516
 
             wc.y = c->y;
3517
 
             wc.width = c->width;
3518
 
             wc.height = c->height;
3519
 
             clientConfigure (c, &wc, CWX | CWY | CWWidth | CWHeight, CFG_NOTIFY);
 
3506
            /* Too bad, the flags used internally are different from the WIN_STATE_* bits */
 
3507
            maximization_flags |= FLAG_TEST (c->flags,
 
3508
                CLIENT_FLAG_MAXIMIZED_HORIZ) ? WIN_STATE_MAXIMIZED_HORIZ : 0;
 
3509
            maximization_flags |= FLAG_TEST (c->flags,
 
3510
                CLIENT_FLAG_MAXIMIZED_VERT) ? WIN_STATE_MAXIMIZED_VERT : 0;
 
3511
 
 
3512
            /* Force an update by clearing the internal flags */
 
3513
            FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ | CLIENT_FLAG_MAXIMIZED_VERT);
 
3514
            clientToggleMaximized (c, maximization_flags, FALSE);
 
3515
 
 
3516
            wc.x = c->x;
 
3517
            wc.y = c->y;
 
3518
            wc.width = c->width;
 
3519
            wc.height = c->height;
 
3520
            clientConfigure (c, &wc, CWX | CWY | CWWidth | CWHeight, CFG_NOTIFY);
3520
3521
        }
3521
3522
        else
3522
3523
        {
3523
 
             wc.x = c->x;
3524
 
             wc.y = c->y;
3525
 
             clientConfigure (c, &wc, CWX | CWY, CFG_CONSTRAINED | CFG_REQUEST | CFG_KEEP_VISIBLE);
 
3524
            configure_flags = CFG_CONSTRAINED | CFG_REQUEST;
 
3525
            if (fully_visible)
 
3526
            {
 
3527
                configure_flags |= CFG_KEEP_VISIBLE;
 
3528
            }
 
3529
 
 
3530
            wc.x = c->x;
 
3531
            wc.y = c->y;
 
3532
            clientConfigure (c, &wc, CWX | CWY, configure_flags);
3526
3533
        }
3527
3534
    }
3528
3535